viral_seq 1.1.1 → 1.1.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7a283f3a09cc5d9807e7622cd1ddf27197919955e85d6472b34fc14b66749c03
4
- data.tar.gz: 4f90c5a9c7ea0ec148ba7d45ee88dc441f79da67a97654734194a773499ebb8e
3
+ metadata.gz: '093a8d1d70e251b0748b7035c829eb512991437ffa78fd67387318412e54acf5'
4
+ data.tar.gz: 1b9d6f6b2cb2ffa8d9cc588b8df096e7ac3840c694bfb241fcf970b738899328
5
5
  SHA512:
6
- metadata.gz: 385a94eb93c3d8d9116c16a0d8af56ba714ba6191a454076acf881a036de80d1d598f3fcd1a4de841745ca08a1ad3e8bc028a30db9f96c19f3b217ef4583d652
7
- data.tar.gz: 714d035b6f65863746cafb120c9cf6eccb8261f3eac69985bad96e5275351eec71aa3b744ee9b462e2dc3e0e199c2d4112386f6a2d7eef89b5b7824c1ab769be
6
+ metadata.gz: 3853dbfa3f6604d907ec3d77b8c86ec8d885fedcc854c40ca6822ec72e8b2cfe9413bc188aa722a14e4e4f6c9503eca1b36d7f8e0963a5a997c9f0ca8b54fc86
7
+ data.tar.gz: e5b056cddcf7b87cc30e52c878879cea82d865ea7fc867535767918c30c699d58d6f426518aad02be49916c49f38d9603b0ab27ca6f3625f7a5102ae86863023
data/Gemfile.lock CHANGED
@@ -1,16 +1,27 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- viral_seq (1.0.13)
5
- colorize (~> 0.1)
6
- muscle_bio (~> 0.4)
4
+ viral_seq (1.1.1)
5
+ colorize (>= 0.1)
6
+ combine_pdf (>= 1.0.0)
7
+ muscle_bio (>= 0.4)
8
+ prawn (>= 2.3.0)
9
+ prawn-table (>= 0.2.0)
7
10
 
8
11
  GEM
9
12
  remote: https://rubygems.org/
10
13
  specs:
11
14
  colorize (0.8.1)
15
+ combine_pdf (1.0.21)
16
+ ruby-rc4 (>= 0.1.5)
12
17
  diff-lcs (1.3)
13
18
  muscle_bio (0.4.0)
19
+ pdf-core (0.9.0)
20
+ prawn (2.4.0)
21
+ pdf-core (~> 0.9.0)
22
+ ttfunk (~> 1.7)
23
+ prawn-table (0.2.2)
24
+ prawn (>= 1.3.0, < 3.0.0)
14
25
  rake (13.0.1)
15
26
  rspec (3.8.0)
16
27
  rspec-core (~> 3.8.0)
@@ -25,6 +36,8 @@ GEM
25
36
  diff-lcs (>= 1.2.0, < 2.0)
26
37
  rspec-support (~> 3.8.0)
27
38
  rspec-support (3.8.0)
39
+ ruby-rc4 (0.1.5)
40
+ ttfunk (1.7.0)
28
41
 
29
42
  PLATFORMS
30
43
  ruby
data/README.md CHANGED
@@ -137,6 +137,12 @@ qc_seqhash.sdrm_hiv_pr(cut_off)
137
137
 
138
138
  ## Updates
139
139
 
140
+ ### Version 1.1.2-04262021
141
+
142
+ 1. Added function `ViralSeq::DRMs.sdrm_json` to export SDRM as json object.
143
+ 2. Added a random string to the temp file names for `muscle_bio` to avoid issues when running scripts in parallel.
144
+ 3. Added `--keep-original` flag to the `tcs` pipeline.
145
+
140
146
  ### Version 1.1.1-04012021
141
147
 
142
148
  1. Added warning when paired_raw_sequence less than 0.1% of total_raw_sequence.
data/bin/tcs CHANGED
@@ -59,6 +59,10 @@ OptionParser.new do |opts|
59
59
  exit
60
60
  end
61
61
 
62
+ opts.on("--keep-original", "keep raw sequence files") do
63
+ options[:keep] = true
64
+ end
65
+
62
66
  opts.on("-v", "--version", "Version info") do
63
67
  puts "tcs version: " + ViralSeq::TCS_VERSION.red.bold
64
68
  puts "viral_seq version: " + ViralSeq::VERSION.red.bold
