Source code for openalea.adel.label

"""
Labels for the canestra file management.
"""


[docs] class Label: """Label is an object to deals with can file cryptic label. It provide a way to store various information in one field. """ def __init__(self): self._label = list("000000000000") def _set_optical_id(self, optic_id): oid = list(str(optic_id)) self._label[:-11] = oid def _get_optical_id(self): return int("".join(self._label[:-11])) optical_id = property(_get_optical_id, _set_optical_id) def _get_plant_id(self): return int("".join(self._label[-11:-6])) def _set_plant_id(self, plant_id): pid = list(str(plant_id)) n = len(pid) if n < 5: p = list("0" * (5 - n)) pid = p + pid elif n > 5: raise "Unable to add a too large plant id %d" % plant_id self._label[-11:-6] = pid plant_id = property(_get_plant_id, _set_plant_id) def _get_leaf_id(self): return int("".join(self._label[-6:-3])) def _set_leaf_id(self, leaf_id): lid = list(str(leaf_id)) n = len(lid) if n < 3: l = list("0" * (3 - n)) lid = l + lid elif n > 3: raise "Unable to add a too large leaf id %d" % leaf_id self._label[-6:-3] = lid leaf_id = property(_get_leaf_id, _set_leaf_id) def _get_transparency(self): return int(bool(self.leaf_id)) transparency = property(_get_transparency)
[docs] def is_soil(self): return (self.optical_id == 0) and (self.transparency == 0)
[docs] def is_leaf(self): return self.transparency > 0
[docs] def is_stem(self): return (self.optical_id != 0) and (self.transparency == 0)
def __str__(self): return "".join(self._label) def _get_elt_id(self): return int("".join(self._label[-3:])) def _set_elt_id(self, id): eid = list(str(id)) n = len(eid) if n < 3: p = list("0" * (3 - n)) eid = p + eid elif n > 3: raise "Unable to add a too large element id %d" % id self._label[-3:] = eid elt_id = property(_get_elt_id, _set_elt_id)