bio-ngs 0.4.7.alpha.02 → 0.4.7.alpha.03

Sign up to get free protection for your applications and to get access to all the features.
Files changed (64) hide show
  1. data/VERSION +1 -1
  2. data/bio-ngs.gemspec +58 -2
  3. data/features/cufflinks_gtf_parser_indexing.feature +6 -1
  4. data/features/illumina_project_rebuild.feature +17 -0
  5. data/features/step_definitions/cufflinks_gtf_parser_indexing.rb +19 -2
  6. data/lib/bio/appl/ngs/cufflinks/gtf/gtf_parser.rb +43 -17
  7. data/lib/bio/ngs/illumina/illumina.rb +2 -2
  8. data/lib/tasks/filter.thor +2 -2
  9. data/test/conf/projects.yaml +58 -0
  10. data/test/data/Project_Cow/Sample_SQ_0007/SQ_0007_CGATGT_L003_R1_001.fastq.gz +0 -0
  11. data/test/data/Project_Cow/Sample_SQ_0007/SQ_0007_CGATGT_L003_R1_002.fastq.gz +0 -0
  12. data/test/data/Project_Cow/Sample_SQ_0007/SQ_0007_CGATGT_L003_R2_001.fastq.gz +0 -0
  13. data/test/data/Project_Cow/Sample_SQ_0007/SQ_0007_CGATGT_L003_R2_002.fastq.gz +0 -0
  14. data/test/data/Project_Cow/Sample_SQ_0007/filtered/SQ_0007_CGATGT_L003_R1_001.fastq.gz +0 -0
  15. data/test/data/Project_Cow/Sample_SQ_0007/filtered/SQ_0007_CGATGT_L003_R1_002.fastq.gz +0 -0
  16. data/test/data/Project_Cow/Sample_SQ_0007/filtered/SQ_0007_CGATGT_L003_R2_001.fastq.gz +0 -0
  17. data/test/data/Project_Cow/Sample_SQ_0007/filtered/SQ_0007_CGATGT_L003_R2_002.fastq.gz +0 -0
  18. data/test/data/Project_Cow/Sample_SQ_0007/trimmed/SQ_0007_CGATGT_L003_R1_TRIMMED.fastq.gz +0 -0
  19. data/test/data/Project_Cow/Sample_SQ_0007/trimmed/SQ_0007_CGATGT_L003_R2_TRIMMED.fastq.gz +0 -0
  20. data/test/data/Project_Cow/Sample_SQ_0008/SQ_0008_CGATGT_L003_R1_001.fastq.gz +0 -0
  21. data/test/data/Project_Cow/Sample_SQ_0008/SQ_0008_CGATGT_L003_R1_002.fastq.gz +0 -0
  22. data/test/data/Project_Cow/Sample_SQ_0008/SQ_0008_CGATGT_L003_R2_001.fastq.gz +0 -0
  23. data/test/data/Project_Cow/Sample_SQ_0008/SQ_0008_CGATGT_L003_R2_002.fastq.gz +0 -0
  24. data/test/data/Project_Cow/Sample_SQ_0009/SQ_0009_CGATGT_L003_R1_001.fastq.gz +0 -0
  25. data/test/data/Project_Cow/Sample_SQ_0009/SQ_0009_CGATGT_L003_R1_002.fastq.gz +0 -0
  26. data/test/data/Project_Cow/Sample_SQ_0009/SQ_0009_CGATGT_L003_R2_001.fastq.gz +0 -0
  27. data/test/data/Project_Cow/Sample_SQ_0009/SQ_0009_CGATGT_L003_R2_002.fastq.gz +0 -0
  28. data/test/data/Project_Dog/Sample_SQ_0004/SQ_0004_CGATGT_L003_R1_001.fastq.gz +0 -0
  29. data/test/data/Project_Dog/Sample_SQ_0004/SQ_0004_CGATGT_L003_R1_002.fastq.gz +0 -0
  30. data/test/data/Project_Dog/Sample_SQ_0004/SQ_0004_CGATGT_L003_R2_001.fastq.gz +0 -0
  31. data/test/data/Project_Dog/Sample_SQ_0004/SQ_0004_CGATGT_L003_R2_002.fastq.gz +0 -0
  32. data/test/data/Project_Dog/Sample_SQ_0005/SQ_0005_CGATGT_L003_R1_001.fastq.gz +0 -0
  33. data/test/data/Project_Dog/Sample_SQ_0005/SQ_0005_CGATGT_L003_R1_002.fastq.gz +0 -0
  34. data/test/data/Project_Dog/Sample_SQ_0005/SQ_0005_CGATGT_L003_R2_001.fastq.gz +0 -0
  35. data/test/data/Project_Dog/Sample_SQ_0005/SQ_0005_CGATGT_L003_R2_002.fastq.gz +0 -0
  36. data/test/data/Project_Dog/Sample_SQ_0006/SQ_0006_CGATGT_L003_R1_001.fastq.gz +0 -0
  37. data/test/data/Project_Dog/Sample_SQ_0006/SQ_0006_CGATGT_L003_R1_002.fastq.gz +0 -0
  38. data/test/data/Project_Dog/Sample_SQ_0006/SQ_0006_CGATGT_L003_R2_001.fastq.gz +0 -0
  39. data/test/data/Project_Dog/Sample_SQ_0006/SQ_0006_CGATGT_L003_R2_002.fastq.gz +0 -0
  40. data/test/data/Project_Human/Sample_SQ_0001/SQ_0001_CGATGT_L003_R1_001.fastq.gz +0 -0
  41. data/test/data/Project_Human/Sample_SQ_0001/SQ_0001_CGATGT_L003_R1_002.fastq.gz +0 -0
  42. data/test/data/Project_Human/Sample_SQ_0001/SQ_0001_CGATGT_L003_R2_001.fastq.gz +0 -0
  43. data/test/data/Project_Human/Sample_SQ_0001/SQ_0001_CGATGT_L003_R2_002.fastq.gz +0 -0
  44. data/test/data/Project_Human/Sample_SQ_0002/SQ_0002_CGATGT_L003_R1_001.fastq.gz +0 -0
  45. data/test/data/Project_Human/Sample_SQ_0002/SQ_0002_CGATGT_L003_R1_002.fastq.gz +0 -0
  46. data/test/data/Project_Human/Sample_SQ_0002/SQ_0002_CGATGT_L003_R2_001.fastq.gz +0 -0
  47. data/test/data/Project_Human/Sample_SQ_0002/SQ_0002_CGATGT_L003_R2_002.fastq.gz +0 -0
  48. data/test/data/Project_Human/Sample_SQ_0003/SQ_0003_CGATGT_L003_R1_001.fastq.gz +0 -0
  49. data/test/data/Project_Human/Sample_SQ_0003/SQ_0003_CGATGT_L003_R1_002.fastq.gz +0 -0
  50. data/test/data/Project_Human/Sample_SQ_0003/SQ_0003_CGATGT_L003_R2_001.fastq.gz +0 -0
  51. data/test/data/Project_Human/Sample_SQ_0003/SQ_0003_CGATGT_L003_R2_002.fastq.gz +0 -0
  52. data/test/data/RemoteDir/Project_Human/Sample_SQ_0001/SQ_0001_CGATGT_L010_R1_001.fastq.gz +0 -0
  53. data/test/data/RemoteDir/Project_Human/Sample_SQ_0001/SQ_0001_CGATGT_L010_R1_002.fastq.gz +0 -0
  54. data/test/data/RemoteDir/Project_Human/Sample_SQ_0001/SQ_0001_CGATGT_L010_R2_001.fastq.gz +0 -0
  55. data/test/data/RemoteDir/Project_Human/Sample_SQ_0001/SQ_0001_CGATGT_L010_R2_002.fastq.gz +0 -0
  56. data/test/data/RemoteDir/Project_Human/Sample_SQ_0002/SQ_0002_CGATGT_L003_R1_001.fastq.gz +0 -0
  57. data/test/data/RemoteDir/Project_Human/Sample_SQ_0002/SQ_0002_CGATGT_L003_R1_002.fastq.gz +0 -0
  58. data/test/data/RemoteDir/Project_Human/Sample_SQ_0002/SQ_0002_CGATGT_L003_R2_001.fastq.gz +0 -0
  59. data/test/data/RemoteDir/Project_Human/Sample_SQ_0002/SQ_0002_CGATGT_L003_R2_002.fastq.gz +0 -0
  60. data/test/data/RemoteDir/Project_Human/Sample_SQ_0003/SQ_0003_CGATGT_L003_R1_001.fastq.gz +0 -0
  61. data/test/data/RemoteDir/Project_Human/Sample_SQ_0003/SQ_0003_CGATGT_L003_R1_002.fastq.gz +0 -0
  62. data/test/data/RemoteDir/Project_Human/Sample_SQ_0003/SQ_0003_CGATGT_L003_R2_001.fastq.gz +0 -0
  63. data/test/data/RemoteDir/Project_Human/Sample_SQ_0003/SQ_0003_CGATGT_L003_R2_002.fastq.gz +0 -0
  64. metadata +123 -67
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.4.7.alpha.02
1
+ 0.4.7.alpha.03
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "bio-ngs"
8
- s.version = "0.4.7.alpha.02"
8
+ s.version = "0.4.7.alpha.03"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Francesco Strozzi", "Raoul J.P. Bonnal"]
12
- s.date = "2012-05-25"
12
+ s.date = "2012-05-29"
13
13
  s.description = "bio-ngs provides a framework for handling NGS data with BioRuby"