@@ -155,6 +159,7 @@ primers.each do |primer|
155
159
  forward_primer = primer[:forward]
156
160
 
157
161
  export_raw = primer[:export_raw]
162
+ limit_raw = primer[:limit_raw]
158
163
 
159
164
  unless cdna_primer
160
165
  log.puts Time.now.to_s + "\t" + region + " does not have cDNA primer sequence. #{region} skipped."
@@ -261,7 +266,13 @@ primers.each do |primer|
261
266
  raw_r1_f = File.open(outfile_raw_r1, 'w')
262
267
  raw_r2_f = File.open(outfile_raw_r2, 'w')
263
268
 
264
- bio_r1.keys.each do |k|
269
+ if limit_raw
270
+ raw_keys = bio_r1.keys.sample(limit_raw.to_i)
271
+ else
272
+ raw_keys = bio_r1.keys
273
+ end
274
+
275
+ raw_keys.each do |k|
265
276
  raw_r1_f.puts k + "_r1"
266
277
  raw_r2_f.puts k + "_r2"
267
278
  raw_r1_f.puts bio_r1[k]
@@ -474,9 +485,11 @@ primers.each do |primer|
474
485
  end
475
486
  end
476
487
 
477
- log.puts Time.now.to_s + "\t" + "Removing raw sequence files..."
478
- File.unlink(r1_f)
479
- File.unlink(r2_f)
488
+ unless options[:keep]
489
+ log.puts Time.now.to_s + "\t" + "Removing raw sequence files..."
490
+ File.unlink(r1_f)
491
+ File.unlink(r2_f)
492
+ end
480
493
  log.puts Time.now.to_s + "\t" + "TCS pipeline successfuly exercuted."
481
494
  log.close
482
495
  puts "DONE!"
data/lib/viral_seq.rb CHANGED
@@ -38,5 +38,8 @@ require_relative "viral_seq/version"
38
38
  require_relative "viral_seq/tcs_core"
39
39
  require_relative "viral_seq/tcs_json"
40
40
  require_relative "viral_seq/tcs_dr"
41
+ require_relative "viral_seq/sdrm"
41
42
 
42
43
  require "muscle_bio"
44
+ require "json"
45
+ require "securerandom"
@@ -1,11 +1,41 @@
1
1
  module ViralSeq
2
2
 
3
3
  # array for all amino acid one letter abbreviations
4
-
5
4
  AMINO_ACID_LIST = ["A", "C", "D", "E", "F", "G", "H", "I", "K", "L", "M", "N", "P", "Q", "R", "S", "T", "V", "W", "Y", "*"]
6
5
 
7
- SDRM_HIV_PR_LIST = {}
8
- SDRM_HIV_RT_LIST = {}
9
- SDRM_HIV_IN_LIST = {}
10
-
6
+ # R script for tcs_sdrm script
7
+
8
+ R_SCRIPT = 'setwd("PATH_TO_FASTA")
9
+ library(phangorn)
10
+ library(ape)
11
+ library(ggplot2)
12
+ library(scales)
13
+ library(ggforce)
14
+ library(cowplot)
15
+ library(magrittr)
16
+ library(gridExtra)
17
+ pdf("OUTPUT_PDF", onefile=T, width=11, height=8.5)
18
+ fileNames <- list.files()
19
+ for (fileName in fileNames) {
20
+ dna <- read.dna(fileName, format="fasta")
21
+ class(dna)
22
+ D<- dist.dna(dna, model="raw")
23
+ pi <- mean(D)
24
+ dist20 <- quantile(D, prob=c(0.20))
25
+ alldist <- data.frame(File=fileName, pi, dist20)
26
+ write.table(alldist,"OUTPUT_CSV",append=TRUE, sep = ",", row.names = FALSE, col.names=FALSE)
27
+ D2 <- dist.dna(dna, model="TN93")*100
28
+ def.par <- par(no.readonly = TRUE)
29
+ par(mfrow=c(1,2))
30
+ hist<-hist(D, main=fileName, xlab="% Pairwise Distance", ylab="Frequency", col="gray")
31
+ abline(v=dist20, col="royalblue",lwd=2)
32
+ abline(v=pi, col="red", lwd=2)
33
+ legend(x="topright", c("dist20", "pi"), col = c("royalblue", "red"), lwd = c(2,2), cex=0.5)
34
+ njtree<-NJ(D2)
35
+ njtreeplot <- plot(njtree, show.tip.label=F, "unrooted", main=fileName)
36
+ add.scale.bar(cex=0.7, font=2, col="red")
37
+ }
38
+ dev.off()'
39
+
40
+
11
41
  end
