bio-synreport 0.1.0 → 0.1.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.
- data/.document +5 -0
- data/README.rdoc +24 -1
- data/VERSION +1 -1
- data/bio-synreport.gemspec +14 -9
- data/examples/test.fa +57 -0
- data/examples/test.gff +56 -0
- data/examples/test.rb +3 -1
- data/lib/bio/utils/bio-synreport.rb +140 -0
- data/test/sample.gff +14 -0
- data/test/test_bio-synreport.rb +211 -2
- metadata +26 -35
data/.document
ADDED
data/README.rdoc
CHANGED
@@ -1,6 +1,29 @@
|
|
1
1
|
= bio-synreport
|
2
2
|
|
3
|
-
|
3
|
+
A gem that takes gene CDS sequences and GFF as input. From this a database is created and the user can interrogate the database object.The user may then pass a chromosome ID, a position and an alternative nucleotide. The database will return information about whether the suggested substitution creates a synonymous or non-synonymous substitution, and the identity of the changes as a hash with many attributes.
|
4
|
+
|
5
|
+
For example,
|
6
|
+
|
7
|
+
db = Bio::Util::SynReport.new(:gff => 'some_gff.gff', :fasta => 'some_cds.fa', :verbose => true)
|
8
|
+
chr, pos, ref,alt = 'Chr2', 15973794, 'C', 'T'
|
9
|
+
pp db.mutation_info(chr,pos,alt)
|
10
|
+
|
11
|
+
Would return something like,
|
12
|
+
{
|
13
|
+
:chr => 'Chr2',
|
14
|
+
:strand => '-',
|
15
|
+
:position => 15973794,
|
16
|
+
:original_codon => 'atg',
|
17
|
+
:original_residue => 'Met',
|
18
|
+
:mutant_codon => 'ttg',
|
19
|
+
:mutant_residue => 'Lys',
|
20
|
+
:position_in_codon => 1,
|
21
|
+
:substitution_type => 'NON_SYN'
|
22
|
+
}
|
23
|
+
|
24
|
+
== To Do
|
25
|
+
|
26
|
+
The module isn't the fastest thing in the world. Needs much speeding up...
|
4
27
|
|
5
28
|
== Contributing to bio-synreport
|
6
29
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.1
|
data/bio-synreport.gemspec
CHANGED
@@ -4,19 +4,20 @@
|
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
|
-
s.name =
|
8
|
-
s.version = "0.1.
|
7
|
+
s.name = %q{bio-synreport}
|
8
|
+
s.version = "0.1.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Dan MacLean"]
|
12
|
-
s.date =
|
13
|
-
s.description =
|
14
|
-
s.email =
|
12
|
+
s.date = %q{2013-05-16}
|
13
|
+
s.description = %q{Takes a GFF and genomic sequence file, constructs CDS and when given a position and alternative base will report whether this change is in a coding region and if it results in a synonymous or non-synonymous mutation.}
|
14
|
+
s.email = %q{maclean.daniel@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
16
16
|
"LICENSE.txt",
|
17
17
|
"README.rdoc"
|
18
18
|
]
|
19
19
|
s.files = [
|
20
|
+
".document",
|
20
21
|
"Gemfile",
|
21
22
|
"Gemfile.lock",
|
22
23
|
"LICENSE.txt",
|
@@ -24,22 +25,26 @@ Gem::Specification.new do |s|
|
|
24
25
|
"Rakefile",
|
25
26
|
"VERSION",
|
26
27
|
"bio-synreport.gemspec",
|
28
|
+
"examples/test.fa",
|
29
|
+
"examples/test.gff",
|
27
30
|
"examples/test.rb",
|
28
31
|
"lib/bio-synreport.rb",
|
29
32
|
"lib/bio/utils/bio-synreport.rb",
|
30
33
|
"test/helper.rb",
|
34
|
+
"test/sample.gff",
|
31
35
|
"test/test_bio-synreport.rb"
|
32
36
|
]
|
33
|
-
s.homepage =
|
37
|
+
s.homepage = %q{http://github.com/danmaclean/bioruby-synreport}
|
34
38
|
s.licenses = ["MIT"]
|
35
39
|
s.require_paths = ["lib"]
|
36
|
-
s.rubygems_version =
|
37
|
-
s.summary =
|
40
|
+
s.rubygems_version = %q{1.3.6}
|
41
|
+
s.summary = %q{Reports whether a nucleotide change results in synonymous or non-synonymous mutations}
|
38
42
|
|
39
43
|
if s.respond_to? :specification_version then
|
44
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
40
45
|
s.specification_version = 3
|
41
46
|
|
42
|
-
if Gem::Version.new(Gem::
|
47
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
43
48
|
s.add_development_dependency(%q<shoulda>, [">= 0"])
|
44
49
|
s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
|
45
50
|
s.add_development_dependency(%q<jeweler>, ["~> 1.6.4"])
|
data/examples/test.fa
ADDED
@@ -0,0 +1,57 @@
|
|
1
|
+
>AT2G17530.1 | Symbols: | Protein kinase superfamily protein | chr2:7626518-7628624 FORWARD LENGTH=1323
|
2
|
+
ATGTCGTGTTCATCCTCATCTGGATCAGAGGAAGACGATGAGGGTTTCGATGCTTACCGT
|
3
|
+
AAAGGTGGATATCACGCCGTTAGAATCGGAGACCAGTTTGCCGGTGGCCGTTACATTGCT
|
4
|
+
CAGAGAAAGCTTGGTTGGGGCCAATTCTCCACCGTTTGGCTTGCCTATGATACTCGCACT
|
5
|
+
TCTAATTATGTTGCTTTGAAGATTCAGAAGAGCGCCTTACAATTTGCTCAAGCTGCACTT
|
6
|
+
CATGAAATCGAACTTCTTCAAGCTGCTGCTGATGGGGATCCTGAAAATACCAAGTGTGTT
|
7
|
+
ATTCGTCTTATTGATGACTTCAAGCACGCAGGTCCCAACGGGCAGCATTTATGCATGGTG
|
8
|
+
CTCGAGTTTCTTGGCGATAGCTTGCTGCGTTTGATTAAATATAACCGTTATAAAGGGATG
|
9
|
+
GAGTTAAGTAAAGTGCGGGAGATATGCAAATGTATACTGACTGGTCTAGATTATTTGCAC
|
10
|
+
CGTGAACTCGGTATGATTCACTCCGACTTAAAACCCGAAAACATTCTTCTTTGTTCCACC
|
11
|
+
ATTGACCCTGCCAAGGATCCTATCAGATCCGGACTAACACCGATACTAGAAAAGCCCGAG
|
12
|
+
GGGAACCAAAACGGTACATCAACAATGAATCTGATTGAGAAGAAGTTGAAGAGGAGAGCA
|
13
|
+
AAAAAAGCGGCTGCTAAAATATCAGGAAGAAGAGTTTCGATAGTAGGTTTAAGTGAAACA
|
14
|
+
CCGAAAAAGAACAAGAGAAACTTGGATGGGATTGATATGAGATGCAAAGTTGTCGACTTC
|
15
|
+
GGGAACGGGTGTTGGGCTGATAACAAATTTGCAGAAGAAATACAAACAAGACAGTACAGA
|
16
|
+
GCTCCTGAAGTAATACTTCAGTCAGGTTACTCTTACTCTGTTGATATGTGGTCTTTCGCT
|
17
|
+
TGTACTGCTTTTGAGCTTGCTACAGGCGATATGCTTTTCGCTCCAAAAGAGGGAAATGGT
|
18
|
+
TACGGAGAAGACGAGGACCACCTTGCTCTTATGATGGAACTCTTAGGAAAAATGCCTCGA
|
19
|
+
AAGATTGCCATTGGAGGTGCGAGATCAAAGGATTACTTTGACAGACACGGCGACTTGAAG
|
20
|
+
AGGATCCGGAGATTAAAATACTGGCCACTCGACCGTTTACTGATTGATAAATACAAGCTT
|
21
|
+
CCAGAAGCAGAAGCACGAGAATTTGCGGATTTTCTCTGCCCGATAATGGATTTTGCACCT
|
22
|
+
GAGAAACGACCAACTGCACAACAATGTCTGCAACATCCATGGTTGAATCTAAGGACACAG
|
23
|
+
AACAATGAAGATGATATAGAAGGTCAGATGAGTAACATGCAGATCAAAGGTTCATGTTCT
|
24
|
+
TGA
|
25
|
+
>AT2G38120.1 | Symbols: AUX1, WAV5, PIR1, MAP1 | Transmembrane amino acid transporter family protein | chr2:15973493-15976792 FORWARD LENGTH=1458
|
26
|
+
ATGTCGGAAGGAGTAGAAGCGATAGTAGCAAATGACAACGGAACAGATCAGGTAAACGGA
|
27
|
+
AACCGTACCGGGAAAGATAACGAAGAACACGACGGCTCCACCGGTTCTAACCTAAGCAAT
|
28
|
+
TTCCTATGGCACGGTGGCTCTGTCTGGGACGCTTGGTTCAGCTGCGCATCTAACCAAGTG
|
29
|
+
GCTCAAGTGTTATTGACATTACCGTACTCGTTTAGTCAACTAGGAATGTTATCAGGAATA
|
30
|
+
GTACTTCAGATCTTCTATGGTTTACTAGGAAGCTGGACTGCTTATCTCATCTCTGTTCTC
|
31
|
+
TACGTCGAATACAGAGCTCGTAAAGAAAAAGAAGGCAAAAGCTTCAAAAACCACGTCATT
|
32
|
+
CAGTGGTTTGAAGTACTTGATGGATTACTTGGTTCATACTGGAAAGCACTAGGACTCGCA
|
33
|
+
TTTAATTGCACTTTCCTCTTGTTTGGATCTGTTATCCAACTCATTGCTTGTGCCAGTAAC
|
34
|
+
ATTTATTACATAAACGATCATCTGGACAAGAGAACATGGACTTACATATTTGGCGCGTGT
|
35
|
+
TGTGCAACCACTGTCTTTATACCGTCGTTTCACAATTACCGAATTTGGTCATTCCTTGGC
|
36
|
+
CTTGGAATGACCACTTACACCGCTTGGTACTTAGCCATTGCCTCCATCATCCACGGCCAG
|
37
|
+
GCGGAAGGTGTGAAACATTCAGGTCCAACAAAGCTAGTGCTTTATTTTACGGGAGCCACA
|
38
|
+
AATATTTTGTACACCTTTGGAGGTCACGCGGTTACTGTTGAGATTATGCATGCTATGTGG
|
39
|
+
AAACCACAGAAGTTTAAGTACATTTACTTGATGGCGACGTTATACGTGTTCACGCTAACG
|
40
|
+
ATTCCGTCAGCTGCCGCCGTTTACTGGGCTTTCGGAGACGCACTTCTCGACCACTCCAAC
|
41
|
+
GCTTTCTCTCTTATGCCCAAGAACGCGTGGCGTGACGCCGCTGTTATCCTCATGCTCATT
|
42
|
+
CATCAGTTTATAACGTTCGGGTTCGCTTGTACACCTTTGTACTTTGTGTGGGAGAAAGTG
|
43
|
+
ATTGGGATGCATGACACAAAGAGCATTTGCTTAAGGGCTTTGGCTAGATTGCCTGTGGTC
|
44
|
+
ATACCTATTTGGTTCTTAGCTATTATCTTCCCCTTTTTCGGTCCAATCAATTCCGCTGTC
|
45
|
+
GGTGCTCTTCTTGTTAGCTTCACCGTCTATATCATCCCATCTCTCGCTCACATGCTCACT
|
46
|
+
TACCGATCTGCCTCCGCTCGTCAGAATGCGGCGGAGAAGCCACCGTTCTTTATGCCGAGC
|
47
|
+
TGGACGGCGATGTACGTGTTGAATGCTTTCGTGGTGGTTTGGGTTCTTATAGTCGGATTT
|
48
|
+
GGGTTCGGTGGATGGGCTAGTGTAACCAACTTTGTTCGTCAAGTCGACACTTTTGGTCTC
|
49
|
+
TTTGCCAAGTGTTACCAATGTAAACCAGCTGCAGCCGCCGCACATGCCCCGGTCTCCGCT
|
50
|
+
TTACACCACCGTCTTTGA
|
51
|
+
>AT3G01325.1 | Symbols: | Expressed protein | chr3:123412-123720 REVERSE LENGTH=309
|
52
|
+
ATGGAACTAAAACAAACCAAAGTGATGTTTTTCTTGGTAGCCCTAATCTTGGCATTGAAT
|
53
|
+
TTCCGACCATCGGAAGCAGCTCCGCCGGTCAGATATTGTTCAACATTATTCATAGAAAGA
|
54
|
+
GCGCCAAGATGTTACGAAGCGTTGAGAAGAGCGGTGCACAGAGATGTTAGTTTGTTAACA
|
55
|
+
GGAAAATGCTGCAGAGCAGTATTCGCAACACTTCCAGTTACTTGCTTCTTGAAACTTACT
|
56
|
+
TCTGAACTTGAATTGCCAATGACTAACTTCAGAAATATTTGTGATGCTGTTAAGCCTCCA
|
57
|
+
ACTTCATGA
|
data/examples/test.gff
ADDED
@@ -0,0 +1,56 @@
|
|
1
|
+
Chr2 TAIR10 mRNA 7626359 7629149 . + . ID=AT2G17530.1;Parent=AT2G17530;Name=AT2G17530.1;Index=1
|
2
|
+
Chr2 TAIR10 protein 7626518 7628624 . + . ID=AT2G17530.1-Protein;Name=AT2G17530.1;Derives_from=AT2G17530.1
|
3
|
+
Chr2 TAIR10 exon 7626359 7626700 . + . Parent=AT2G17530.1
|
4
|
+
Chr2 TAIR10 five_prime_UTR 7626359 7626517 . + . Parent=AT2G17530.1
|
5
|
+
Chr2 TAIR10 CDS 7626518 7626700 . + 0 Parent=AT2G17530.1,AT2G17530.1-Protein;
|
6
|
+
Chr2 TAIR10 exon 7627310 7628101 . + . Parent=AT2G17530.1
|
7
|
+
Chr2 TAIR10 CDS 7627310 7628101 . + 0 Parent=AT2G17530.1,AT2G17530.1-Protein;
|
8
|
+
Chr2 TAIR10 exon 7628198 7628245 . + . Parent=AT2G17530.1
|
9
|
+
Chr2 TAIR10 CDS 7628198 7628245 . + 0 Parent=AT2G17530.1,AT2G17530.1-Protein;
|
10
|
+
Chr2 TAIR10 exon 7628325 7629149 . + . Parent=AT2G17530.1
|
11
|
+
Chr2 TAIR10 CDS 7628325 7628624 . + 0 Parent=AT2G17530.1,AT2G17530.1-Protein;
|
12
|
+
Chr2 TAIR10 three_prime_UTR 7628625 7629149 . + . Parent=AT2G17530.1
|
13
|
+
Chr2 TAIR10 mRNA 15972993 15977180 . + . ID=AT2G38120.1;Parent=AT2G38120;Name=AT2G38120.1;Index=1
|
14
|
+
Chr2 TAIR10 protein 15973493 15976792 . + . ID=AT2G38120.1-Protein;Name=AT2G38120.1;Derives_from=AT2G38120.1
|
15
|
+
Chr2 TAIR10 exon 15972993 15973264 . + . Parent=AT2G38120.1
|
16
|
+
Chr2 TAIR10 five_prime_UTR 15972993 15973264 . + . Parent=AT2G38120.1
|
17
|
+
Chr2 TAIR10 exon 15973476 15973669 . + . Parent=AT2G38120.1
|
18
|
+
Chr2 TAIR10 five_prime_UTR 15973476 15973492 . + . Parent=AT2G38120.1
|
19
|
+
Chr2 TAIR10 CDS 15973493 15973669 . + 0 Parent=AT2G38120.1,AT2G38120.1-Protein;
|
20
|
+
Chr2 TAIR10 exon 15973763 15973948 . + . Parent=AT2G38120.1
|
21
|
+
Chr2 TAIR10 CDS 15973763 15973948 . + 0 Parent=AT2G38120.1,AT2G38120.1-Protein;
|
22
|
+
Chr2 TAIR10 exon 15974037 15974149 . + . Parent=AT2G38120.1
|
23
|
+
Chr2 TAIR10 CDS 15974037 15974149 . + 0 Parent=AT2G38120.1,AT2G38120.1-Protein;
|
24
|
+
Chr2 TAIR10 exon 15974246 15974429 . + . Parent=AT2G38120.1
|
25
|
+
Chr2 TAIR10 CDS 15974246 15974429 . + 1 Parent=AT2G38120.1,AT2G38120.1-Protein;
|
26
|
+
Chr2 TAIR10 exon 15974708 15974805 . + . Parent=AT2G38120.1
|
27
|
+
Chr2 TAIR10 CDS 15974708 15974805 . + 0 Parent=AT2G38120.1,AT2G38120.1-Protein;
|
28
|
+
Chr2 TAIR10 exon 15975327 15975534 . + . Parent=AT2G38120.1
|
29
|
+
Chr2 TAIR10 CDS 15975327 15975534 . + 1 Parent=AT2G38120.1,AT2G38120.1-Protein;
|
30
|
+
Chr2 TAIR10 exon 15975621 15975878 . + . Parent=AT2G38120.1
|
31
|
+
Chr2 TAIR10 CDS 15975621 15975878 . + 0 Parent=AT2G38120.1,AT2G38120.1-Protein;
|
32
|
+
Chr2 TAIR10 exon 15976559 15977180 . + . Parent=AT2G38120.1
|
33
|
+
Chr2 TAIR10 CDS 15976559 15976792 . + 0 Parent=AT2G38120.1,AT2G38120.1-Protein;
|
34
|
+
Chr2 TAIR10 three_prime_UTR 15976793 15977180 . + . Parent=AT2G38120.1
|
35
|
+
Chr3 TAIR10 mRNA 123369 123741 . - . ID=AT3G01325.1;Parent=AT3G01325;Name=AT3G01325.1;Index=1
|
36
|
+
Chr3 TAIR10 protein 123412 123720 . - . ID=AT3G01325.1-Protein;Name=AT3G01325.1;Derives_from=AT3G01325.1
|
37
|
+
Chr3 TAIR10 five_prime_UTR 123721 123741 . - . Parent=AT3G01325.1
|
38
|
+
Chr3 TAIR10 CDS 123412 123720 . - 0 Parent=AT3G01325.1,AT3G01325.1-Protein;
|
39
|
+
Chr3 TAIR10 three_prime_UTR 123369 123411 . - . Parent=AT3G01325.1
|
40
|
+
Chr3 TAIR10 exon 123369 123741 . - . Parent=AT3G01325.1
|
41
|
+
Chr2 TAIR10 mRNA 15978512 15980749 . - . ID=AT2G38130.1;Parent=AT2G38130;Name=AT2G38130.1;Index=1
|
42
|
+
Chr2 TAIR10 protein 15978639 15980145 . - . ID=AT2G38130.1-Protein;Name=AT2G38130.1;Derives_from=AT2G38130.1
|
43
|
+
Chr2 TAIR10 five_prime_UTR 15980638 15980749 . - . Parent=AT2G38130.1
|
44
|
+
Chr2 TAIR10 exon 15980638 15980749 . - . Parent=AT2G38130.1
|
45
|
+
Chr2 TAIR10 five_prime_UTR 15980470 15980503 . - . Parent=AT2G38130.1
|
46
|
+
Chr2 TAIR10 exon 15980470 15980503 . - . Parent=AT2G38130.1
|
47
|
+
Chr2 TAIR10 five_prime_UTR 15980146 15980234 . - . Parent=AT2G38130.1
|
48
|
+
Chr2 TAIR10 CDS 15979966 15980145 . - 0 Parent=AT2G38130.1,AT2G38130.1-Protein;
|
49
|
+
Chr2 TAIR10 exon 15979966 15980234 . - . Parent=AT2G38130.1
|
50
|
+
Chr2 TAIR10 CDS 15979746 15979866 . - 0 Parent=AT2G38130.1,AT2G38130.1-Protein;
|
51
|
+
Chr2 TAIR10 exon 15979746 15979866 . - . Parent=AT2G38130.1
|
52
|
+
Chr2 TAIR10 CDS 15979551 15979606 . - 2 Parent=AT2G38130.1,AT2G38130.1-Protein;
|
53
|
+
Chr2 TAIR10 exon 15979551 15979606 . - . Parent=AT2G38130.1
|
54
|
+
Chr2 TAIR10 CDS 15978639 15978854 . - 0 Parent=AT2G38130.1,AT2G38130.1-Protein;
|
55
|
+
Chr2 TAIR10 three_prime_UTR 15978512 15978638 . - . Parent=AT2G38130.1
|
56
|
+
Chr2 TAIR10 exon 15978512 15978854 . - . Parent=AT2G38130.1
|
data/examples/test.rb
CHANGED
@@ -9,6 +9,7 @@ $LOAD_PATH.unshift(File.dirname(__FILE__))
|
|
9
9
|
#this is how you use it... no really!
|
10
10
|
|
11
11
|
db = Bio::Util::SynReport.new(:gff => ARGV[0], :fasta => ARGV[1], :verbose => true)
|
12
|
+
|
12
13
|
chr, pos, ref,alt = 'Chr2',7634495, 'a', 't'
|
13
14
|
pp db.mutation_info(chr,pos,alt)
|
14
15
|
|
@@ -16,4 +17,5 @@ $LOAD_PATH.unshift(File.dirname(__FILE__))
|
|
16
17
|
pp db.mutation_info(chr,pos,alt)
|
17
18
|
|
18
19
|
chr, pos, ref,alt = 'Chr2',7626518, 'a', 't'
|
19
|
-
pp db.mutation_info(chr,pos,alt)
|
20
|
+
pp db.mutation_info(chr,pos,alt)
|
21
|
+
|
@@ -5,6 +5,80 @@ require 'bio'
|
|
5
5
|
module Bio
|
6
6
|
class Util
|
7
7
|
|
8
|
+
<<<<<<< HEAD
|
9
|
+
class MrnaModel < Bio::GFF::GFF3::Record
|
10
|
+
attr_accessor :seq, :cds
|
11
|
+
def initialize(gff_line)
|
12
|
+
super gff_line
|
13
|
+
@cds = []
|
14
|
+
end
|
15
|
+
|
16
|
+
def includes?(seq, point)
|
17
|
+
return true if self.seqname == seq and point.to_i >= self.cds_start and point.to_i <= self.cds_end
|
18
|
+
false
|
19
|
+
end
|
20
|
+
|
21
|
+
def cds_start
|
22
|
+
@cds.flatten.min
|
23
|
+
end
|
24
|
+
|
25
|
+
def cds_end
|
26
|
+
@cds.flatten.max
|
27
|
+
end
|
28
|
+
|
29
|
+
def get_nt_number_in_cds(point)
|
30
|
+
to_count = @cds.sort.select {|a| a.first <= point}
|
31
|
+
in_block = to_count.pop
|
32
|
+
distance_in = to_count.inject(1) {|tot, b| tot + ( b.last - b.first) + 1 }
|
33
|
+
overhang = point - in_block.first
|
34
|
+
left_section = distance_in + overhang
|
35
|
+
|
36
|
+
if self.strand == '-'
|
37
|
+
length = @cds.sort.inject(0) {|tot, b| tot + ( b.last - b.first) + 1 }
|
38
|
+
return length - left_section + 1
|
39
|
+
end
|
40
|
+
|
41
|
+
return left_section
|
42
|
+
end
|
43
|
+
|
44
|
+
def codon_index(dist)
|
45
|
+
(dist - 1) / 3
|
46
|
+
end
|
47
|
+
|
48
|
+
def codon_position(dist)
|
49
|
+
(dist - 1) % 3
|
50
|
+
end
|
51
|
+
|
52
|
+
def codon_array
|
53
|
+
codon_array = []; Bio::Sequence::NA.new(self.seq).window_search(3,3) {|b| codon_array << b}
|
54
|
+
codon_array
|
55
|
+
end
|
56
|
+
|
57
|
+
def nt
|
58
|
+
end
|
59
|
+
|
60
|
+
##returns codon and position of nucleotide
|
61
|
+
def codon_and_index(point)
|
62
|
+
distance_into_cds = get_nt_number_in_cds point
|
63
|
+
codon_idx = codon_index distance_into_cds
|
64
|
+
codon_list = codon_array
|
65
|
+
codon = codon_list[codon_idx]
|
66
|
+
pos = codon_position(distance_into_cds)
|
67
|
+
[codon,pos]
|
68
|
+
end
|
69
|
+
|
70
|
+
def substitution_info(point,alt)
|
71
|
+
codon, position = codon_and_index(point)
|
72
|
+
new_codon = codon.dup
|
73
|
+
new_codon[position] = alt.downcase
|
74
|
+
|
75
|
+
a = Bio::Sequence::NA.new(codon).translate.codes.first
|
76
|
+
b = Bio::Sequence::NA.new(new_codon).translate.codes.first
|
77
|
+
sub_type = a == b ? "SYN" : "NON_SYN"
|
78
|
+
return {#:id => self.gffid,
|
79
|
+
:chr => self.seqname,
|
80
|
+
:strand => self.strand,
|
81
|
+
=======
|
8
82
|
class MrnaModel
|
9
83
|
attr_accessor :seqname, :gff_id, :strand, :cds, :sequences
|
10
84
|
|
@@ -48,11 +122,17 @@ module Bio
|
|
48
122
|
return {:id => @gff_id,
|
49
123
|
:chr => @seqname,
|
50
124
|
:strand => @strand,
|
125
|
+
>>>>>>> 188a1a611ad6334046551c7bba186dc1c7ae85af
|
51
126
|
:position => point,
|
52
127
|
:original_codon => codon,
|
53
128
|
:original_residue => a || 'stop',
|
54
129
|
:mutant_codon => new_codon,
|
55
130
|
:mutant_residue =>b || 'stop',
|
131
|
+
<<<<<<< HEAD
|
132
|
+
:position_in_codon => position + 1,
|
133
|
+
:substitution_type => sub_type
|
134
|
+
}
|
135
|
+
=======
|
56
136
|
:position_in_codon => position_in_codon + 1,
|
57
137
|
:substitution_type => sub_type
|
58
138
|
}
|
@@ -60,6 +140,7 @@ module Bio
|
|
60
140
|
running_total += (stop - start)
|
61
141
|
running_total += 1 if @strand == '-' #how far we are into the cds
|
62
142
|
end
|
143
|
+
>>>>>>> 188a1a611ad6334046551c7bba186dc1c7ae85af
|
63
144
|
end
|
64
145
|
|
65
146
|
end#class end
|
@@ -69,6 +150,47 @@ module Bio
|
|
69
150
|
#attr_accessor :cdshash, :cds_list, :mRNAhash, :seqhash
|
70
151
|
|
71
152
|
def initialize(opts)
|
153
|
+
<<<<<<< HEAD
|
154
|
+
cdses = []
|
155
|
+
mrna_list = []
|
156
|
+
seqs = Hash.new
|
157
|
+
|
158
|
+
Bio::FastaFormat.open(opts[:fasta]).each { |seq| seqs[seq.entry_id] = seq.to_seq }
|
159
|
+
$stderr.puts "Loaded Seq..." if opts[:verbose]
|
160
|
+
|
161
|
+
|
162
|
+
@mrnas = Hash.new {|h,k| h[k] = Hash.new}
|
163
|
+
File.open(opts[:gff], "r").each do |gffline|
|
164
|
+
record = Bio::GFF::GFF3::Record.new(gffline)
|
165
|
+
if record.feature_type == 'mRNA'
|
166
|
+
mrna_list << Bio::Util::MrnaModel.new(gffline)
|
167
|
+
elsif record.feature_type =='CDS'
|
168
|
+
cdses << record
|
169
|
+
end
|
170
|
+
end
|
171
|
+
|
172
|
+
mrna_list.each do |mrna|
|
173
|
+
mrna_id = mrna.get_attributes("ID")
|
174
|
+
$stderr.puts "No ID for #{cds}" if mrna_id.empty?
|
175
|
+
mrna_id = mrna_id.first
|
176
|
+
@mrnas[mrna.seqname][mrna_id] = mrna
|
177
|
+
@mrnas[mrna.seqname][mrna_id].seq = seqs[mrna_id].seq
|
178
|
+
end
|
179
|
+
|
180
|
+
cdses.each do |cds|
|
181
|
+
cds_parent = cds.get_attributes("Parent")
|
182
|
+
$stderr.puts "No Parent for #{cds}" if cds_parent.empty?
|
183
|
+
cds_parent = cds_parent.first
|
184
|
+
@mrnas[cds.seqname][cds_parent].cds << [cds.start,cds.end]
|
185
|
+
end
|
186
|
+
$stderr.puts "Loaded GFF..." if opts[:verbose]
|
187
|
+
|
188
|
+
|
189
|
+
end#init end
|
190
|
+
|
191
|
+
def is_in_cds?(chr,point)
|
192
|
+
self.mutation_info(chr,point,"a") ? true : false
|
193
|
+
=======
|
72
194
|
@gene_array = []
|
73
195
|
@cdshash = Hash.new {|h,k| h[k] = Hash.new {|a,b| a[b] = [] } }
|
74
196
|
@mRNAhash = Hash.new {|h,k| h[k] = Hash.new {|a,b| a[b] = [] } }
|
@@ -124,10 +246,27 @@ module Bio
|
|
124
246
|
|
125
247
|
def is_in_cds?(chr,point)
|
126
248
|
@self.mutation_info(chr,point) ? true : false
|
249
|
+
>>>>>>> 188a1a611ad6334046551c7bba186dc1c7ae85af
|
127
250
|
end
|
128
251
|
|
129
252
|
#returns mutation info if point in CDS, if not in CDS returns false
|
130
253
|
def mutation_info(chr,pos,alt)
|
254
|
+
<<<<<<< HEAD
|
255
|
+
pos = pos.to_i
|
256
|
+
#cant do indels ...
|
257
|
+
return nil if alt.length > 1
|
258
|
+
begin
|
259
|
+
@mrnas[chr].each_pair do |mrna_id, mrna|
|
260
|
+
if mrna.includes?(chr,pos)
|
261
|
+
return mrna.substitution_info(pos,alt)
|
262
|
+
end
|
263
|
+
end
|
264
|
+
false
|
265
|
+
rescue
|
266
|
+
#somthing unpredicatable went wrong and we couldnt do the conversion ...
|
267
|
+
return nil
|
268
|
+
end
|
269
|
+
=======
|
131
270
|
|
132
271
|
@models[chr].each do |m|
|
133
272
|
if m.includes?(chr,pos)
|
@@ -135,6 +274,7 @@ module Bio
|
|
135
274
|
end
|
136
275
|
end
|
137
276
|
false
|
277
|
+
>>>>>>> 188a1a611ad6334046551c7bba186dc1c7ae85af
|
138
278
|
end
|
139
279
|
|
140
280
|
|
data/test/sample.gff
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
ctg123 . gene 1000 9000 . + . ID=gene00001;Name=EDEN
|
2
|
+
ctg123 . TF_binding_site 1000 1012 . + . ID=tfbs00001;Parent=gene00001
|
3
|
+
ctg123 . mRNA 1050 9000 . + . ID=mRNA00001;Parent=gene00001;Name=EDEN.1
|
4
|
+
ctg123 . mRNA 1050 9000 . + . ID=mRNA00002;Parent=gene00001;Name=EDEN.2
|
5
|
+
ctg123 . mRNA 1300 9000 . + . ID=mRNA00003;Parent=gene00001;Name=EDEN.3
|
6
|
+
ctg123 . exon 1300 1500 . + . ID=exon00001;Parent=mRNA00003
|
7
|
+
ctg123 . exon 1050 1500 . + . ID=exon00002;Parent=mRNA00001,mRNA00002
|
8
|
+
ctg123 . exon 3000 3902 . + . ID=exon00003;Parent=mRNA00001,mRNA00003
|
9
|
+
ctg123 . exon 5000 5500 . + . ID=exon00004;Parent=mRNA00001,mRNA00002,mRNA00003
|
10
|
+
ctg123 . exon 7000 9000 . + . ID=exon00005;Parent=mRNA00001,mRNA00002,mRNA00003
|
11
|
+
ctg123 . CDS 1201 1500 . + 0 ID=cds00001;Parent=mRNA00001;Name=edenprotein.1
|
12
|
+
ctg123 . CDS 3000 3902 . + 0 ID=cds00001;Parent=mRNA00001;Name=edenprotein.1
|
13
|
+
ctg123 . CDS 5000 5500 . + 0 ID=cds00001;Parent=mRNA00001;Name=edenprotein.1
|
14
|
+
ctg123 . CDS 7000 7600 . + 0 ID=cds00001;Parent=mRNA00001;Name=edenprotein.1
|
data/test/test_bio-synreport.rb
CHANGED
@@ -1,7 +1,216 @@
|
|
1
1
|
require 'helper'
|
2
2
|
|
3
|
+
|
4
|
+
class TestMrnaModel < Test::Unit::TestCase
|
5
|
+
|
6
|
+
def setup
|
7
|
+
@AT2G17530_1 = Bio::Util::MrnaModel.new('Chr2 TAIR10 mRNA 7626359 7629149 . + . ID=AT2G17530.1;Parent=AT2G17530;Name=AT2G17530.1;Index=1')
|
8
|
+
@AT2G17530_1.cds = [ [7626518,7626700],[7627310,7628101],[7628198,7628245], [7628325,7628624] ]
|
9
|
+
@AT2G17530_1.seq = "ATGTCGTGTTCATCCTCATCTGGATCAGAGGAAGACGATGAGGGTTTCGATGCTTACCGT
|
10
|
+
AAAGGTGGATATCACGCCGTTAGAATCGGAGACCAGTTTGCCGGTGGCCGTTACATTGCT
|
11
|
+
CAGAGAAAGCTTGGTTGGGGCCAATTCTCCACCGTTTGGCTTGCCTATGATACTCGCACT
|
12
|
+
TCTAATTATGTTGCTTTGAAGATTCAGAAGAGCGCCTTACAATTTGCTCAAGCTGCACTT
|
13
|
+
CATGAAATCGAACTTCTTCAAGCTGCTGCTGATGGGGATCCTGAAAATACCAAGTGTGTT
|
14
|
+
ATTCGTCTTATTGATGACTTCAAGCACGCAGGTCCCAACGGGCAGCATTTATGCATGGTG
|
15
|
+
CTCGAGTTTCTTGGCGATAGCTTGCTGCGTTTGATTAAATATAACCGTTATAAAGGGATG
|
16
|
+
GAGTTAAGTAAAGTGCGGGAGATATGCAAATGTATACTGACTGGTCTAGATTATTTGCAC
|
17
|
+
CGTGAACTCGGTATGATTCACTCCGACTTAAAACCCGAAAACATTCTTCTTTGTTCCACC
|
18
|
+
ATTGACCCTGCCAAGGATCCTATCAGATCCGGACTAACACCGATACTAGAAAAGCCCGAG
|
19
|
+
GGGAACCAAAACGGTACATCAACAATGAATCTGATTGAGAAGAAGTTGAAGAGGAGAGCA
|
20
|
+
AAAAAAGCGGCTGCTAAAATATCAGGAAGAAGAGTTTCGATAGTAGGTTTAAGTGAAACA
|
21
|
+
CCGAAAAAGAACAAGAGAAACTTGGATGGGATTGATATGAGATGCAAAGTTGTCGACTTC
|
22
|
+
GGGAACGGGTGTTGGGCTGATAACAAATTTGCAGAAGAAATACAAACAAGACAGTACAGA
|
23
|
+
GCTCCTGAAGTAATACTTCAGTCAGGTTACTCTTACTCTGTTGATATGTGGTCTTTCGCT
|
24
|
+
TGTACTGCTTTTGAGCTTGCTACAGGCGATATGCTTTTCGCTCCAAAAGAGGGAAATGGT
|
25
|
+
TACGGAGAAGACGAGGACCACCTTGCTCTTATGATGGAACTCTTAGGAAAAATGCCTCGA
|
26
|
+
AAGATTGCCATTGGAGGTGCGAGATCAAAGGATTACTTTGACAGACACGGCGACTTGAAG
|
27
|
+
AGGATCCGGAGATTAAAATACTGGCCACTCGACCGTTTACTGATTGATAAATACAAGCTT
|
28
|
+
CCAGAAGCAGAAGCACGAGAATTTGCGGATTTTCTCTGCCCGATAATGGATTTTGCACCT
|
29
|
+
GAGAAACGACCAACTGCACAACAATGTCTGCAACATCCATGGTTGAATCTAAGGACACAG
|
30
|
+
AACAATGAAGATGATATAGAAGGTCAGATGAGTAACATGCAGATCAAAGGTTCATGTTCT
|
31
|
+
TGA".gsub(/\n/,"")
|
32
|
+
|
33
|
+
@AT2G38130_1 = Bio::Util::MrnaModel.new('Chr2 TAIR10 mRNA 15978512 15980749 . - . ID=AT2G38130.1;Parent=AT2G38130;Name=AT2G38130.1;Index=1')
|
34
|
+
@AT2G38130_1.cds = [[15978639, 15978854],[15979551, 15979606],[15979746, 15979866],[15979966, 15980145]]
|
35
|
+
@AT2G38130_1.seq = "ATGGAGAAAGAGATGGAAGATAAAGAAGAATTCGATGAGGGTGAGATTGAGTACACGAGT
|
36
|
+
TATGCTGGTGAGCATCATCTGCCATTGATTATGTCTCTTGTTGACCAAGAACTTAGTGAA
|
37
|
+
CCTTACTCCATCTTTACTTACCGGTACTTCGTCTACCTCTGGCCGCAGCTATGCTTCCTG
|
38
|
+
GCCTTTCACAAAGGTAAATGCGTAGGAACCATAGTCTGTAAGATGGGGGATCATCGACAG
|
39
|
+
ACTTTCAGAGGGTACATCGCTATGTTGGTTGTGATTAAACCATATCGTGGCCGAGGCATA
|
40
|
+
GCCTCAGAGCTTGTCACAAGAGCGATAAAAGCGATGATGGAATCAGGCTGTGAAGAGGTA
|
41
|
+
ACTCTGGAGGCAGAAGTGAGTAACAAAGGAGCATTAGCACTATATGGGCGACTCGGGTTT
|
42
|
+
ATAAGAGCCAAACGGCTATACCACTATTACTTGAATGGGATGGATGCTTTTCGCCTGAAG
|
43
|
+
CTCTTGTTCCCTAAGCCTCGTGTACCTCAAATACCTTCTCAAGTTCAAACCCAACAAGAG
|
44
|
+
TATGAGACCTTTCCTAGGCCTCGTGTACCTTAA".gsub(/\n/,"")
|
45
|
+
end
|
46
|
+
|
47
|
+
def test_points_in_cds
|
48
|
+
[7626518,7626528,7627320,7628208,7628335,7628624].each do |point|
|
49
|
+
assert @AT2G17530_1.includes?('Chr2', point), "#{point} should be reported in cds"
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def test_gets_end
|
54
|
+
assert_equal 7628624, @AT2G17530_1.cds_end, "cds has wrong end"
|
55
|
+
end
|
56
|
+
|
57
|
+
def test_gets_start
|
58
|
+
assert_equal 7626518, @AT2G17530_1.cds_start, "cds has wrong start"
|
59
|
+
end
|
60
|
+
|
61
|
+
def test_get_nt_number_in_cds
|
62
|
+
#at start of first cds segment, distance into cds is 1
|
63
|
+
assert_equal 1, @AT2G17530_1.get_nt_number_in_cds(7626518), "Offset is wrong"
|
64
|
+
#at end of first cds segment distance is length of cds segment (183)
|
65
|
+
assert_equal 183, @AT2G17530_1.get_nt_number_in_cds(7626700), "Offset is wrong"
|
66
|
+
#at start of second cds segment distances is length of first + distance into second (1) = 184
|
67
|
+
assert_equal 184, @AT2G17530_1.get_nt_number_in_cds(7627310), "Offset is wrong"
|
68
|
+
#ten into second cds segment distance is length of first (184) + distance into second (10) = 194
|
69
|
+
assert_equal 194, @AT2G17530_1.get_nt_number_in_cds(7627320), "Offset is wrong"
|
70
|
+
#last position is length of all cds segments
|
71
|
+
assert_equal 1323, @AT2G17530_1.get_nt_number_in_cds(7628624), "offset is offset"
|
72
|
+
|
73
|
+
#now negative strand gene
|
74
|
+
#at end of last cds segment, distance into cds is 1
|
75
|
+
assert_equal 1, @AT2G38130_1.get_nt_number_in_cds(15980145), "Offset is wrong"
|
76
|
+
#at start of last cds segment distance is length of cds segment (180)
|
77
|
+
assert_equal 180, @AT2G38130_1.get_nt_number_in_cds(15979966), "Offset is wrong"
|
78
|
+
#at end of second cds segment distances is length of first + distance into second (1) = 181
|
79
|
+
assert_equal 181, @AT2G38130_1.get_nt_number_in_cds(15979866), "Offset is wrong"
|
80
|
+
#ten from end of second cds segment distance is length of first (181) + distance into second (10) = 191
|
81
|
+
assert_equal 191, @AT2G38130_1.get_nt_number_in_cds(15979856), "Offset is wrong"
|
82
|
+
#last position is length of all cds segments
|
83
|
+
assert_equal 573, @AT2G38130_1.get_nt_number_in_cds(15978639)
|
84
|
+
end
|
85
|
+
|
86
|
+
def test_substitution_info
|
87
|
+
|
88
|
+
##first residue, + strand
|
89
|
+
result = @AT2G17530_1.substitution_info(7626518, 'a')
|
90
|
+
pp result
|
91
|
+
assert_equal('atg', result[:original_codon])
|
92
|
+
assert_equal('Met', result[:original_residue])
|
93
|
+
assert_equal('atg',result[:mutant_codon])
|
94
|
+
assert_equal('Met', result[:mutant_residue])
|
95
|
+
assert_equal(1, result[:position_in_codon])
|
96
|
+
|
97
|
+
result = @AT2G17530_1.substitution_info(7626519, 'a')
|
98
|
+
pp result
|
99
|
+
assert_equal('atg', result[:original_codon])
|
100
|
+
assert_equal('Met', result[:original_residue])
|
101
|
+
assert_equal('aag',result[:mutant_codon])
|
102
|
+
assert_equal('Lys', result[:mutant_residue])
|
103
|
+
assert_equal(2, result[:position_in_codon])
|
104
|
+
|
105
|
+
result = @AT2G17530_1.substitution_info(7626520, 'a')
|
106
|
+
pp result
|
107
|
+
assert_equal('atg', result[:original_codon])
|
108
|
+
assert_equal('Met', result[:original_residue])
|
109
|
+
assert_equal('ata',result[:mutant_codon])
|
110
|
+
assert_equal('Ile', result[:mutant_residue])
|
111
|
+
assert_equal(3, result[:position_in_codon])
|
112
|
+
|
113
|
+
##first residue, - strand
|
114
|
+
result = @AT2G38130_1.substitution_info(15980145, 'a')
|
115
|
+
pp result
|
116
|
+
assert_equal('atg', result[:original_codon])
|
117
|
+
assert_equal('Met', result[:original_residue])
|
118
|
+
assert_equal('atg',result[:mutant_codon])
|
119
|
+
assert_equal('Met', result[:mutant_residue])
|
120
|
+
assert_equal(1, result[:position_in_codon])
|
121
|
+
|
122
|
+
result = @AT2G38130_1.substitution_info(15980144, 'a')
|
123
|
+
pp result
|
124
|
+
assert_equal('atg', result[:original_codon])
|
125
|
+
assert_equal('Met', result[:original_residue])
|
126
|
+
assert_equal('aag',result[:mutant_codon])
|
127
|
+
assert_equal('Lys', result[:mutant_residue])
|
128
|
+
assert_equal(2, result[:position_in_codon])
|
129
|
+
|
130
|
+
result = @AT2G38130_1.substitution_info(15980143, 'a')
|
131
|
+
pp result
|
132
|
+
assert_equal('atg', result[:original_codon])
|
133
|
+
assert_equal('Met', result[:original_residue])
|
134
|
+
assert_equal('ata',result[:mutant_codon])
|
135
|
+
assert_equal('Ile', result[:mutant_residue])
|
136
|
+
assert_equal(3, result[:position_in_codon])
|
137
|
+
|
138
|
+
##third residue second cds segment, + strand -> start pos = 7627317
|
139
|
+
result = @AT2G17530_1.substitution_info(7627317, 'a')
|
140
|
+
pp result
|
141
|
+
assert_equal('gtt', result[:original_codon])
|
142
|
+
assert_equal('Val', result[:original_residue])
|
143
|
+
assert_equal('gat',result[:mutant_codon])
|
144
|
+
assert_equal('Asp', result[:mutant_residue])
|
145
|
+
assert_equal(2, result[:position_in_codon])
|
146
|
+
|
147
|
+
##third residue second cds segment, - strand -> start pos = 15979753
|
148
|
+
result = @AT2G38130_1.substitution_info(15979753, 'a')
|
149
|
+
pp result
|
150
|
+
assert_equal('cga', result[:original_codon])
|
151
|
+
assert_equal('Arg', result[:original_residue])
|
152
|
+
assert_equal('cga',result[:mutant_codon])
|
153
|
+
assert_equal('Arg', result[:mutant_residue])
|
154
|
+
assert_equal(3, result[:position_in_codon])
|
155
|
+
|
156
|
+
##last residue + strand
|
157
|
+
result = @AT2G17530_1.substitution_info(7628624, 'a')
|
158
|
+
pp result
|
159
|
+
assert_equal('tga',result[:original_codon])
|
160
|
+
assert_equal('stop', result[:original_residue])
|
161
|
+
assert_equal('tga',result[:mutant_codon])
|
162
|
+
assert_equal('stop', result[:mutant_residue])
|
163
|
+
assert_equal(3, result[:position_in_codon])
|
164
|
+
|
165
|
+
result = @AT2G17530_1.substitution_info(7628622, 'a')
|
166
|
+
pp result
|
167
|
+
assert_equal('tga',result[:original_codon])
|
168
|
+
assert_equal('stop', result[:original_residue])
|
169
|
+
assert_equal('aga',result[:mutant_codon])
|
170
|
+
assert_equal('Arg', result[:mutant_residue])
|
171
|
+
assert_equal(1, result[:position_in_codon])
|
172
|
+
|
173
|
+
##last residue - strand
|
174
|
+
result = @AT2G38130_1.substitution_info(15978639, 'a')
|
175
|
+
pp result
|
176
|
+
assert_equal('taa',result[:original_codon])
|
177
|
+
assert_equal('stop', result[:original_residue])
|
178
|
+
assert_equal('taa',result[:mutant_codon])
|
179
|
+
assert_equal('stop', result[:mutant_residue])
|
180
|
+
assert_equal(3, result[:position_in_codon])
|
181
|
+
|
182
|
+
result = @AT2G38130_1.substitution_info(15978641, 'a')
|
183
|
+
pp result
|
184
|
+
assert_equal('taa',result[:original_codon])
|
185
|
+
assert_equal('stop', result[:original_residue])
|
186
|
+
assert_equal('aaa',result[:mutant_codon])
|
187
|
+
assert_equal('Lys', result[:mutant_residue])
|
188
|
+
assert_equal(1, result[:position_in_codon])
|
189
|
+
|
190
|
+
end
|
191
|
+
|
192
|
+
end
|
193
|
+
=begin
|
194
|
+
:original_codon => codon,
|
195
|
+
:original_residue => a || 'stop',
|
196
|
+
:mutant_codon => new_codon,
|
197
|
+
:mutant_residue =>b || 'stop',
|
198
|
+
:position_in_codon => position_in_codon + 1,
|
199
|
+
:substitution_type => sub_type
|
200
|
+
|
201
|
+
|
3
202
|
class TestBioSynreport < Test::Unit::TestCase
|
4
|
-
|
5
|
-
|
203
|
+
|
204
|
+
def setup
|
205
|
+
@plus_strand_first_cds = ''
|
206
|
+
@plus_strand_second_cds = ''
|
207
|
+
@minus_strand_first_cds = ''
|
208
|
+
@minus_strand_second_cds = ''
|
209
|
+
end
|
210
|
+
|
211
|
+
def test_nothing
|
212
|
+
assert true
|
6
213
|
end
|
214
|
+
|
7
215
|
end
|
216
|
+
=end
|
metadata
CHANGED
@@ -1,13 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bio-synreport
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
prerelease:
|
4
|
+
prerelease: false
|
6
5
|
segments:
|
7
6
|
- 0
|
8
7
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
8
|
+
- 1
|
9
|
+
version: 0.1.1
|
11
10
|
platform: ruby
|
12
11
|
authors:
|
13
12
|
- Dan MacLean
|
@@ -15,84 +14,75 @@ autorequire:
|
|
15
14
|
bindir: bin
|
16
15
|
cert_chain: []
|
17
16
|
|
18
|
-
date:
|
17
|
+
date: 2013-05-16 00:00:00 +01:00
|
18
|
+
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
type: :development
|
22
|
-
|
23
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
-
none: false
|
22
|
+
version_requirements: &id001 !ruby/object:Gem::Requirement
|
25
23
|
requirements:
|
26
24
|
- - ">="
|
27
25
|
- !ruby/object:Gem::Version
|
28
|
-
hash: 3
|
29
26
|
segments:
|
30
27
|
- 0
|
31
28
|
version: "0"
|
32
|
-
version_requirements: *id001
|
33
29
|
name: shoulda
|
30
|
+
requirement: *id001
|
31
|
+
prerelease: false
|
34
32
|
- !ruby/object:Gem::Dependency
|
35
33
|
type: :development
|
36
|
-
|
37
|
-
requirement: &id002 !ruby/object:Gem::Requirement
|
38
|
-
none: false
|
34
|
+
version_requirements: &id002 !ruby/object:Gem::Requirement
|
39
35
|
requirements:
|
40
36
|
- - ~>
|
41
37
|
- !ruby/object:Gem::Version
|
42
|
-
hash: 23
|
43
38
|
segments:
|
44
39
|
- 1
|
45
40
|
- 0
|
46
41
|
- 0
|
47
42
|
version: 1.0.0
|
48
|
-
version_requirements: *id002
|
49
43
|
name: bundler
|
44
|
+
requirement: *id002
|
45
|
+
prerelease: false
|
50
46
|
- !ruby/object:Gem::Dependency
|
51
47
|
type: :development
|
52
|
-
|
53
|
-
requirement: &id003 !ruby/object:Gem::Requirement
|
54
|
-
none: false
|
48
|
+
version_requirements: &id003 !ruby/object:Gem::Requirement
|
55
49
|
requirements:
|
56
50
|
- - ~>
|
57
51
|
- !ruby/object:Gem::Version
|
58
|
-
hash: 7
|
59
52
|
segments:
|
60
53
|
- 1
|
61
54
|
- 6
|
62
55
|
- 4
|
63
56
|
version: 1.6.4
|
64
|
-
version_requirements: *id003
|
65
57
|
name: jeweler
|
58
|
+
requirement: *id003
|
59
|
+
prerelease: false
|
66
60
|
- !ruby/object:Gem::Dependency
|
67
61
|
type: :development
|
68
|
-
|
69
|
-
requirement: &id004 !ruby/object:Gem::Requirement
|
70
|
-
none: false
|
62
|
+
version_requirements: &id004 !ruby/object:Gem::Requirement
|
71
63
|
requirements:
|
72
64
|
- - ">="
|
73
65
|
- !ruby/object:Gem::Version
|
74
|
-
hash: 3
|
75
66
|
segments:
|
76
67
|
- 0
|
77
68
|
version: "0"
|
78
|
-
version_requirements: *id004
|
79
69
|
name: rcov
|
70
|
+
requirement: *id004
|
71
|
+
prerelease: false
|
80
72
|
- !ruby/object:Gem::Dependency
|
81
73
|
type: :development
|
82
|
-
|
83
|
-
requirement: &id005 !ruby/object:Gem::Requirement
|
84
|
-
none: false
|
74
|
+
version_requirements: &id005 !ruby/object:Gem::Requirement
|
85
75
|
requirements:
|
86
76
|
- - ">="
|
87
77
|
- !ruby/object:Gem::Version
|
88
|
-
hash: 3
|
89
78
|
segments:
|
90
79
|
- 1
|
91
80
|
- 4
|
92
81
|
- 2
|
93
82
|
version: 1.4.2
|
94
|
-
version_requirements: *id005
|
95
83
|
name: bio
|
84
|
+
requirement: *id005
|
85
|
+
prerelease: false
|
96
86
|
description: Takes a GFF and genomic sequence file, constructs CDS and when given a position and alternative base will report whether this change is in a coding region and if it results in a synonymous or non-synonymous mutation.
|
97
87
|
email: maclean.daniel@gmail.com
|
98
88
|
executables: []
|
@@ -103,6 +93,7 @@ extra_rdoc_files:
|
|
103
93
|
- LICENSE.txt
|
104
94
|
- README.rdoc
|
105
95
|
files:
|
96
|
+
- .document
|
106
97
|
- Gemfile
|
107
98
|
- Gemfile.lock
|
108
99
|
- LICENSE.txt
|
@@ -110,11 +101,15 @@ files:
|
|
110
101
|
- Rakefile
|
111
102
|
- VERSION
|
112
103
|
- bio-synreport.gemspec
|
104
|
+
- examples/test.fa
|
105
|
+
- examples/test.gff
|
113
106
|
- examples/test.rb
|
114
107
|
- lib/bio-synreport.rb
|
115
108
|
- lib/bio/utils/bio-synreport.rb
|
116
109
|
- test/helper.rb
|
110
|
+
- test/sample.gff
|
117
111
|
- test/test_bio-synreport.rb
|
112
|
+
has_rdoc: true
|
118
113
|
homepage: http://github.com/danmaclean/bioruby-synreport
|
119
114
|
licenses:
|
120
115
|
- MIT
|
@@ -124,27 +119,23 @@ rdoc_options: []
|
|
124
119
|
require_paths:
|
125
120
|
- lib
|
126
121
|
required_ruby_version: !ruby/object:Gem::Requirement
|
127
|
-
none: false
|
128
122
|
requirements:
|
129
123
|
- - ">="
|
130
124
|
- !ruby/object:Gem::Version
|
131
|
-
hash: 3
|
132
125
|
segments:
|
133
126
|
- 0
|
134
127
|
version: "0"
|
135
128
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
136
|
-
none: false
|
137
129
|
requirements:
|
138
130
|
- - ">="
|
139
131
|
- !ruby/object:Gem::Version
|
140
|
-
hash: 3
|
141
132
|
segments:
|
142
133
|
- 0
|
143
134
|
version: "0"
|
144
135
|
requirements: []
|
145
136
|
|
146
137
|
rubyforge_project:
|
147
|
-
rubygems_version: 1.
|
138
|
+
rubygems_version: 1.3.6
|
148
139
|
signing_key:
|
149
140
|
specification_version: 3
|
150
141
|
summary: Reports whether a nucleotide change results in synonymous or non-synonymous mutations
|