https://github.com/jhbadger/scripts
Raw File
Tip revision: 6ad694835e70be1c38b4cc13806c5b4361f669fc authored by Jonathan Badger on 12 January 2024, 20:33:42 UTC
report misses in virtualPCR
Tip revision: 6ad6948
fixPrefixTaxonomy
#!/usr/bin/env ruby

require 'optimist'

ARGV.push("--help") if ARGV.empty?
opts = Optimist::options do
  banner File.basename($0)
  opt :input, "input file", :required=>true, :type=>:string
end

ranks = ["k","p","c","o","f","g","s"]

File.new(opts.input).each do |line|
  tid, tax = line.chomp.split("\t")
  tax = tax.split(";")
  if tax[1] =~/k__/
    tax[1].sub!("k__","p__")
    if tax[2] =~/p__/
      tax.delete(tax[2])
    end
  end
  if tax.length < 7
    missing = []
    ranks.size.times do |i|
      if tax.grep(/#{ranks[i]}__/).empty?
        missing.push(i)
      end
    end
    missing.each do |i|
      if i == 6
        tax[i] = tax[5].sub("g__","s__")+"_sp."
      else
        tax.insert(i,tax[i].sub(tax[i][0], ranks[i]))
      end
    end
  end
  printf("%d\t%s\n", tid, tax.join(";").gsub(" ","_").tr("[]()",""))
end
back to top