Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • May 12 07:21
    dahalsanzeev opened #295
  • Apr 02 17:23
  • Mar 31 06:34
  • Feb 28 13:28
  • Feb 17 18:33
    phantomas1234 commented #294
  • Feb 17 18:31
    phantomas1234 commented #204
  • Feb 17 13:08
  • Feb 07 22:00
    sruti-dammalapati opened #294
  • Feb 03 09:05

    carrascomj on devel

    docs: point binder badge to mas… (compare)

  • Feb 02 14:47
    jhgorse commented #293
  • Feb 02 14:47
    jhgorse closed #293
  • Feb 02 08:43
    carrascomj labeled #293
  • Feb 02 08:43
    carrascomj labeled #293
  • Feb 02 08:41
    carrascomj commented #293
  • Feb 02 04:50
    jhgorse opened #293
  • Jan 27 23:42
    sruti-dammalapati commented #204
  • Jan 26 09:53
    guillaume-gricourt edited #292
  • Jan 26 09:51
    guillaume-gricourt synchronize #292
  • Jan 26 09:50
    guillaume-gricourt synchronize #292
Nikolaus Sonnenschein
@phantomas1234
First pull request! biosustain/cameo#1
Nikolaus Sonnenschein
@phantomas1234
Second pull request! biosustain/cameo#2 @joaocardoso can you test this on your machine? There is still a weird installation issue for pandas in ubuntu/trusty64
Peter St. John
@pstjohn
How does cameo implement elementary flux mode enumeration or calculation of minimum cut sets? Is there a good documentation example I could follow to calculate the EFMs of say, the E. coli core model?
Nikolaus Sonnenschein
@phantomas1234
@pstjohn check out https://github.com/biosustain/cameo/blob/devel/cameo/flux_analysis/structural.py, MinimalCutSetsEnumerator and ShortestElementaryFluxModes. Sorry no documentation yet. But this unit test probably helps https://github.com/biosustain/cameo/blob/6babaffb50ea1c5f342fec255574f36e9350fa0e/tests/test_flux_analysis.py#L303. This is really experimental though. We were planning to use this for http://journals.plos.org/ploscompbiol/article?id=10.1371%2Fjournal.pcbi.1003378 but so far we have not got it completely right I think (need to talk Kristian). I think the application of real EFM software is fairly limited in both cobrapy and cameo. Calculating the shortest EFMs (like described in the paper) has some value though. You mentioned that you had nice wrappers for some of the better EFM tools in your cobrapy fork. Why not just make nice separate packages since they come with some heavy dependencies? I think we should try to avoid making cobrapy larger. With Python packaging being slightly less traumatic now, I think it makes sense to have many packages that do certain things very well. Of course we could highlight those on http://opencobra.github.io/.
Kristian Jensen
@KristianJensen
@pstjohn Our implementation of ShortestElementaryFluxModes is based on the Von Kamp & Klamt paper that Niko linked to above. You can find the algorithms in the methods section. Currently we use ALGO2 for cplex and ALGO1 for other solvers. Finding elementary flux modes is very straight forward. You instantiate a flux mode enumerator by ShortestElementaryFluxModes(model) and iterate over this object. This will return all flux modes ordered by length. I'm fairly certain this method in cameo works correctly. The MinimalCutSetsEnumerator is based on http://bioinformatics.oxfordjournals.org/content/28/3/381.short , but there still seems to be some issues with our implementation
Peter St. John
@pstjohn
@phantomas1234 , splitting the packages probably makes sense. I'll reach out to the original authors and make sure they're OK with it. @KristianJensen , thanks for the description! In case you were wondering, I've had good results using the efmtool from marco terzer (doi:10.1093/bioinformatics/btn401) for EFMs and the berge algorithm from Christian Jungreuthmayer (http://www.biomedcentral.com/1471-2105/14/318) for minimum cut sets. Java / C++, respectively, though.
Zachary A. King
@zakandrewking
I'm really impressed with the progress on cameo! I'm teaching some people how to use it next week
2 quick Qs: is the pathway predictor based on GEM-path? does the optknock code use the optknock procedure within cobrapy, or was it rewritten?
github is down (!! :worried: ) or I would just check out the code
João Gonçalo Rocha Cardoso
@joaocardoso
Thanks Zak! The pathway predictor is a single level MILP where the integer variables to minimize are the reactions on an external database that are not present in the model. A simplification of optstrain
We force a little bit of the compound to be produced m
Optknock was rewritten. We add an integer cut to yield multiple solutions
My advice is, do not use optknock cause it's slow and doesn't scale
You can run optgene with reactions or genes as targets. With FBA you can try 20000 designs in 5 min and you will get the 50 top solutions
Zachary A. King
@zakandrewking
Makes sense. Optknock would be just for teaching purposes. It's the first one to come along and fun to explain
Nikolaus Sonnenschein
@phantomas1234
@zakandrewking https://biosustain.github.io/cell-factory-design-course/ might be helpful with the teaching.
Zachary A. King
@zakandrewking
Thanks. That's helpful
Muhammed Hasan
@MuhammedHasan
biosustain/cameo#111
Can you help about my question?
James Daniell
@JamesDaniellNZ_twitter
Hello, quick question - I've started using cameo and was wondering if there is any advantage to using OptGene instead of directly using GeneKnockoutOptimization?
Nikolaus Sonnenschein
@phantomas1234
Opt
Nikolaus Sonnenschein
@phantomas1234
OptGene is just a high-level wrapper for GeneKnockoutOptimization that stays close to the original publication, GeneKnockoutOptimization can easily be customized, one could for example swap the underlying heuristic from genetic algorithm to particle swarm or whatever etc.
Also cool that you started using it 👍please let us know if we can help you with something or you encounter any issues. We're close to submitting a preprint to biorxiv so feedback is very valuable.
James Daniell
@JamesDaniellNZ_twitter
Got it, thanks Nikolaus. I am really enjoying using cameo and optlang! I'll make sure to send through feedback.
I'm currently migrating a set of pipelines from Java and MATLAB (using OptFlux and COBRA Toolbox) to Python with cameo. Using the same solver, some of these are running too slowly with cameo (even across 128 CPU cores), but I still need to do some profiling... I'll let you know once I have investigated further.
Nikolaus Sonnenschein
@phantomas1234
I would be very much interested in the outcome of your profiling. Something to consider in terms of speed is to avoid copies of models at all costs. Instead you can use TimeMachine (please look in the cameo code for examples) to roll back changes to a model. You might also take a look at the latest cobrapy release where you can just write with model: ...(like here https://twitter.com/DDDeCaF/status/841974326526128128). The latest cobrapy release also uses optlang. We're going to migrate cameo soon to the latest cobrapy release too.
Nikolaus Sonnenschein
@phantomas1234
Cameo preprint now on biorxiv in case you'd like to cite somewhere
Daniel Machado
@cdanielmachado
Hi everyone, I have a couple of questions from a visiting student in our lab who is using cameo, I hope you can help.
First, how does one define the optimization objective in OptGene? In OptFlux one can choose between product yield or BPCY. In cameo I don't see that option.
Does cameo allow visualization of fluxes in customized escher maps ?
Can one add reactions to cameo models in a single line? Like in model.add("a + b -> c") ?
Daniel Machado
@cdanielmachado
Can one export models in JSON format ? (The escher build tool requires to load the modified model to draw the heterologous reactions in a map).
@joaocardoso Niko says you're the expert :)
Moritz E. Beber
@Midnighter

Can one add reactions to cameo models in a single line? Like in model.add("a + b -> c") ?

You can build a reaction from a string and then add that to your model. https://cobrapy.readthedocs.io/en/latest/cobra.core.html#cobra.core.reaction.Reaction.build_reaction_from_string

Daniel Machado
@cdanielmachado
@Midnighter thanks! The first question is still the most pressing though... :)
by the way, you guys could add model.add_reaction_from_str like we have in framed, i find it super convenient
Moritz E. Beber
@Midnighter
Yeah, it'd be a convenient method to have. Until we put it in you could just monkey patch the class.
João Gonçalo Rocha Cardoso
@joaocardoso
Daniel: you can use cobra.io.json to export the model
Objective functions in cameo can be found at cameo.strain_design.heuristic.evolutionary.objective_functions
João Gonçalo Rocha Cardoso
@joaocardoso
Looks like you cannot change the objective function in OptGene. If you need to use yield instead of BPCY, we can update the run signature.
Nikolaus Sonnenschein
@phantomas1234
One could also use the lower level classes
Daniel Machado
@cdanielmachado
ok, thanks !
Astrid-42
@Astrid-42

Hi everyone,
I have a problem with cameo, specifically OptGene, and would be very delighted about your help.
After importing OptGene, my model, and fba as simulation method, I tried to run OptGene:
result = optgene.run(target='r_4054',
biomass='s_0450',
substrate='s_0565',
max_knockouts=10,
variable_size=True,
simulation_method= fba,
growth_coupled=False,
max_evaluations=500,
population_size=200,
max_results=50,
use_nullspace_simplification=True,
seed=None)
Upon this, Jupiter stops and throws me the error "show() got an unexpected keyword argument 'notebook_handle'". Do you know how to fix that?

If I try the same in the terminal to avoid the Jupiter Notebook the process finishes without error, but the result seems to be empty?
(result.data_frame

                # Empty DataFrame
                # Columns: [reactions, genes, size, fva_min, fva_max, target_flux, biomass_flux, yield, fitness]
                # Index: []

I would be very happy about your ideas where the problem is.
Many thanks and kind regards,
Astrid

Daniel Machado
@cdanielmachado
@joaocardoso @Midnighter Astrid is currently working at our lab. Can you help her? It seems something might be wrong with the jupyter integration.