clauswilke / pinetree Goto Github PK
View Code? Open in Web Editor NEW๐ฒ a flexible gene expression simulator with codon-specific translation rates
Home Page: http://pinetree.readthedocs.io
License: MIT License
๐ฒ a flexible gene expression simulator with codon-specific translation rates
Home Page: http://pinetree.readthedocs.io
License: MIT License
In docs/intro.rst lines 80-81,
I think copies
needs to be updated to copy_number
This is pretty minimal, so I don't mind making a PR for this.
When running Pinetree on a mutant T7 genome, this error occurs:
Traceback (most recent call last):
File "phage_mutant_model.py", line 265, in
main()
File "phage_mutant_model.py", line 261, in main
sim.simulate(time_limit=1500, time_step=5, output="phage_counts.tsv")
RuntimeError: Polymerase __ribosome (start: 8323, stop: 8352, index: 11) is overlapping polymerase __ribosome (start: 8347, stop: 8376, index: 12) by more than one position on polymer __rna
The mutant T7 has a modified gene around coordinates 1200-2000, which shouldn't affect ribosome binding around coordinates 8323-8376.
Python environment used:
Python 3.7.5
biopython==1.76
cmake==3.17.2
numpy==1.18.5
pinetree==0.2.0
Currently the effect of codon usage changing the speed of translation needs to be implemented by the user assigning normalized weights to each base in the genome. It would be helpful if there were a simpler and perhaps more fully featured way of having Pinetree do this... for example by having the user assign speeds for all 61 codons and then having Pinetree figure out the weights across each reading frame itself.
It would also be interesting/useful if ribosomes could keep track of what frame they were in, so that overlapping genes could have different weights and sites that lead to -1 frameshifts could be simulated.
The documentation states that Pinetree doesn't support overlapping genes or genes that overlap with a ribosome binding site. Confusingly, if the user does try to add overlapping genes to the simulation, Pinetree will run anyway; this sometimes (but not always; see #11) results in a seemingly unrelated error.
Given that overlapping genes are quite abundant in real phage genomes, it would be best to fix this undefined behavior and implement full support for overlapping genes.
tests/params/lotka_voltera.yml
to some large number (I have found >600 consistently works)This should segfault the library.
I've traced the segfault to pinetree/simulation.cpp
on line 219. The following is the relevant snippet:
auto next_reaction = Random::WeightedChoiceIndex(reactions_, alpha_list_);
reactions_[next_reaction]->Execute(); // SEGFAULT HERE
UpdatePropensity(next_reaction);
iteration_++;
It seems the WeightedChoiceIndex is somehow choosing elements off the end of the list. Adding an assert(next_reaction < reactions_.size())
before this line will trigger the assertion.
Hi there -
I have been trying to install pinetree on an M2 MacBook and have installed all dependencies listed, however have been met with various error codes, the latest being "ERROR: Could not build wheels for pinetree which use PEP 517 and cannot be installed directly." I have tried numerous fixes suggested on online forums which have been unsuccessful, I was wondering if you had encountered this problem before or have any suggestions?
Thanks,
Gil
The fix for the race condition is in another PR; I'm merging it separately from the unit test (which I haven't had the chance to implement yet) because a current user needs the fix ASAP.
We would like to do some simulations with a separate plasmid and/or genome in a cell that is being infected by the phage. Is this possible already? (Can you call register_genome()
twice and it will include both?)
If not, it seems like it could be faked by appending the sequences and making sure that there is a perfect terminator between them, but it would be easier for us to set up if they were separate.
It might also be helpful to have a copy_number
parameter for each genome (=DNA molecule) that would scale all of the promoter rates on that piece of DNA, in case that was a parameter that we wanted to adjust for a plasmid.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.