bio-ipcress 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,5 @@
1
+ lib/**/*.rb
2
+ bin/*
3
+ -
4
+ features/**/*.feature
5
+ LICENSE.txt
@@ -0,0 +1,12 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.2
4
+ - 1.9.3
5
+ - jruby-19mode # JRuby in 1.9 mode
6
+ - rbx-19mode
7
+ # - 1.8.7
8
+ # - jruby-18mode # JRuby in 1.8 mode
9
+ # - rbx-18mode
10
+
11
+ # uncomment this line if your project needs to run something other than `rake`:
12
+ # script: bundle exec rspec spec
data/Gemfile ADDED
@@ -0,0 +1,16 @@
1
+ source "http://rubygems.org"
2
+ # Add dependencies required to use your gem here.
3
+ # Example:
4
+ # gem "activesupport", ">= 2.3.5"
5
+ gem 'bio', '>=1.4.2'
6
+
7
+ # Add dependencies to develop your gem here.
8
+ # Include everything needed to run rake, tests, features, etc.
9
+ group :development do
10
+ gem "shoulda", ">= 0"
11
+ gem "rdoc", "~> 3.12"
12
+ gem "jeweler", "~> 1.8.3"
13
+ gem "bundler", ">= 1.0.21"
14
+ gem "bio", ">= 1.4.2"
15
+ gem "rdoc", "~> 3.12"
16
+ end
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2012 Ben J Woodcroft
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,112 @@
1
+ # bio-ipcress
2
+
3
+ ```bio-ipcress``` is a programmatic interface to the ```ipcress``` in-silico PCR software, which
4
+ is bundled with [exonerate](http://www.ebi.ac.uk/~guy/exonerate/).
5
+
6
+ You can run a PCR:
7
+ ```ruby
8
+ require 'bio-ipcress'
9
+
10
+ #hits the first and last bits of the Methanocella_conradii_16s.fa
11
+ primer_set = Bio::Ipcress::PrimerSet.new(
12
+ 'GGTCACTGCTA','GGCTACCTTGTTACGACTTAAC'
13
+ )
14
+
15
+ # Run ipcress on a template sequence, specified in as a FASTA file
16
+ results = Bio::Ipcress.run(
17
+ primer_set,
18
+ 'Methanocella_conradii_16s.fa', #this file is in the test/data/Ipcress directory
19
+ {:min_distance => 2, :max_distance => 10000})
20
+ #=> A Bio::Ipcress::Result object, parsed from
21
+ #
22
+ #Ipcress result
23
+ #--------------
24
+ # Experiment: AE12_pmid21856836_16S
25
+ # Primers: A B
26
+ # Target: gi|335929284|gb|JN048683.1|:filter(unmasked) Methanocella conradii HZ254 16S ribosomal RNA gene, partial sequence
27
+ # Matches: 19/20 14/15
28
+ # Product: 502 bp (range 2-10000)
29
+ #Result type: forward
30
+ #
31
+ #...AAACTTAAAGGAATTGGCGG......................... # forward
32
+ # ||||| ||| |||||| |||-->
33
+ #5'-AAACTYAAAKGAATTGRCGG-3' 3'-CRTGTGTGGCGGGCA-5' # primers
34
+ # <--| |||||||||||||
35
+ #..............................CGTGTGTGGCGGGCA... # revcomp
36
+ #--
37
+ #ipcress: gi|335929284|gb|JN048683.1|:filter(unmasked) AE12_pmid21856836_16S 502 A 826 1 B 1313 1 forward
38
+ #-- completed ipcress analysis"
39
+
40
+
41
+
42
+ # This Bio::Ipcress::Result object now holds info about the result:
43
+ results.length #=> 1
44
+
45
+ res = results[0]
46
+ res.experiment_name #=> 'AE12_pmid21856836_16S'
47
+ res.primers #=> 'A B'
48
+ res.target #=> 'gi|335929284|gb|JN048683.1|:filter(unmasked) Methanocella conradii HZ254 16S ribosomal RNA gene, partial sequence'
49
+ res.matches #=> '19/20 14/15'
50
+ res.product #=> '502 bp (range 2-10000)'
51
+ res.result_type #=> 'forward'
52
+ res.forward_matching_sequence #=> 'AAACTTAAAGGAATTGGCGG'
53
+ res.forward_primer_sequence #=> 'AAACTYAAAKGAATTGRCGG'
54
+ res.reverse_primer_sequence #=> 'CRTGTGTGGCGGGCA'
55
+ res.reverse_matching_sequence #=> 'CGTGTGTGGCGGGCA'
56
+ res.length #=> 502
57
+ res.start #=> 826
58
+ res.forward_mismatches #=> 1
59
+ res.reverse_mismatches #=> 1
60
+ ```
61
+
62
+ There appears to be a slight bug in iPCRess, in the way it handles primers with 'wobble' bases like AAACT*Y*,
63
+ which indicates that both AAACT*C* and AAACT*T* are added as primers.
64
+ IPCress always suggests that there is at least a single mismatch,
65
+ when this is not always the case. To workaround this, the
66
+ ```Result#recalculate_mismatches_from_alignments``` method re-computes the
67
+ number of forward and reverse mismatches.
68
+
69
+ ```ruby
70
+ #...AAACTTAAAGGAATTGGCGG......................... # forward
71
+ # ||||| ||| |||||| |||-->
72
+ #5'-AAACTYAAAKGAATTGRCGG-3' 3'-CRTGTGTGGCGGGCA-5' # primers
73
+ # <--| |||||||||||||
74
+ #..............................CGTGTGTGGCGGGCA... # revcomp
75
+ res = Bio::Ipcress::Result.new
76
+ res.forward_matching_sequence = 'AAACTTAAAGGAATTGGCGG'
77
+ res.forward_primer_sequence = 'AAACTYAAAKGAATTGRCGG'
78
+ res.reverse_matching_sequence = 'CGTGTGTGGCGGGCA'
79
+ res.reverse_primer_sequence = 'CRTGTGTGGCGGGCA'
80
+
81
+ res.recalculate_mismatches_from_alignments #=> [0,0]
82
+ ```
83
+
84
+ ## Installation
85
+
86
+ ```sh
87
+ gem install bio-ipcress
88
+ ```
89
+
90
+ You'll also need to install [exonerate](http://www.ebi.ac.uk/~guy/exonerate/)
91
+
92
+ ## Project home page
93
+
94
+ Information on the source tree, documentation, examples, issues and
95
+ how to contribute, see
96
+
97
+ http://github.com/wwood/bioruby-ipcress
98
+
99
+ The BioRuby community is on IRC server: irc.freenode.org, channel: #bioruby.
100
+
101
+ ## Cite
102
+
103
+ If you use this software, please cite exonerate
104
+
105
+ ## Biogems.info
106
+
107
+ This Biogem is published at [#bio-ipcress](http://biogems.info/index.html)
108
+
109
+ ## Copyright
110
+
111
+ Copyright (c) 2012 Ben J Woodcroft. See LICENSE.txt for further details.
112
+
@@ -0,0 +1,45 @@
1
+ # encoding: utf-8
2
+
3
+ require 'rubygems'
4
+ require 'bundler'
5
+ begin
6
+ Bundler.setup(:default, :development)
7
+ rescue Bundler::BundlerError => e
8
+ $stderr.puts e.message
9
+ $stderr.puts "Run `bundle install` to install missing gems"
10
+ exit e.status_code
11
+ end
12
+ require 'rake'
13
+
14
+ require 'jeweler'
15
+ Jeweler::Tasks.new do |gem|
16
+ # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
17
+ gem.name = "bio-ipcress"
18
+ gem.homepage = "http://github.com/wwood/bioruby-ipcress"
19
+ gem.license = "MIT"
20
+ gem.summary = %Q{a programmatic interface to the iPCRess in-silico PCR software}
21
+ gem.description = %Q{a programmatic interface to the iPCRess in-silico PCR software. iPCRess is part of the exonerate suite.}
22
+ gem.email = "gmail.com after donttrustben"
23
+ gem.authors = ["Ben J Woodcroft"]
24
+ # dependencies defined in Gemfile
25
+ end
26
+ Jeweler::RubygemsDotOrgTasks.new
27
+
28
+ require 'rake/testtask'
29
+ Rake::TestTask.new(:test) do |test|
30
+ test.libs << 'lib' << 'test'
31
+ test.pattern = 'test/**/test_*.rb'
32
+ test.verbose = true
33
+ end
34
+
35
+ task :default => :test
36
+
37
+ require 'rdoc/task'
38
+ Rake::RDocTask.new do |rdoc|
39
+ version = File.exist?('VERSION') ? File.read('VERSION') : ""
40
+
41
+ rdoc.rdoc_dir = 'rdoc'
42
+ rdoc.title = "bio-ipcress #{version}"
43
+ rdoc.rdoc_files.include('README*')
44
+ rdoc.rdoc_files.include('lib/**/*.rb')
45
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.0.1
@@ -0,0 +1,3 @@
1
+ require 'bio'
2
+ require 'bio/appl/ipcress.rb'
3
+
@@ -0,0 +1,180 @@
1
+ require 'bio'
2
+ require 'tempfile'
3
+
4
+ module Bio
5
+ class Ipcress
6
+ # A full Ipcress result looks something like this. Parse it into an array of Ipcress::Result objects
7
+ #
8
+ # ** Message: Loaded [1] experiments
9
+ #
10
+ # Ipcress result
11
+ # --------------
12
+ # Experiment: AE12_pmid21856836_16S
13
+ # Primers: A B
14
+ # Target: gi|335929284|gb|JN048683.1|:filter(unmasked) Methanocella conradii HZ254 16S ribosomal RNA gene, partial sequence
15
+ # Matches: 19/20 14/15
16
+ # Product: 502 bp (range 2-10000)
17
+ # Result type: forward
18
+ #
19
+ # ...AAACTTAAAGGAATTGGCGG......................... # forward
20
+ # ||||| ||| |||||| |||-->
21
+ # 5'-AAACTYAAAKGAATTGRCGG-3' 3'-CRTGTGTGGCGGGCA-5' # primers
22
+ # <--| |||||||||||||
23
+ # ..............................CGTGTGTGGCGGGCA... # revcomp
24
+ # --
25
+ # ipcress: gi|335929284|gb|JN048683.1|:filter(unmasked) AE12_pmid21856836_16S 502 A 826 1 B 1313 1 forward
26
+ # -- completed ipcress analysis
27
+ def self.parse(ipcress_output_string)
28
+ results = Results.new
29
+
30
+ ipcress_output_string.split(/\nIpcress result\n--------------\n/m).each_with_index do |result_chunk, index|
31
+ next if index == 0 # ignore the first chunk since that isn't a result
32
+
33
+ lines = result_chunk.split("\n").collect{|l| l.strip}
34
+
35
+ result = Result.new
36
+ i=0
37
+ result.experiment_name = lines[i].match(/^Experiment: (.+)$/)[1]; i+=1
38
+ result.primers = lines[i].match(/^Primers: (.+)$/)[1]; i+=1
39
+ result.target = lines[i].match(/^Target: (.+)$/)[1]; i+=1
40
+ result.matches = lines[i].match(/^Matches: (.+)$/)[1]; i+=1
41
+ result.product = lines[i].match(/^Product: (.+)$/)[1]; i+=1
42
+ result.result_type = lines[i].match(/^Result type: (.+)$/)[1]
43
+
44
+ i+= 2
45
+ result.forward_matching_sequence = lines[i].match(/^\.\.\.(\w+)\.+ \# forward$/)[1]
46
+ i+= 2
47
+ matching = lines[i].match(/^5'\-(\w+)-3' 3'\-(\w+)-5' \# primers$/)
48
+ result.forward_primer_sequence = matching[1]
49
+ result.reverse_primer_sequence = matching[2]
50
+ i+= 2
51
+ result.reverse_matching_sequence = lines[i].match(/^\.+(\w+)\.\.\. \# revcomp$/)[1]
52
+
53
+ i+= 2
54
+ matching = lines[i].match(/^ipcress: (\S+) (\S+) (\d+) [AB] (\d+) (\d+) [AB] (\d+) (\d+) (\S+)$/)
55
+ result.length = matching[3].to_i
56
+ result.start = matching[4].to_i
57
+ result.forward_mismatches = matching[5].to_i
58
+ result.reverse_mismatches = matching[7].to_i
59
+
60
+ results.push result
61
+ end
62
+ return results
63
+ end
64
+
65
+ # Run ipcress
66
+ #
67
+ # * primer_set: a PrimerSet object with defined forward and reverse primers
68
+ # * fasta_file: a String path to a fasta file that will be used as template
69
+ # * options hash: contains less-used parameters
70
+ # ** :min_distance: the minimum length of product to be amplified (default 100)
71
+ # ** :max_distance: the maxmimum length of product to be amplified (default 1000)
72
+ # ** :ipcress_path: path the ipcress executable (default 'ipcress')
73
+ # ** :mismatches: number of mismatches allowable (-m parameter to ipcress binary, default 0)
74
+ #
75
+ # Return an array of parsed Result objects
76
+ def self.run(primer_set, fasta_file, options={})
77
+ raise unless primer_set.kind_of?(PrimerSet)
78
+ raise unless fasta_file.kind_of?(String)
79
+ options[:ipcress_path] ||= 'ipcress'
80
+
81
+ Tempfile.open('ipcress') do |tempfile|
82
+ # Write a tempfile that contains the primer set to be queried
83
+ primers = primer_set.to_ipcress_format(options)
84
+ tempfile.puts primers
85
+ tempfile.close
86
+
87
+ command = [
88
+ options[:ipcress_path],
89
+ ]
90
+ if options[:mismatches]
91
+ command.push '-m'
92
+ command.push options[:mismatches].to_s
93
+ end
94
+ command.push tempfile.path
95
+ command.push fasta_file
96
+
97
+ Bio::Command.call_command_open3(command) do |stdin, stdout, stderr|
98
+ out = stdout.read
99
+ raise stderr.read if out == '' #if there is a problem running ipcress e.g. the fasta file isn't found
100
+
101
+ return parse(out)
102
+ end
103
+ end
104
+ end
105
+
106
+ # A class to represent a pair of primers that will be used by Ipcress
107
+ # to amplify from template DNA in-silico
108
+ class PrimerSet
109
+ attr_accessor :forward_primer, :reverse_primer
110
+
111
+ def initialize(forward_primer, reverse_primer)
112
+ @forward_primer = forward_primer
113
+ @reverse_primer = reverse_primer
114
+ end
115
+
116
+ # To a string in the "ipcress file" format required for ipcress usage
117
+ def to_ipcress_format(options={})
118
+ options ||= {}
119
+ options[:min_distance] ||= 100
120
+ options[:max_distance] ||= 1000
121
+ "ID1 #{@forward_primer} #{@reverse_primer} #{options[:min_distance]} #{options[:max_distance]}"
122
+ end
123
+ end
124
+
125
+ # A collection of Ipcress Result objects for a given run
126
+ class Results < Array
127
+ end
128
+
129
+ # Ipcress single result (single primer pair match)
130
+ #
131
+ # Attributes of this class should be largely obvious by inspecting the Ipcress output
132
+ class Result
133
+ attr_accessor :experiment_name
134
+
135
+ attr_accessor :primers, :target, :matches, :product, :result_type
136
+
137
+ # A String representing the matching part of the sequence
138
+ attr_accessor :forward_matching_sequence
139
+
140
+ # A String representing the matching primer
141
+ attr_accessor :forward_primer_sequence
142
+
143
+ # A String representing the matching primer
144
+ attr_accessor :reverse_primer_sequence
145
+
146
+ # A String representing the matching part of the sequence
147
+ attr_accessor :reverse_matching_sequence
148
+
149
+ attr_accessor :length, :forward_mismatches, :start, :reverse_mismatches
150
+
151
+ # When there are wobbles in the primers, Ipcress always reports at
152
+ # least 1 mismatch (1 for all matching wobbles plus regular mismatches).
153
+ #
154
+ # This method recalculates the mismatches by re-aligning the primers
155
+ # against the sequences that they hit in this Result.
156
+ #
157
+ # Returns an array of 2 values corresponding to the number of mismatches
158
+ # in the forward and revcomp primers, respectively.
159
+ #
160
+ # Assumes that there is only wobbles in the primers, not the sequence
161
+ # (Does ipcress itself assume this?)
162
+ def recalculate_mismatches_from_alignments
163
+ calculate_mismatches = lambda do |seq, primer|
164
+ mismatches = 0
165
+ (0..(seq.length-1)).each do |position|
166
+ regex = Bio::Sequence::NA.new(primer[position].downcase).to_re
167
+ seqp = seq[position].downcase
168
+ mismatches += 1 unless regex.match(seqp)
169
+ end
170
+ mismatches
171
+ end
172
+
173
+ return [
174
+ calculate_mismatches.call(@forward_matching_sequence, @forward_primer_sequence),
175
+ calculate_mismatches.call(@reverse_matching_sequence, @reverse_primer_sequence)
176
+ ]
177
+ end
178
+ end
179
+ end
180
+ end
@@ -0,0 +1,22 @@
1
+ >gi|335929284|gb|JN048683.1| Methanocella conradii HZ254 16S ribosomal RNA gene, partial sequence
2
+ GGTCACTGCTATCGGTGTCCGATTAAGCCATGCGAGTCGTGAGGGGTGAGCCCTCGGCGTACTGCTCAGT
3
+ AACACGTGGACAATCTGCCCAAAAGTCCGGGATAACCCCGGGAAACTGGGGATAATACCGGATAGGCCAC
4
+ CAATTGCTGGAATGGCCTGGTGGTTGAAACGAGAGGCTTTTGGATGGGTCTGCGGCGGATTAGGTTGACG
5
+ CCGGTGTAACGTACCGGCGTGCCTGTAATCCGTACGGGTTGTGGGAGCAAGAGCCCGGAGATGGATTCTG
6
+ AGACACGAATCCAGGCCCTACGGGGCGCAGCAGGCGCGAAAACTCTACAATGCAGGCAATCTGCGATAGG
7
+ GGGACATCGAGTGGCATCTTCTTAAGGTGCCTGTCCAACCGTCTAAAAAACGGTTGTTAGCAAGGGCCGG
8
+ GTAAGACCGGTGCCAGCCGCCGCGGTAATACCGGCGGCTCGAGTGGTGGCCGATATTATTGAGTCTAAAG
9
+ GGTCCGTAGCCGGCTTTGCAAGTCCCCTGGGAAATCCAGCGGCTTAACCGTTGGGCGCCCATGGGATACT
10
+ ACATTGCTTGGGACTGGGAGAGGCGAGAGGTACTCGAGGGGTAGGGGTGAAATCCTGTAATCCTTCGGGG
11
+ ACCACCGGTGGCGAAGGCGTCTCGCCAGAACAGGTCCGACGGTGAGGGACGAAAGCTAGGGGCACGAACC
12
+ GGATTAGATACCCGGGTAGTCCTAGCCGTAAACGATGCCCGCTAGGTGTCACGATAATCGTGAATTATCG
13
+ TGGTGCCGTAGGGAAGCCGCGAAGCGGGCCACTTGGGAAGTACGACCGCAAGGTTGAAACTTAAAGGAAT
14
+ TGGCGGGGGAGCACCACAACGGGTGGAGCCTGCGGTTTAATTGGATTCAACGCCGGGAAGCTTACCGGGA
15
+ TCGACAGTTGAATGAAGGCCAGGCCGAAGACCTTGCCGGACTAGCTGAGAGGAGGTGCATGGCCGTCGTC
16
+ AGTTCGTACCGTGAGGCGTCCTGTTAAGTCAGGCAACGAGCGAGACCCATGTCCACTGTTGCTAACGCGT
17
+ CCGCGAGGACGGCGAGTACACTGTGGAGACTGCTGGCGCTAAGTCAGAGGAAGGGTTGGTCGACGGTAGG
18
+ TCAGTATGCCCCGAATATCCCGGGCTACACGCGGGCTACAATGGACAGGACAATGGGTAACAACACCGAG
19
+ AGGTGAAGTTAATCTCTTAAACCTGTCCCTAGTTCGGATTGAGGGCTGAAACCCGCCCTCATGAAGATGG
20
+ AATCCGTAGTAATCGCATTTCAAAACAGTGCGGTGAATACGTCCCTGCTCCTTGCACACACCGCCCGTCA
21
+ AACCACCCGAGCGGGGCGTGAATAAGGACTCTTTTCCTTGAAGAGCTCGAATTCACGTTCTGTAAGGGGG
22
+ GTTAAGTCGTAACAAGGTAGCC
@@ -0,0 +1,44 @@
1
+ >gi|335929284|gb|JN048683.1| Methanocella conradii HZ254 16S ribosomal RNA gene, partial sequence
2
+ GGTCACTGCTATCGGTGTCCGATTAAGCCATGCGAGTCGTGAGGGGTGAGCCCTCGGCGTACTGCTCAGT
3
+ AACACGTGGACAATCTGCCCAAAAGTCCGGGATAACCCCGGGAAACTGGGGATAATACCGGATAGGCCAC
4
+ CAATTGCTGGAATGGCCTGGTGGTTGAAACGAGAGGCTTTTGGATGGGTCTGCGGCGGATTAGGTTGACG
5
+ CCGGTGTAACGTACCGGCGTGCCTGTAATCCGTACGGGTTGTGGGAGCAAGAGCCCGGAGATGGATTCTG
6
+ AGACACGAATCCAGGCCCTACGGGGCGCAGCAGGCGCGAAAACTCTACAATGCAGGCAATCTGCGATAGG
7
+ GGGACATCGAGTGGCATCTTCTTAAGGTGCCTGTCCAACCGTCTAAAAAACGGTTGTTAGCAAGGGCCGG
8
+ GTAAGACCGGTGCCAGCCGCCGCGGTAATACCGGCGGCTCGAGTGGTGGCCGATATTATTGAGTCTAAAG
9
+ GGTCCGTAGCCGGCTTTGCAAGTCCCCTGGGAAATCCAGCGGCTTAACCGTTGGGCGCCCATGGGATACT
10
+ ACATTGCTTGGGACTGGGAGAGGCGAGAGGTACTCGAGGGGTAGGGGTGAAATCCTGTAATCCTTCGGGG
11
+ ACCACCGGTGGCGAAGGCGTCTCGCCAGAACAGGTCCGACGGTGAGGGACGAAAGCTAGGGGCACGAACC
12
+ GGATTAGATACCCGGGTAGTCCTAGCCGTAAACGATGCCCGCTAGGTGTCACGATAATCGTGAATTATCG
13
+ TGGTGCCGTAGGGAAGCCGCGAAGCGGGCCACTTGGGAAGTACGACCGCAAGGTTGAAACTTAAAGGAAT
14
+ TGGCGGGGGAGCACCACAACGGGTGGAGCCTGCGGTTTAATTGGATTCAACGCCGGGAAGCTTACCGGGA
15
+ TCGACAGTTGAATGAAGGCCAGGCCGAAGACCTTGCCGGACTAGCTGAGAGGAGGTGCATGGCCGTCGTC
16
+ AGTTCGTACCGTGAGGCGTCCTGTTAAGTCAGGCAACGAGCGAGACCCATGTCCACTGTTGCTAACGCGT
17
+ CCGCGAGGACGGCGAGTACACTGTGGAGACTGCTGGCGCTAAGTCAGAGGAAGGGTTGGTCGACGGTAGG
18
+ TCAGTATGCCCCGAATATCCCGGGCTACACGCGGGCTACAATGGACAGGACAATGGGTAACAACACCGAG
19
+ AGGTGAAGTTAATCTCTTAAACCTGTCCCTAGTTCGGATTGAGGGCTGAAACCCGCCCTCATGAAGATGG
20
+ AATCCGTAGTAATCGCATTTCAAAACAGTGCGGTGAATACGTCCCTGCTCCTTGCACACACCGCCCGTCA
21
+ AACCACCCGAGCGGGGCGTGAATAAGGACTCTTTTCCTTGAAGAGCTCGAATTCACGTTCTGTAAGGGGG
22
+ GTTAAGTCGTAACAAGGTAGCC
23
+ >2nd
24
+ GGTCACTGCTATCGGTGTCCGATTAAGCCATGCGAGTCGTGAGGGGTGAGCCCTCGGCGTACTGCTCAGT
25
+ AACACGTGGACAATCTGCCCAAAAGTCCGGGATAACCCCGGGAAACTGGGGATAATACCGGATAGGCCAC
26
+ CAATTGCTGGAATGGCCTGGTGGTTGAAACGAGAGGCTTTTGGATGGGTCTGCGGCGGATTAGGTTGACG
27
+ CCGGTGTAACGTACCGGCGTGCCTGTAATCCGTACGGGTTGTGGGAGCAAGAGCCCGGAGATGGATTCTG
28
+ AGACACGAATCCAGGCCCTACGGGGCGCAGCAGGCGCGAAAACTCTACAATGCAGGCAATCTGCGATAGG
29
+ GGGACATCGAGTGGCATCTTCTTAAGGTGCCTGTCCAACCGTCTAAAAAACGGTTGTTAGCAAGGGCCGG
30
+ GTAAGACCGGTGCCAGCCGCCGCGGTAATACCGGCGGCTCGAGTGGTGGCCGATATTATTGAGTCTAAAG
31
+ GGTCCGTAGCCGGCTTTGCAAGTCCCCTGGGAAATCCAGCGGCTTAACCGTTGGGCGCCCATGGGATACT
32
+ ACATTGCTTGGGACTGGGAGAGGCGAGAGGTACTCGAGGGGTAGGGGTGAAATCCTGTAATCCTTCGGGG
33
+ ACCACCGGTGGCGAAGGCGTCTCGCCAGAACAGGTCCGACGGTGAGGGACGAAAGCTAGGGGCACGAACC
34
+ GGATTAGATACCCGGGTAGTCCTAGCCGTAAACGATGCCCGCTAGGTGTCACGATAATCGTGAATTATCG
35
+ TGGTGCCGTAGGGAAGCCGCGAAGCGGGCCACTTGGGAAGTACGACCGCAAGGTTGAAACTTAAAGGAAT
36
+ TGGCGGGGGAGCACCACAACGGGTGGAGCCTGCGGTTTAATTGGATTCAACGCCGGGAAGCTTACCGGGA
37
+ TCGACAGTTGAATGAAGGCCAGGCCGAAGACCTTGCCGGACTAGCTGAGAGGAGGTGCATGGCCGTCGTC
38
+ AGTTCGTACCGTGAGGCGTCCTGTTAAGTCAGGCAACGAGCGAGACCCATGTCCACTGTTGCTAACGCGT
39
+ CCGCGAGGACGGCGAGTACACTGTGGAGACTGCTGGCGCTAAGTCAGAGGAAGGGTTGGTCGACGGTAGG
40
+ TCAGTATGCCCCGAATATCCCGGGCTACACGCGGGCTACAATGGACAGGACAATGGGTAACAACACCGAG
41
+ AGGTGAAGTTAATCTCTTAAACCTGTCCCTAGTTCGGATTGAGGGCTGAAACCCGCCCTCATGAAGATGG
42
+ AATCCGTAGTAATCGCATTTCAAAACAGTGCGGTGAATACGTCCCTGCTCCTTGCACACACCGCCCGTCA
43
+ AACCACCCGAGCGGGGCGTGAATAAGGACTCTTTTCCTTGAAGAGCTCGAATTCACGTTCTGTAAGGGGG
44
+ GTTAAGTCGTAACAAGGTAGCC
@@ -0,0 +1,43 @@
1
+ >gi|335929284|gb|JN048683.1| Methanocella conradii HZ254 16S ribosomal RNA gene, partial sequence
2
+ GGTCACTGCTATCGGTGTCCGATTAAGCCATGCGAGTCGTGAGGGGTGAGCCCTCGGCGTACTGCTCAGT
3
+ AACACGTGGACAATCTGCCCAAAAGTCCGGGATAACCCCGGGAAACTGGGGATAATACCGGATAGGCCAC
4
+ CAATTGCTGGAATGGCCTGGTGGTTGAAACGAGAGGCTTTTGGATGGGTCTGCGGCGGATTAGGTTGACG
5
+ CCGGTGTAACGTACCGGCGTGCCTGTAATCCGTACGGGTTGTGGGAGCAAGAGCCCGGAGATGGATTCTG
6
+ AGACACGAATCCAGGCCCTACGGGGCGCAGCAGGCGCGAAAACTCTACAATGCAGGCAATCTGCGATAGG
7
+ GGGACATCGAGTGGCATCTTCTTAAGGTGCCTGTCCAACCGTCTAAAAAACGGTTGTTAGCAAGGGCCGG
8
+ GTAAGACCGGTGCCAGCCGCCGCGGTAATACCGGCGGCTCGAGTGGTGGCCGATATTATTGAGTCTAAAG
9
+ GGTCCGTAGCCGGCTTTGCAAGTCCCCTGGGAAATCCAGCGGCTTAACCGTTGGGCGCCCATGGGATACT
10
+ ACATTGCTTGGGACTGGGAGAGGCGAGAGGTACTCGAGGGGTAGGGGTGAAATCCTGTAATCCTTCGGGG
11
+ ACCACCGGTGGCGAAGGCGTCTCGCCAGAACAGGTCCGACGGTGAGGGACGAAAGCTAGGGGCACGAACC
12
+ GGATTAGATACCCGGGTAGTCCTAGCCGTAAACGATGCCCGCTAGGTGTCACGATAATCGTGAATTATCG
13
+ TGGTGCCGTAGGGAAGCCGCGAAGCGGGCCACTTGGGAAGTACGACCGCAAGGTTGAAACTTAAAGGAAT
14
+ TGGCGGGGGAGCACCACAACGGGTGGAGCCTGCGGTTTAATTGGATTCAACGCCGGGAAGCTTACCGGGA
15
+ TCGACAGTTGAATGAAGGCCAGGCCGAAGACCTTGCCGGACTAGCTGAGAGGAGGTGCATGGCCGTCGTC
16
+ AGTTCGTACCGTGAGGCGTCCTGTTAAGTCAGGCAACGAGCGAGACCCATGTCCACTGTTGCTAACGCGT
17
+ CCGCGAGGACGGCGAGTACACTGTGGAGACTGCTGGCGCTAAGTCAGAGGAAGGGTTGGTCGACGGTAGG
18
+ TCAGTATGCCCCGAATATCCCGGGCTACACGCGGGCTACAATGGACAGGACAATGGGTAACAACACCGAG
19
+ AGGTGAAGTTAATCTCTTAAACCTGTCCCTAGTTCGGATTGAGGGCTGAAACCCGCCCTCATGAAGATGG
20
+ AATCCGTAGTAATCGCATTTCAAAACAGTGCGGTGAATACGTCCCTGCTCCTTGCACACACCGCCCGTCA
21
+ AACCACCCGAGCGGGGCGTGAATAAGGACTCTTTTCCTTGAAGAGCTCGAATTCACGTTCTGTAAGGGGG
22
+ GTTAAGTCGTAACAAGGTAGCC
23
+ GGTCACTGCTATCGGTGTCCGATTAAGCCATGCGAGTCGTGAGGGGTGAGCCCTCGGCGTACTGCTCAGT
24
+ AACACGTGGACAATCTGCCCAAAAGTCCGGGATAACCCCGGGAAACTGGGGATAATACCGGATAGGCCAC
25
+ CAATTGCTGGAATGGCCTGGTGGTTGAAACGAGAGGCTTTTGGATGGGTCTGCGGCGGATTAGGTTGACG
26
+ CCGGTGTAACGTACCGGCGTGCCTGTAATCCGTACGGGTTGTGGGAGCAAGAGCCCGGAGATGGATTCTG
27
+ AGACACGAATCCAGGCCCTACGGGGCGCAGCAGGCGCGAAAACTCTACAATGCAGGCAATCTGCGATAGG
28
+ GGGACATCGAGTGGCATCTTCTTAAGGTGCCTGTCCAACCGTCTAAAAAACGGTTGTTAGCAAGGGCCGG
29
+ GTAAGACCGGTGCCAGCCGCCGCGGTAATACCGGCGGCTCGAGTGGTGGCCGATATTATTGAGTCTAAAG
30
+ GGTCCGTAGCCGGCTTTGCAAGTCCCCTGGGAAATCCAGCGGCTTAACCGTTGGGCGCCCATGGGATACT
31
+ ACATTGCTTGGGACTGGGAGAGGCGAGAGGTACTCGAGGGGTAGGGGTGAAATCCTGTAATCCTTCGGGG
32
+ ACCACCGGTGGCGAAGGCGTCTCGCCAGAACAGGTCCGACGGTGAGGGACGAAAGCTAGGGGCACGAACC
33
+ GGATTAGATACCCGGGTAGTCCTAGCCGTAAACGATGCCCGCTAGGTGTCACGATAATCGTGAATTATCG
34
+ TGGTGCCGTAGGGAAGCCGCGAAGCGGGCCACTTGGGAAGTACGACCGCAAGGTTGAAACTTAAAGGAAT
35
+ TGGCGGGGGAGCACCACAACGGGTGGAGCCTGCGGTTTAATTGGATTCAACGCCGGGAAGCTTACCGGGA
36
+ TCGACAGTTGAATGAAGGCCAGGCCGAAGACCTTGCCGGACTAGCTGAGAGGAGGTGCATGGCCGTCGTC
37
+ AGTTCGTACCGTGAGGCGTCCTGTTAAGTCAGGCAACGAGCGAGACCCATGTCCACTGTTGCTAACGCGT
38
+ CCGCGAGGACGGCGAGTACACTGTGGAGACTGCTGGCGCTAAGTCAGAGGAAGGGTTGGTCGACGGTAGG
39
+ TCAGTATGCCCCGAATATCCCGGGCTACACGCGGGCTACAATGGACAGGACAATGGGTAACAACACCGAG
40
+ AGGTGAAGTTAATCTCTTAAACCTGTCCCTAGTTCGGATTGAGGGCTGAAACCCGCCCTCATGAAGATGG
41
+ AATCCGTAGTAATCGCATTTCAAAACAGTGCGGTGAATACGTCCCTGCTCCTTGCACACACCGCCCGTCA
42
+ AACCACCCGAGCGGGGCGTGAATAAGGACTCTTTTCCTTGAAGAGCTCGAATTCACGTTCTGTAAGGGGG
43
+ GTTAAGTCGTAACAAGGTAGCC
@@ -0,0 +1 @@
1
+ AE12_pmid21856836_16S AAACTYAAAKGAATTGRCGG ACGGGCGGTGTGTRC 2 10000
@@ -0,0 +1 @@
1
+ AE12_pmid21856836_16S AAACTYAAAAKGAATTGRCGG ACGGGCGGTGTGTRC 2 10000
@@ -0,0 +1,2 @@
1
+ AE12_pmid21856836_16S_1 AAACTYAAAKGAATTGRCGG ACGGGCGGTGTGTRC 2 10000
2
+ AE12_pmid21856836_16S_mismatch AATCTYAAAKGAATTGRCGG ACGGGCGGTGTGTRC 2 10000
@@ -0,0 +1,21 @@
1
+ require 'rubygems'
2
+ require 'bundler'
3
+ begin
4
+ Bundler.setup(:default, :development)
5
+ rescue Bundler::BundlerError => e
6
+ $stderr.puts e.message
7
+ $stderr.puts "Run `bundle install` to install missing gems"
8
+ exit e.status_code
9
+ end
10
+ require 'test/unit'
11
+ require 'shoulda'
12
+
13
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
14
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
15
+ require 'bio-ipcress'
16
+
17
+ class Test::Unit::TestCase
18
+ end
19
+
20
+
21
+ DATA_DIR = File.join(File.dirname(__FILE__), 'data','Ipcress')
@@ -0,0 +1,178 @@
1
+ require 'helper'
2
+ require 'stringio'
3
+
4
+ class TestBioIpcress < Test::Unit::TestCase
5
+ should "test 1 result" do
6
+ ipcress = "
7
+ Ipcress result
8
+ --------------
9
+ Experiment: AE12_pmid21856836_16S
10
+ Primers: A B
11
+ Target: gi|335929284|gb|JN048683.1|:filter(unmasked) Methanocella conradii HZ254 16S ribosomal RNA gene, partial sequence
12
+ Matches: 19/20 14/15
13
+ Product: 502 bp (range 2-10000)
14
+ Result type: forward
15
+
16
+ ...AAACTTAAAGGAATTGGCGG......................... # forward
17
+ ||||| ||| |||||| |||-->
18
+ 5'-AAACTYAAAKGAATTGRCGG-3' 3'-CRTGTGTGGCGGGCA-5' # primers
19
+ <--| |||||||||||||
20
+ ..............................CGTGTGTGGCGGGCA... # revcomp
21
+ --
22
+ ipcress: gi|335929284|gb|JN048683.1|:filter(unmasked) AE12_pmid21856836_16S 502 A 826 1 B 1313 1 forward
23
+ -- completed ipcress analysis"
24
+ results = Bio::Ipcress.parse(ipcress)
25
+ assert_equal 1, results.length
26
+ res = results[0]
27
+ assert_equal 'AE12_pmid21856836_16S', res.experiment_name
28
+ assert_equal 'A B', res.primers
29
+ assert_equal 'gi|335929284|gb|JN048683.1|:filter(unmasked) Methanocella conradii HZ254 16S ribosomal RNA gene, partial sequence',
30
+ res.target
31
+ assert_equal '19/20 14/15', res.matches
32
+ assert_equal '502 bp (range 2-10000)', res.product
33
+ assert_equal 'forward', res.result_type
34
+ assert_equal 'AAACTTAAAGGAATTGGCGG', res.forward_matching_sequence
35
+ assert_equal 'AAACTYAAAKGAATTGRCGG', res.forward_primer_sequence
36
+ assert_equal 'CRTGTGTGGCGGGCA', res.reverse_primer_sequence
37
+ assert_equal 'CGTGTGTGGCGGGCA', res.reverse_matching_sequence
38
+ assert_equal 502, res.length
39
+ assert_equal 826, res.start
40
+ assert_equal 1, res.forward_mismatches
41
+ assert_equal 1, res.reverse_mismatches
42
+ end
43
+
44
+ should "test multi-experiment results" do
45
+ ipcress = "
46
+ Ipcress result
47
+ --------------
48
+ Experiment: AE12_pmid21856836_16S
49
+ Primers: B B
50
+ Target: gi|335929284|gb|JN048683.1|:filter(unmasked) Methanocella conradii HZ254 16S ribosomal RNA gene, partial sequence
51
+ Matches: 10/15 14/15
52
+ Product: 1085 bp (range 2-10000)
53
+ Result type: single_B
54
+
55
+ ...ACGGGTTGTGGGAGC......................... # forward
56
+ ||||| ||| | |-->
57
+ 5'-ACGGGCGGTGTGTRC-3' 3'-CRTGTGTGGCGGGCA-5' # primers
58
+ <--| |||||||||||||
59
+ .........................CGTGTGTGGCGGGCA... # revcomp
60
+ --
61
+ ipcress: gi|335929284|gb|JN048683.1|:filter(unmasked) AE12_pmid21856836_16S 1085 B 243 5 B 1313 1 single_B
62
+
63
+ Ipcress result
64
+ --------------
65
+ Experiment: AE12_pmid21856836_16S
66
+ Primers: A B
67
+ Target: gi|335929284|gb|JN048683.1|:filter(unmasked) Methanocella conradii HZ254 16S ribosomal RNA gene, partial sequence
68
+ Matches: 16/21 14/15
69
+ Product: 503 bp (range 2-10000)
70
+ Result type: forward
71
+
72
+ ...GAAACTTAAAGGAATTGGCGG......................... # forward
73
+ || ||| |||||| |||-->
74
+ 5'-AAACTYAAAAKGAATTGRCGG-3' 3'-CRTGTGTGGCGGGCA-5' # primers
75
+ <--| |||||||||||||
76
+ ...............................CGTGTGTGGCGGGCA... # revcomp
77
+ --
78
+ ipcress: gi|335929284|gb|JN048683.1|:filter(unmasked) AE12_pmid21856836_16S 503 A 825 5 B 1313 1 forward
79
+
80
+ Ipcress result
81
+ --------------
82
+ Experiment: AE12_pmid21856836_16S
83
+ Primers: B B
84
+ Target: gi|335929284|gb|JN048683.1|:filter(unmasked) Methanocella conradii HZ254 16S ribosomal RNA gene, partial sequence
85
+ Matches: 10/15 14/15
86
+ Product: 470 bp (range 2-10000)
87
+ Result type: single_B
88
+
89
+ ...ACGGGTGGAGCCTGC......................... # forward
90
+ ||||| || | | |-->
91
+ 5'-ACGGGCGGTGTGTRC-3' 3'-CRTGTGTGGCGGGCA-5' # primers
92
+ <--| |||||||||||||
93
+ .........................CGTGTGTGGCGGGCA... # revcomp
94
+ --
95
+ ipcress: gi|335929284|gb|JN048683.1|:filter(unmasked) AE12_pmid21856836_16S 470 B 858 5 B 1313 1 single_B
96
+ -- completed ipcress analysis
97
+ "
98
+ results = Bio::Ipcress.parse(ipcress)
99
+ assert_equal 3, results.length
100
+ assert_equal 5, results[0].forward_mismatches
101
+ end
102
+
103
+ should "test recalculation of matches" do
104
+ res = Bio::Ipcress::Result.new
105
+
106
+ #...AAACTTAAAGGAATTGGCGG......................... # forward
107
+ # ||||| ||| |||||| |||-->
108
+ #5'-AAACTYAAAKGAATTGRCGG-3' 3'-CRTGTGTGGCGGGCA-5' # primers
109
+ # <--| |||||||||||||
110
+ #..............................CGTGTGTGGCGGGCA... # revcomp
111
+ res.forward_matching_sequence = 'AAACTTAAAGGAATTGGCGG'
112
+ res.forward_primer_sequence = 'AAACTYAAAKGAATTGRCGG'
113
+ res.reverse_matching_sequence = 'CGTGTGTGGCGGGCA'
114
+ res.reverse_primer_sequence = 'CRTGTGTGGCGGGCA'
115
+ assert_equal [0,0], res.recalculate_mismatches_from_alignments
116
+
117
+ res.reverse_primer_sequence = 'CRTGTGTGGCGGGCT'
118
+ assert_equal [0,1], res.recalculate_mismatches_from_alignments
119
+
120
+ res.forward_primer_sequence = 'AAACTRAAAKGAATTGRCGG'
121
+ res.reverse_primer_sequence = 'CRTGTGTGGCGGGCA'
122
+ assert_equal [1,0], res.recalculate_mismatches_from_alignments, "mismatching wobble R"
123
+ end
124
+
125
+ should "primer set to ipcress format" do
126
+ primer_set = Bio::Ipcress::PrimerSet.new('AAT','GTG')
127
+
128
+ assert_equal 'ID1 AAT GTG 100 1000', primer_set.to_ipcress_format
129
+ assert_equal 'ID1 AAT GTG 3 700', primer_set.to_ipcress_format({:min_distance => 3, :max_distance => 700})
130
+ end
131
+
132
+ should "run ipcress ok" do
133
+ primer_set = Bio::Ipcress::PrimerSet.new('GGTCACTGCTA','GGCTACCTTGTTACGACTTAAC') #the first and last bits of the Methanocella_conradii_16s.fa
134
+ results = Bio::Ipcress.run(primer_set, File.join(DATA_DIR, 'Methanocella_conradii_16s.fa'), {:min_distance => 2, :max_distance => 10000})
135
+ assert_equal 1, results.length
136
+ assert_equal 'ID1', results[0].experiment_name
137
+ end
138
+
139
+ should "return empty array when ipcress finds nadda" do
140
+ primer_set = Bio::Ipcress::PrimerSet.new('AAAAAAAAAAAAAAAA','TTTTTTTTTTTTTTTTT') #the first and last bits of the Methanocella_conradii_16s.fa
141
+ results = Bio::Ipcress.run(primer_set, File.join(DATA_DIR, 'Methanocella_conradii_16s.fa'))
142
+ assert_kind_of Array, results
143
+ assert_equal 0, results.length
144
+ end
145
+
146
+ # This test is handled by bioruby's Bio::Command, so eh
147
+ # should "raise exception when there is a problem running ipcress" do
148
+ # primer_set = Bio::Ipcress::PrimerSet.new('AAAAAAAAAAAAAAAA','TTTTTTTTTTTTTTTTT') #the first and last bits of the Methanocella_conradii_16s.fa
149
+ # assert_raise RuntimeError do
150
+ # Bio::Ipcress.run(primer_set, File.join(DATA_DIR, 'Methanocella_conradii_16s.fa'), :ipcress_path => 'not_ipcress')
151
+ # end
152
+ # end
153
+
154
+ should "run should complain about bad inputs" do
155
+ assert_raise RuntimeError do
156
+ Bio::Ipcress.run(nil, 'abc.fa')
157
+ end
158
+ assert_raise RuntimeError do
159
+ Bio::Ipcress.run(Bio::Ipcress::PrimerSet.new('GGTCACTGCTA','GGCTACCTTGTTACGACTTAAC'), [])
160
+ end
161
+ end
162
+
163
+ should "run sensibly when the fasta file is not found" do
164
+ assert_raise RuntimeError do
165
+ Bio::Ipcress.run(Bio::Ipcress::PrimerSet.new('GGTCACTGCTA','GGCTACCTTGTTACGACTTAAC'), 'notafasta_file_fo_so.fa')
166
+ end
167
+ end
168
+
169
+ should "run with multiple hits" do
170
+ primer_set = Bio::Ipcress::PrimerSet.new('GGTCACTGCTA','GGCTACCTTGTTACGACTTAAC') #the first and last bits of the Methanocella_conradii_16s.fa
171
+ results = Bio::Ipcress.run(primer_set, File.join(DATA_DIR, 'Methanocella_conradii_16s_2_sequences.fa'), {:min_distance => 2, :max_distance => 10000})
172
+ assert_equal 2, results.length
173
+ assert_equal 'ID1', results[0].experiment_name
174
+ assert_equal 'gi|335929284|gb|JN048683.1|:filter(unmasked) Methanocella conradii HZ254 16S ribosomal RNA gene, partial sequence', results[0].target
175
+ assert_equal '2nd:filter(unmasked)', results[1].target
176
+ end
177
+
178
+ end
metadata ADDED
@@ -0,0 +1,145 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: bio-ipcress
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Ben J Woodcroft
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-08-08 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: bio
16
+ requirement: &72407200 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: 1.4.2
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *72407200
25
+ - !ruby/object:Gem::Dependency
26
+ name: shoulda
27
+ requirement: &72406750 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :development
34
+ prerelease: false
35
+ version_requirements: *72406750
36
+ - !ruby/object:Gem::Dependency
37
+ name: rdoc
38
+ requirement: &72406370 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ~>
42
+ - !ruby/object:Gem::Version
43
+ version: '3.12'
44
+ type: :development
45
+ prerelease: false
46
+ version_requirements: *72406370
47
+ - !ruby/object:Gem::Dependency
48
+ name: jeweler
49
+ requirement: &72406020 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: 1.8.3
55
+ type: :development
56
+ prerelease: false
57
+ version_requirements: *72406020
58
+ - !ruby/object:Gem::Dependency
59
+ name: bundler
60
+ requirement: &72405780 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: 1.0.21
66
+ type: :development
67
+ prerelease: false
68
+ version_requirements: *72405780
69
+ - !ruby/object:Gem::Dependency
70
+ name: bio
71
+ requirement: &72405540 !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: 1.4.2
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: *72405540
80
+ - !ruby/object:Gem::Dependency
81
+ name: rdoc
82
+ requirement: &72405300 !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ~>
86
+ - !ruby/object:Gem::Version
87
+ version: '3.12'
88
+ type: :development
89
+ prerelease: false
90
+ version_requirements: *72405300
91
+ description: a programmatic interface to the iPCRess in-silico PCR software. iPCRess
92
+ is part of the exonerate suite.
93
+ email: gmail.com after donttrustben
94
+ executables: []
95
+ extensions: []
96
+ extra_rdoc_files:
97
+ - LICENSE.txt
98
+ - README.md
99
+ files:
100
+ - .document
101
+ - .travis.yml
102
+ - Gemfile
103
+ - LICENSE.txt
104
+ - README.md
105
+ - Rakefile
106
+ - VERSION
107
+ - lib/bio-ipcress.rb
108
+ - lib/bio/appl/ipcress.rb
109
+ - test/data/Ipcress/Methanocella_conradii_16s.fa
110
+ - test/data/Ipcress/Methanocella_conradii_16s_2_sequences.fa
111
+ - test/data/Ipcress/Methanocella_conradii_16s_twice.fa
112
+ - test/data/Ipcress/input1.txt
113
+ - test/data/Ipcress/input1_with_insert.txt
114
+ - test/data/Ipcress/input2.txt
115
+ - test/helper.rb
116
+ - test/test_bio-ipcress.rb
117
+ homepage: http://github.com/wwood/bioruby-ipcress
118
+ licenses:
119
+ - MIT
120
+ post_install_message:
121
+ rdoc_options: []
122
+ require_paths:
123
+ - lib
124
+ required_ruby_version: !ruby/object:Gem::Requirement
125
+ none: false
126
+ requirements:
127
+ - - ! '>='
128
+ - !ruby/object:Gem::Version
129
+ version: '0'
130
+ segments:
131
+ - 0
132
+ hash: 237777805
133
+ required_rubygems_version: !ruby/object:Gem::Requirement
134
+ none: false
135
+ requirements:
136
+ - - ! '>='
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ requirements: []
140
+ rubyforge_project:
141
+ rubygems_version: 1.8.17
142
+ signing_key:
143
+ specification_version: 3
144
+ summary: a programmatic interface to the iPCRess in-silico PCR software
145
+ test_files: []