[Bioperl-l] TreeIO nexus file parsing issue (bug?)
    kevin liu 
    kliu_cali at yahoo.com
       
    Sat Sep 10 15:42:01 EDT 2005
    
    
  
Hi,
  I'm posting a problem I ran across while using
Bio::TreeIO to convert trees from Nexus to Newick
format.
  Line 150 in nexus.pm reads:
  if( /^\s+(\S+)\s+([^\s\,\;]+)\s*([\,\;])?\s*$/ ) {
  It should really at least be changed to:
  if( /^\s*(\S+)\s+([^\s\,\;]+)\s*([\,\;])?\s*$/ ) {
  Thus, nexus.pm expects at least one space in front
of each line in the Translate block of the Nexus tree
file.
  Something like the sample Nexus tree file at
http://workshop.molecularevolution.org/resources/fileformats/tree_formats.php
 doesn't work! This ate up a bunch of my time until I
went through Jason Stajich's nexus.pm code. (file
below)
  #NEXUS 
Begin trees;  [Treefile saved Wed Jul 26 19:40:41
2000]
[output from your data run]
Translate 1 TRXEcoli, 2 TRXHomo, 3 TRXSacch, 4
erCaelA, 5 erCaelB, 6 erCaelC, 7 erHomoA, 8 erHomoB, 9
erHomoC, 10 erpCaelC ; tree PAUP_1 = [&U]
(1,((2,3),((((4,10),(5,8)),(6,9)),7))); End; 
  It needs to be something like:
#NEXUS 
Begin trees;  [Treefile saved Wed Jul 26 19:40:41
2000]
[output from your data run]
Translate 
 1 TRXEcoli, 
 2 TRXHomo, 
 3 TRXSacch, 
 4 erCaelA, 
 5 erCaelB, 
 6 erCaelC, 
 7 erHomoA, 
 8 erHomoB, 
 9 erHomoC, 
 10 erpCaelC ; 
tree PAUP_1 = [&U]
(1,((2,3),((((4,10),(5,8)),(6,9)),7))); End; 
  That will parse.
  What's annoying is that there aren't any error
messages in the event that there is a parse error - it
just fails silently, and then next_tree returns Undef
as if there were no tree. :(
  
           - Kevin
__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 
    
    
More information about the Bioperl-l
mailing list