Source code for openalea.rsml.properties

"""
Management of the mtg plant and root properties in accordance to rsml format
"""

[docs] def set_rsml_properties(g, prop=[]): """ Set missing id, label and accession and properties indicated by `prop` prop: either 'all' or a list which can contain 'length' and 'parent-position' """ set_ids(g) set_label(g) set_accession(g) if prop=='all': prop = ['length', 'parent-position'] if 'length' in prop: set_root_length(g) if 'parent-position' in prop: set_parent_position(g)
[docs] def set_ids(g): """ Set missing `id` property of all g vertices to the mtg id """ ids = g.property('id') for vid in g: ids.setdefault(vid,vid) return ids
[docs] def set_label(g, default=['Scene','Plant','Root']): """ Set missing `label` of g vertices to the `default` one (w.r.t scale) """ label = g.property('label') def_max = len(default) for vid in g: label.setdefault(vid,default[min(g.scale(vid),def_max)]) return label
[docs] def set_accession(g, root_order=None, default=['PO:0020127','PO:0020121']): """ set missing accession property of root axes """ from .misc import root_vertices from .misc import root_order as get_order if root_order is None: root_order = get_order(g) accession = g.property('accession') def_max = len(default)-1 for axe in root_vertices(g): accession.setdefault(axe,default[min(root_order[axe]-1,def_max)]) return accession
[docs] def set_root_length(g): """ compute root axe length and add it to `g` """ from .measurements import root_length from .metadata import add_property_definition as add_prop_to_meta length = root_length(g) g.properties()['length'] = length add_prop_to_meta(g, label='length', type='real') return length
[docs] def set_parent_position(g): """ compute root axe length and add it to `g` """ from .measurements import parent_position from .metadata import add_property_definition as add_prop_to_meta parent_pos = parent_position(g) g.properties()['parent-position'] = parent_pos add_prop_to_meta(g, label='parent-position', type='real') return parent_pos