Class: String

Inherits:
Object
  • Object
show all
Defined in:
lib/full_lengther_next/fl_string_utils.rb

Instance Method Summary collapse

Instance Method Details

#complementary_dnaObject



136
137
138
139
# File 'lib/full_lengther_next/fl_string_utils.rb', line 136

def complementary_dna
    c={'A'=>'T', 'a' => 't', 'T' => 'A', 't' => 'a', 'C' => 'G', 'c'=>'g' , 'G' => 'C', 'g' => 'c', 'N' => 'N', 'n' => 'N' , 'R' => 'N', 'r' => 'N', 'W' => 'N', 'w' => 'N', 'M' => 'N', 'm' => 'N', 'K' => 'N', 'k' => 'N', 'S' => 'N', 's' => 'N', 'Y' => 'N', 'y' => 'N', 'H' => 'N', 'h' => 'N', 'B' => 'N', 'b' => 'N', 'D' => 'N', 'd' => 'N', 'V' => 'N', 'v' => 'N' }
    return self.reverse.split('').map{|e| c[e]}.join
end

#generate_orf_old(a, frame) ⇒ Object



47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
# File 'lib/full_lengther_next/fl_string_utils.rb', line 47

def generate_orf_old(a,frame)
	
	all_orfs = []
	each_orf = []
	
	atg_codon = false
	stop_codon = false
	orf =''
	t_start = 0
	t_end = 0
	
	a.each do |e|
		t_end += 3
		if (atg_codon)
			orf += e
			if (e == 'TAG') or (e == 'TGA') or (e == 'TAA')
				if (orf.length >= 200)
					each_orf.push orf
					each_orf.push t_start
					each_orf.push t_end
					each_orf.push frame
					each_orf.push stop_codon
					
					all_orfs.push each_orf
					each_orf = []
				end
				orf=''
				stop_codon = true
				atg_codon = false
				t_start = t_end
			end
		elsif (e == 'ATG')
			atg_codon = true
			orf += e
			t_start += 1
		elsif (e == 'TAG') or (e == 'TGA') or (e == 'TAA')
			stop_codon = true
			t_start += 3
		else
			t_start += 3
		end
	end
	
	if (all_orfs != '') && (all_orfs != nil)
		return all_orfs
	else
		return nil
	end
end

#orf_finder_oldObject



97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
# File 'lib/full_lengther_next/fl_string_utils.rb', line 97

def orf_finder_old
	res =[]
	
	s = self.upcase
	f1 = s.split('').each_slice(3).map{|e| e.join}
	r1 = generate_orf(f1,1)
	res += r1
	
	s.sub!(/^./,'')
	f2 = s.split('').each_slice(3).map{|e| e.join}
	r2 = generate_orf(f2,2)
	res += r2
	
	s.sub!(/^./,'')
	f3 = s.split('').each_slice(3).map{|e| e.join}
	r3 = generate_orf(f3,3)
	res += r3
	
	# vamos a por los ORFs de la cadena complementaria
	s = self.upcase
	s = s.complementary_dna
	
	f4 = s.split('').each_slice(3).map{|e| e.join}
	r4 = generate_orf(f4,-1)
	res += r4
	
	s.sub!(/^./,'')
	f5 = s.split('').each_slice(3).map{|e| e.join}
	r5 = generate_orf(f5,-2)
	res += r5
	
	s.sub!(/^./,'')
	f6 = s.split('').each_slice(3).map{|e| e.join}
	r6 = generate_orf(f6,-3)
	res += r6
	
	return res
end

#translateObject



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/full_lengther_next/fl_string_utils.rb', line 4

def translate
	s = self.upcase
	a = s.split('').each_slice(3).map{|e| e.join}
	
    c={		'GCT'=>'A','GCC'=>'A','GCA'=>'A','GCG'=>'A',
		'CGT'=>'R','CGC'=>'R','CGA'=>'R','CGG'=>'R','AGA'=>'R','AGG'=>'R',
		'AAT'=>'N','AAC'=>'N',
		'GAT'=>'D','GAC'=>'D',
		'TGT'=>'C','TGC'=>'C',
		'CAA'=>'Q','CAG'=>'Q',
		'GAA'=>'E','GAG'=>'E',
		'GGT'=>'G','GGC'=>'G','GGA'=>'G','GGG'=>'G',
		'CAT'=>'H','CAC'=>'H',
		'ATT'=>'I','ATC'=>'I','ATA'=>'I',
		'TTA'=>'L','TTG'=>'L','CTT'=>'L','CTC'=>'L','CTA'=>'L','CTG'=>'L',
		'ATG'=>'M',
		'AAA'=>'K','AAG'=>'K',
		'TTT'=>'F','TTC'=>'F',
		'CCT'=>'P','CCC'=>'P','CCA'=>'P','CCG'=>'P',
		'TCT'=>'S','TCC'=>'S','TCA'=>'S','TCG'=>'S','AGT'=>'S','AGC'=>'S',
		'ACT'=>'T','ACC'=>'T','ACA'=>'T','ACG'=>'T',
		'TGG'=>'W',
		'TAT'=>'Y','TAC'=>'Y',
		'GTT'=>'V','GTC'=>'V','GTA'=>'V','GTG'=>'V',
		'TAG'=>'*','TGA'=>'*','TAA'=>'*'}
	
	#EN CASO DE NO ENCONTRAR EL TRIPLETE SE AÑADE UNA X
	
	res=a.map{
		|e|
		if (e.length == 3)
			if (e =~ /[NnRrWwMmKkSsYyHhBbDdVv]/)
				'x'
			else
				c[e]||'x'
			end
		else
			'x'
		end
	}
	return res.compact.join
end