- if ( desc.count( "[" ) != desc.count( "]" ) )
- Util.fatal_error( PRG_NAME, "illegal bracket count in: " + desc )
- end
- species = nil
- species_map.each_key do | key |
- if desc =~ /[\b|_]#{key}\b/ # Added boundaries to prevent e.g. RAT matching ARATH.
- species = species_map[ key ]
- new_desc = counter.to_s( 16 ) + "_" + species
- break
- end
- end
- if species == nil
- if desc =~/.*\[(\S{3,}?)\]/
- species = $1
- species.strip!
- species.upcase!
- species.gsub!( /\s+/, " " )
- species.gsub!( /-/, "" )
- species.gsub!( /\)/, "" )
- species.gsub!( /\(/, "" )
- species.gsub!( /\'/, "" )
- if species =~ /\S+\s\S+/ || species =~ /\S{3,5}/
- if species =~ /(\S+)\s(\S+)/
- code = $1[ 0..2 ] + $2[ 0..1 ]
- elsif species =~ /\S{3,5}/
- code = species
- elsif species.count( " " ) > 2
- species =~ /(\S+)\s+(\S+)\s+(\S+)$/
- third_last = $1
- second_last = $2
- last = $3
- code = code[ 0 ] + third_last[ 0 ] + second_last[ 0 ] + last[ 0 ] + last[ last.size - 1 ]
- elsif species.count( " " ) > 1
- species =~ /(\S+)\s+(\S+)$/
- second_last = $1
- last = $2
- code = code[ 0..1 ] + second_last[ 0 ] + last[ 0 ] + last[ last.size - 1 ]
- end
- new_desc = counter.to_s( 16 ) + "_" + code
- if @taxonomies.has_key?( code )
- if ( !@taxonomies.has_value?( species ) )
- Util.fatal_error( PRG_NAME, "code [#{code}] is not unique in [#{desc}]" )
- end
- else
- if ( @taxonomies.has_value?( species ) )
- Util.fatal_error( PRG_NAME, "genome [#{species}] is not unique in [#{desc}]" )
- else
- @taxonomies[ code ] = species
- end
- end
- else
- Util.fatal_error( PRG_NAME, "illegal format [#{species}] in: " + desc )
- end
- else
- Util.fatal_error( PRG_NAME, "illegal format in: " + desc )
- end
- end
- else
- species = nil
- my_species = nil
- species_map.each_key do | key |
- if desc =~ /#{key}/
- species = species_map[ key ]
- species = species.gsub( /\s+/, "" )
- species = species.gsub( /_/, " " )
- my_species = species
- if species =~ /(\S+)\s+(\S+)/
- species = $1[0..2] + $2[0..1]
- end
- species = species.gsub( /\s+/, "" )
- species = species.slice(0, 5)
- species.upcase!
- break
- end
- end
- if species == nil
- Util.fatal_error( PRG_NAME, "species not found in: " + desc )