- Python 3.10+ recommended
- Optional conda
conda create -n md-api-python python=3.10 -y
conda activate md-api-python- Latest from GitHub
pip install git+https://github.com/MassDynamics/md-python.git- Local dev (editable)
git clone https://github.com/MassDynamics/md-python.git
cd md-python
pip install -e ".[dev,notebook]"Create a .env in your working directory:
MD_API_BASE_URL=http://localhost:3000/api # or https://app.massdynamics.com/api
MD_AUTH_TOKEN=eyJhbGciOi... # token WITHOUT the 'Bearer ' prefixfrom dotenv import load_dotenv
from IPython.display import JSON, display
from md_python import MDClient
load_dotenv()
client = MDClient() # reads env vars
health = client.health.check()
display(JSON(health, expanded=True))import os
from md_python import ExperimentDesign, SampleMetadata
metadata_path = "/path/to/dir"
exp_design = ExperimentDesign.from_csv(os.path.join(metadata_path, "experiment_design_COMBINED.csv"))
sample_meta = SampleMetadata.from_csv(os.path.join(metadata_path, "experiment_design_COMBINED.csv"))from md_python import Experiment
exp = Experiment(
name="my_notebook_experiment",
source="md_format",
labelling_method="lfq",
s3_bucket="md-development-test-data",
s3_prefix="some/prefix/",
filenames=[
"proteomics_proteins_COMBINED.tsv",
"proteomics_peptides_COMBINED.tsv",
],
experiment_design=exp_design,
sample_metadata=sample_meta,
)
# experiment_id = client.experiments.create(exp)# completed = client.experiments.wait_until_complete(experiment_id)
# print(completed.status)dataset = client.datasets.find_initial_dataset(experiment_id)
dataset_id = str(dataset.id)comparisons = sample_meta.pairwise_vs_control(column="condition", control="md00001_a")from md_python.utils.builders import PairwiseComparisonDataset
pw = PairwiseComparisonDataset(
input_dataset_ids=[dataset_id],
dataset_name="Pairwise test",
sample_metadata=sample_meta,
condition_column="condition",
condition_comparisons=comparisons,
)
new_dataset_id = pw.run(client)state = client.datasets.wait_until_complete(
experiment_id=experiment_id,
dataset_id=new_dataset_id,
)
print(state["state"]) # expects COMPLETED/FAILED/ERROR/CANCELLED- Ensure
MD_API_BASE_URLmatches where your token was issued. - If your token includes the prefix, remove
"Bearer "in.env. ExperimentDesignnormalizes its header automatically to["filename", "sample_name", "condition"].