class MiGA::Cli::Action::TaxDist
def traverse_taxonomy(tab, dist)
def traverse_taxonomy(tab, dist) cli.say 'Traversing taxonomy' rank_i = 0 Taxonomy.KNOWN_RANKS.each do |rank| next if rank == :ns rank_n = 0 rank_i += 1 in_rank = nil ds_name = [] File.open(tab, 'r') do |fh| fh.each_line do |ln| if ln =~ /^ {0,#{(rank_i - 1) * 2}}\S+:\S+:/ in_rank = nil ds_name = [] elsif ln =~ /^ {#{rank_i * 2}}(#{rank}:(\S+)):/ in_rank = $2 == '?' ? nil : $1 ds_name = [] elsif ln =~ /^ *# (\S+)/ && !in_rank.nil? ds_i = $1 ds_name << ds_i ds_name.each do |ds_j| k = cannid(ds_i, ds_j) next if dist[k].nil? rank_n += 1 dist[k][3] = rank_i dist[k][4].unshift in_rank end end end end cli.say "o #{rank}: #{rank_n} pairs of datasets" end dist end