Musterdaten:
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
.
.
.
Ich habe eine Methode, die eine Case-Anweisung wie folgt verwendet, um Teile einer längeren Textdatei in Datensätze zu trennen, indem ich das Delimeter " \n\n ". Und eine Klasse, die ein Datenobjekt modelliert
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
dna data enthält sowohl den "richtigen" String-Teil als auch zwei Null-"Objekte"/ irritierende Nullen!
"This is a string"
nil
nil
Meine Probleme sind die oben gezeigten Null-Zeichenfolgen, die dna_data zugewiesen werden, wenn Sie read.dna_data = line
.
Wie wird man sie bitte los? Wie kann man sie von vornherein vermeiden? Was übersehe ich? Ist mein Ansatz "stinkig"? Ich danke Ihnen