14
14
  s.email = "francesco.strozzi@gmail.com"
15
15
  s.executables = ["biongs"]
@@ -31,6 +31,7 @@ Gem::Specification.new do |s|
31
31
  "ext/mkrf_conf.rb",
32
32
  "features/cufflinks_gtf_parser.feature",
33
33
  "features/cufflinks_gtf_parser_indexing.feature",
34
+ "features/illumina_project_rebuild.feature",
34
35
  "features/step_definitions/cufflinks_gtf.rb",
35
36
  "features/step_definitions/cufflinks_gtf_parser_indexing.rb",
36
37
  "features/support/env.rb",
@@ -115,7 +116,62 @@ Gem::Specification.new do |s|
115
116
  "spec/spec_helper.rb",
116
117
  "spec/tophat_spec.rb",
117
118
  "spec/utils_spec.rb",
119
+ "test/conf/projects.yaml",
118
120
  "test/conf/test_db.yml",
121
+ "test/data/Project_Cow/Sample_SQ_0007/SQ_0007_CGATGT_L003_R1_001.fastq.gz",
122
+ "test/data/Project_Cow/Sample_SQ_0007/SQ_0007_CGATGT_L003_R1_002.fastq.gz",
123
+ "test/data/Project_Cow/Sample_SQ_0007/SQ_0007_CGATGT_L003_R2_001.fastq.gz",
124
+ "test/data/Project_Cow/Sample_SQ_0007/SQ_0007_CGATGT_L003_R2_002.fastq.gz",
125
+ "test/data/Project_Cow/Sample_SQ_0007/filtered/SQ_0007_CGATGT_L003_R1_001.fastq.gz",
126
+ "test/data/Project_Cow/Sample_SQ_0007/filtered/SQ_0007_CGATGT_L003_R1_002.fastq.gz",
127
+ "test/data/Project_Cow/Sample_SQ_0007/filtered/SQ_0007_CGATGT_L003_R2_001.fastq.gz",
128
+ "test/data/Project_Cow/Sample_SQ_0007/filtered/SQ_0007_CGATGT_L003_R2_002.fastq.gz",
129
+ "test/data/Project_Cow/Sample_SQ_0007/trimmed/SQ_0007_CGATGT_L003_R1_TRIMMED.fastq.gz",
130
+ "test/data/Project_Cow/Sample_SQ_0007/trimmed/SQ_0007_CGATGT_L003_R2_TRIMMED.fastq.gz",
131
+ "test/data/Project_Cow/Sample_SQ_0008/SQ_0008_CGATGT_L003_R1_001.fastq.gz",
132
+ "test/data/Project_Cow/Sample_SQ_0008/SQ_0008_CGATGT_L003_R1_002.fastq.gz",
133
+ "test/data/Project_Cow/Sample_SQ_0008/SQ_0008_CGATGT_L003_R2_001.fastq.gz",
134
+ "test/data/Project_Cow/Sample_SQ_0008/SQ_0008_CGATGT_L003_R2_002.fastq.gz",
135
+ "test/data/Project_Cow/Sample_SQ_0009/SQ_0009_CGATGT_L003_R1_001.fastq.gz",
136
+ "test/data/Project_Cow/Sample_SQ_0009/SQ_0009_CGATGT_L003_R1_002.fastq.gz",
137
+ "test/data/Project_Cow/Sample_SQ_0009/SQ_0009_CGATGT_L003_R2_001.fastq.gz",
138
+ "test/data/Project_Cow/Sample_SQ_0009/SQ_0009_CGATGT_L003_R2_002.fastq.gz",
139
+ "test/data/Project_Dog/Sample_SQ_0004/SQ_0004_CGATGT_L003_R1_001.fastq.gz",
140
+ "test/data/Project_Dog/Sample_SQ_0004/SQ_0004_CGATGT_L003_R1_002.fastq.gz",
141
+ "test/data/Project_Dog/Sample_SQ_0004/SQ_0004_CGATGT_L003_R2_001.fastq.gz",
142
+ "test/data/Project_Dog/Sample_SQ_0004/SQ_0004_CGATGT_L003_R2_002.fastq.gz",
143
+ "test/data/Project_Dog/Sample_SQ_0005/SQ_0005_CGATGT_L003_R1_001.fastq.gz",
144
+ "test/data/Project_Dog/Sample_SQ_0005/SQ_0005_CGATGT_L003_R1_002.fastq.gz",
145
+ "test/data/Project_Dog/Sample_SQ_0005/SQ_0005_CGATGT_L003_R2_001.fastq.gz",
146
+ "test/data/Project_Dog/Sample_SQ_0005/SQ_0005_CGATGT_L003_R2_002.fastq.gz",
147
+ "test/data/Project_Dog/Sample_SQ_0006/SQ_0006_CGATGT_L003_R1_001.fastq.gz",
148
+ "test/data/Project_Dog/Sample_SQ_0006/SQ_0006_CGATGT_L003_R1_002.fastq.gz",
149
+ "test/data/Project_Dog/Sample_SQ_0006/SQ_0006_CGATGT_L003_R2_001.fastq.gz",
150
+ "test/data/Project_Dog/Sample_SQ_0006/SQ_0006_CGATGT_L003_R2_002.fastq.gz",
151
+ "test/data/Project_Human/Sample_SQ_0001/SQ_0001_CGATGT_L003_R1_001.fastq.gz",
152
+ "test/data/Project_Human/Sample_SQ_0001/SQ_0001_CGATGT_L003_R1_002.fastq.gz",
153
+ "test/data/Project_Human/Sample_SQ_0001/SQ_0001_CGATGT_L003_R2_001.fastq.gz",
154
+ "test/data/Project_Human/Sample_SQ_0001/SQ_0001_CGATGT_L003_R2_002.fastq.gz",
155
+ "test/data/Project_Human/Sample_SQ_0002/SQ_0002_CGATGT_L003_R1_001.fastq.gz",
156
+ "test/data/Project_Human/Sample_SQ_0002/SQ_0002_CGATGT_L003_R1_002.fastq.gz",
157
+ "test/data/Project_Human/Sample_SQ_0002/SQ_0002_CGATGT_L003_R2_001.fastq.gz",
158
+ "test/data/Project_Human/Sample_SQ_0002/SQ_0002_CGATGT_L003_R2_002.fastq.gz",
159
+ "test/data/Project_Human/Sample_SQ_0003/SQ_0003_CGATGT_L003_R1_001.fastq.gz",
160
+ "test/data/Project_Human/Sample_SQ_0003/SQ_0003_CGATGT_L003_R1_002.fastq.gz",
161
+ "test/data/Project_Human/Sample_SQ_0003/SQ_0003_CGATGT_L003_R2_001.fastq.gz",
162
+ "test/data/Project_Human/Sample_SQ_0003/SQ_0003_CGATGT_L003_R2_002.fastq.gz",
163
+ "test/data/RemoteDir/Project_Human/Sample_SQ_0001/SQ_0001_CGATGT_L010_R1_001.fastq.gz",
164
+ "test/data/RemoteDir/Project_Human/Sample_SQ_0001/SQ_0001_CGATGT_L010_R1_002.fastq.gz",
165
+ "test/data/RemoteDir/Project_Human/Sample_SQ_0001/SQ_0001_CGATGT_L010_R2_001.fastq.gz",
166
+ "test/data/RemoteDir/Project_Human/Sample_SQ_0001/SQ_0001_CGATGT_L010_R2_002.fastq.gz",
167
+ "test/data/RemoteDir/Project_Human/Sample_SQ_0002/SQ_0002_CGATGT_L003_R1_001.fastq.gz",
168
+ "test/data/RemoteDir/Project_Human/Sample_SQ_0002/SQ_0002_CGATGT_L003_R1_002.fastq.gz",
169
+ "test/data/RemoteDir/Project_Human/Sample_SQ_0002/SQ_0002_CGATGT_L003_R2_001.fastq.gz",
170
+ "test/data/RemoteDir/Project_Human/Sample_SQ_0002/SQ_0002_CGATGT_L003_R2_002.fastq.gz",
171
+ "test/data/RemoteDir/Project_Human/Sample_SQ_0003/SQ_0003_CGATGT_L003_R1_001.fastq.gz",
172
+ "test/data/RemoteDir/Project_Human/Sample_SQ_0003/SQ_0003_CGATGT_L003_R1_002.fastq.gz",
173
+ "test/data/RemoteDir/Project_Human/Sample_SQ_0003/SQ_0003_CGATGT_L003_R2_001.fastq.gz",
174
+ "test/data/RemoteDir/Project_Human/Sample_SQ_0003/SQ_0003_CGATGT_L003_R2_002.fastq.gz",
119
175
  "test/data/blastoutput.xml",
