Skip to main content

A chemical reaction network compiler for generating large biological circuit models

Project description

BioCRNPyler — Biomolecular Chemical Reaction Network Compiler

Python toolbox to create CRN models in SBML for biomolecular mechanisms

Build Status codecov PyPI version Binder

BioCRNPyler (pronounced Bio-Compiler) is a Python package for the creation, manipulation, and study of the structure, dynamics, and functions of complex biochemical networks.

  • Documentation Coming Soon! Check out the website and source code until then.
  • Slack Join the #biocrnpyler channel on SBTools slack: Ask on the public SBTools Google group to be added or send a message to one of the maintainers.

Example 1: Building Simple CRNs by Hand

BioCRNpyler allows for CRNs to be built by hand, adding Species and Reactions manually.

from biocrnpyler import *
# let's build the following CRN
# A -->[k1] 2B
# B -->[k2] B+D
# Species
A = Species("A")
B = Species("B")
C = Species("C")
D = Species("D")

#Reaction Rates
k1 = 3.
k2 = 1.4

#Reaciton Objects
R1 = Reaction.from_massaction([A], [B, B], k_forward = k1)
R2 = Reaction.from_massaction([B], [C, D], k_forward = k2)

#Make a CRN
CRN = ChemicalReactionNetwork(species = [A, B, C, D], reactions = [R1, R2])
print(CRN)

Example 2: Compiling Complex CRNs from Specifications

BioCRNpyler also allows for higher level descriptions to be compiled into a CRN. In the below example, a piece of synthetic DNA with two promoters pointing in opposite directions is constructed from a list of DNAparts which are combined together in a DNA_construct and then simulated in a TxTlExtract context, which represents a cell-free bacterial lysate with machinery like Ribosomes and Polymerases modeled explicitly.

Specification to CRN Illustration

from biocrnpyler import *

#Define a set of DNA parts
ptet = RegulatedPromoter("ptet",["tetr"],leak=True) #this is a promoter repressed by tetR and has a leak reaction
pconst = Promoter("pconst") #constitutive promoter
pcomb = CombinatorialPromoter("pcomb",["arac","laci"], leak=False, tx_capable_list = [["arac"], ["laci"]]) #the Combinations A and B or just A or just B be transcribed
utr1 = RBS("UTR1") #regular RBS
utr2 = RBS("UTR1") #regular RBS
gfp = CDS("GFP","GFP") #a CDS has a name and a protein name. so this one is called GFP and the protein is also called GFP
fusrfp = CDS("fusRFP","RFP",no_stop_codons=["forward"]) #you can say that a protein has no stop codon. This is a little different from a fusion protein, because in this case you are saying that the ribosome reads through two proteins but still produces two distinct proteins, rather than one fused protein. This can happen in the case of the ta peptide which causes a peptide bond not to be formed while making a protein.
rfp = CDS("RFP","RFP") #regular RFP
cfp = CDS("CFP","CFP") #cfp
t16 = Terminator("t16") #a terminator stops transcription

#Combine the parts together in a DNA_construct with their directions
construct = DNA_construct([[ptet,"forward"],[utr1,"forward"],[gfp,"forward"],[t16,"forward"],[t16,"reverse"],[rfp,"reverse"],[utr1,"reverse"],[pconst,"reverse"]])

#some very basic parameters are defined - these are sufficient for the whole model to compile!
parameters={"cooperativity":2,"kb":100, "ku":10, "ktx":.05, "ktl":.2, "kdeg":2,"kint":.05}

#Place the construct in a context (TxTlExtract models a bacterial lysate with machinery like Ribosomes and Polymerases modelled explicitly)
myMixture = TxTlExtract(name = "txtl", parameters = parameters, components = [construct])

#Compile the CRN
myCRN = myMixture.compile_crn()

#plotting not shown - but BioCRNpyler automatically produces interactive reaction network graphs to help visualize and debug complex CRNs!

More advanced examples can be found in the example folder, here's the first file in the Tutorial series: Building CRNs

Installation

Install the latest version of BioCRNPyler::

$ pip install biocrnpyler

Install with all optional dependencies::

$ pip install biocrnpyler[all]

Further details about the installation process can be found in the BioCRNPyler wiki.

Bugs

Please report any bugs that you find here. Or, even better, fork the repository on GitHub, and create a pull request (PR). We welcome all changes, big or small, and we will help you make the PR if you are new to git (just ask on the issue and/or see contribution guidelines).

Versions

BioCRNpyler versions:

  • 1.0.0 (latest stable release): To install run pip install biocrnpyler
  • 0.9.0 (beta release): To install run pip install biocrnpyler==0.9.0
  • 0.2.1 (alpha release): To install run pip install biocrnpyler==0.2.1

License

Released under the BSD 3-Clause License (see LICENSE)

Copyright (c) 2020, Build-A-Cell. All rights reserved.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

biocrnpyler-1.0.1.tar.gz (104.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

biocrnpyler-1.0.1-py3-none-any.whl (107.0 kB view details)

Uploaded Python 3

File details

Details for the file biocrnpyler-1.0.1.tar.gz.

File metadata

  • Download URL: biocrnpyler-1.0.1.tar.gz
  • Upload date:
  • Size: 104.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.4.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4

File hashes

Hashes for biocrnpyler-1.0.1.tar.gz
Algorithm Hash digest
SHA256 e4a7b25b932d0fc443e94148d5c7ffe74b699745c544163b4f7b19a1fd1e0a7e
MD5 baa6adcf71776ba4bc59ecc164c8b063
BLAKE2b-256 e0d3d16c2298c7652005bc17c979709b9f1366e06a3ad2d102daf1f5f29decdf

See more details on using hashes here.

File details

Details for the file biocrnpyler-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: biocrnpyler-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 107.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.4.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4

File hashes

Hashes for biocrnpyler-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 3c58b73bbedd7a31ca8fc75c404e4a3ae791f0c8e57be4ca6e21f053e2b001f8
MD5 611a71829b3dc3c6983325abc1e56acc
BLAKE2b-256 6d09012b6438551b292e85f4f9fb1a7c7097289b9c2c045a287f94f4bc2a7ef8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page