UsageΒΆ

πŸš€ Quick start (CLI)ΒΆ

πŸ“ Prepare input filesΒΆ

data/
β”œβ”€β”€ drug_names.txt           # One drug per line
β”œβ”€β”€ node_dict.csv            # Gene β†’ Node mapping
└── synergy_data.csv         # Optional: drug combinations + effects

πŸ“ Create config fileΒΆ

my_config.json:

{
  "global": {"output_dir": "results", "base_data_dir": "data"},
  "paths": {
    "drug_names_file": "drug_names.txt",
    "node_dict_file": "node_dict.csv",
    "synergy_data_file": "synergy_data.csv"
  },
  "options": {"double_drug_screen": true}
}

▢️ Run pipelineΒΆ

# Full pipeline
drexpa --config my_config.json

# Generate profiles only
drexpa --config my_config.json --until profiles

# Specific steps
drexpa --config my_config.json --steps profiles,panel

# Verbose mode (structured logging + timing)
drexpa --config my_config.json --verbose

⌨️ CLI options¢

Option

Description

Example

--config PATH

Custom config JSON file

--config my_config.json

--synergy-data PATH

Override synergy data file

--synergy-data screen.csv

--output-dir DIR

Override output directory

--output-dir ./results

--until STEP

Run until step (inclusive)

--until panel

--steps STEPS

Specific steps (comma-separated)

--steps profiles,panel

--verbose

Enable structured logging + timing

--verbose

πŸ”„ Pipeline stepsΒΆ

  1. load_data β€” Load synergy data

  2. chembl_ids β€” Resolve ChEMBL IDs (requires ChEMBL network access)

  3. doses β€” Extract & process drug doses (requires concentration columns)

  4. targets β€” Query internal drug-target database

  5. node_targets β€” Map targets to logical model nodes

  6. profiles β€” Generate unique drug profiles with Pipeline IDs

  7. combinations β€” Prepare drug combinations (requires synergy data)

  8. panel β€” Create drug panel (DrugLogics format)

  9. perturbations β€” Generate perturbation files per condition

  10. synergies β€” Process observed synergies

Dependencies are resolved automatically: --until panel runs steps 1–8 with all prerequisites.

🐍 Python API¢

from drexpa import run_pipeline

config = {
    "global": {"output_dir": "results"},
    "paths": {
        "drug_names_file": "data/drugs.txt",
        "node_dict_file": "data/nodes.csv",
    }
}

# Full pipeline
run_pipeline(config_dict=config)

# Specific steps
run_pipeline(
    config_dict=config,
    synergy_data_file="data/synergy.csv",
    steps_to_run=["profiles", "panel"],
)

πŸ“¦ Output filesΒΆ

File

Step

Content

drug_ChEMBL_IDs.csv

chembl_ids

Drug name β†’ ChEMBL ID mapping

drug_ChEMBL_doses.csv

doses

Drugs with IC50 concentrations

drug_ChEMBL_targets.csv

targets

Drug β†’ Targets from database

drug_node_targets.csv

node_targets

Drug β†’ Logical model nodes

drug_profiles.csv

profiles

Drug profiles with Pipeline IDs

drug_panel_df.csv

panel

Drug panel (DrugLogics format)

drugpanel

panel

Formatted drug panel file

<TISSUE>/

perturbations

Per-tissue perturbation files