@@ -1,6 +1,6 @@
1
1
 
2
2
  module ViralSeq
3
- class SDRM
3
+ class SeqHash
4
4
 
5
5
  # functions to identify SDRMs from a ViralSeq::SeqHash object at HIV PR region.
6
6
  # works for MPID-DR protocol (dx.doi.org/10.17504/protocols.io.useewbe)
@@ -39,8 +39,9 @@ module ViralSeq
39
39
 
40
40
  def self.align(ref_seq = "", test_seq = "", path_to_muscle = false)
41
41
  temp_dir = Dir.home
42
- temp_file = File.join(temp_dir, "_temp_muscle_in")
43
- temp_aln = File.join(temp_dir, "_temp_muscle_aln")
42
+ temp_name = "_" + SecureRandom.alphanumeric
43
+ temp_file = File.join(temp_dir, temp_name)
44
+ temp_aln = File.join(temp_dir, (temp_name + "_aln"))
44
45
  name = ">test"
45
46
  temp_in = File.open(temp_file,"w")
46
47
  temp_in.puts ">ref"
@@ -1,43 +1,109 @@
1
1
  module ViralSeq
2
2
  class DRMs
3
- def initialize (mutation_list = {})
4
- @mutation_list = mutation_list
5
- end
6
-
7
- attr_accessor :mutation_list
8
- end
3
+ class << self
9
4
 
10
- def self.sdrm_hiv_pr(seq_hash)
11
- end
12
-
13
- def self.sdrm_hiv_rt(seq_hash)
14
- end
5
+ # function to retrieve sdrm positions as a hash
6
+ # @param ref_option [Symbol], name of reference genomes, options are `:hiv_pr`, `:hiv_rt`, `:hiv_in`, `hcv_ns5a`
7
+ # @return [Hash] Hash of :position_number => [ 'wildtype_codon', ['mutation_codons']]
8
+ def sdrm_hash(options)
9
+ sdrm = {}
10
+ case options
11
+ when :hcv_ns5a
12
+ sdrm[28] = ['M',['T']]
13
+ sdrm[30] = ['L',['H','K','R','Q','A','S','D']]
14
+ sdrm[31] = ['L',['M','V','F']]
15
+ sdrm[32] = ['P',['L']]
16
+ sdrm[44] = ['K',['R']]
17
+ sdrm[58] = ['H',['D','P','S']]
18
+ sdrm[64] = ['T',['A','S']]
19
+ sdrm[77] = ['P',['A','S']]
20
+ sdrm[78] = ['R',['K']]
21
+ sdrm[79] = ['T',['A']]
22
+ sdrm[83] = ['T',['M']]
23
+ sdrm[85] = ['S',['N','H','Y']]
24
+ sdrm[92] = ['A',['P','T','K','E']]
25
+ sdrm[93] = ['Y',['C','F','H','N']]
26
+ sdrm[107] = ['K',['T','S']]
27
+ sdrm[121] = ['I',['V']]
28
+ sdrm[135] = ['T',['A']]
29
+ when :nrti
30
+ sdrm[41] = ['M',['L']]
31
+ sdrm[65] = ['K',['R']]
32
+ sdrm[67] = ['D',['N','G','E']]
33
+ sdrm[69] = ['T',['D']]
34
+ sdrm[70] = ['K',['R','E']]
35
+ sdrm[74] = ['L',['V','I']]
36
+ sdrm[75] = ['V',['M','T','A','S']]
37
+ sdrm[77] = ['F',['L']]
38
+ sdrm[115] = ['Y',['F']]
39
+ sdrm[116] = ['F',['Y']]
40
+ sdrm[151] = ['Q',['M']]
41
+ sdrm[184] = ['M',['V','I']]
42
+ sdrm[210] = ['L',['W']]
43
+ sdrm[215] = ["T",["Y","F","I","C","D","V","E"]]
44
+ sdrm[219] = ["K",["Q","E","N","R"]]
45
+ when :nnrti
46
+ sdrm[100] = ['L',['I']]
47
+ sdrm[101] = ['K',['E','P']]
48
+ sdrm[103] = ['K',['N','S']]
49
+ sdrm[106] = ['V',['M','A']]
50
+ sdrm[179] = ['V',['F','D']]
51
+ sdrm[181] = ['Y',['C','I','V']]
52
+ sdrm[188] = ['Y',['L','H','C']]
53
+ sdrm[190] = ['G',['A','S','E']]
54
+ sdrm[225] = ['P',['H']]
55
+ sdrm[230] = ['M',['L']]
56
+ when :hiv_pr
57
+ sdrm[23] = ['L',['I']]
58
+ sdrm[24] = ['L',['I']]
59
+ sdrm[30] = ['D',['N']]
60
+ sdrm[32] = ['V',['I']]
61
+ sdrm[46] = ['M',['I','L']]
62
+ sdrm[47] = ['I',['V','A']]
63
+ sdrm[48] = ['G',['V','M']]
64
+ sdrm[50] = ['I',['V','L']]
65
+ sdrm[53] = ['F',['L']]
66
+ sdrm[54] = ['I',['V','L','M','T','A','S']]
67
+ sdrm[73] = ['G',['S','T','C','A']]
68
+ sdrm[76] = ['L',['V']]
69
+ sdrm[82] = ['V',['A','T','S','F','L','C','M']]
70
+ sdrm[83] = ['N',['D']]
71
+ sdrm[84] = ['I',['V','A','C']]
72
+ sdrm[88] = ['N',['D','S']]
73
+ sdrm[90] = ['L',['M']]
74
+ when :hiv_in
75
+ sdrm[66] = ['T',['A','I','K']]
76
+ sdrm[74] = ['L',['M']]
77
+ sdrm[92] = ['E',['Q']]
78
+ sdrm[95] = ['Q',['K']]
79
+ sdrm[97] = ['T',['A']]
80
+ sdrm[121] = ['F',['Y']]
81
+ sdrm[140] = ['G',['A','S','C']]
82
+ sdrm[143] = ["Y",["C","H","R"]]
83
+ sdrm[147] = ['S',['G']]
84
+ sdrm[148] = ['Q',['H','K','R']]
85
+ sdrm[155] = ['N',['S','H']]
86
+ else raise "Input option `#{options}` for ViralSeq::Sequence.sdrm not supported"
87
+ end
88
+ return sdrm
89
+ end # end of #sdrm_hash
15
90
 
