Coder Social home page Coder Social logo

draeger-lab / pymcadre Goto Github PK

View Code? Open in Web Editor NEW
12.0 3.0 5.0 38.41 MB

pymCADRE enables the reconstruction of tissue-specific metabolic models in Python using transcriptomic data and information of the network topology.

License: GNU General Public License v3.0

Jupyter Notebook 92.83% Python 7.17%
constraint-based-modeling flux-balance-analysis tissue-specific-models host-virus-model metabolic-network-reconstruction genome-scale-modeling python systems-biology-simulation sbml-model

pymcadre's Introduction

pymCADRE

License (LGPL version 3) Latest version Code Size Downloads of all releases

drawing

Authors : Nantia Leonidou

Publication

When using pymCADRE in a research work, please cite the following work:

Leonidou, N., Renz, A., Mostolizadeh, R., & Dräger, A. (2023). New workflow predicts drug targets against SARS-CoV-2 via metabolic changes in infected cells. PLOS Computational Biology, 19(3), e1010903. DOI

Overview.

The pymCADRE tool is an advanced re-implementation of the metabolic Context-specificity Assessed by Deterministic Reaction Evaluation (mCADRE) algorithm in Python. It constructs tissue-specific metabolic models by leveraging gene expression data and literature-based evidence, along with network topology information.

The reactions within the generic global model are being ranked, and the ones with the lowest supporting evidence for the tissue of interest are given the highest priority for removal:

GM, C, NC, P, Z, model_C = rank_reactions(model, G, U, confidence_scores, C_H_genes, method)

If the generic functionality test is passed, the model undergoes pruning, which results in a context-specific reconstruction:

PM, cRes = prune_model(GM, P, C, Z, eta, precursorMets, salvage_check, C_H_genes, method)

Installation

pip install pymcadre

Import module and sub-modules

import pymCADRE
# sub-module example
from pymCADRE.rank import *

Prerequisites

This tool has the following dependencies:

python >=3.8.5

Packages:

  • pandas
  • numpy
  • cobra
  • requests
  • os

Input data

  • model: COBRA model structure for the metabolic model of interest
  • precursorMets: list of precursor, key, metabolites in form of .txt file
  • confidence_scores: literature/experimental-based confidence assigned to reactions in model

Tissue-specific expression evidence:

  • G: list of Entrez IDs for all genes in model
  • U: list of ubiquity scores calculated for all genes in model
Optional Inputs
  • salvageCheck: flag whether to perform a functional check for the nucleotide salvage pathway (1) or not (0)
  • C_H_genes: list with Entrez IDs for genes with particularly strong evidence of activity in the tissue of interest
  • method: method to use internal optimizations, (1) flux variability analysis or (2) fastcc

Outputs

  • PM: pruned COBRA tissue-specific model
  • GM: COBRA model after removing blocked reactions from the input global model
  • C: core reactions in GM
  • NC: non-core reactions in GM
  • Z: reactions with zero expression across all samples after binarization
  • model_C: core reactions in the generic model (including blocked reactions)
  • pruneTime: total reaction pruning time
  • cRes: result of model checks (consistency/function) during pruning

Usage

To run pymCADRE, execute the notebook named main_pymcadre.ipynb or the python script named pymcadre.py. The scripts can be modified to the preferred parameters and input files. Jupyter notebooks with test runs and test scripts are also provided as reference points.

Additional material

PREDICATE (Prediction of Antiviral Targets):

Steps:

  • introduction of mutations in the reference sequence based on the protein sequences
  • calculation of the necessary stoichiometric coefficients for the final virus biomass functions
  • target detection using two approaches: reaction knock-outs and the host-derived enforcement
  • visualizations that could give insights into the dataset and a better understanding of the results.

The tool can be applied to either one or more nucleotide sequences and all existing RNA viruses. This makes it particularly advantageous and time-saving when studying multiple variants of a single virus. The number of genomic input sequences equals the number of the calculated VBOF.

To run the tool, set the constant variables to the file pathways where the desired files are stored.

pymcadre's People

Contributors

nantial avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

pymcadre's Issues

Unable to download pymCADRE with 'pip install pymcadre'

Dear Dräger Lab members,

Recently, I am planning to use pymCADRE to construct some tissue-specific GEM, But when I tried to install pymCADRE, it failed.
PYMCADRE

Could you help me to solve this issue? pymCADRE is a very good tool, I really hope that I can use it in my research.

Thanks so much

RuntimeWarning Error During Execution of pymCADRE's 'rank_reactions'

Hi! I'm currently trying to apply pymCADRE to build a context-specific metabolic model. However, when I run the 'rank_reactions' method with my gene ID list (G), ubiquity scores (U), and reaction confidence scores specified, I'm met by a RuntimeWarning error that reads: 'All-NaN axis encountered'. Below is a screenshot of the full traceback:

Screen Shot 2023-08-21 at 6 07 36 PM

What do you think could be going on here? If you would like me to send the model and inputs I'm using, I would be more than happy to do so. Any clarification/feedback would be greatly appreciated, thanks!

-Rohak

Same Model Generated by Two Different Transcriptomes

Hi @NantiaL,

I hope you're doing well! I've successfully run pymCADRE on my system, generating models for the infected and un-infected conditions, respectively. However, despite using different ubiquity scores and transcriptomes for each model run, I end up with the same generic model? I've tried implementing pruning but going through each reaction iteratively would take 16-24 hours and I'm not sure if that's worth the time. Is pruning the solution here, or is it an inherent limitation of the software?

Any clarification would be greatly appreciated, thanks!

Best,
Rohak

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.