120
176
  "test/data/gene-GO.json",
121
177
  "test/data/goa_uniprot",
@@ -17,4 +17,9 @@ Feature: Indexing Cufflinks GTF features
17
17
  Scenario: extract multiple features from a GTF
18
18
  Given the file "transcripts.gtf" from quantification analysis
19
19
  And a range from "2" to "11"
20
- Then I want to obtain a bed file for each position in the range
20
+ Then I want to obtain a bed file for each position in the range
21
+
22
+
23
+ Scenario: extract a feature from a GTF using transcript name
24
+ Given the file "transcripts.gtf" from quantification analysis
25
+ Then I want to extract feature named "ENST00000408219"
@@ -0,0 +1,17 @@
1
+ Feature: build a project hierarchy from an hand made analysis
2
+ In order to organize and automate many processes for an NGS dataset
3
+ analyzed by hand from other bioinformaticians
4
+ As a bioinformatician
5
+ I want to have a querable data structure which represents most of the pre cumputed data
6
+
7
+ Scenario: Explore and Build data structure
8
+ Given A path with many projects at the first level
9
+ And others at second level (inside others directories)
10
+ When I build the projects structure
11
+ Then I sould get all the projects organized in the same structure.
12
+
13
+
14
+ # Scenario: Merge multiple data structure to find common datasets
15
+ # Given
16
+ # When
17
+ # Then
@@ -4,7 +4,14 @@ Given /^a range from "(.*?)" to "(.*?)"$/ do |start, stop|
4
4
  end
5
5
 
6
6
  Then /^I want to build its index$/ do
7
- @gtf.build_idx.should == {:transcripts=>[801, 604, 425, 425, 857, 610, 610, 607, 607, 616, 622, 809, 1003, 821, 429, 412, 1023, 610, 607, 1003, 616, 607, 404, 404, 2973, 3219, 3420, 3219, 813, 1213, 1213, 1231, 613, 408, 408, 814, 1014, 626, 814, 408, 436, 610, 662, 1016, 816, 613, 2227, 616, 616, 616, 420, 643, 7588, 813, 814, 1014, 814, 614, 614, 3018, 2013, 814, 613, 865, 433, 433, 433, 643, 619, 3454, 3454, 2043, 1237, 628, 1225, 1023, 1243, 1023, 1225, 410, 410, 1662, 1238, 1004, 1023, 2642, 2237, 2439, 2033, 2439, 2236, 834, 2280, 2642, 821, 1832, 2236, 2439, 2236, 2439, 2033, 1629, 1225, 1427, 1225, 1225, 821, 1427, 412, 412, 611, 412, 412, 412, 414, 1678, 1629, 1630, 822, 620, 1225, 1267, 821, 426, 821, 626, 1831, 821, 629, 412, 418, 1831, 1629, 1670, 1427, 1694, 1427, 1831, 1630, 1831, 620, 1629, 1629, 1225, 1023, 1427, 1427, 1427, 822, 1225, 1225, 822, 620, 818, 817, 617, 4063, 3860, 3657, 3300, 1023], :exons=>[]}
7
+ @gtf.build_idx.should == {:transcripts=>[801, 604, 425, 425, 857, 610, 610, 607, 607, 616, 622, 809, 1003, 821, 429, 412, 1023, 610, 607, 1003, 616, 607, 404,
8
+ 404, 2973, 3219, 3420, 3219, 813, 1213, 1213, 1231, 613, 408, 408, 814, 1014, 626, 814, 408, 436, 610, 662, 1016, 816, 613, 2227, 616, 616, 616, 420, 643, 7588,
9
+ 813, 814, 1014, 814, 614, 614, 3018, 2013, 814, 613, 865, 433, 433, 433, 643, 619, 3454, 3454, 2043, 1237, 628, 1225, 1023, 1243, 1023, 1225, 410, 410, 1662,
10
+ 1238, 1004, 1023, 2642, 2237, 2439, 2033, 2439, 2236, 834, 2280, 2642, 821, 1832, 2236, 2439, 2236, 2439, 2033, 1629, 1225, 1427, 1225, 1225, 821, 1427, 412,
11
+ 412, 611, 412, 412, 412, 414, 1678, 1629, 1630, 822, 620, 1225, 1267, 821, 426, 821, 626, 1831, 821, 629, 412, 418, 1831, 1629, 1670, 1427, 1694, 1427, 1831,
12
+ 1630, 1831, 620, 1629, 1629, 1225, 1023, 1427, 1427, 1427, 822, 1225, 1225, 822, 620, 818, 817, 617, 4063, 3860, 3657, 3300, 1023],
13
+ :names=>{"ENST00000417324"=>1, "ENST00000461467"=>2, "ENST00000492842"=>3, "ENST00000335137"=>4, "ENST00000417636"=>5, "ENST00000423796"=>6, "ENST00000450696"=>7, "TCONS_00000124"=>8, "TCONS_00000125"=>9, "TCONS_00000796"=>10, "TCONS_00001368"=>11, "ENST00000446136"=>12, "TCONS_00000444"=>13, "ENST00000427857"=>14, "ENST00000408219"=>15, "ENST00000415481"=>16, "ENST00000417705"=>17, "ENST00000432961"=>18, "TCONS_00002277"=>19, "TCONS_00000073"=>20, "TCONS_00000032"=>21, "TCONS_00000134"=>22, "CUFF.8.1"=>23, "CUFF.9.1"=>24, "CUFF.10.1"=>25, "ENST00000379407"=>26, "ENST00000379410"=>27, "ENST00000379409"=>28, "ENST00000480267"=>29, "ENST00000491024"=>30, "ENST00000433179"=>31, "ENST00000341290"=>32, "ENST00000479361"=>33, "CUFF.12.1"=>34, "CUFF.13.1"=>35, "ENST00000428771"=>36, "ENST00000304952"=>37, "ENST00000481869"=>38, "ENST00000484667"=>39, "CUFF.14.5"=>40, "ENST00000423619"=>41, "TCONS_00000447"=>42, "ENST00000379389"=>43, "ENST00000427998"=>44, "ENST00000394517"=>45, "ENST00000442292"=>46, "ENST00000412397"=>47, "ENST00000456409"=>48, "ENST00000433695"=>49, "ENST00000451054"=>50, "CUFF.16.8"=>51, "ENST00000453464"=>52, "ENST00000379370"=>53, "ENST00000477585"=>54, "ENST00000469403"=>55, "ENST00000479707"=>56, "ENST00000466223"=>57, "ENST00000478677"=>58, "ENST00000492947"=>59, "ENST00000379364"=>60, "ENST00000419249"=>61, "ENST00000461111"=>62, "ENST00000418300"=>63, "ENST00000416774"=>64, "ENST00000384997"=>65, "ENST00000384875"=>66, "ENST00000362106"=>67, "ENST00000379317"=>68, "ENST00000506177"=>69, "ENST00000379290"=>70, "ENST00000379289"=>71, "ENST00000379288"=>72, "ENST00000460998"=>73, "ENST00000514695"=>74, "ENST00000486379"=>75, "ENST00000328596"=>76, "ENST00000379268"=>77, "ENST00000486728"=>78, "ENST00000379265"=>79, "CUFF.19.5"=>80, "CUFF.19.6"=>81, "ENST00000379236"=>82, "ENST00000497869"=>83, "CUFF.20.3"=>84, "ENST00000453580"=>85, "ENST00000379339"=>86, "ENST00000294576"=>87, "ENST00000448924"=>88, "ENST00000465822"=>89, "ENST00000379325"=>90, "ENST00000421241"=>91, "ENST00000487177"=>92, "ENST00000477196"=>93, "ENST00000467751"=>94, "ENST00000464905"=>95, "ENST00000379320"=>96, "ENST00000379319"=>97, "ENST00000434641"=>98, "ENST00000482816"=>99, "ENST00000457999"=>100, "ENST00000437760"=>101, "ENST00000462097"=>102, "ENST00000473600"=>103, "ENST00000475119"=>104, "ENST00000442117"=>105, "ENST00000427787"=>106, "ENST00000472741"=>107, "ENST00000480643"=>108, "CUFF.27.1"=>109, "CUFF.28.1"=>110, "CUFF.30.1"=>111, "CUFF.31.1"=>112, "CUFF.32.1"=>113, "CUFF.33.1"=>114, "CUFF.21.1"=>115, "ENST00000360001"=>116, "ENST00000465727"=>117, "ENST00000263741"=>118, "ENST00000494748"=>119, "ENST00000478938"=>120, "ENST00000403997"=>121, "ENST00000545427"=>122, "ENST00000459994"=>123, "ENST00000379198"=>124, "ENST00000462849"=>125, "ENST00000478606"=>126, "ENST00000330388"=>127, "ENST00000468365"=>128, "ENST00000486627"=>129, "CUFF.25.1"=>130, "ENST00000565563"=>131, "ENST00000450390"=>132, "ENST00000347370"=>133, "ENST00000349431"=>134, "ENST00000339385"=>135, "ENST00000348298"=>136, "ENST00000400929"=>137, "ENST00000464036"=>138, "ENST00000360466"=>139, "ENST00000400930"=>140, "ENST00000467339"=>141, "ENST00000473215"=>142, "ENST00000435198"=>143, "ENST00000509720"=>144, "ENST00000491779"=>145, "ENST00000466752"=>146, "ENST00000503294"=>147, "ENST00000477894"=>148, "ENST00000471154"=>149, "ENST00000422076"=>150, "ENST00000502382"=>151, "ENST00000461142"=>152, "ENST00000488418"=>153, "TCONS_00000799"=>154, "TCONS_00000135"=>155, "TCONS_00000136"=>156, "ENST00000379110"=>157, "ENST00000379116"=>158, "ENST00000379101"=>159, "ENST00000338555"=>160, "ENST00000470022"=>161},
14
+ :exons=>[]}
8
15
  end
