#!/usr/bin/env ruby require 'rbbt-util' require 'rbbt/util/simpleopt' $0 = "rbbt #{$previous_commands*""} #{ File.basename(__FILE__) }" if $previous_commands options = SOPT.setup < [ ...] [options] Use - to read from STDIN -f--fields* Fields to attach (all if not specified) -i--identifiers* Identifier file -h--help Print this help EOF if options[:help] if defined? rbbt_usage rbbt_usage else puts SOPT.usage end exit 0 end file1, *rest = ARGV fields = options[:fields] identifiers = options[:identifiers] if identifiers.nil? require 'rbbt/sources/organism' Organism.identifiers(Organism.default_code("Hsa")) end fields = fields ? fields.split(/[,|]/).collect{|f| f.strip} : nil tsv = TSV.open(file1, :unnamed => true) tsv = tsv.to_double if tsv.type == :flat rest.each do |file2| file_fields = TSV.parse_header(file2).all_fields - tsv.all_fields these_fields = fields ? fields & file_fields : nil tsv = tsv.attach file2, :fields => these_fields, :identifiers => identifiers end puts tsv.to_s