A Python package for constructing microbial strains
Project description
teemi: a python package designed to make high-throughput strain construction reproducible and FAIR
What is teemi?
teemi, named after the Greek goddess of fairness, is a python package designed to make microbial strain construction reproducible and FAIR (Findable, Accessible, Interoperable, and Reusable). With teemi, you can simulate all steps of a strain construction cycle, from generating genetic parts to designing a combinatorial library and keeping track of samples through a commercial Benchling API and a low-level CSV file database. This tool can be used in literate programming to increase efficiency and speed in metabolic engineering tasks. To try teemi, visit our Google Colab notebooks.
teemi not only simplifies the strain construction process but also offers the flexibility to adapt to different experimental workflows through its open-source Python platform. This allows for efficient automation of repetitive tasks and a faster pace in metabolic engineering.
Our demonstration of teemi in a complex machine learning-guided metabolic engineering task showcases its efficiency and speed by debottlenecking a crucial step in the strictosidine pathway. This highlights the versatility and usefulness of this tool in various biological applications.
Curious about how you can build strains easier and faster with teemi? Head over to our Google Colab notebooks and give it a try.
Our pre-print “Literate programming for iterative design-build-test-learn cycles in bioengineering” is out now. Please cite it if you’ve used teemi in a scientific publication.
Features
Combinatorial library generation
HT cloning and transformation workflows
Flowbot One instructions
CSV-based LIMS system as well as integration to Benchling
Genotyping of microbial strains
Advanced Machine Learning of biological datasets with the AutoML H2O
Workflows for selecting enzyme homologs
Promoter selection workflows from RNA-seq datasets
Data analysis of large LC-MS datasets along with workflows for analysis
Getting started
To get started with making microbial strains in an HT manner please follow the steps below:
Install teemi. You will find the necessary information below for installation.
Check out our notebooks for inspiration to make HT strain construction with teemi.
You can start making your own workflows by importing teemi into either Google colab or Jupyter lab/notebooks.
Colab notebooks
As a proof of concept we show how teemi and literate programming can be used to streamline bioengineering workflows. These workflows should serve as a guide or a help to build your own workflows and thereby harnessing the power of literate programming with teemi.
Specifically, in this study we present how teemi and literate programming to build simulation-guided, iterative, and evolution-guided laboratory workflows for optimizing strictosidine production in yeast.
Below you can find all the notebooks developed in this work. Just click the Google colab badge to start the workflows.
A Quick Guide to Creating a Combinatorial Library
This guide provides a simple illustration of the power and ease of use of the Teemi tool. Let’s take the example of creating a basic combinatorial library with the following design considerations:
Four promoters
Ten enzyme homologs
A Kozak sequence integrated into the primers
Our goal is to assemble a library of promoters and enzymes into a genome via in vivo assembly. We already have a CRISPR plasmid; all we need to do is amplify the promoters and enzymes for the transformation. This requires generating primers and conducting numerous PCRs. We’ll use Teemi for this process.
To begin, we load the genetic parts using Teemi’s easy-to-use function read_genbank_files(), specifying the path to the genetic parts.
from teemi.design.fetch_sequences import read_genbank_files
path = '../data/genetic_parts/G8H_CYP_CPR_PARTS/'
pCPR_sites = read_genbank_files(path+'CPR_promoters.gb')
CPR_sites = read_genbank_files(path+'CPR_tCYC1.gb')
We have four promoters and ten CPR homologs (all with integrated terminators). We want to convert them into pydna.Dseqrecord objects from their current form as Bio.Seqrecord. We can do it this way:
from pydna.dseqrecord import Dseqrecord
pCPR_sites = [Dseqrecord(seq) for seq in pCPR_sites]
CPR_sites = [Dseqrecord(seq) for seq in CPR_sites]
Next, we add these genetic parts to a list in the configuration we desire, with the promoters upstream of the enzyme homologs.
list_of_seqs = [pCPR_sites, CPR_sites]
If we want to integrate a sgRNA site into the primers, we can do that. In this case, we want to integrate a Kozak sequence. We can initialize it as shown below.
kozak = [Dseqrecord('TCGGTC')]
Now we’re ready to create a combinatorial library of our 4x10 combinations. We can import the Teemi class for this.
from teemi.design.combinatorial_design import DesignAssembly
We initialize with the sequences, the pad (where we want the pad - in this case, between the promoters and CPRs), then select the overlap and the desired temperature for the primers. Note that you can use your own primer calculator. Teemi has a function that can calculate primer Tm using NEB, for example, but for simplicity, we’ll use the default calculator here.
CPR_combinatorial_library = DesignAssembly(list_of_seqs, pad = kozak , position_of_pads =[1], overlap=35, target_tm = 55 )
Now, we can retrieve the library.
CPR_combinatorial_library.primer_list_to_dataframe()
id |
anneals to |
sequence |
annealing temperature |
length |
price(DKK) |
description |
footprint |
len_footprint |
---|---|---|---|---|---|---|---|---|
P001 |
pMLS1 |
… |
56.11 |
20 |
36.0 |
Anneals to pMLS1 |
… |
20 |
P002 |
pMLS1 |
… |
56.18 |
49 |
88.2 |
Anneals to pMLS1, overlaps to 2349bp_PCR_prod |
… |
28 |
… |
… |
… |
… |
… |
… |
… |
… |
… |
The result of this operation is a pandas DataFrame which will look similar to the given example (note that the actual DataFrame have more rows).
To obtain a DataFrame detailing the steps required for each PCR, we can use the following:
CPR_combinatorial_library.pcr_list_to_dataframe()
pcr_number |
template |
forward_primer |
reverse_primer |
f_tm |
r_tm |
---|---|---|---|---|---|
PCR1 |
pMLS1 |
P001 |
P002 |
56.11 |
56.18 |
PCR2 |
AhuCPR_tCYC1 |
P003 |
P004 |
53.04 |
53.50 |
PCR3 |
pMLS1 |
P001 |
P005 |
56.11 |
56.18 |
… |
… |
… |
… |
… |
… |
The output is a pandas DataFrame. This is a simplified version and the actual DataFrame can have more rows.
Teemi has many more functionalities. For instance, we can easily view the different combinations in our library.
CPR_combinatorial_library.show_variants_lib_df()
0 |
1 |
Systematic_name |
Variant |
---|---|---|---|
pMLS1 |
AhuCPR_tCYC1 |
(1, 1) |
0 |
pMLS1 |
AanCPR_tCYC1 |
(1, 2) |
1 |
pMLS1 |
CloCPR_tCYC1 |
(1, 3) |
2 |
… |
… |
… |
… |
This command results in a pandas DataFrame, showing the combinations in the library. This is a simplified version and the actual DataFrame would have 40 rows for this example.
The next step is to head to the lab and build some strains. Luckily, we have many examples demonstrating how to do this for a large number of strains and a bigger library (1280 combinations). Please refer to our notebooks below where we look at optimizing strictosidine production in yeast with Teemi.
Strictosidine case : First DBTL cycle
DESIGN:
Automatically fetch homologs from NCBI from a query in a standardizable and repeatable way
Promoters can be selected from RNAseq data and fetched from online database with various quality measurements implemented
Combinatorial libraries can be generated with the DesignAssembly class along with robot executable intructions
BUILD:
Assembly of a CRISPR plasmid with USER cloning
Construction of the background strain by K/O of G8H and CPR
First combinatorial library was generated for 1280 possible combinations
TEST:
Data processing of LC-MS data and genotyping of the generated strains
LEARN:
Use AutoML to predict the best combinations for a targeted second round of library construction
Strictosidine case : Second DBTL cycle
DESIGN:
Results from the ML can be translated into making a targeted library of strains
BUILD:
Shows the construction of a targeted library of strains
TEST:
Data processing of LC-MS data like in notebook 6
LEARN:
Second ML cycle of ML showing how the model increased performance and saturation of best performing strains
Installation
Use pip to install teemi from PyPI.
$ pip install teemi
If you want to develop or if you cloned the repository from our GitHub you can install teemi in the following way.
$ pip install -e <path-to-teemi-repo>
You might need to run these commands with administrative privileges if you’re not using a virtual environment (using sudo for example). Please check the documentation for further details.
Documentation and Examples
Documentation is available on through numerous Google Colab notebooks with examples on how to use teemi and how we use these notebooks for strain construnction. The Colab notebooks can be found here teemi.notebooks.
Documentation: https://teemi.readthedocs.io.
Contributions
Contributions are very welcome! Check our guidelines for instructions how to contribute.
License
Free software: MIT license
Credits
This package was created with Cookiecutter and the audreyr/cookiecutter-pypackage project template.
teemis logo was made by Jonas Krogh Fischer. Check out his website.
History
0.1.0 (2023-01-02)
First release on PyPI.
0.2.0 (2023-31-05)
New submodules: CRISPRsequencecutter, sequence_finder.
CRISPRSequenceCutter is a dataclass that is used to cut DNA through CRISPR-cas9 double-stranded break. SequenceFinder is a dataclass that finds upstream and downstream sequences from a sequence input, annotates them and saves them.
0.3.0 (2023-22-06)
New submodules: gibson_cloning
This module is used to perform simple Gibson cloning workflows. While the addition of the “gibson_cloning” submodule is an exciting development, this module is still a work in progress. Next, a golden gate module. Keep posted on the progress.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file teemi-0.3.2.tar.gz
.
File metadata
- Download URL: teemi-0.3.2.tar.gz
- Upload date:
- Size: 84.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.17
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d731685d83ef5c0464310de6019aac22171681be8ec6e6d01e8bd3255cb905eb |
|
MD5 | 49d084ac69f35c17249e29b4c6641622 |
|
BLAKE2b-256 | 4d48a62e60deb05b30fbde07ecdded15f29fb6137faabd40ae08ef399cb43b46 |
File details
Details for the file teemi-0.3.2-py2.py3-none-any.whl
.
File metadata
- Download URL: teemi-0.3.2-py2.py3-none-any.whl
- Upload date:
- Size: 74.9 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.17
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c7ed1e62630334badcdce3f7b0d3f8bd10f4749ba02466a836c0c5a7f1f4746d |
|
MD5 | ce82957563c19d058bab51c0ab963750 |
|
BLAKE2b-256 | bc8bf695cf70c3188856292cc06334cf0647293514072f30a539ff13c6c5fdc1 |