9
16
 
10
17
  Then /^save it as "(.*?)"$/ do |gtf_index_filename|
@@ -50,4 +57,14 @@ Then /^I want to obtain a bed file for each position in the range$/ do
50
57
  "CUFF.2-ENST00000423796.bed\n", "CUFF.2-ENST00000450696.bed\n",
51
58
  "CUFF.2-TCONS_00000124.bed\n", "CUFF.2-TCONS_00000125.bed\n",
52
59
  "CUFF.3-TCONS_00000796.bed\n", "XLOC_000669-TCONS_00001368.bed\n"]
53
- end
60
+ end
61
+
62
+
63
+ Then /^I want to extract feature named "(.*?)"$/ do |transcript_name|
64
+ enst00000408219 = <<DATA
65
+ 1 Cufflinks transcript 808847 808957 1 - . gene_id "ENSG00000221146"; transcript_id "ENST00000408219"; FPKM "0.0000000000"; frac "0.000000"; conf_lo "0.000000"; conf_hi "0.000000"; cov "0.000000"; full_read_support "no";
66
+ 1 Cufflinks exon 808847 808957 1 - . gene_id "ENSG00000221146"; transcript_id "ENST00000408219"; exon_number "1"; FPKM "0.0000000000"; frac "0.000000"; conf_lo "0.000000"; conf_hi "0.000000"; cov "0.000000";
67
+ DATA
68
+
69
+ @gtf[transcript_name].to_s.should == enst00000408219
70
+ end
@@ -1,4 +1,4 @@
1
- # TODO:
1
+ # TODO:
2
2
  # * when select or first each trasncript create and index. Be aware to return/crete the right index for the requested filtering.
3
3
  # issue: filtering is applied but the index is created and saved for the original source file.
4
4
 
@@ -139,10 +139,10 @@ module Bio
139
139
  fn = filename || "#{@fh.path}.gtf"
140
140
  File.open(fn, 'w') do |f|
141
141
  each_transcript do |transcript|
142
- f.write transcript
142
+ f.write transcript
143
143
  end
144
144
  end
145
- # dump_idx("#{fn}.idx") #BUGGY this saves the old index in case the user called a select
145
+ # dump_idx("#{fn}.idx") #BUGGY this saves the old index in case the user called a select
146
146
  end #save
147
147
 
148
148
  def count
@@ -156,10 +156,16 @@ module Bio
156
156
  def build_idx
157
157
  idx = Hash.new {|h,k| h[k]=[]}
158
158
  idx[:transcripts]
159
+ idx[:names]={}
159
160
  idx[:exons]
160
161
  each_transcript do |t, f_lno|
161
162
  # t_idx=(f_lno-t.exons.size-2)
162
163
  idx[:transcripts] << t.byte_length
164
+ idx[:names][t.attributes[:transcript_id]] = idx[:transcripts].length
165
+ if t.attributes[:transcript_id]=="ENST00000408219"
166
+ puts t.attributes[:transcript_id]
167
+ puts idx[:transcripts].length
168
+ end
163
169
  # eidx_b = t_idx +1
164
170
  # t.exons.each_index do |ei|
165
171
  # idx[t_idx] << eidx_b + ei
@@ -197,27 +203,35 @@ module Bio
197
203
  end
198
204
 
199
205
  # start from 1
206
+ # n can be a number or a name for a transcript
200
207
  def read_transcript(n=1)
201
208
  load_idx unless defined?(@idx)
202
- if n==1
203
- source.seek(0)
204
- source.read(@idx[:transcripts][0])
205
- elsif n==2
206
- source.seek(@idx[:transcripts][0])
207
- source.read(@idx[:transcripts][n-1])
209
+ if n.to_s.is_numeric?
210
+ n = n.to_i
211
+ if n==1
212
+ source.seek(0)
213
+ source.read(@idx[:transcripts][0])
214
+ elsif n==2
215
+ source.seek(@idx[:transcripts][0])
216
+ source.read(@idx[:transcripts][n-1])
217
+ else
218
+ source.seek(@idx[:transcripts][0..n-2].sum)
219
+ source.read(@idx[:transcripts][n-1])
220
+ end
208
221
  else
209
- source.seek(@idx[:transcripts][0..n-2].sum)
210
- source.read(@idx[:transcripts][n-1])
222
+ read_transcript(@idx[:names][n])
211
223
  end
212
224
  end
213
225
 
214
226
  def get_transcript(n=1)
215
- r=read_transcript(n)
216
- s=r.split("\n").first
217
- e=r.split("\n")[1..-1]
218
- x=Bio::Ngs::Cufflinks::Transcript.new
219
- x.tra= s+"\n"
220
- x.exons=e.map{|ei| ei+"\n"}
227
+ x=nil
228
+ if r=read_transcript(n)
229
+ s=r.split("\n").first
230
+ e=r.split("\n")[1..-1]
231
+ x=Bio::Ngs::Cufflinks::Transcript.new
232
+ x.tra= s+"\n"
233
+ x.exons=e.map{|ei| ei+"\n"}
234
+ end
221
235
  x
222
236
  end
223
237
 
@@ -229,6 +243,18 @@ module Bio
229
243
  end #Ngs
230
244
  end #Bio
231
245
 
246
+
247
+ class String
248
+ # from http://railsforum.com/viewtopic.php?id=19081
249
+ def is_numeric?
250
+ Float(self)
251
+ true
252
+ rescue
253
+ false
254
+ end
255
+ end
256
+
257
+
232
258
  # class Array
233
259
  # def to_ranges
234
260
  # sorted=self.sort
@@ -40,8 +40,8 @@ module Bio
40
40
  projects = Projects.new("Illumina", path)
