Rubyのseekメソッドについて、ファイルを一行ずつ読み込んでいる際にseekメソッドが使えないということはありますでしょうか。初歩的な質問で申し訳ありませんがよろしくお願いいたします。
Ruby
1該当箇所のコード 2File.open('output.data'){|file| 3 4label_count = 0 5 string_count = 0 6 7 string_2 = file.each_line{|line| 8 9 i = 0 10 while i < split_length do 11 string_2.seek(string_count+i) 12 dna_w = string_2.read(1) 13 14 string_2.seek(string_count+i+1) 15 dna_w2 = string_2.read(1) 16 17 string_2.seek(string_count+i+2) 18 dna_w3 = string_2.read(1) 19 20 string_2.seek(string_count+i+3) 21 dna_w4 = string_2.read(1) 22 case dna_w 23 24 #4連続塩基の頻度を算出する 25 when 'T' 26 27 if(dna_w2 == 'T') then 28 if(dna_w3 == 'T') then 29 if(dna_w4 == 'T') then 30 t_t_t_t += 1 31 elsif(dna_w4 == 'C') then 32 t_t_t_c += 1 33 elsif(dna_w4 == 'A') then 34 t_t_t_a += 1 35 elsif(dna_w4 == 'G') then 36 t_t_t_g += 1 37 end 38 elsif(dna_w3 == 'C') then 39 if(dna_w4 == 'T') then 40 t_t_c_t += 1 41 elsif(dna_w4 == 'C') then 42 t_t_c_c += 1 43 elsif(dna_w4 == 'A') then 44 t_t_c_a += 1 45 elsif(dna_w4 == 'G') then 46 t_t_c_g += 1 47 end 48 elsif(dna_w3 == 'A') then 49 if(dna_w4 == 'T') then 50 t_t_a_t += 1 51 elsif(dna_w4 == 'C') then 52 t_t_a_c += 1 53 elsif(dna_w4 == 'A') then 54 t_t_a_a += 1 55 elsif(dna_w4 == 'G') then 56 t_t_a_g += 1 57 end 58 elsif(dna_w3 == 'G') then 59 if(dna_w4 == 'T') then 60 t_t_g_t += 1 61 elsif(dna_w4 == 'C') then 62 t_t_g_c += 1 63 elsif(dna_w4 == 'A') then 64 t_t_g_a += 1 65 elsif(dna_w4 == 'G') then 66 t_t_g_g += 1 67 end 68 end 69 elsif(dna_w2 == 'C') then 70 if(dna_w3 == 'T') then 71 if(dna_w4 == 'T') then 72 t_c_t_t += 1 73 elsif(dna_w4 == 'C') then 74 t_c_t_c += 1 75 elsif(dna_w4 == 'A') then 76 t_c_t_a += 1 77 elsif(dna_w4 == 'G') then 78 t_c_t_g += 1 79 end 80 elsif(dna_w3 == 'C') then 81 if(dna_w4 == 'T') then 82 t_c_c_t += 1 83 elsif(dna_w4 == 'C') then 84 t_c_c_c += 1 85 elsif(dna_w4 == 'A') then 86 t_c_c_a += 1 87 elsif(dna_w4 == 'G') then 88 t_c_c_g += 1 89 end 90 elsif(dna_w3 == 'A') then 91 if(dna_w4 == 'T') then 92 t_c_a_t += 1 93 elsif(dna_w4 == 'C') then 94 t_c_a_c += 1 95 elsif(dna_w4 == 'A') then 96 t_c_a_a += 1 97 elsif(dna_w4 == 'G') then 98 t_c_a_g += 1 99 end 100 elsif(dna_w3 == 'G') then 101 if(dna_w4 == 'T') then 102 t_c_g_t += 1 103 elsif(dna_w4 == 'C') then 104 t_c_g_c += 1 105 elsif(dna_w4 == 'A') then 106 t_c_g_a += 1 107 elsif(dna_w4 == 'G') then 108 t_c_g_g += 1 109 end 110 end 111 elsif(dna_w2 == 'A') then 112 if(dna_w3 == 'T') then 113 if(dna_w4 == 'T') then 114 t_a_t_t += 1 115 elsif(dna_w4 == 'C') then 116 t_a_t_c += 1 117 elsif(dna_w4 == 'A') then 118 t_a_t_a += 1 119 elsif(dna_w4 == 'G') then 120 t_a_t_g += 1 121 end 122 elsif(dna_w3 == 'C') then 123 if(dna_w4 == 'T') then 124 t_a_c_t += 1 125 elsif(dna_w4 == 'C') then 126 t_a_c_c += 1 127 elsif(dna_w4 == 'A') then 128 t_a_c_a += 1 129 elsif(dna_w4 == 'G') then 130 t_a_c_g += 1 131 end 132 elsif(dna_w3 == 'A') then 133 if(dna_w4 == 'T') then 134 t_a_a_t += 1 135 elsif(dna_w4 == 'C') then 136 t_a_a_c += 1 137 elsif(dna_w4 == 'A') then 138 t_a_a_a += 1 139 elsif(dna_w4 == 'G') then 140 t_a_a_g += 1 141 end 142 elsif(dna_w3 == 'G') then 143 if(dna_w4 == 'T') then 144 t_a_g_t += 1 145 elsif(dna_w4 == 'C') then 146 t_a_g_c += 1 147 elsif(dna_w4 == 'A') then 148 t_a_g_a += 1 149 elsif(dna_w4 == 'G') then 150 t_a_g_g += 1 151 end 152 end 153 elsif(dna_w2 == 'G') then 154 if(dna_w3 == 'T') then 155 if(dna_w4 == 'T') then 156 t_g_t_t += 1 157 elsif(dna_w4 == 'C') then 158 t_g_t_c += 1 159 elsif(dna_w4 == 'A') then 160 t_g_t_a += 1 161 elsif(dna_w4 == 'G') then 162 t_g_t_g += 1 163 end 164 elsif(dna_w3 == 'C') then 165 if(dna_w4 == 'T') then 166 t_g_c_t += 1 167 elsif(dna_w4 == 'C') then 168 t_g_c_c += 1 169 elsif(dna_w4 == 'A') then 170 t_g_c_a += 1 171 elsif(dna_w4 == 'G') then 172 t_g_c_g += 1 173 end 174 elsif(dna_w3 == 'A') then 175 if(dna_w4 == 'T') then 176 t_g_a_t += 1 177 elsif(dna_w4 == 'C') then 178 t_g_a_c += 1 179 elsif(dna_w4 == 'A') then 180 t_g_a_a += 1 181 elsif(dna_w4 == 'G') then 182 t_g_a_g += 1 183 end 184 elsif(dna_w3 == 'G') then 185 if(dna_w4 == 'T') then 186 t_g_g_t += 1 187 elsif(dna_w4 == 'C') then 188 t_g_g_c += 1 189 elsif(dna_w4 == 'A') then 190 t_g_g_a += 1 191 elsif(dna_w4 == 'G') then 192 t_g_g_g += 1 193 end 194 end 195 end 196 when 'C' #Tのときと同じ動作のため省略 197 when 'A' 198 when 'G' 199 else 200 end 201 i += 1 202 end 203 204 string_count += line.length 205 end 206 } 207} 208 209
エラー文 undefined method `seek' for nil:NilClass (NoMethodError)
回答3件
あなたの回答
tips
プレビュー