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})
#=> An array of Bio::Ipcress::Result objects, 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 the last base of AAACTY, which indicates that both AAACTC and AAACTT 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.