41
41
 
42
42
  Dir.chdir(path) do
43
- Dir.glob(["Project_*","Undetermined_indices"]).each do |project_dir|
44
- project = Project.new(project_dir.sub(/Project_/,""),project_dir)
43
+ Dir.glob(["**/Project_*","**/Undetermined_indices"]).each do |project_dir|
44
+ project = Project.new(project_dir.basename.sub(/Project_/,""),project_dir)
45
45
  projects.add(project)
46
46
  Dir.chdir(project_dir) do
47
47
  Dir.glob("Sample*").each do |sample_dir|
@@ -64,14 +64,14 @@ class Cufflinks < Thor
64
64
  end
65
65
  end
66
66
 
67
- desc "tra_at_idx GTF IDX", "Extract transcripts from Cufflinks' GTF at specific location, print filename in output"
67
+ desc "tra_at_idx GTF IDX", "Extract transcript(s) from Cufflinks' GTF at a specific location or givin the transcript name, print filename in output"
68
68
  method_option :split, :type => :boolean, :aliases => '-j', :desc => "split each transcript in a file"
69
69
  method_option :extract, :type => :numeric, :aliases => '-e', :desc => "extract the n-th transcript"
70
70
  method_option :ucsc, :type => :boolean, :aliases => '-u', :desc => "use chr as UCSC a prefix for chromosomes, otherwise uses ENSEMBL notation without chr"
71
71
  method_option :exons, :type => :boolean, :aliases => '-x', :desc => "proved in output only exons without transcripts", :default => true
72
72
  def tra_at_idx(gtf, idx)
73
73
  data = Bio::Ngs::Cufflinks::Gtf.new gtf
74
- t=data[idx.to_i]
74
+ t=data[idx]
75
75
  if options[:ucsc]
76
76
  t.set_ucsc_notation
77
77
  end
@@ -0,0 +1,58 @@
1
+ base_dir: /mnt/iscsi/ngs
2
+ projects:
3
+ Naive:
4
+ Samples:
5
+ SQ_0080:
6
+ location: &id001
7
+ type: file
8
+ path: 110908_H125_0119_AB01W2ABXX_Data/Project_Naive_T0/Sample_SQ_0080/filtered/TopHat_Alignment_PE_genomeV66/accepted_hits.bam
9
+ format: bam
10
+
11
+
12
+ Th1: 2
13
+ Th17: 3
14
+ Th2: 4
15
+ Treg: 5
16
+ Tfh: 6
17
+
18
+
19
+
20
+ - 110908_H125_0119_AB01W2ABXX_Data/Project_Naive_T0/Sample_SQ_0080/filtered/TopHat_Alignment_PE_genomeV66/accepted_hits.bam
21
+ - 110908_H125_0119_AB01W2ABXX_Data/Project_Naive_T0/Sample_SQ_0081/filtered/TopHat_Alignment_PE_genomeV66/accepted_hits.bam
22
+ - 110908_H125_0119_AB01W2ABXX_Data/Project_Naive_T0/Sample_SQ_0082/filtered/TopHat_Alignment_PE_genomeV66/accepted_hits.bam
23
+ - 110714_H125_0102_Ab048uabxx_Data/Project_Naive/TopHat_Alignment_PE_genomeV66/accepted_hits.bam
24
+ Th1:
25
+ BAMS:
26
+ - 111013_H125_0121_AC076LACXX_Data/Project_Th1/Sample_SQ_0007/filtered/TopHat_Alignment_PE_genomeV66/accepted_hits.bam
27
+ - 111013_H125_0121_AC076LACXX_Data/Project_Th1/Sample_SQ_0046/filtered/TopHat_Alignment_PE_genomeV66/accepted_hits.bam
28
+ - 111013_H125_0121_AC076LACXX_Data/Project_Th1/Sample_SQ_0047/filtered/TopHat_Alignment_PE_genomeV66/accepted_hits.bam
29
+ - 111013_H125_0121_AC076LACXX_Data/Project_Th1/Sample_SQ_0048/filtered/TopHat_Alignment_PE_genomeV66/accepted_hits.bam
30
+ - 111013_H125_0121_AC076LACXX_Data/Project_Th1/Sample_SQ_0050/filtered/TopHat_Alignment_PE_genomeV66/accepted_hits.bam
31
+ Th17:
32
+ BAMS:
33
+ - 111013_H125_0121_AC076LACXX_Data/Project_Th17/Sample_SQ_0011/filtered/TopHat_Alignment_PE_genomeV66_insert200/accepted_hits.bam
34
+ - 111013_H125_0121_AC076LACXX_Data/Project_Th17/Sample_SQ_0051/filtered/TopHat_Alignment_PE_genomeV66_insert200/accepted_hits.bam
35
+ - 111013_H125_0121_AC076LACXX_Data/Project_Th17/Sample_SQ_0052/filtered/TopHat_Alignment_PE_genomeV66_insert200/accepted_hits.bam
36
+ - 111013_H125_0121_AC076LACXX_Data/Project_Th17/Sample_SQ_0053/filtered/TopHat_Alignment_PE_genomeV66_insert200/accepted_hits.bam
37
+ - 111013_H125_0121_AC076LACXX_Data/Project_Th17/Sample_SQ_0055/filtered/TopHat_Alignment_PE_genomeV66_insert200/accepted_hits.bam
38
+ Th2:
39
+ BAMS:
40
+ - 111013_H125_0121_AC076LACXX_Data/Project_Th2/Sample_SQ_0014/filtered/TopHat_Alignment_PE_genomeV66/accepted_hits.bam
41
+ - 111013_H125_0121_AC076LACXX_Data/Project_Th2/Sample_SQ_0015/filtered/TopHat_Alignment_PE_genomeV66/accepted_hits.bam
42
+ - 111013_H125_0121_AC076LACXX_Data/Project_Th2/Sample_SQ_0056/filtered/TopHat_Alignment_PE_genomeV66/accepted_hits.bam
43
+ - 111013_H125_0121_AC076LACXX_Data/Project_Th2/Sample_SQ_0058/filtered/TopHat_Alignment_PE_genomeV66/accepted_hits.bam
44
+ - 111013_H125_0121_AC076LACXX_Data/Project_Th2/Sample_SQ_0059/filtered/TopHat_Alignment_PE_genomeV66/accepted_hits.bam
45
+ Treg:
46
+ BAMS:
47
+ - 111013_H125_0121_AC076LACXX_Data/Project_Treg/Sample_SQ_0021/filtered/TopHat_Alignment_PE_genomeV66/accepted_hits.bam
48
+ - 111013_H125_0121_AC076LACXX_Data/Project_Treg/Sample_SQ_0022/filtered/TopHat_Alignment_PE_genomeV66/accepted_hits.bam
49
+ - 111013_H125_0121_AC076LACXX_Data/Project_Treg/Sample_SQ_0023/filtered/TopHat_Alignment_PE_genomeV66/accepted_hits.bam
50
+ - 111013_H125_0121_AC076LACXX_Data/Project_Treg/Sample_SQ_0065/filtered/TopHat_Alignment_PE_genomeV66/accepted_hits.bam
51
+ - 111013_H125_0121_AC076LACXX_Data/Project_Treg/Sample_SQ_0067/filtered/TopHat_Alignment_PE_genomeV66/accepted_hits.bam
52
+ Tfh
53
+ BAMS:
54
+ - 111013_H125_0121_AC076LACXX_Data/Project_Tfh_Adenoide/Sample_SQ_0074/filtered/TopHat_Alignment_PE_genomeV66/accepted_hits.bam
55
+ - 111013_H125_0121_AC076LACXX_Data/Project_Tfh_Adenoide/Sample_SQ_0075/filtered/TopHat_Alignment_PE_genomeV66/accepted_hits.bam
56
+ - 111013_H125_0121_AC076LACXX_Data/Project_Tfh_Adenoide/Sample_SQ_0076/filtered/TopHat_Alignment_PE_genomeV66/accepted_hits.bam
57
+ - 111013_H125_0121_AC076LACXX_Data/Project_Tfh_Adenoide/Sample_SQ_0078/filtered/TopHat_Alignment_PE_genomeV66/accepted_hits.bam
58
+ - 111013_H125_0121_AC076LACXX_Data/Project_Tfh_Adenoide/Sample_SQ_0079/filtered/TopHat_Alignment_PE_genomeV66/accepted_hits.bam
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bio-ngs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.7.alpha.02
4
+ version: 0.4.7.alpha.03
5
5
  prerelease: 6