16
- def self.sdrm_hiv_in(seq_hash)
17
- end
18
-
19
- def self.list_from_json(file)
20
- end
21
-
22
- def self.list_from_csv(file)
23
- end
24
-
25
- def self.export_list_hiv_pr(file, format = :json)
26
- if foramt == :json
91
+ # function to export SDRM positions as json object
92
+ # @param (see #sdrm_hash)
93
+ # @return [String] json String of SDRM positions
27
94
 
95
+ def sdrm_json(options)
96
+ sdrm = ViralSeq::DRMs.sdrm_hash(options)
97
+ json_array = []
98
+ sdrm.each do |pos, muts|
99
+ mutation = {}
100
+ mutation[:position] = pos
101
+ mutation[:wildtypeCodon] = muts[0]
102
+ mutation[:mutationCodons] = muts[1]
103
+ json_array << mutation
104
+ end
105
+ JSON.pretty_generate(json_array)
106
+ end
28
107
  end
29
108
  end
30
-
31
- def self.export_list_hiv_rt(file, format = :json)
32
-
33
- end
34
-
35
- def self.export_list_hiv_in(file, format = :json)
36
-
37
- end
38
-
39
- def drm_analysis(seq_hash)
40
- mutation_list = self.mutation_list
41
-
42
- end
43
109
  end
@@ -113,7 +113,7 @@ module ViralSeq
113
113
  def sdrm(option, start_aa = 1)
114
114
  aa_array = self.aa_array
115
115
  out_hash = {}
116
- sdrm = sdrm_hash(option)
116
+ sdrm = ViralSeq::DRMs.sdrm_hash(option)
117
117
  aa_length = aa_array.size
118
118
  end_aa = start_aa + aa_length - 1
119
119
  (start_aa..end_aa).each do |position|
@@ -535,88 +535,5 @@ module ViralSeq
535
535
  return aa_out
536
536
  end # end of #amino_acid_2
537
537
 
