Method: NewickTree#compare

Defined in:
lib/Newick.rb

#compare(tree) ⇒ Object

returns lists of clades different between two trees



502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
# File 'lib/Newick.rb', line 502

def compare(tree)
  tree1 = self.dup.unroot
  tree2 = tree.dup.unroot

  diff1 = []
  diff2 = []
  if (tree1.taxa == tree2.taxa)
    clades1 = tree1.clades
    clades2 = tree2.clades
    clades1.each do |clade|
      if (!clades2.include?(clade))
        diff1.push(clade)
      end
    end
    clades2.each do |clade|
      if (!clades1.include?(clade))
        diff2.push(clade)
      end
    end
  else
    raise NewickParseError, "The trees have different taxa!"
  end
  return diff1, diff2
end