Skip to content

Fetch pharmacological knowledge on chemical compounds and squeeze it into semantic triples. For analysis of chemical screens and training and evaluation of algorithms.

License

Notifications You must be signed in to change notification settings

dmyersturnbull/mandos

Repository files navigation

Mandos

Version status License Python version compatibility Version on Docker Hub Version on GitHub Version on PyPi Version on Conda-Forge
Documentation status Build (GitHub Actions) Test coverage (coveralls) Maintainability (Code Climate) CodeFactor Code Quality (Scrutinizer)
Created with Tyrannosaurus

The “kitchen sink” preprocessing tool for chemical screens:
Fetch knowledge on compounds from public databases, squeezing it all into a consistent form.

Mandos extracts ~30 annotation types, including:

  • mechanisms of action (MOAs), binding activity, classifications, pathways involved, gene expression effects,
  • disease indications, clinical trials, drug–drug interactions, co-occurring literature terms,
  • legal statuses, LD50, health hazards, acute exposure effects, physical properties, ...

Output in CSV files is summarized as semantic triples, such as alprazolam inactive at BK receptor, with additional data (e.g. EC50 or clinical phase). It can also fetch annotations for structurally similar compounds.

💡 Common uses

It’s a preprocessing tool for algorithms and data analysis on chemical screens. Example uses:

  • What distinguishes your screening hits pharmacologically?
  • What distinguishes groups from a multidimensional screen?
  • Build a training set for machine learning.
  • Make sure your results aren’t explained by something like solubility.

These tasks are often performed with just ATC codes or binding to ChEMBL targets. But if your compounds lack ATC codes, or binding annotations – or don’t correlate with binding – you can compare against far more pharmacological variables, such as GO terms and literature co-occurrences. You can also get targets like GABA-A receptor; anion channel rather than specific GABA-A subunits and complexes.

🎨 Example

Use Mandos as a Python API or command-line tool. To search just the mechanism of action for alprazolam:

echo "VREFGVBLTWBCJP-UHFFFAOYSA-N" > compounds.txt
mandos chembl:mechanism compounds.txt

The following info is perhaps enough to get started, but a lot is done behind-the-scenes. See the docs 📚 for more.

Input: compounds.txt is a line-by-line list of InChI Keys Pass type-specific command-line options like --taxa vertebrata, or run multiple searches with mandos :search compounds.txt searches.toml. (See: example config file) mandos <type> --help will show and briefly explain the options.

Output: 10 columns shared between all files, plus type-specific columns. The consistent columns are: record_id, inchikey, compound_id, compound_name, predicate, object_id, object_name, weight, search_key, data_source, and universal_id. Additional columns include EC50, original name, species, clinical phase, etc.

Some example output: (Columns were dropped and renamed for display.)

comp. ID  comp. name  predicate name                 object ID       object name
--------- ----------  -----------------------------  ------------- ------------------------------
CHEMBL661 alprazolam  positive allosteric modulator  CHEMBL2093872 GABA-A receptor; anion channel
CHEMBL661 alprazolam  activity at                    CHEMBL2096986 Cholecystokinin receptor
CHEMBL661 alprazolam  phase-3 trial for              D012559       Schizophrenia
CHEMBL661 alprazolam  phase-4 trial for              D016584       Panic Disorder
CHEMBL661 alprazolam  has ATC L3 code                N05B          anxiolytics
CHEMBL661 alprazolam  has ATC L4 code                N05BA         Benzodiazepine derivatives
PC218     alprazolam  has GHS symbol                 H302          Harmful if swallowed
PC218     alprazolam  has acute effect               -             behavioral: euphoria
PC218     alprazolam  DDI with                       PC65016       amprenavir
PC218     alprazolam  therapeutic for                D001008       Anxiety Disorders
PC218     alprazolam  enriched for term              -             anxiolytic
PC218     alprazolam  co-occurs with drug            PC134664      Benzodiazepine
PC218     alprazolam  co-occurs with gene            1.14.14.1     Monoamine Oxidase
PC218     alprazolam  co-occurs with disease         D016584       Panic Disorder
PC218     alprazolam  interacts with gene            -             CYP3A4
PC218     alprazolam  positive allosteric modulator  GABRA1        GABA(A) Receptor
PC218     alprazolam  inactive at                    KCNMB4        BK Channel
PC218     alprazolam  active at                      AR            androgen receptor
PC218     alprazolam  is of class                    CHEBI:22720   benzodiazepine
PC218     alprazolam  has DEA schedule               4             Schedule IV
.         .             .                              .             .
.         .             .                              .             .
.         .             .                              .             .

Misc commands

Besides specific searches like chembl:mechanism, disease.ctd:mesh, etc.:

  • :search
  • :export:tax-tree
  • :cache
  • :concat
  • :filter
  • :filter:taxa
  • :export:copy
  • :export:state
  • :export:reify
  • :calc:scores
  • :calc:matrix
  • :calc:matrix-concordance

🍁 Contributing

Mandos is licensed under the Apache License, version 2.0. New issues and pull requests are welcome. Please refer to the contributing guide. Generated with Tyrannosaurus.

About

Fetch pharmacological knowledge on chemical compounds and squeeze it into semantic triples. For analysis of chemical screens and training and evaluation of algorithms.

Topics

Resources

License

Security policy

Stars

Watchers

Forks