bio-ipcress

bio-ipcress is a programmatic interface to the ipcress in-silico PCR software, which is bundled with exonerate.

You can run a PCR:

require 'bio-ipcress'

#hits the first and last bits of the Methanocella_conradii_16s.fa
primer_set = Bio::Ipcress::PrimerSet.new(
  'GGTCACTGCTA','GGCTACCTTGTTACGACTTAAC'
  )

# Run ipcress on a template sequence, specified in as a FASTA file
results = Bio::Ipcress.run(
  primer_set,
  'Methanocella_conradii_16s.fa', #this file is in the test/data/Ipcress directory
  {:min_distance => 2, :max_distance => 10000})
#=> A Bio::Ipcress::Result object, parsed from
#
#Ipcress result
#--------------
# Experiment: AE12_pmid21856836_16S
#    Primers: A B
#     Target: gi|335929284|gb|JN048683.1|:filter(unmasked) Methanocella conradii HZ254 16S ribosomal RNA gene, partial sequence
#    Matches: 19/20 14/15
#    Product: 502 bp (range 2-10000)
#Result type: forward
#
#...AAACTTAAAGGAATTGGCGG......................... # forward
#   ||||| ||| |||||| |||-->
#5'-AAACTYAAAKGAATTGRCGG-3' 3'-CRTGTGTGGCGGGCA-5' # primers
#                           <--| |||||||||||||
#..............................CGTGTGTGGCGGGCA... # revcomp
#--
#ipcress: gi|335929284|gb|JN048683.1|:filter(unmasked) AE12_pmid21856836_16S 502 A 826 1 B 1313 1 forward
#-- completed ipcress analysis"



# This Bio::Ipcress::Result object now holds info about the result:
results.length #=> 1

res = results[0]
res.experiment_name #=> 'AE12_pmid21856836_16S' 
res.primers #=> 'A B' 
res.target #=> 'gi|335929284|gb|JN048683.1|:filter(unmasked) Methanocella conradii HZ254 16S ribosomal RNA gene, partial sequence'
res.matches #=> '19/20 14/15' 
res.product #=> '502 bp (range 2-10000)' 
res.result_type #=> 'forward' 
res.forward_matching_sequence #=> 'AAACTTAAAGGAATTGGCGG' 
res.forward_primer_sequence #=> 'AAACTYAAAKGAATTGRCGG' 
res.reverse_primer_sequence #=> 'CRTGTGTGGCGGGCA' 
res.reverse_matching_sequence #=> 'CGTGTGTGGCGGGCA' 
res.length #=> 502
res.start #=> 826
res.forward_mismatches #=> 1 
res.reverse_mismatches #=> 1

There appears to be a slight bug in iPCRess, in the way it handles primers with 'wobble' bases like AAACT*Y*, which indicates that both AAACT*C* and AAACT*T* are added as primers. IPCress always suggests that there is at least a single mismatch, when this is not always the case. To workaround this, the Result#recalculate_mismatches_from_alignments method re-computes the number of forward and reverse mismatches.

#...AAACTTAAAGGAATTGGCGG......................... # forward
#   ||||| ||| |||||| |||-->
#5'-AAACTYAAAKGAATTGRCGG-3' 3'-CRTGTGTGGCGGGCA-5' # primers
#                           <--| |||||||||||||
#..............................CGTGTGTGGCGGGCA... # revcomp
res = Bio::Ipcress::Result.new
res.forward_matching_sequence = 'AAACTTAAAGGAATTGGCGG'
res.forward_primer_sequence = 'AAACTYAAAKGAATTGRCGG'
res.reverse_matching_sequence = 'CGTGTGTGGCGGGCA'
res.reverse_primer_sequence = 'CRTGTGTGGCGGGCA'

res.recalculate_mismatches_from_alignments #=> [0,0]

Installation

gem install bio-ipcress

You'll also need to install exonerate

Project home page

Information on the source tree, documentation, examples, issues and how to contribute, see

http://github.com/wwood/bioruby-ipcress

The BioRuby community is on IRC server: irc.freenode.org, channel: #bioruby.

Cite

If you use this software, please cite exonerate

Biogems.info

This Biogem is published at #bio-ipcress

Copyright (c) 2012 Ben J Woodcroft. See LICENSE.txt for further details.