пример данных:
DNA :
This is a string
BaseQuality :
4 4 4 4 4 4 6 7 7 7
Metadata :
Is_read
DNA :
yet another string
BaseQuality :
4 4 4 4 7 7 4 8 4 4 4 4 4
Metadata :
Is_read
SCF_File
.
.
.
У меня есть метод, который использует оператор case следующим образом для разделения частей более длинного текстового файла на записи, используя разделитель "\ n \ n". И класс, который моделирует объект данных
def parse_file(myfile)
$/ = "\n\n"
records = []
File.open(myfile) do |f|
f.each_line do |line|
read = Read.new
case line
when /^DNA/
read.dna_data = line.strip
when /^BaseQuality/
read.quality_data =line.strip
when /^Metadata/
read.metadata =line.strip
else
puts "Unrecognized line: #{line}"
end
records.push read
end
end
records
end
class Read
attr_accessor :dna_data,:quality_data,:metadata
end
records.each do |r|
puts r.dna_data
end
данные днк содержат «правильную» строковую часть, а также два нулевых «объекта» / раздражающих ноля!
"This is a string"
nil
nil
Мои проблемы с указанными выше нулевыми строками, которые назначаются для dna_data при использовании read.dna_data = line
.
Пожалуйста, как вы избавитесь от них? Как вы избегаете их в первую очередь. Что мне не хватает? Мой подход "вонючий"?
Спасибо