Here's a little parser script, to merge multiple files. Each file has a header and a time course. I need all time courses in a single file, next to each other.
basedir = "./MassSpectrum/" allData = [] # ms data from all files filelist = Dir.new(basedir).entries filelist.each {|f| if f !~ /\.txt/ # f is not a data file next end data = [] # ms data from this files massToCharge = 50 readData = false # set to true once we are reading in ms data File.open( basedir+f).each { |line| case line when /^SPECTRUM/ next when /raw/ data.push line.chop.rstrip puts ":#{line.chop.rstrip}:" next when /^Mass/ puts "starting" readData= true next end if readData # we are reading ms data, should go from 50 to 650 arr = line.split while arr.first.to_i != massToCharge # a mass to charge ratio was skipped data.push 0 massToCharge = massToCharge + 1 end data.push arr.last massToCharge = massToCharge + 1 end } allData.push data } open("results.xls","w") { |out| for i in 0..allData.first.size do allData.each{ |l| out << l[i] out << "\t" } out << "\n" end }
Comments
Post a Comment