6
6
  platform: ruby
7
7
  authors:
@@ -10,11 +10,11 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-05-25 00:00:00.000000000 Z
13
+ date: 2012-05-29 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: bio
17
- requirement: &2152729020 !ruby/object:Gem::Requirement
17
+ requirement: &2162360040 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ! '>='
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: 1.4.2
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *2152729020
25
+ version_requirements: *2162360040
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: bio-samtools
28
- requirement: &2152728500 !ruby/object:Gem::Requirement
28
+ requirement: &2162358700 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ! '>='
@@ -33,10 +33,10 @@ dependencies:
33
33
  version: 0.3.2
34
34
  type: :runtime
35
35
  prerelease: false
36
- version_requirements: *2152728500
36
+ version_requirements: *2162358700
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: thor
39
- requirement: &2152727960 !ruby/object:Gem::Requirement
39
+ requirement: &2162357760 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - =
@@ -44,10 +44,10 @@ dependencies:
44
44
  version: 0.14.6
45
45
  type: :runtime
46
46
  prerelease: false
47
- version_requirements: *2152727960
47
+ version_requirements: *2162357760
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: rubyvis
50
- requirement: &2152727380 !ruby/object:Gem::Requirement
50
+ requirement: &2162372800 !ruby/object:Gem::Requirement
51
51
  none: false
52
52
  requirements:
53
53
  - - ! '>='
@@ -55,10 +55,10 @@ dependencies:
55
55
  version: 0.5.0
56
56
  type: :runtime
57
57
  prerelease: false
58
- version_requirements: *2152727380
58
+ version_requirements: *2162372800
59
59
  - !ruby/object:Gem::Dependency
60
60
  name: daemons
61
- requirement: &2152726800 !ruby/object:Gem::Requirement
61
+ requirement: &2162369680 !ruby/object:Gem::Requirement
62
62
  none: false
63
63
  requirements:
64
64
  - - ! '>='
@@ -66,10 +66,10 @@ dependencies:
66
66
  version: 1.1.0
67
67
  type: :runtime
68
68
  prerelease: false
69
- version_requirements: *2152726800
69
+ version_requirements: *2162369680
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: ruby-ensembl-api
72
- requirement: &2152726260 !ruby/object:Gem::Requirement
72
+ requirement: &2162367460 !ruby/object:Gem::Requirement
73
73
  none: false
74
74
  requirements:
75
75
  - - ! '>='
@@ -77,10 +77,10 @@ dependencies:
77
77
  version: 1.0.1
78
78
  type: :runtime
79
79
  prerelease: false
80
- version_requirements: *2152726260
80
+ version_requirements: *2162367460
81
81
  - !ruby/object:Gem::Dependency
82
82
  name: activerecord
83
- requirement: &2152725720 !ruby/object:Gem::Requirement
83
+ requirement: &2162365420 !ruby/object:Gem::Requirement
84
84
  none: false
85
85
  requirements:
86
86
  - - ! '>='
@@ -88,10 +88,10 @@ dependencies:
88
88
  version: 3.0.5
89
89
  type: :runtime
90
90
  prerelease: false
91
- version_requirements: *2152725720
91
+ version_requirements: *2162365420
92
92
  - !ruby/object:Gem::Dependency
93
93
  name: sqlite3
94
- requirement: &2152725140 !ruby/object:Gem::Requirement
94
+ requirement: &2162380460 !ruby/object:Gem::Requirement
95
95
  none: false
96
96
  requirements:
97
97
  - - ! '>='
@@ -99,10 +99,10 @@ dependencies:
99
99
  version: 1.3.3
100
100
  type: :runtime
101
101
  prerelease: false
102
- version_requirements: *2152725140
102
+ version_requirements: *2162380460
103
103
  - !ruby/object:Gem::Dependency
104
104
  name: bio-blastxmlparser
105
- requirement: &2152740860 !ruby/object:Gem::Requirement
105
+ requirement: &2162378780 !ruby/object:Gem::Requirement
106
106
  none: false
107
107
  requirements:
108
108
  - - ! '>='
@@ -110,10 +110,10 @@ dependencies:
110
110
  version: '0'
111
111
  type: :runtime
112
112
  prerelease: false
113
- version_requirements: *2152740860
113
+ version_requirements: *2162378780
114
114
  - !ruby/object:Gem::Dependency
115
115
  name: progressbar
116
- requirement: &2152740240 !ruby/object:Gem::Requirement
116
+ requirement: &2162377060 !ruby/object:Gem::Requirement
117
117
  none: false
118
118
  requirements:
119
119
  - - ! '>='
@@ -121,10 +121,10 @@ dependencies:
121
121
  version: 0.9.0
122
122
  type: :runtime
123
123
  prerelease: false
124
- version_requirements: *2152740240
124
+ version_requirements: *2162377060
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: rake
127
- requirement: &2152739680 !ruby/object:Gem::Requirement
127
+ requirement: &2162375820 !ruby/object:Gem::Requirement
128
128
  none: false
129
129
  requirements:
130
130
  - - =
@@ -132,10 +132,10 @@ dependencies:
132
132
  version: 0.9.2.2
133
133
  type: :runtime
134
134
  prerelease: false
135
- version_requirements: *2152739680
135
+ version_requirements: *2162375820
136
136
  - !ruby/object:Gem::Dependency
137
137
  name: json
138
- requirement: &2152739120 !ruby/object:Gem::Requirement
138
+ requirement: &2162374160 !ruby/object:Gem::Requirement
139
139
  none: false
140
140
  requirements:
141
141
  - - ! '>='
@@ -143,10 +143,10 @@ dependencies:
143
143
  version: '0'
144
144
  type: :runtime
145
145
  prerelease: false
146
- version_requirements: *2152739120
146
+ version_requirements: *2162374160
147
147
  - !ruby/object:Gem::Dependency
148
148
  name: parallel
149
- requirement: &2152738540 !ruby/object:Gem::Requirement
149
+ requirement: &2162389180 !ruby/object:Gem::Requirement
150
150
  none: false
151
151
  requirements:
152
152
  - - ! '>='
@@ -154,10 +154,10 @@ dependencies:
154
154
  version: '0'
155
155
  type: :runtime
156
156
  prerelease: false
157
- version_requirements: *2152738540
157
+ version_requirements: *2162389180
158
158
  - !ruby/object:Gem::Dependency
159
159
  name: shoulda
160
- requirement: &2152738020 !ruby/object:Gem::Requirement
160
+ requirement: &2162387820 !ruby/object:Gem::Requirement
161
161
  none: false
162
162
  requirements:
163
163
  - - ! '>='
@@ -165,10 +165,10 @@ dependencies:
165
165
  version: '0'
166
166
  type: :development
167
167
  prerelease: false
168
- version_requirements: *2152738020
168
+ version_requirements: *2162387820
169
169
  - !ruby/object:Gem::Dependency
170
170
  name: bundler
171
- requirement: &2152737500 !ruby/object:Gem::Requirement
171
+ requirement: &2162385760 !ruby/object:Gem::Requirement
172
172
  none: false
173
173
  requirements:
174
174
  - - ~>
@@ -176,10 +176,10 @@ dependencies:
176
176
  version: 1.1.0
177
177
  type: :development
178
178
  prerelease: false
179
- version_requirements: *2152737500
179
+ version_requirements: *2162385760
180
180
  - !ruby/object:Gem::Dependency
181
181
  name: jeweler
182
- requirement: &2152736960 !ruby/object:Gem::Requirement
182
+ requirement: &2162384960 !ruby/object:Gem::Requirement
183
183
  none: false
184
184
  requirements:
185
185
  - - ~>
@@ -187,10 +187,10 @@ dependencies:
187
187
  version: 1.8.3
188
188
  type: :development
189
189
  prerelease: false
190
- version_requirements: *2152736960
190
+ version_requirements: *2162384960
191
191
  - !ruby/object:Gem::Dependency
192
192
  name: rcov
193
- requirement: &2152736400 !ruby/object:Gem::Requirement
193
+ requirement: &2162383380 !ruby/object:Gem::Requirement
194
194
  none: false
195
195
  requirements:
196
196
  - - ~>
@@ -198,10 +198,10 @@ dependencies:
198
198
  version: 0.9.11
199
199
  type: :development
200
200
  prerelease: false
201
- version_requirements: *2152736400
201
+ version_requirements: *2162383380
202
202
  - !ruby/object:Gem::Dependency
