full_lengther_next 0.6.2 → 0.9.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (59) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +9 -0
  3. data/.rspec +2 -0
  4. data/.travis.yml +5 -0
  5. data/CODE_OF_CONDUCT.md +49 -0
  6. data/Gemfile +4 -0
  7. data/LICENSE.txt +21 -0
  8. data/{README.rdoc → README.md} +0 -0
  9. data/Rakefile +6 -37
  10. data/bin/console +14 -0
  11. data/bin/download_fln_dbs.rb +2 -7
  12. data/bin/full_lengther_next +85 -6
  13. data/bin/make_user_db.rb +13 -5
  14. data/bin/setup +8 -0
  15. data/full_lengther_next.gemspec +42 -0
  16. data/lib/full_lengther_next.rb +2 -10
  17. data/lib/full_lengther_next/artifacts.rb +74 -0
  18. data/lib/full_lengther_next/{classes/blast_functions.rb → blast_functions.rb} +0 -0
  19. data/lib/full_lengther_next/{classes/cdhit.rb → cdhit.rb} +0 -0
  20. data/lib/full_lengther_next/{classes/chimeric_seqs.rb → chimeric_seqs.rb} +0 -0
  21. data/lib/full_lengther_next/{classes/common_functions.rb → common_functions.rb} +0 -0
  22. data/lib/full_lengther_next/{classes/exonerate_result.rb → exonerate_result.rb} +0 -0
  23. data/lib/full_lengther_next/{classes/fl_analysis.rb → fl_analysis.rb} +0 -0
  24. data/lib/full_lengther_next/{classes/fl_string_utils.rb → fl_string_utils.rb} +0 -0
  25. data/lib/full_lengther_next/fln_stats.rb +613 -0
  26. data/lib/full_lengther_next/go_methods.rb +42 -0
  27. data/lib/full_lengther_next/{classes/handle_db.rb → handle_db.rb} +0 -0
  28. data/lib/full_lengther_next/mapping.rb +296 -0
  29. data/lib/full_lengther_next/{classes/my_worker.rb → my_worker.rb} +71 -9
  30. data/lib/full_lengther_next/{classes/my_worker_EST.rb → my_worker_EST.rb} +0 -0
  31. data/lib/full_lengther_next/{classes/my_worker_manager_EST.rb → my_worker_manager_EST.rb} +0 -0
  32. data/lib/full_lengther_next/{classes/my_worker_manager_fln.rb → my_worker_manager_fln.rb} +181 -16
  33. data/lib/full_lengther_next/{classes/nc_rna.rb → nc_rna.rb} +0 -0
  34. data/lib/full_lengther_next/{classes/orf.rb → orf.rb} +0 -0
  35. data/lib/full_lengther_next/{classes/reptrans.rb → reptrans.rb} +9 -5
  36. data/lib/full_lengther_next/{classes/sequence.rb → sequence.rb} +26 -1
  37. data/lib/full_lengther_next/{classes/test_code.rb → test_code.rb} +1 -1
  38. data/lib/full_lengther_next/{classes/types.rb → types.rb} +3 -2
  39. data/lib/full_lengther_next/{classes/une_los_hit.rb → une_los_hit.rb} +0 -0
  40. data/lib/full_lengther_next/version.rb +3 -0
  41. data/lib/full_lengther_next/{classes/warnings.rb → warnings.rb} +0 -0
  42. data/report_templates/general_summary.erb +140 -0
  43. data/report_templates/mapping_summary.erb +98 -0
  44. data/report_templates/reptrans_summary.erb +32 -0
  45. metadata +112 -134
  46. data/.gemtest +0 -0
  47. data/History.txt +0 -32
  48. data/Manifest.txt +0 -44
  49. data/PostInstall.txt +0 -6
  50. data/bin/plot_fln.rb +0 -270
  51. data/bin/plot_taxonomy.rb +0 -70
  52. data/lib/expresscanvas.zip +0 -0
  53. data/lib/full_lengther_next/classes/artifacts.rb +0 -66
  54. data/lib/full_lengther_next/classes/fln_stats.rb +0 -641
  55. data/script/console +0 -10
  56. data/script/destroy +0 -14
  57. data/script/generate +0 -14
  58. data/test/test_full_lengther_next.rb +0 -11
  59. data/test/test_helper.rb +0 -3
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 66126c7a055d70f0e4c09649c600d4f6079c8f94
4
+ data.tar.gz: 00013e537413b9f3e9500698108974707c683803
5
+ SHA512:
6
+ metadata.gz: 779038539317419bc72a04805b251ef09987f50f5e66bcdf5ae230b2dee0d4baf832a5769d6b0112d0618c8f7fc3318dc9af66fa0896a33b1834d3434306bb79
7
+ data.tar.gz: 7d8f6769012d728b79f0065664a7b869e037cfb41521bfcc221646b78fc5833d7cc5797e00ee77c7f090115d054fb3f5b77dd750f23eac283f01338c9af4b1e2
@@ -0,0 +1,9 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --format documentation
2
+ --color
@@ -0,0 +1,5 @@
1
+ sudo: false
2
+ language: ruby
3
+ rvm:
4
+ - 2.2.2
5
+ before_install: gem install bundler -v 1.12.5
@@ -0,0 +1,49 @@
1
+ # Contributor Code of Conduct
2
+
3
+ As contributors and maintainers of this project, and in the interest of
4
+ fostering an open and welcoming community, we pledge to respect all people who
5
+ contribute through reporting issues, posting feature requests, updating
6
+ documentation, submitting pull requests or patches, and other activities.
7
+
8
+ We are committed to making participation in this project a harassment-free
9
+ experience for everyone, regardless of level of experience, gender, gender
10
+ identity and expression, sexual orientation, disability, personal appearance,
11
+ body size, race, ethnicity, age, religion, or nationality.
12
+
13
+ Examples of unacceptable behavior by participants include:
14
+
15
+ * The use of sexualized language or imagery
16
+ * Personal attacks
17
+ * Trolling or insulting/derogatory comments
18
+ * Public or private harassment
19
+ * Publishing other's private information, such as physical or electronic
20
+ addresses, without explicit permission
21
+ * Other unethical or unprofessional conduct
22
+
23
+ Project maintainers have the right and responsibility to remove, edit, or
24
+ reject comments, commits, code, wiki edits, issues, and other contributions
25
+ that are not aligned to this Code of Conduct, or to ban temporarily or
26
+ permanently any contributor for other behaviors that they deem inappropriate,
27
+ threatening, offensive, or harmful.
28
+
29
+ By adopting this Code of Conduct, project maintainers commit themselves to
30
+ fairly and consistently applying these principles to every aspect of managing
31
+ this project. Project maintainers who do not follow or enforce the Code of
32
+ Conduct may be permanently removed from the project team.
33
+
34
+ This code of conduct applies both within project spaces and in public spaces
35
+ when an individual is representing the project or its community.
36
+
37
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be
38
+ reported by contacting a project maintainer at seoanezonjic@hotmail.com. All
39
+ complaints will be reviewed and investigated and will result in a response that
40
+ is deemed necessary and appropriate to the circumstances. Maintainers are
41
+ obligated to maintain confidentiality with regard to the reporter of an
42
+ incident.
43
+
44
+ This Code of Conduct is adapted from the [Contributor Covenant][homepage],
45
+ version 1.3.0, available at
46
+ [http://contributor-covenant.org/version/1/3/0/][version]
47
+
48
+ [homepage]: http://contributor-covenant.org
49
+ [version]: http://contributor-covenant.org/version/1/3/0/
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in full_lengther_next.gemspec
4
+ gemspec
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2017 seoanezonjic
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
File without changes
data/Rakefile CHANGED
@@ -1,37 +1,6 @@
1
- require 'rubygems'
2
- gem 'hoe', '>= 2.1.0'
3
- require 'hoe'
4
- require 'fileutils'
5
- require './lib/full_lengther_next'
6
-
7
- Hoe.plugin :newgem
8
- # Hoe.plugin :website
9
- # Hoe.plugin :cucumberfeatures
10
-
11
- # Generate all the Rake tasks
12
- # Run 'rake -T' to see list of generated tasks (from gem root directory)
13
- $hoe = Hoe.spec 'full_lengther_next' do
14
- self.developer 'Pedro Seoane & Noe Fernandez & Dario Guerrero ', 'seoanezonjic@hotmail.com & noeisneo@gmail.com & dariogf@gmail.com'
15
- self.post_install_message = 'PostInstall.txt' # TODO remove if post-install message not required
16
- self.rubyforge_name = self.name # TODO this is default value
17
- # self.extra_deps = [['activesupport','>= 2.0.2']]
18
- self.extra_deps = []
19
- # self.extra_deps << ['narray','>=0']
20
- # self.extra_deps << ['gnuplot','>=0']
21
- # self.extra_deps << ['term-ansicolor','>=1.0.5']
22
- self.extra_deps << ['xml-simple','>=1.0.12']
23
- self.extra_deps << ['scbi_blast','>=0.0.32']
24
- self.extra_deps << ['scbi_mapreduce','>=0.0.29']
25
- self.extra_deps << ['scbi_zcat']
26
- self.extra_deps << ['bio-cd-hit-report', '>= 0.1.0 ']
27
- self.extra_deps << ['bio', '>= 1.4.3']
28
- self.extra_deps << ['scbi_plot','>=0.0.6']
29
-
30
- end
31
-
32
- require 'newgem/tasks'
33
- Dir['tasks/**/*.rake'].each { |t| load t }
34
-
35
- # TODO - want other tests/tasks run by default? Add them to the list
36
- # remove_task :default
37
- # task :default => [:spec, :features]
1
+ require "bundler/gem_tasks"
2
+ #require "rspec/core/rake_task"
3
+
4
+ #RSpec::Core::RakeTask.new(:spec)
5
+
6
+ #task :default => :spec
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "full_lengther_next"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start
@@ -1,11 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- # 15-2-2011 Noe Fernandez-Pozo
4
- # Script to download Full-LengtherNext databases.
5
- # Once in UniProtKB/Swiss-Prot, a protein entry is removed from UniProtKB/TrEMBL.
6
-
7
3
  ROOT_PATH=File.dirname(__FILE__)
8
- $: << File.expand_path(File.join(ROOT_PATH, "../lib/full_lengther_next/classes/"))
4
+ $: << File.expand_path(File.join(ROOT_PATH, "../lib/full_lengther_next"))
9
5
 
10
6
  require 'bio'
11
7
  require 'net/ftp'
@@ -28,7 +24,7 @@ def download_ncrna(formatted_db_path, no_download)
28
24
  puts "Downloading ncRNA database"
29
25
  open(ncrna_zip, 'wb') do |my_file|
30
26
  my_file.print open('ftp://ftp.ebi.ac.uk/pub/databases/RNAcentral/current_release/sequences/rnacentral_active.fasta.gz').read
31
- #my_file.print open('http://www.ncrna.org/frnadb/files/ncrna.zip').read
27
+ ####my_file.print open('http://www.ncrna.org/frnadb/files/ncrna.zip').read
32
28
  end
33
29
  puts "\nncRNA database downloaded"
34
30
  end
@@ -381,7 +377,6 @@ download_ncrna(formatted_db_path, options[:no_download]) if !options[:no_ncrna]
381
377
  if !options[:no_download]
382
378
  if !options[:no_uniprot]
383
379
  conecta_uniprot(options[:uniprot_div], formatted_db_path)
384
- #system('gunzip '+formatted_db_path+'*.gz')
385
380
  end
386
381
  end
387
382
 
@@ -3,10 +3,53 @@
3
3
  # 12-2-2011 Noe Fernandez Pozo.
4
4
  # Full-LengtherNEXT predicts if your sequences are complete, showing you the nucleotide sequences and the translated protein
5
5
  ROOT_PATH=File.dirname(__FILE__)
6
- $: << File.expand_path(File.join(ROOT_PATH, "../lib/full_lengther_next/classes/"))
6
+ $: << File.expand_path(File.join(ROOT_PATH, "../lib/full_lengther_next"))
7
7
 
8
8
  require 'optparse'
9
+ require 'fileutils'
9
10
  require 'socket'
11
+ require 'report_html'
12
+ require 'scbi_fasta'
13
+
14
+ ###############################################################################################
15
+ ## METHODS
16
+ ###############################################################################################
17
+ def read_fasta(input_fasta)
18
+ fasta = []
19
+ fasta_file = FastaQualFile.new(input_fasta,'').each do |name, seq, qual|
20
+ if seq.downcase.count('n') == seq.length
21
+ STDERR.puts "Sequence #{name} is full of Ns. Skipped"
22
+ else
23
+ fasta << [name, seq]
24
+ end
25
+ end
26
+ return fasta
27
+ end
28
+
29
+ def split_fasta(input_fasta, output_folder, n_files, chunk_size)
30
+ fasta = read_fasta(input_fasta)
31
+ n_seqs = fasta.length
32
+ fasta.sort!{|s1, s2| s1.last.length <=> s2.last.length }
33
+ file_names = []
34
+ files = []
35
+ n_files.times do |i|
36
+ file_name = "ref#{i}.fasta"
37
+ file_names << file_name
38
+ (chunk_size -1 ).times do
39
+ file_names << :data_void # This fills file_names with void elements to sync a file name for worker when it does the chunk size loop
40
+ end
41
+ files << File.open(File.join(output_folder, file_name), 'w')
42
+ end
43
+ count = 0
44
+ while !fasta.empty?
45
+ files[count].puts '>' + fasta.shift.join("\n")
46
+ files[count].puts '>' + fasta.pop.join("\n") if !fasta.empty?
47
+ count += 1
48
+ count = 0 if count == n_files
49
+ end
50
+ files.map{|file| file.close }
51
+ return file_names, n_seqs
52
+ end
10
53
 
11
54
  ###############################################################################################
12
55
  # PARSE OPTIONS
@@ -122,7 +165,7 @@ optparse = OptionParser.new do |opts|
122
165
  options[:user_db] = nil
123
166
  opts.on( '-u', '--user_db UserDB', 'User blast+ database' ) do |db|
124
167
  options[:user_db] = db
125
- if !File.exists?(File.expand_path(options[:user_db])+'.psq')
168
+ if !File.exists?(File.expand_path(db+'.psq'))
126
169
  puts "user database: #{options[:user_db]} was not found"
127
170
  exit
128
171
  end
@@ -158,6 +201,16 @@ optparse = OptionParser.new do |opts|
158
201
  options[:hdd] = TRUE
159
202
  end
160
203
 
204
+
205
+ options[:files2map] = []
206
+ opts.on('-M', '--files2map STRING', 'Fastq files to map against analysed transcriptome This must be a comma separated string with the full paths to the files' ) do |files2map|
207
+ options[:files2map] = files2map.split(';').map{|map_files| map_files.split(',')}
208
+ end
209
+
210
+ options[:remove_unmapped] = TRUE
211
+ opts.on('-R', '--remove_unmapped', 'When fastq files are provided, all sequences without at least a read pair are removed. When this option is enabled this filtering is disabled' ) do
212
+ options[:remove_unmapped] = FALSE
213
+ end
161
214
 
162
215
  # Set a banner, displayed at the top of the help screen.
163
216
  opts.banner = "\nUsage: full_lengther_next -f input.fasta -g [fungi|human|invertebrates|mammals|plants|rodents|vertebrates] [options]\n\n"
@@ -188,8 +241,14 @@ else
188
241
  FULL_LENGTHER_NEXT_INIT=File.join(ROOT_PATH,'init_env')
189
242
  end
190
243
 
191
- if !File.exists?('temp')
192
- Dir.mkdir('temp')
244
+ if ENV['FLN_TEMP']
245
+ options[:temp] = File.join(ENV['FLN_TEMP'], 'temp')
246
+ else
247
+ options[:temp] = File.join(Dir.pwd, 'temp')
248
+ end
249
+
250
+ if !File.exists?(options[:temp])
251
+ Dir.mkdir(options[:temp])
193
252
  end
194
253
 
195
254
  if ENV['BLASTDB'] && File.exists?(ENV['BLASTDB'])
@@ -226,11 +285,28 @@ require 'scbi_mapreduce'
226
285
  require 'my_worker_manager_fln' #First server
227
286
  require 'reptrans'
228
287
 
288
+ require 'go_methods'
289
+ require "benchmark"
290
+
291
+ #Benchmark.bm do |x|
292
+ # x.report('main'){
293
+ options[:ref_files] = []
294
+ if !options[:files2map].empty? # Mapping
295
+ #$VERBOSE = true
296
+ temp = File.join(options[:temp], 'map')
297
+ options[:temp_map_folder] = temp
298
+ FileUtils.mkdir(temp) if !Dir.exists?(temp)
299
+ map_workers = options[:workers]
300
+ map_workers = options[:workers].length if options[:workers].class == Array
301
+ options[:ref_files], options[:n_refs] = split_fasta(options[:fasta], temp, map_workers-1, options[:chunk_size])
302
+
303
+ end
304
+
229
305
  $LOG = Logger.new(STDOUT)
230
306
  $LOG.datetime_format = "%Y-%m-%d %H:%M:%S"
231
307
 
232
308
  main_path = File.dirname(ROOT_PATH)
233
- custom_worker_file = File.join(main_path, 'lib','full_lengther_next','classes','my_worker.rb')
309
+ custom_worker_file = File.join(main_path, 'lib','full_lengther_next','my_worker.rb')
234
310
 
235
311
  $LOG.info 'Starting server'
236
312
  # initialize work manager (open files, etc)
@@ -243,11 +319,14 @@ $LOG.info 'Starting server'
243
319
  # launch server
244
320
  server.start_server
245
321
  $LOG.info 'Closing server'
322
+ seqs_annotation_prot, seqs_some_coding,seqs_unknown = MyWorkerManagerFln.get_annotations()
323
+
246
324
 
247
325
  if !options[:reptrans].nil?
248
- seqs_annotation_prot, seqs_some_coding ,seqs_unknown= MyWorkerManagerFln.get_annotations()
249
326
  reptrans(seqs_annotation_prot, seqs_some_coding ,seqs_unknown, options)
250
327
  end
251
328
  puts "\nGracias por utilizar Full-LengtherNEXT"
252
329
 
253
330
 
331
+ #} #Bench
332
+ #end #Bench
@@ -4,7 +4,7 @@
4
4
  # Script to create your own Full-LengtherNext User database.
5
5
 
6
6
  ROOT_PATH=File.dirname(__FILE__)
7
- $: << File.expand_path(File.join(ROOT_PATH, "../lib/full_lengther_next/classes/"))
7
+ $: << File.expand_path(File.join(ROOT_PATH, "../lib/full_lengther_next"))
8
8
 
9
9
  require 'cdhit'
10
10
  require 'handle_db'
@@ -48,7 +48,7 @@ optparse = OptionParser.new do |opts|
48
48
  opts.on( '-u', '--file String', 'Uniprot DBs to taxon search. Posible options: human, fungi, invertebrates, mammals, plants, rodents, vertebrates.') do |uniprot_div|
49
49
  if !divs.include?(uniprot_div)
50
50
  puts 'This uniprot division not exists:', uniprot_div
51
- process.exit
51
+ Process.exit
52
52
  end
53
53
  options[:uniprot_div] = uniprot_div
54
54
  end
@@ -58,6 +58,11 @@ optparse = OptionParser.new do |opts|
58
58
  options[:taxon] = taxon
59
59
  end
60
60
 
61
+ options[:name] = nil
62
+ opts.on( '-n', '--name STRING', 'Database name in case the creation of a local DB') do |name|
63
+ options[:name] = name
64
+ end
65
+
61
66
  options[:local] = FALSE
62
67
  opts.on( '-l', '--local', 'Only parse downloaded files without download them again') do
63
68
  options[:local] = TRUE
@@ -95,7 +100,7 @@ if options[:user_fasta].nil?
95
100
  puts 'Taxon or uniprot division was not specified'
96
101
  Process.exit(-1)
97
102
  end
98
- elsif !File.exists?(options[:user_fasta]) || options[:taxon].nil?
103
+ elsif !File.exists?(options[:user_fasta]) && options[:taxon].nil?
99
104
  puts 'User fasta file not exists or taxon was not specified'
100
105
  Process.exit(-1)
101
106
  end
@@ -106,15 +111,18 @@ else # otherwise use ROOTPATH + DB
106
111
  formatted_db_path = File.expand_path(File.join(ROOT_PATH, "blast_dbs"))
107
112
  end
108
113
 
114
+ name_db = nil
109
115
  if !options[:local]
110
116
  user_db_folder = File.join(formatted_db_path, options[:taxon])
117
+ name_db = options[:taxon]
111
118
  else
112
- user_db_folder = File.join(Dir.pwd, options[:taxon])
119
+ user_db_folder = File.join(Dir.pwd, options[:name])
120
+ name_db = options[:name]
113
121
  end
114
122
 
115
123
  user_db_folder.gsub!(' ', '_')
116
124
  Dir.mkdir(user_db_folder) if !File.exists?(user_db_folder)
117
- output_file_path = File.join(user_db_folder, options[:taxon]+".fasta")
125
+ output_file_path = File.join(user_db_folder, name_db)
118
126
  output_file_path.gsub!(' ', '_')
119
127
 
120
128
  seqs = ''
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,42 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'full_lengther_next/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "full_lengther_next"
8
+ spec.version = FullLengtherNext::VERSION
9
+ spec.authors = ['Pedro Seoane', 'Noe Fernandez', 'Dario Guerrero']
10
+ spec.email = ['seoanezonjic@hotmail.com', 'noeisneo@gmail.com', 'dariogf@gmail.com']
11
+
12
+ spec.summary = %q{Tool to annotate transcriptomes and it is able to stablish the integrity of each transcript. Also, FLN can detect novel genes on a target organism. }
13
+ spec.description = %q{FULL-LENGTHERNEXT is a tool adapted to NGS technologies, able to work in parallel and in a distributed way to minimise computing time. It is able to classify unigenes to full-length, 5’-end, 3’-end and internal, suggesting which unknown genes are coding or not. It will be also shown that FULL-LENGTHERNEXT fixes frame shifts, one of the main mistake found in wrong entries of full-length sequences databases, and it is a fast tool to compare different transcriptome assemblies.}
14
+ spec.homepage = "https://github.com/seoanezonjic"
15
+ spec.license = "MIT"
16
+
17
+ # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
18
+ # to allow pushing to a single host or delete this section to allow pushing to any host.
19
+ # if spec.respond_to?(:metadata)
20
+ # spec.metadata['allowed_push_host'] = "TODO: Set to 'http://mygemserver.com'"
21
+ # else
22
+ # raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
23
+ # end
24
+
25
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
26
+ spec.bindir = "bin"
27
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
28
+ spec.require_paths = ["lib"]
29
+
30
+ spec.add_runtime_dependency 'xml-simple'
31
+ spec.add_runtime_dependency 'scbi_fasta'
32
+ spec.add_runtime_dependency 'scbi_blast'
33
+ spec.add_runtime_dependency 'scbi_mapreduce'
34
+ spec.add_runtime_dependency 'scbi_zcat'
35
+ spec.add_runtime_dependency 'bio-cd-hit-report'
36
+ spec.add_runtime_dependency 'report_html'
37
+
38
+
39
+ spec.add_development_dependency "bundler", "~> 1.12"
40
+ spec.add_development_dependency "rake", "~> 10.0"
41
+ spec.add_development_dependency "rspec", "~> 3.0"
42
+ end