This is now the backbone for Plasmid Designer
Plasmid is a genetics / bioinformatics framework.
It consists of two parts:
libplasmid
: Library for genetic code creation, editing and analysisplasmid-cli
: CLI for genetic sequence processing
This is a work-in-progress.
I should also mention that I'm not at all trained in bioinformatics, bioengineering, or anything even remotely similar. I'm writing this library while I'm learning the concepts, so expect some rough edges.
The desktop application has moved to Plasmid Designer.
# Command
plasmid-cli pp "ATGTACCCGTATCTG"
# Output
# 5' ATGTACCCGTATCTG 3'
# 3' TACATGGGCATAGAC 5'
# M Y P Y L
# Command
plasmid-cli match "ATGTACCCGTATCTG" "ATGNNNSSSW"
# Output
# 5' ATGTACCCGTATCTG 3'
# ATGNNNSSSW
# -> Matches: true
plasmid-cli export "ATGTACCCGTATCTG" --format svg > out.svg
Module | Description |
---|---|
prelude |
Exports all essential types and traits |
dna |
DNA Nucleotide Processing |
rna |
RNA Nucleotide Processing |
eaa |
Amino Acid Processing |
seq |
Genetic Sequence Editing and Analysis |
uni |
IUPAC Sequence Processing |
vis |
Visualization Tools |
imp |
Import Helpers |
exp |
Export Helpers |
traits |
Helpful Traits |
- genetic sequence modeling
- dna/rna nucleotides
- dna/rna nucleotide triplets
- dna/rna bp and anticodon handling
- dna/rna iupac sequence matching
- sequence alignment
- dynamic dna/rna editing (
seq
module)- always keep nucleotide sequence
- nucleotide triplet iterator
- reverse complement iterator
- push/pop nucleotides
- push/pop codons
- insert/remove nucleotides
- substitute nucleotides
- base-pair iterator
- polypeptide iterator (lazy translation)
- dna transcription
- rna polypeptide translation
- amino acid reverse transcription
- genetic codes
-
ACGT
(seeDnaNucleotide
) -
ACGU
(seeRnaNucleotide
) -
ACGTWSMKRYBDHVN-
(seeIupacNucleotide
)
-
- genetic sequence analysis
- at-count, gc-count, at-ratio, gc-ratio, at/gc-ratio
- hairpin detection
- open reading frame detection
- cut site detection
- annotation
- general sequence annotation
- auto-annotate cut sites
- visualization
- simple text-based output
- plasmid svg generation
- import / export
- fasta
- fastq
- sam
- svg
- linear
- circular
- custom?
fn main() -> Result<(), Box<dyn std::error::Error>> {
let dna = "ATGGTTCGGCAATTT";
// Load DNA from string
let mut seq = DnaSequence.from_str(dna)?;
// Annotate restriction enzyme cut sites
seq.annotate_restriction_enzymes();
// Check if NdeI cut site exists
if let Some(ann) = seq.annotation_iter().find(|ann| ann.text == "NdeI") {
println!("Found NdeI cut site (start: {}; end: {})", ann.start, ann.end);
}
// Generate SVG of circular DNA
let conf = SvgExportConfig::circular();
let svg = SvgExport::new(conf, seq.as_nucleotides());
println!("{}", svg.export()); // print svg code
}