203
203
  name: bio
204
- requirement: &2152735800 !ruby/object:Gem::Requirement
204
+ requirement: &2162381840 !ruby/object:Gem::Requirement
205
205
  none: false
206
206
  requirements:
207
207
  - - ! '>='
@@ -209,10 +209,10 @@ dependencies:
209
209
  version: 1.4.2
210
210
  type: :development
211
211
  prerelease: false
212
- version_requirements: *2152735800
212
+ version_requirements: *2162381840
213
213
  - !ruby/object:Gem::Dependency
214
214
  name: thor
215
- requirement: &2152735180 !ruby/object:Gem::Requirement
215
+ requirement: &2162397200 !ruby/object:Gem::Requirement
216
216
  none: false
217
217
  requirements:
218
218
  - - =
@@ -220,10 +220,10 @@ dependencies:
220
220
  version: 0.14.6
221
221
  type: :development
222
222
  prerelease: false
223
- version_requirements: *2152735180
223
+ version_requirements: *2162397200
224
224
  - !ruby/object:Gem::Dependency
225
225
  name: ffi
226
- requirement: &2152734620 !ruby/object:Gem::Requirement
226
+ requirement: &2162394020 !ruby/object:Gem::Requirement
227
227
  none: false
228
228
  requirements:
229
229
  - - ! '>='
@@ -231,10 +231,10 @@ dependencies:
231
231
  version: 1.0.6
232
232
  type: :development
233
233
  prerelease: false
234
- version_requirements: *2152734620
234
+ version_requirements: *2162394020
235
235
  - !ruby/object:Gem::Dependency
236
236
  name: rubyvis
237
- requirement: &2152734120 !ruby/object:Gem::Requirement
237
+ requirement: &2162392380 !ruby/object:Gem::Requirement
238
238
  none: false
239
239
  requirements:
240
240
  - - ! '>='
@@ -242,10 +242,10 @@ dependencies:
242
242
  version: 0.5.0
243
243
  type: :development
244
244
  prerelease: false
245
- version_requirements: *2152734120
245
+ version_requirements: *2162392380
246
246
  - !ruby/object:Gem::Dependency
247
247
  name: rspec
248
- requirement: &2152733600 !ruby/object:Gem::Requirement
248
+ requirement: &2162391700 !ruby/object:Gem::Requirement
249
249
  none: false
250
250
  requirements:
251
251
  - - ! '>='
@@ -253,10 +253,10 @@ dependencies:
253
253
  version: 2.5.0
254
254
  type: :development
255
255
  prerelease: false
256
- version_requirements: *2152733600
256
+ version_requirements: *2162391700
257
257
  - !ruby/object:Gem::Dependency
258
258
  name: daemons
259
- requirement: &2152775800 !ruby/object:Gem::Requirement
259
+ requirement: &2162390160 !ruby/object:Gem::Requirement
260
260
  none: false
261
261
  requirements:
262
262
  - - ! '>='
@@ -264,10 +264,10 @@ dependencies:
264
264
  version: 1.1.0
265
265
  type: :development
266
266
  prerelease: false
267
- version_requirements: *2152775800
267
+ version_requirements: *2162390160
268
268
  - !ruby/object:Gem::Dependency
269
269
  name: bio-samtools
270
- requirement: &2152775280 !ruby/object:Gem::Requirement
270
+ requirement: &2162405360 !ruby/object:Gem::Requirement
271
271
  none: false
272
272
  requirements:
273
273
  - - ! '>='
@@ -275,10 +275,10 @@ dependencies:
275
275
  version: 0.3.2
276
276
  type: :development
277
277
  prerelease: false
278
- version_requirements: *2152775280
278
+ version_requirements: *2162405360
279
279
  - !ruby/object:Gem::Dependency
280
280
  name: ruby-ensembl-api
281
- requirement: &2152774760 !ruby/object:Gem::Requirement
281
+ requirement: &2162404740 !ruby/object:Gem::Requirement
282
282
  none: false
283
283
  requirements:
284
284
  - - ! '>='
@@ -286,10 +286,10 @@ dependencies:
286
286
  version: 1.0.1
287
287
  type: :development
288
288
  prerelease: false
289
- version_requirements: *2152774760
289
+ version_requirements: *2162404740
290
290
  - !ruby/object:Gem::Dependency
291
291
  name: activerecord
292
- requirement: &2152774240 !ruby/object:Gem::Requirement
292
+ requirement: &2162404160 !ruby/object:Gem::Requirement
293
293
  none: false
294
294
  requirements:
295
295
  - - ! '>='
@@ -297,10 +297,10 @@ dependencies:
297
297
  version: 3.0.5
298
298
  type: :development
299
299
  prerelease: false
300
- version_requirements: *2152774240
300
+ version_requirements: *2162404160
301
301
  - !ruby/object:Gem::Dependency
302
302
  name: sqlite3
303
- requirement: &2152773740 !ruby/object:Gem::Requirement
303
+ requirement: &2162403240 !ruby/object:Gem::Requirement
304
304
  none: false
305
305
  requirements:
306
306
  - - ! '>='
@@ -308,10 +308,10 @@ dependencies:
308
308
  version: 1.3.3
309
309
  type: :development
310
310
  prerelease: false
311
- version_requirements: *2152773740
311
+ version_requirements: *2162403240
312
312
  - !ruby/object:Gem::Dependency
313
313
  name: bio-blastxmlparser
314
- requirement: &2152773180 !ruby/object:Gem::Requirement
314
+ requirement: &2162401800 !ruby/object:Gem::Requirement
315
315
  none: false
316
316
  requirements:
317
317
  - - ! '>='
@@ -319,10 +319,10 @@ dependencies:
319
319
  version: '0'
320
320
  type: :development
321
321
  prerelease: false
322
- version_requirements: *2152773180
322
+ version_requirements: *2162401800
323
323
  - !ruby/object:Gem::Dependency
324
324
  name: progressbar
325
- requirement: &2152772640 !ruby/object:Gem::Requirement
325
+ requirement: &2162399920 !ruby/object:Gem::Requirement
326
326
  none: false
327
327
  requirements:
328
328
  - - ! '>='
@@ -330,10 +330,10 @@ dependencies:
330
330
  version: 0.9.0
331
331
  type: :development
332
332
  prerelease: false
333
- version_requirements: *2152772640
333
+ version_requirements: *2162399920
334
334
  - !ruby/object:Gem::Dependency
335
335
  name: json
336
- requirement: &2152772040 !ruby/object:Gem::Requirement
336
+ requirement: &2162413940 !ruby/object:Gem::Requirement
337
337
  none: false
338
338
  requirements:
339
339
  - - ! '>='
@@ -341,10 +341,10 @@ dependencies:
341
341
  version: '0'
342
342
  type: :development
343
343
  prerelease: false
344
- version_requirements: *2152772040
344
+ version_requirements: *2162413940
345
345
  - !ruby/object:Gem::Dependency
346
346
  name: rake
347
- requirement: &2152770800 !ruby/object:Gem::Requirement
347
+ requirement: &2162412560 !ruby/object:Gem::Requirement
348
348
  none: false
349
349
  requirements:
350
350
  - - =
@@ -352,10 +352,10 @@ dependencies:
352
352
  version: 0.9.2.2
353
353
  type: :development
354
354
  prerelease: false
355
- version_requirements: *2152770800
355
+ version_requirements: *2162412560
356
356
  - !ruby/object:Gem::Dependency
357
357
  name: parallel
358
- requirement: &2152769720 !ruby/object:Gem::Requirement
358
+ requirement: &2162411560 !ruby/object:Gem::Requirement
359
359
  none: false
360
360
  requirements:
361
361
  - - ! '>='
@@ -363,7 +363,7 @@ dependencies:
363
363
  version: '0'
364
364
  type: :development
365
365
  prerelease: false
366
- version_requirements: *2152769720
366
+ version_requirements: *2162411560
367
367
  description: bio-ngs provides a framework for handling NGS data with BioRuby
368
368
  email: francesco.strozzi@gmail.com
369
369
  executables:
@@ -386,6 +386,7 @@ files:
386
386
  - ext/mkrf_conf.rb
387
387
  - features/cufflinks_gtf_parser.feature
388
388
  - features/cufflinks_gtf_parser_indexing.feature
389
+ - features/illumina_project_rebuild.feature
389
390
  - features/step_definitions/cufflinks_gtf.rb