538
- # sdrm position hash
539
- def sdrm_hash(options)
540
- sdrm = {}
541
- case options
542
- when :hcv_ns5a
543
- sdrm[28] = ['M',['T']]
544
- sdrm[30] = ['L',['H','K','R','Q','A','S','D']]
545
- sdrm[31] = ['L',['M','V','F']]
546
- sdrm[32] = ['P',['L']]
547
- sdrm[44] = ['K',['R']]
548
- sdrm[58] = ['H',['D','P','S']]
549
- sdrm[64] = ['T',['A','S']]
550
- sdrm[77] = ['P',['A','S']]
551
- sdrm[78] = ['R',['K']]
552
- sdrm[79] = ['T',['A']]
553
- sdrm[83] = ['T',['M']]
554
- sdrm[85] = ['S',['N','H','Y']]
555
- sdrm[92] = ['A',['P','T','K','E']]
556
- sdrm[93] = ['Y',['C','F','H','N']]
557
- sdrm[107] = ['K',['T','S']]
558
- sdrm[121] = ['I',['V']]
559
- sdrm[135] = ['T',['A']]
560
- when :nrti
561
- sdrm[41] = ['M',['L']]
562
- sdrm[65] = ['K',['R']]
563
- sdrm[67] = ['D',['N','G','E']]
564
- sdrm[69] = ['T',['D']]
565
- sdrm[70] = ['K',['R','E']]
566
- sdrm[74] = ['L',['V','I']]
567
- sdrm[75] = ['V',['M','T','A','S']]
568
- sdrm[77] = ['F',['L']]
569
- sdrm[115] = ['Y',['F']]
570
- sdrm[116] = ['F',['Y']]
571
- sdrm[151] = ['Q',['M']]
572
- sdrm[184] = ['M',['V','I']]
573
- sdrm[210] = ['L',['W']]
574
- sdrm[215] = ["T",["Y","F","I","C","D","V","E"]]
575
- sdrm[219] = ["K",["Q","E","N","R"]]
576
- when :nnrti
577
- sdrm[100] = ['L',['I']]
578
- sdrm[101] = ['K',['E','P']]
579
- sdrm[103] = ['K',['N','S']]
580
- sdrm[106] = ['V',['M','A']]
581
- sdrm[179] = ['V',['F','D']]
582
- sdrm[181] = ['Y',['C','I','V']]
583
- sdrm[188] = ['Y',['L','H','C']]
584
- sdrm[190] = ['G',['A','S','E']]
585
- sdrm[225] = ['P',['H']]
586
- sdrm[230] = ['M',['L']]
587
- when :hiv_pr
588
- sdrm[23] = ['L',['I']]
589
- sdrm[24] = ['L',['I']]
590
- sdrm[30] = ['D',['N']]
591
- sdrm[32] = ['V',['I']]
592
- sdrm[46] = ['M',['I','L']]
593
- sdrm[47] = ['I',['V','A']]
594
- sdrm[48] = ['G',['V','M']]
595
- sdrm[50] = ['I',['V','L']]
596
- sdrm[53] = ['F',['L']]
597
- sdrm[54] = ['I',['V','L','M','T','A','S']]
598
- sdrm[73] = ['G',['S','T','C','A']]
599
- sdrm[76] = ['L',['V']]
600
- sdrm[82] = ['V',['A','T','S','F','L','C','M']]
601
- sdrm[83] = ['N',['D']]
602
- sdrm[84] = ['I',['V','A','C']]
603
- sdrm[88] = ['N',['D','S']]
604
- sdrm[90] = ['L',['M']]
605
- when :hiv_in
606
- sdrm[66] = ['T',['A','I','K']]
607
- sdrm[74] = ['L',['M']]
608
- sdrm[92] = ['E',['Q']]
609
- sdrm[95] = ['Q',['K']]
610
- sdrm[97] = ['T',['A']]
611
- sdrm[121] = ['F',['Y']]
612
- sdrm[140] = ['G',['A','S','C']]
613
- sdrm[143] = ["Y",["C","H","R"]]
614
- sdrm[147] = ['S',['G']]
615
- sdrm[148] = ['Q',['H','K','R']]
616
- sdrm[155] = ['N',['S','H']]
617
- else raise "Input option `#{options}` for ViralSeq::Sequence.sdrm not supported"
618
- end
619
- return sdrm
620
- end
621
538
  end # end of ViralSeq::Sequence
622
539
  end # end of ViralSeq
@@ -16,7 +16,7 @@ module ViralSeq
16
16
  :ref_genome=>"HXB2",
17
17
  :ref_start=>2648,
