Skip to main content

Merging multiple files columnwise

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

Popular posts from this blog

Uploading a file with JQuery

You can easily submit data in an html form via jQuery's $.post. But you need to do a little more to upload a file. I suggest the jQuery Form Plugin . Here is the HTML form: <html> <head> <title>Title</title> </head> <body> <form action="/test.cgi" enctype="multipart/form-data" method="post"> <input name="myFile" type="file" /> <div id="results"> </div> </form> </body> </html> This is the Javascript file myFrom.js: $(document).ready(function() { $('form').ajaxForm( { beforeSubmit: function() { $('#results').html('Submitting...'); }, success: function(data) { var $out = $('#results'); $out.html('Your results:'); $out.append('<div><pre>'+ data +'</pre></div>'); ...

Latex: Centering table larger than textwidth

Usually, you can center tables with \center. But when the table is longer than the \textwidth, it will be align with the left side margin. You can temporarily adjust the textwidth. % allows for temporary adjustment of side margins \usepackage{chngpage} \begin{table}     \begin{adjustwidth}{-.5in}{-.5in}          \begin{center}         \begin{tabular}{|c|}             \hline And here comes a very long line. And here comes a very long line. And here comes a very long line.  \\             \hline         \end{tabular}         \caption{This Table is longer than the text width. And its caption is really long, too. This Table is longer than the text width. And its caption is really long, too. This Table is lo...

PHP Opcodes

First, what is an Opcode? It's a compiled form of a PHP script, similar to Java bytecode. Or, more precisely, from php.net "When parsing PHP files, Zend Engine 2 generates a series of operation codes, commonly known as "opcodes", representing the function of the code." <?php $a = "Hello "; $b = "World\n"; echo $a . $b; For a script like this, the opcodes look like that: number of ops: 5 compiled vars: !0 = $a, !1 = $b line # * op fetch ext return operands --------------------------------------------------------------------------------- 2 0 > ASSIGN !0, 'Hello+' 3 1 ASSIGN !1, 'World%0A' 4 2 CONCAT ~2 !0, !1 3 ECHO ~2 5...