Skip to content

Commit

Permalink
Merge pull request #94 from cdanielmachado/development
Browse files Browse the repository at this point in the history
Development
  • Loading branch information
cdanielmachado committed Sep 17, 2020
2 parents 784e323 + 57bad25 commit 5869aa0
Show file tree
Hide file tree
Showing 8 changed files with 51 additions and 75 deletions.
1 change: 1 addition & 0 deletions carveme/cli/benchmark.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
'sone': 'Shewanella oneidensis (MR-1)'
}


genomes = {
'bsub': 'Bsubtilis_168.faa',
'ecol': 'Ecoli_K12_MG1655.faa',
Expand Down
8 changes: 6 additions & 2 deletions carveme/cli/build_universe.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
import os
import pandas as pd

from carveme.universe.bigg_download import build_bigg_universe_model, download_model_specific_data, create_gpr_table
from carveme.universe.bigg_download import build_bigg_universe_model, download_model_specific_data, create_gpr_table,\
download_gene_sequences
from carveme.universe.curation import curate_universe
from carveme.universe.thermodynamics import compute_bigg_gibbs_energy
from carveme.reconstruction.utils import load_biomass_db
Expand All @@ -21,14 +22,17 @@ def maincall(mode, noheuristics=False, nothermo=False, allow_unbalanced=False, a
universe_draft = outputfile
model_specific_data = os.path.splitext(outputfile)[0] + '.csv'
bigg_gprs = os.path.splitext(outputfile)[0] + '_gprs.csv'
# fasta_file = os.path.splitext(outputfile)[0] + '.faa'
else:
universe_draft = project_dir + config.get('generated', 'universe_draft')
model_specific_data = project_dir + config.get('generated', 'model_specific_data')
bigg_gprs = project_dir + config.get('generated', 'bigg_gprs')
# fasta_file = project_dir + config.get('input', 'fasta_file')

build_bigg_universe_model(universe_draft)
data = download_model_specific_data(model_specific_data)
create_gpr_table(data, outputfile=bigg_gprs)
gprs = create_gpr_table(data, outputfile=bigg_gprs)
# download_gene_sequences(gprs, outputfile=fasta_file)

elif mode == 'thermo':
universe_draft = project_dir + config.get('generated', 'universe_draft')
Expand Down
2 changes: 1 addition & 1 deletion carveme/cli/carve.py
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ def maincall(inputfile, input_type='protein', outputfile=None, diamond_args=None
universe_file = project_dir + config.get('generated', 'default_universe')

try:
universe_model = load_cbmodel(universe_file, flavor=config.get('sbml', 'default_flavor'))
universe_model = load_cbmodel(universe_file, flavor='cobra')
universe_model.id = model_id
except IOError:
available = '\n'.join(glob("{}{}universe_*.xml.gz".format(project_dir, config.get('generated', 'folder'))))
Expand Down
55 changes: 0 additions & 55 deletions carveme/cli/carveme_init.py

This file was deleted.

6 changes: 4 additions & 2 deletions carveme/config.cfg
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
[input]
equilibrator_compounds = data/input/equilibrator_compounds.tsv.gz
diamond_db = data/input/bigg_proteins.dmnd
biomass_library = data/input/biomass_db.tsv
media_library = data/input/media_db.tsv
bigg_models = data/input/bigg_models.csv
metabolomics = data/input/metabolomics_park2016.csv
unbalanced_metabolites = data/input/unbalanced_metabolites.csv
manually_curated = data/input/manually_curated.csv
refseq = data/input/refseq_release_201.tsv.gz
fasta_file = data/input/bigg_proteins.faa
diamond_db = data/input/bigg_proteins.dmnd

[generated]
folder = data/generated/
Expand All @@ -17,6 +18,7 @@ universe_draft = data/generated/universe_draft.xml.gz
default_universe = data/generated/universe_bacteria.xml.gz
bigg_gibbs = data/generated/bigg_gibbs.csv


[solver]
default_solver = cplex
feas_tol = 1e-9
Expand All @@ -32,7 +34,7 @@ concentration_max = 1e-2
measured_fold_change = 10

[sbml]
default_flavor = cobra
default_flavor = fbc2

[gapfill]
max_uptake = 100
Expand Down
26 changes: 20 additions & 6 deletions carveme/universe/bigg_download.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@

def progress(i, n):
p = int((i+1)*100.0 / n)
sys.stdout.write("\r{}%".format(p))
sys.stdout.write(f"\r{p}%")
sys.stdout.flush()


Expand Down Expand Up @@ -75,13 +75,13 @@ def build_reaction(model, bigg_id, ignore_pseudo_reactions=True, only_pseudo_rea

for entry in data['metabolites']:
comp = str(entry['compartment_bigg_id'])
c_id = 'C_{}'.format(comp)
c_id = f'C_{comp}'

if c_id not in model.compartments:
build_compartment(model, comp)

met = entry['bigg_id']
m_id = 'M_{}_{}'.format(met, comp)
m_id = f'M_{met}_{comp}'

if m_id not in model.metabolites:
build_metabolite(model, met, comp)
Expand Down Expand Up @@ -119,11 +119,11 @@ def build_metabolite(model, bigg_id, compartment):
"""
data = get_request(metabolites_url + bigg_id)
m_id = 'M_{}_{}'.format(bigg_id, compartment)
m_id = f'M_{bigg_id}_{compartment}'
c_id = 'C_' + compartment
name = str(data['name'])
metabolite = Metabolite(m_id, name, c_id)
model.add_metabolite(metabolite, clear_tmp=False)
model.add_metabolite(metabolite)
extract_metabolite_metadata(metabolite, data, compartment)


Expand Down Expand Up @@ -230,7 +230,7 @@ def download_model_specific_data(outputfile=None):

for i, entry in enumerate(data['results']):
model_id = entry['bigg_id']
model = get_request('{}{}/download'.format(models_url, model_id))
model = get_request(f'{models_url}{model_id}/download')

for reaction in model['reactions']:
r_id = reaction['id']
Expand Down Expand Up @@ -304,3 +304,17 @@ def create_gpr_table(model_specific_data, reactions=None, outputfile=None):
df.to_csv(outputfile, index=False)

return df


def download_gene_sequences(gprs, outputfile):
df = gprs[['gene', 'model']].drop_duplicates()
data = {}
for _, row in df.iterrows():
entry = get_request(f'{models_url}/{row["model"]}/genes/{row["gene"]}')
data[(row['gene'], row['model'])] = entry['protein_sequence']

with open(outputfile, 'w') as f:
for (gene, model), seq in data.items():
f.write(f'>{model}.{gene}\n')
f.write(seq + '\n')

4 changes: 2 additions & 2 deletions carveme/universe/curation.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import numpy as np
from reframed.model.transformation import disconnected_metabolites
from reframed.core.transformation import disconnected_metabolites
from carveme.reconstruction.utils import create_exchange_reactions, add_biomass_equation, create_sink_reactions, \
add_maintenance_atp
from reframed import simplify
from reframed import save_cbmodel
from carveme.universe.thermodynamics import compute_flux_bounds
from reframed.experimental.elements import parse_formula
from reframed.core.elements import parse_formula


def elemental_balance(formulas, tol=1e-6):
Expand Down
24 changes: 17 additions & 7 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
readme = readme_file.read()

requirements = [
"reframed>=1.1",
"reframed>=1.2",
"pandas>=0.20.0",
"requests>=2.18"
]
Expand All @@ -23,7 +23,18 @@
'data/input/media_db.tsv',
'data/input/metabolomics_park2016.csv',
'data/input/unbalanced_metabolites.csv',
'data/generated/bigg_gibbs.csv'
'data/input/bigg_proteins.faa',
'data/input/bigg_proteins.dmnd',
'data/input/equilibrator_compounds.tsv.gz',
'data/input/refseq_release_201.tsv.gz',
'data/generated/bigg_gibbs.csv',
'data/generated/bigg_gprs.csv.gz',
'data/generated/model_specific_data.csv.gz',
'data/generated/universe_draft.xml.gz',
'data/generated/universe_bacteria.xml.gz',
'data/generated/universe_grampos.xml.gz',
'data/generated/universe_gramneg.xml.gz',
'data/generated/universe_archaea.xml.gz',
]
}

Expand All @@ -33,20 +44,19 @@
version='1.3.0',
description="CarveMe: automated metabolic model reconstruction",
long_description=readme,
author="Daniel Machado, Sergej Andrejev",
author="Daniel Machado",
author_email='cdanielmachado@gmail.com',
url='https://github.com/cdanielmachado/carveme',
entry_points={
'console_scripts': [
'build_universe=carveme.cli.build_universe:main',
'carve=carveme.cli.carve:main',
'carveme_init=carveme.cli.carveme_init:main',
'gapfill=carveme.cli.gapfill:main',
'merge_community=carveme.cli.merge_community:main',
'benchmark=carveme.cli.benchmark:main',
],
},
# package_dir={'':'src'},
# package_dir={'':'src'},
packages=find_packages(),
include_package_data=True,
package_data=included_files,
Expand All @@ -64,6 +74,6 @@
'License :: OSI Approved :: Apache Software License',
],
setup_requires=['setuptools_scm']
# test_suite='tests',
# tests_require=test_requirements,
# test_suite='tests',
# tests_require=test_requirements,
)

0 comments on commit 5869aa0

Please sign in to comment.