Class: Bio::PhyloXML::Node

Inherits:
Object show all
Defined in:
lib/bio/db/phyloxml/phyloxml_elements.rb

Overview

Description

Class to hold clade element of phyloXML.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeNode

Returns a new instance of Node


220
221
222
223
224
225
226
227
228
# File 'lib/bio/db/phyloxml/phyloxml_elements.rb', line 220

def initialize
  @confidences = []
  @sequences = []
  @taxonomies = []
  @distributions = []
  @references = []
  @properties = []
  @other = []
end

Instance Attribute Details

#binary_charactersObject

BinaryCharacters object. The names and/or counts of binary characters present, gained, and lost at the root of a clade.


202
203
204
# File 'lib/bio/db/phyloxml/phyloxml_elements.rb', line 202

def binary_characters
  @binary_characters
end

#colorObject

BranchColor object. Apply for the whole clade unless overwritten in sub-clade.


193
194
195
# File 'lib/bio/db/phyloxml/phyloxml_elements.rb', line 193

def color
  @color
end

#confidencesObject

Array of Confidence objects. Indicates the support for a clade/parent branch.


190
191
192
# File 'lib/bio/db/phyloxml/phyloxml_elements.rb', line 190

def confidences
  @confidences
end

#dateObject

Date object. A date associated with a clade/node.


208
209
210
# File 'lib/bio/db/phyloxml/phyloxml_elements.rb', line 208

def date
  @date
end

#distributionsObject

Array of Distribution objects. The geographic distribution of the items of a clade (species, sequences), intended for phylogeographic applications.


205
206
207
# File 'lib/bio/db/phyloxml/phyloxml_elements.rb', line 205

def distributions
  @distributions
end

#eventsObject

Events at the root node of a clade (e.g. one gene duplication).


171
172
173
# File 'lib/bio/db/phyloxml/phyloxml_elements.rb', line 171

def events
  @events
end

#id_sourceObject

String. Used to link other elements to a clade (node) (on the xml-level).


174
175
176
# File 'lib/bio/db/phyloxml/phyloxml_elements.rb', line 174

def id_source
  @id_source
end

#nameObject

String. Name of the node.


177
178
179
# File 'lib/bio/db/phyloxml/phyloxml_elements.rb', line 177

def name
  @name
end

#node_idObject

Id object


196
197
198
# File 'lib/bio/db/phyloxml/phyloxml_elements.rb', line 196

def node_id
  @node_id
end

#otherObject

Array of Other objects. Used to save additional information from other than PhyloXML namspace.


218
219
220
# File 'lib/bio/db/phyloxml/phyloxml_elements.rb', line 218

def other
  @other
end

#propertiesObject

An array of Property objects, for example depth for sea animals.


214
215
216
# File 'lib/bio/db/phyloxml/phyloxml_elements.rb', line 214

def properties
  @properties
end

#referencesObject

Array of Reference objects. A literature reference for a clade.


211
212
213
# File 'lib/bio/db/phyloxml/phyloxml_elements.rb', line 211

def references
  @references
end

#sequencesObject

Array of Sequence objects. Represents a molecular sequence (Protein, DNA, RNA) associated with a node.


199
200
201
# File 'lib/bio/db/phyloxml/phyloxml_elements.rb', line 199

def sequences
  @sequences
end

#taxonomiesObject

Array of Taxonomy objects. Describes taxonomic information for a clade.


187
188
189
# File 'lib/bio/db/phyloxml/phyloxml_elements.rb', line 187

def taxonomies
  @taxonomies
end

#widthObject

Float. Branch width for this node (including parent branch). Applies for the whole clade unless overwritten in sub-clades.


180
181
182
# File 'lib/bio/db/phyloxml/phyloxml_elements.rb', line 180

def width
  @width
end

Instance Method Details

#extract_biosequence(seq_i = 0) ⇒ Object

Extracts the relevant information from node (specifically taxonomy and sequence) to create Bio::Sequence object. Node can have several sequences, so parameter to this method is to specify which sequence to extract.


Returns

Bio::Sequence


268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
# File 'lib/bio/db/phyloxml/phyloxml_elements.rb', line 268

def extract_biosequence(seq_i=0)

  seq = @sequences[seq_i].to_biosequence
  seq.classification = []
  @taxonomies.each do |t|
    seq.classification << t.scientific_name
    if t.rank == "species"
      seq.species = t.scientific_name
    end
  end

  #seq.division => .. http://www.ebi.ac.uk/embl/Documentation/User_manual/usrman.html#3_2
  # It doesn't seem there is anything in PhyloXML corresponding to this.

  return seq
end

#to_biotreenodeObject

Converts to a Bio::Tree::Node object. If it contains several taxonomies Bio::Tree::Node#scientific name will get the scientific name of the first taxonomy.

If there are several confidence values, the first with bootstrap type will be returned as Bio::Tree::Node#bootstrap

tree = phyloxmlparser.next_tree

node = tree.get_node_by_name(“A”).to_biotreenode


Returns

Bio::Tree::Node


244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
# File 'lib/bio/db/phyloxml/phyloxml_elements.rb', line 244

def to_biotreenode
  node = Bio::Tree::Node.new
  node.name = @name
  node.scientific_name = @taxonomies[0].scientific_name if not @taxonomies.empty?
  #@todo what if there are more?
  node.taxonomy_id = @taxonomies[0].taxononmy_id if @taxonomies[0] != nil

  if not @confidences.empty?
    @confidences.each do |confidence|
      if confidence.type == "bootstrap"
        node.bootstrap = confidence.value
        break
      end
    end
  end      
  return node
end

#to_xml(branch_length, write_branch_length_as_subelement) ⇒ Object

Converts elements to xml representation. Called by PhyloXML::Writer class.


286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
# File 'lib/bio/db/phyloxml/phyloxml_elements.rb', line 286

def to_xml(branch_length,  write_branch_length_as_subelement)
  clade = LibXML::XML::Node.new('clade')
  
  PhyloXML::Writer.generate_xml(clade, self, [[:simple, 'name', (defined? @name) ? @name : nil]])

  if branch_length != nil       
    if write_branch_length_as_subelement
      clade << LibXML::XML::Node.new('branch_length', branch_length.to_s)
    else
      clade["branch_length"] = branch_length.to_s
    end
  end

  #generate all elements, except clade
  PhyloXML::Writer.generate_xml(clade, self, [
      [:attr, "id_source"],
      [:objarr, 'confidence', 'confidences'],
      [:simple, 'width', (defined? @width) ? @width : nil],
      [:complex, 'branch_color', (defined? @branch_color) ? @branch_color : nil],
      [:simple, 'node_id', (defined? @node_id) ? @node_id : nil],
      [:objarr, 'taxonomy', 'taxonomies'],
      [:objarr, 'sequence', 'sequences'],
      [:complex, 'events', (defined? @events) ? @events : nil],
      [:complex, 'binary_characters', (defined? @binary_characters) ? @binary_characters : nil],
      [:objarr, 'distribution', 'distributions'],
      [:complex, 'date', (defined? @date) ? @date : nil],
      [:objarr, 'reference', 'references'],
      [:objarr, 'propery', 'properties']])
 
  return clade
end