390
391
  - features/step_definitions/cufflinks_gtf_parser_indexing.rb
391
392
  - features/support/env.rb
@@ -470,7 +471,62 @@ files:
470
471
  - spec/spec_helper.rb
471
472
  - spec/tophat_spec.rb
472
473
  - spec/utils_spec.rb
474
+ - test/conf/projects.yaml
473
475
  - test/conf/test_db.yml
476
+ - test/data/Project_Cow/Sample_SQ_0007/SQ_0007_CGATGT_L003_R1_001.fastq.gz
477
+ - test/data/Project_Cow/Sample_SQ_0007/SQ_0007_CGATGT_L003_R1_002.fastq.gz
478
+ - test/data/Project_Cow/Sample_SQ_0007/SQ_0007_CGATGT_L003_R2_001.fastq.gz
479
+ - test/data/Project_Cow/Sample_SQ_0007/SQ_0007_CGATGT_L003_R2_002.fastq.gz
480
+ - test/data/Project_Cow/Sample_SQ_0007/filtered/SQ_0007_CGATGT_L003_R1_001.fastq.gz
481
+ - test/data/Project_Cow/Sample_SQ_0007/filtered/SQ_0007_CGATGT_L003_R1_002.fastq.gz
482
+ - test/data/Project_Cow/Sample_SQ_0007/filtered/SQ_0007_CGATGT_L003_R2_001.fastq.gz
483
+ - test/data/Project_Cow/Sample_SQ_0007/filtered/SQ_0007_CGATGT_L003_R2_002.fastq.gz
484
+ - test/data/Project_Cow/Sample_SQ_0007/trimmed/SQ_0007_CGATGT_L003_R1_TRIMMED.fastq.gz
485
+ - test/data/Project_Cow/Sample_SQ_0007/trimmed/SQ_0007_CGATGT_L003_R2_TRIMMED.fastq.gz
486
+ - test/data/Project_Cow/Sample_SQ_0008/SQ_0008_CGATGT_L003_R1_001.fastq.gz
487
+ - test/data/Project_Cow/Sample_SQ_0008/SQ_0008_CGATGT_L003_R1_002.fastq.gz
488
+ - test/data/Project_Cow/Sample_SQ_0008/SQ_0008_CGATGT_L003_R2_001.fastq.gz
489
+ - test/data/Project_Cow/Sample_SQ_0008/SQ_0008_CGATGT_L003_R2_002.fastq.gz
490
+ - test/data/Project_Cow/Sample_SQ_0009/SQ_0009_CGATGT_L003_R1_001.fastq.gz
491
+ - test/data/Project_Cow/Sample_SQ_0009/SQ_0009_CGATGT_L003_R1_002.fastq.gz
492
+ - test/data/Project_Cow/Sample_SQ_0009/SQ_0009_CGATGT_L003_R2_001.fastq.gz
493
+ - test/data/Project_Cow/Sample_SQ_0009/SQ_0009_CGATGT_L003_R2_002.fastq.gz
494
+ - test/data/Project_Dog/Sample_SQ_0004/SQ_0004_CGATGT_L003_R1_001.fastq.gz
495
+ - test/data/Project_Dog/Sample_SQ_0004/SQ_0004_CGATGT_L003_R1_002.fastq.gz
496
+ - test/data/Project_Dog/Sample_SQ_0004/SQ_0004_CGATGT_L003_R2_001.fastq.gz
497
+ - test/data/Project_Dog/Sample_SQ_0004/SQ_0004_CGATGT_L003_R2_002.fastq.gz
498
+ - test/data/Project_Dog/Sample_SQ_0005/SQ_0005_CGATGT_L003_R1_001.fastq.gz
499
+ - test/data/Project_Dog/Sample_SQ_0005/SQ_0005_CGATGT_L003_R1_002.fastq.gz
500
+ - test/data/Project_Dog/Sample_SQ_0005/SQ_0005_CGATGT_L003_R2_001.fastq.gz
501
+ - test/data/Project_Dog/Sample_SQ_0005/SQ_0005_CGATGT_L003_R2_002.fastq.gz
502
+ - test/data/Project_Dog/Sample_SQ_0006/SQ_0006_CGATGT_L003_R1_001.fastq.gz
503
+ - test/data/Project_Dog/Sample_SQ_0006/SQ_0006_CGATGT_L003_R1_002.fastq.gz
504
+ - test/data/Project_Dog/Sample_SQ_0006/SQ_0006_CGATGT_L003_R2_001.fastq.gz
505
+ - test/data/Project_Dog/Sample_SQ_0006/SQ_0006_CGATGT_L003_R2_002.fastq.gz
506
+ - test/data/Project_Human/Sample_SQ_0001/SQ_0001_CGATGT_L003_R1_001.fastq.gz
507
+ - test/data/Project_Human/Sample_SQ_0001/SQ_0001_CGATGT_L003_R1_002.fastq.gz
508
+ - test/data/Project_Human/Sample_SQ_0001/SQ_0001_CGATGT_L003_R2_001.fastq.gz
509
+ - test/data/Project_Human/Sample_SQ_0001/SQ_0001_CGATGT_L003_R2_002.fastq.gz
510
+ - test/data/Project_Human/Sample_SQ_0002/SQ_0002_CGATGT_L003_R1_001.fastq.gz
511
+ - test/data/Project_Human/Sample_SQ_0002/SQ_0002_CGATGT_L003_R1_002.fastq.gz
512
+ - test/data/Project_Human/Sample_SQ_0002/SQ_0002_CGATGT_L003_R2_001.fastq.gz
513
+ - test/data/Project_Human/Sample_SQ_0002/SQ_0002_CGATGT_L003_R2_002.fastq.gz
514
+ - test/data/Project_Human/Sample_SQ_0003/SQ_0003_CGATGT_L003_R1_001.fastq.gz
515
+ - test/data/Project_Human/Sample_SQ_0003/SQ_0003_CGATGT_L003_R1_002.fastq.gz
516
+ - test/data/Project_Human/Sample_SQ_0003/SQ_0003_CGATGT_L003_R2_001.fastq.gz
517
+ - test/data/Project_Human/Sample_SQ_0003/SQ_0003_CGATGT_L003_R2_002.fastq.gz
518
+ - test/data/RemoteDir/Project_Human/Sample_SQ_0001/SQ_0001_CGATGT_L010_R1_001.fastq.gz
519
+ - test/data/RemoteDir/Project_Human/Sample_SQ_0001/SQ_0001_CGATGT_L010_R1_002.fastq.gz
520
+ - test/data/RemoteDir/Project_Human/Sample_SQ_0001/SQ_0001_CGATGT_L010_R2_001.fastq.gz
521
+ - test/data/RemoteDir/Project_Human/Sample_SQ_0001/SQ_0001_CGATGT_L010_R2_002.fastq.gz
522
+ - test/data/RemoteDir/Project_Human/Sample_SQ_0002/SQ_0002_CGATGT_L003_R1_001.fastq.gz
523
+ - test/data/RemoteDir/Project_Human/Sample_SQ_0002/SQ_0002_CGATGT_L003_R1_002.fastq.gz
524
+ - test/data/RemoteDir/Project_Human/Sample_SQ_0002/SQ_0002_CGATGT_L003_R2_001.fastq.gz
525
+ - test/data/RemoteDir/Project_Human/Sample_SQ_0002/SQ_0002_CGATGT_L003_R2_002.fastq.gz
526
+ - test/data/RemoteDir/Project_Human/Sample_SQ_0003/SQ_0003_CGATGT_L003_R1_001.fastq.gz
527
+ - test/data/RemoteDir/Project_Human/Sample_SQ_0003/SQ_0003_CGATGT_L003_R1_002.fastq.gz
528
+ - test/data/RemoteDir/Project_Human/Sample_SQ_0003/SQ_0003_CGATGT_L003_R2_001.fastq.gz
529
+ - test/data/RemoteDir/Project_Human/Sample_SQ_0003/SQ_0003_CGATGT_L003_R2_002.fastq.gz
474
530
  - test/data/blastoutput.xml
475
531
  - test/data/gene-GO.json
476
532
  - test/data/goa_uniprot
@@ -497,7 +553,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
497
553
  version: '0'
498
554
  segments:
499
555
  - 0
500
- hash: -2512494530563499590
556
+ hash: -803718584135061941
501
557
  required_rubygems_version: !ruby/object:Gem::Requirement
502
558
  none: false
503
559
  requirements: