| Class | Bio::Nexus |
| In: |
lib/bio/db/nexus.rb
|
| Parent: | Object |
Bio::Nexus is a parser for nexus formatted data. It contains classes and constants enabling the representation and processing of nexus data.
# Parsing a nexus formatted string str: nexus = Bio::Nexus.new( nexus_str ) # Obtaining of the nexus blocks as array of GenericBlock or # any of its subclasses (such as DistancesBlock): blocks = nexus.get_blocks # Getting a block by name: my_blocks = nexus.get_blocks_by_name( "my_block" ) # Getting distance blocks: distances_blocks = nexus.get_distances_blocks # Getting trees blocks: trees_blocks = nexus.get_trees_blocks # Getting data blocks: data_blocks = nexus.get_data_blocks # Getting characters blocks: character_blocks = nexus.get_characters_blocks # Getting taxa blocks: taxa_blocks = nexus.get_taxa_blocks
| END_OF_LINE | = | "\n" |
| INDENTENTION | = | " " |
| DOUBLE_QUOTE | = | "\"" |
| SINGLE_QUOTE | = | "'" |
| BEGIN_NEXUS | = | "#NEXUS" |
| DELIMITER | = | ";" |
| BEGIN_BLOCK | = | "Begin" |
| END_BLOCK | = | "End" + DELIMITER |
| BEGIN_COMMENT | = | "[" |
| END_COMMENT | = | "]" |
| TAXA | = | "Taxa" |
| CHARACTERS | = | "Characters" |
| DATA | = | "Data" |
| DISTANCES | = | "Distances" |
| TREES | = | "Trees" |
| TAXA_BLOCK | = | TAXA + DELIMITER |
| CHARACTERS_BLOCK | = | CHARACTERS + DELIMITER |
| DATA_BLOCK | = | DATA + DELIMITER |
| DISTANCES_BLOCK | = | DISTANCES + DELIMITER |
| TREES_BLOCK | = | TREES + DELIMITER |
| DIMENSIONS | = | "Dimensions" |
| FORMAT | = | "Format" |
| NTAX | = | "NTax" |
| NCHAR | = | "NChar" |
| DATATYPE | = | "DataType" |
| TAXLABELS | = | "TaxLabels" |
| MATRIX | = | "Matrix" |
Creates a new nexus parser for ‘nexus_str’.
Arguments:
# File lib/bio/db/nexus.rb, line 177
177: def initialize( nexus_str )
178: @blocks = Array.new
179: @current_cmd = nil
180: @current_subcmd = nil
181: @current_block_name = nil
182: @current_block = nil
183: parse( nexus_str )
184: end
Returns an Array of all blocks found in the String ‘nexus_str’ set via Bio::Nexus.new( nexus_str ).
| Returns: | Array of GenericBlocks or any of its subclasses |
# File lib/bio/db/nexus.rb, line 192
192: def get_blocks
193: @blocks
194: end
A convenience methods which returns an array of all nexus blocks for which the name equals ‘name’ found in the String ‘nexus_str’ set via Bio::Nexus.new( nexus_str ).
Arguments:
| Returns: | Array of GenericBlocks or any of its subclasses |
# File lib/bio/db/nexus.rb, line 204
204: def get_blocks_by_name( name )
205: found_blocks = Array.new
206: @blocks.each do | block |
207: if ( name == block.get_name )
208: found_blocks.push( block )
209: end
210: end
211: found_blocks
212: end
A convenience methods which returns an array of all characters blocks.
| Returns: | Array of CharactersBlocks |
# File lib/bio/db/nexus.rb, line 228
228: def get_characters_blocks
229: get_blocks_by_name( CHARACTERS_BLOCK.chomp( ";").downcase )
230: end
A convenience methods which returns an array of all data blocks.
| Returns: | Array of DataBlocks |
# File lib/bio/db/nexus.rb, line 219
219: def get_data_blocks
220: get_blocks_by_name( DATA_BLOCK.chomp( ";").downcase )
221: end
A convenience methods which returns an array of all distances blocks.
| Returns: | Array of DistancesBlock |
# File lib/bio/db/nexus.rb, line 246
246: def get_distances_blocks
247: get_blocks_by_name( DISTANCES_BLOCK.chomp( ";").downcase )
248: end
A convenience methods which returns an array of all taxa blocks.
| Returns: | Array of TaxaBlocks |
# File lib/bio/db/nexus.rb, line 255
255: def get_taxa_blocks
256: get_blocks_by_name( TAXA_BLOCK.chomp( ";").downcase )
257: end
A convenience methods which returns an array of all trees blocks.
| Returns: | Array of TreesBlocks |
# File lib/bio/db/nexus.rb, line 237
237: def get_trees_blocks
238: get_blocks_by_name( TREES_BLOCK.chomp( ";").downcase )
239: end
Returns a String listing how many of each blocks it parsed.
| Returns: | String |
# File lib/bio/db/nexus.rb, line 263
263: def to_s
264: str = String.new
265: if get_blocks.length < 1
266: str << "empty"
267: else
268: str << "number of blocks: " << get_blocks.length.to_s
269: if get_characters_blocks.length > 0
270: str << " [characters blocks: " << get_characters_blocks.length.to_s << "] "
271: end
272: if get_data_blocks.length > 0
273: str << " [data blocks: " << get_data_blocks.length.to_s << "] "
274: end
275: if get_distances_blocks.length > 0
276: str << " [distances blocks: " << get_distances_blocks.length.to_s << "] "
277: end
278: if get_taxa_blocks.length > 0
279: str << " [taxa blocks: " << get_taxa_blocks.length.to_s << "] "
280: end
281: if get_trees_blocks.length > 0
282: str << " [trees blocks: " << get_trees_blocks.length.to_s << "] "
283: end
284: end
285: str
286: end