Quickly perform microhomology to speed up genetic engineering.
With only a few lines of code, researchers can...
- Identify microhomology canidate sites in a gene
- Perform microhomology on sites using multiple strategies
- Get forward and reverse sequences for each strategy's results
- Get forward and reverse oligo sequences for each strategy's results
This gem uses BioRuby to easily obtain compliment pairs and traverse forward or reverse strands.
Installation
Add this line to your application's Gemfile:
gem 'microhomology'
Or install it yourself via Command Line Interface:
$ gem install microhomology
Usage
Note: This currently relies on the Ensembl REST API for it's data. DNA can only be obtained by using a valid Ensembl Gene ID. Additional options for obtaining DNA via other sources such as text files, formated files or 3rd Party API's is intended to be added at a later date.
The DNA
The DNA from Ensembl is masked to differentiate between Introns and Exons.
Note: The default is to scan only exons when using a microhomology strategy. Adding options to choose between exons, introns or include both is intended to be added at a later date.
mh = Microhomology::Crispr.new('ENSDARG00000061303', [3, 6, 9])
mh.dna
# TTTGCTGTGGTTTCACTCCTTCagaaggtcttatttgttttcttccag
mh.introns
# agaaggtcttatttgttttcttccag
mh.exons
# TTTGCTGTGGTTTCACTCCTTC
CRIPSR
Perform microhomology on a DNA sequence using the CRISPR technique. This class takes two inputs, an Ensembl Gene ID (string) and the microhomology strategies (array). Using the DNA returned from Ensembl and the CRISPR algorithm, the DNA is scanned to identify target sites on both forward and reverse strands. Once target sites are identified, microhomology is performed according to each strategy in the array.
mh = Microhomology::Crispr.new('ENSDARG00000061303', [6, 12, 24, 48, 96])
mh.results
{
"target": "GGCCGATTCATTAATGCAGCTGG",
"first": 155,
"last": 178,
"microhomology": [
{
"strategy": "mh6",
"forward_strand": "TAATGC",
"reverse_strand": "ATTACG",
"mh6_oligo_forward": "TAATGCAGCTGG",
"mh6_oligo_reverse": "ATTACGTCGACC"
},
{
"strategy": "mh9",
"forward_strand": "CATTAATGC",
"reverse_strand": "GTAATTACG",
"mh9_oligo_forward": "CATTAATGCAGCTGG",
"mh9_oligo_reverse": "GTAATTACGTCGACC"
},
{
"strategy": "mh12",
"forward_strand": "ATTCATTAATGC",
"reverse_strand": "TAAGTAATTACG",
"mh12_oligo_forward": "ATTCATTAATGCAGCTGG",
"mh12_oligo_reverse": "TAAGTAATTACGTCGACC"
},
{
"strategy": "mh24",
"forward_strand": "GCGCGTTGGCCGATTCATTAATGC",
"reverse_strand": "CGCGCAACCGGCTAAGTAATTACG",
"mh24_oligo_forward": "GCGCGTTGGCCGATTCATTAATGCAGCTGG",
"mh24_oligo_reverse": "CGCGCAACCGGCTAAGTAATTACGTCGACC"
},
{
"strategy": "mh48",
"forward_strand": "CCAATACGCAAACCGCCTCTCCCCGCGCGTTGGCCGATTCATTAATGC",
"reverse_strand": "GGTTATGCGTTTGGCGGAGAGGGGCGCGCAACCGGCTAAGTAATTACG",
"mh48_oligo_forward": "CCAATACGCAAACCGCCTCTCCCCGCGCGTTGGCCGATTCATTAATGCAGCTGG",
"mh48_oligo_reverse": "GGTTATGCGTTTGGCGGAGAGGGGCGCGCAACCGGCTAAGTAATTACGTCGACC"
}
]
}
See an CRISPR example that prints out results to the console.
TALEN
Perform microhomology on a DNA sequence using the TALEN technique. This class takes one input, an Ensembl Gene ID (string). Using the DNA returned from Ensembl and the TALEN algorithm, the DNA is scanned to identify target sites on both forward and reverse strands. Once target sites are identified, microhomology is performed.
mh = Microhomology::Talen.new('ENSDARG00000061303')
mh.results
{
"target": "TTGCTGTGGTTTCACTCCTTCATCTTCTTGAAGGAGCTCAACCTCCA",
"first": 1,
"last": 48,
"microhomology": [
{
"forward_strand": "TTGCTGTGGTTTCACTCCTTCATCTTCTTGAAGGAGCTCAACCTCCA",
"reverse_strand": "AACGACACCAAAGTGAGGAAGTAGAAGAACTTCCTCGAGTTGGAGGT",
"oligo_forward": "TTGCTGTGGTTTCACTCTTCTTGACCTTCATAGGAGCTCAACCTCCA",
"oligo_reverse": "AACGACACCAAAGTGAGAAGAACTGGAAGTATCCTCGAGTTGGAGGT"
},
]
}
See an TALEN example that prints out results to the console.
Roadmap
Changes to this gem will be ongoing. If you would like to contribute, please follow the process below.
- Better integration with Rails
- Additional DNA data source options
- Intron and Exon options
Contributing
- Fork it ( http://github.com//microhomology/fork )
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request