0.0
No commit activity in last 3 years
No release in over 3 years
Simultaneously perform custom microhomoly strategies for genetic engineering and bioinformatics.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

Runtime

>= 1.5.0, ~> 1.5
>= 1.8.3, ~> 1.8
 Project Readme

Microhomology Logo

By Chris Mikelson

Build Status

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

  1. Fork it ( http://github.com//microhomology/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request