lib/viral_seq/sdrm.rb in viral_seq-1.1.1 vs lib/viral_seq/sdrm.rb in viral_seq-1.1.2

- old
+ new

@@ -1,43 +1,109 @@ module ViralSeq class DRMs - def initialize (mutation_list = {}) - @mutation_list = mutation_list - end + class << self - attr_accessor :mutation_list - end + # function to retrieve sdrm positions as a hash + # @param ref_option [Symbol], name of reference genomes, options are `:hiv_pr`, `:hiv_rt`, `:hiv_in`, `hcv_ns5a` + # @return [Hash] Hash of :position_number => [ 'wildtype_codon', ['mutation_codons']] + def sdrm_hash(options) + sdrm = {} + case options + when :hcv_ns5a + sdrm[28] = ['M',['T']] + sdrm[30] = ['L',['H','K','R','Q','A','S','D']] + sdrm[31] = ['L',['M','V','F']] + sdrm[32] = ['P',['L']] + sdrm[44] = ['K',['R']] + sdrm[58] = ['H',['D','P','S']] + sdrm[64] = ['T',['A','S']] + sdrm[77] = ['P',['A','S']] + sdrm[78] = ['R',['K']] + sdrm[79] = ['T',['A']] + sdrm[83] = ['T',['M']] + sdrm[85] = ['S',['N','H','Y']] + sdrm[92] = ['A',['P','T','K','E']] + sdrm[93] = ['Y',['C','F','H','N']] + sdrm[107] = ['K',['T','S']] + sdrm[121] = ['I',['V']] + sdrm[135] = ['T',['A']] + when :nrti + sdrm[41] = ['M',['L']] + sdrm[65] = ['K',['R']] + sdrm[67] = ['D',['N','G','E']] + sdrm[69] = ['T',['D']] + sdrm[70] = ['K',['R','E']] + sdrm[74] = ['L',['V','I']] + sdrm[75] = ['V',['M','T','A','S']] + sdrm[77] = ['F',['L']] + sdrm[115] = ['Y',['F']] + sdrm[116] = ['F',['Y']] + sdrm[151] = ['Q',['M']] + sdrm[184] = ['M',['V','I']] + sdrm[210] = ['L',['W']] + sdrm[215] = ["T",["Y","F","I","C","D","V","E"]] + sdrm[219] = ["K",["Q","E","N","R"]] + when :nnrti + sdrm[100] = ['L',['I']] + sdrm[101] = ['K',['E','P']] + sdrm[103] = ['K',['N','S']] + sdrm[106] = ['V',['M','A']] + sdrm[179] = ['V',['F','D']] + sdrm[181] = ['Y',['C','I','V']] + sdrm[188] = ['Y',['L','H','C']] + sdrm[190] = ['G',['A','S','E']] + sdrm[225] = ['P',['H']] + sdrm[230] = ['M',['L']] + when :hiv_pr + sdrm[23] = ['L',['I']] + sdrm[24] = ['L',['I']] + sdrm[30] = ['D',['N']] + sdrm[32] = ['V',['I']] + sdrm[46] = ['M',['I','L']] + sdrm[47] = ['I',['V','A']] + sdrm[48] = ['G',['V','M']] + sdrm[50] = ['I',['V','L']] + sdrm[53] = ['F',['L']] + sdrm[54] = ['I',['V','L','M','T','A','S']] + sdrm[73] = ['G',['S','T','C','A']] + sdrm[76] = ['L',['V']] + sdrm[82] = ['V',['A','T','S','F','L','C','M']] + sdrm[83] = ['N',['D']] + sdrm[84] = ['I',['V','A','C']] + sdrm[88] = ['N',['D','S']] + sdrm[90] = ['L',['M']] + when :hiv_in + sdrm[66] = ['T',['A','I','K']] + sdrm[74] = ['L',['M']] + sdrm[92] = ['E',['Q']] + sdrm[95] = ['Q',['K']] + sdrm[97] = ['T',['A']] + sdrm[121] = ['F',['Y']] + sdrm[140] = ['G',['A','S','C']] + sdrm[143] = ["Y",["C","H","R"]] + sdrm[147] = ['S',['G']] + sdrm[148] = ['Q',['H','K','R']] + sdrm[155] = ['N',['S','H']] + else raise "Input option `#{options}` for ViralSeq::Sequence.sdrm not supported" + end + return sdrm + end # end of #sdrm_hash - def self.sdrm_hiv_pr(seq_hash) - end + # function to export SDRM positions as json object + # @param (see #sdrm_hash) + # @return [String] json String of SDRM positions - def self.sdrm_hiv_rt(seq_hash) - end - - def self.sdrm_hiv_in(seq_hash) - end - - def self.list_from_json(file) - end - - def self.list_from_csv(file) - end - - def self.export_list_hiv_pr(file, format = :json) - if foramt == :json - + def sdrm_json(options) + sdrm = ViralSeq::DRMs.sdrm_hash(options) + json_array = [] + sdrm.each do |pos, muts| + mutation = {} + mutation[:position] = pos + mutation[:wildtypeCodon] = muts[0] + mutation[:mutationCodons] = muts[1] + json_array << mutation + end + JSON.pretty_generate(json_array) + end end - end - - def self.export_list_hiv_rt(file, format = :json) - - end - - def self.export_list_hiv_in(file, format = :json) - - end - - def drm_analysis(seq_hash) - mutation_list = self.mutation_list - end end