18
18
  :ref_end=>3257,
19
- :indel=>true,
19
+ :indel=>false,
20
20
  :trim=>false},
21
21
  {:region=>"PR",
22
22
  :cdna=>
@@ -2,6 +2,6 @@
2
2
  # version info and histroy
3
3
 
4
4
  module ViralSeq
5
- VERSION = "1.1.1"
6
- TCS_VERSION = "2.3.0"
5
+ VERSION = "1.1.2"
6
+ TCS_VERSION = "2.3.1"
7
7
  end
data/viral_seq.gemspec CHANGED
@@ -29,11 +29,22 @@ Gem::Specification.new do |spec|
29
29
  spec.add_development_dependency "rake", "~> 13.0"
30
30
  spec.add_development_dependency "rspec", "~> 3.0"
31
31
 
32
+ # This gem will work with Ruby version 2.5.0 or greater...
33
+ spec.required_ruby_version = '>= 2.5'
34
+ # This gem will work with RubyGem version 1.3.6 or greater...
35
+ spec.required_rubygems_version = '>= 1.3.6'
36
+
32
37
  # muscle_bio gem required
33
38
  spec.add_runtime_dependency "muscle_bio", "~> 0.4"
34
39
 
35
40
  # colorize gem required
36
41
  spec.add_runtime_dependency "colorize", "~> 0.1"
37
42
 
43
+ spec.add_runtime_dependency "prawn", "~> 2.3", '>= 2.3.0'
44
+
45
+ spec.add_runtime_dependency "prawn-table", "~> 0.2", '>= 0.2.0'
46
+
47
+ spec.add_runtime_dependency "combine_pdf", "~> 1.0", '>= 1.0.0'
48
+
38
49
  spec.requirements << 'R required for some functions'
39
50
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: viral_seq
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shuntai Zhou
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2021-04-01 00:00:00.000000000 Z
12
+ date: 2021-04-27 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -81,6 +81,66 @@ dependencies:
81
81
  - - "~>"
82
82
  - !ruby/object:Gem::Version
83
83
  version: '0.1'
84
+ - !ruby/object:Gem::Dependency
85
+ name: prawn
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - "~>"
89
+ - !ruby/object:Gem::Version
90
+ version: '2.3'
91
+ - - ">="
92
+ - !ruby/object:Gem::Version
93
+ version: 2.3.0
94
+ type: :runtime
95
+ prerelease: false
96
+ version_requirements: !ruby/object:Gem::Requirement
97
+ requirements:
98
+ - - "~>"
99
+ - !ruby/object:Gem::Version
100
+ version: '2.3'
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: 2.3.0
104
+ - !ruby/object:Gem::Dependency
105
+ name: prawn-table
106
+ requirement: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '0.2'
111
+ - - ">="
112
+ - !ruby/object:Gem::Version
113
+ version: 0.2.0
114
+ type: :runtime
115
+ prerelease: false
116
+ version_requirements: !ruby/object:Gem::Requirement
117
+ requirements:
118
+ - - "~>"
119
+ - !ruby/object:Gem::Version
120
+ version: '0.2'
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ version: 0.2.0
124
+ - !ruby/object:Gem::Dependency
125
+ name: combine_pdf
126
+ requirement: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - "~>"
129
+ - !ruby/object:Gem::Version
130
+ version: '1.0'
131
+ - - ">="
132
+ - !ruby/object:Gem::Version
133
+ version: 1.0.0
134
+ type: :runtime
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ requirements:
138
+ - - "~>"
139
+ - !ruby/object:Gem::Version
140
+ version: '1.0'
141
+ - - ">="
142
+ - !ruby/object:Gem::Version
143
+ version: 1.0.0
84
144
  description: |-
85
145
  A Ruby Gem with bioinformatics tools for processing viral NGS data.
86
146
  Specifically for Primer-ID sequencing and HIV drug resistance analysis.
@@ -142,12 +202,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
142
202
  requirements:
143
203
  - - ">="
144
204
  - !ruby/object:Gem::Version
145
- version: '0'
205
+ version: '2.5'
146
206
  required_rubygems_version: !ruby/object:Gem::Requirement
147
207
  requirements:
148
208
  - - ">="
149
209
  - !ruby/object:Gem::Version
150
- version: '0'
210
+ version: 1.3.6
151
211
  requirements:
152
212
  - R required for some functions
153
213
  rubygems_version: 3.2.2