Difference between revisions of "NeXML and RDF API for BioRuby"

From Phyloinformatics
Jump to: navigation, search
(Parsing)
(update)
 
(40 intermediate revisions by the same user not shown)
Line 1: Line 1:
==Preface==
+
<strong>Note:</strong> This page has moved to: https://github.com/rvosa/bio-nexml/wiki/NeXML-API-for-BioRuby
The following document discusses the implementation of an NeXML parser and serializer and an RDF API for BioRuby. Note that this document is not final yet.
 
 
 
==Parsing==
 
Currently all the parsing is done at the start( i.e. no streaming ). This is likely to change later. Parse an NeXML file:
 
 
 
<syntaxhighlight lang="ruby">
 
  doc = Bio::NeXML::Parser.new( "trees.xml" )
 
  nexml = doc.parse
 
  nexml.class #Bio::NeXML::Nexml
 
</syntaxhighlight>
 
 
 
==Otus and Otu==
 
Taxa blocks are stored internally as a Ruby hash for faster 'id' based lookup.
 
 
 
  nexml.otus_set #a hash of otus objects indexed with 'id'
 
  nexml.otus #an array of otus objects
 
 
 
  #iterate over each otus object
 
  nexml.each_otus do |taxa|
 
    puts taxa.id
 
    puts taxa.label
 
  end
 
 
 
  #find an otus by id
 
  taxa1 = nexml.get_otus_by_id "taxa1"
 
  taxa1.class #Bio::NeXML::Otus
 
 
 
Similarly taxons are stored internally as a Ruby hash indexed with 'id'. To work with <code>otu</code> :
 
 
 
  taxa1.otu_set #a hash of otu objects indexed with 'id
 
  taxa1.otus #an array of otu objects
 
 
 
  #get an individual otu object given its id
 
  taxon1 = taxa1[ 'taxon1' ]
 
 
 
  #or iterate over each otu object
 
  taxa1.each do |taxon|
 
    puts taxon.id
 
    puts taxon.label
 
  end
 
 
 
Each <code>otus</code> object is an enumerable:
 
  taxa1.map &:id
 
 
 
== Trees and Tree ==
 
Get a <code>trees</code> object:
 
 
 
  nexml.trees #return an array of trees objects.
 
  trees1 = nexml.trees[0]
 
  trees1.class #Bio::NeXML::Trees
 
 
  #get the taxa to which the trees is linked to
 
  trees1.otus
 
 
 
Currently a <code>tree</code> can have only one root node. To work with an individual <code>tree</code> :
 
 
 
  #get a tree object with its 'id'
 
  tree1 = trees1[ 'tree1' ]
 
  tree1.class #Bio::NeXML::IntTree or Bio::NeXML::FloatTree
 
 
 
  #or iterate over each tree object
 
  trees1.each do |tree|
 
    puts tree.id
 
    puts tree.label
 
  end
 
 
 
All the available methods from <code>[http://bioruby.org/rdoc/classes/Bio/Tree.html#M001688 Bio::Tree]</code> class can be called on a <code>tree</code> object.
 
 
 
  node1 = tree.get_node_by_name "n3" #note name is same as id
 
  tree1.parents node1
 
 
 
A <code>trees</code> object is an enumerable:
 
  trees1.map &:id
 
  
 
[[Category:NeXML and RDF API for BioRuby]]
 
[[Category:NeXML and RDF API for BioRuby]]

Latest revision as of 19:06, 22 September 2011

Note: This page has moved to: https://github.com/rvosa/bio-nexml/wiki/NeXML-API-for-BioRuby