Index: mds-and-trees/tree-genealogy.py
===================================================================
--- mds-and-trees/tree-genealogy.py (revision 627)
+++ mds-and-trees/tree-genealogy.py (revision 628)
@@ -37,19 +37,19 @@
'dots': {
'color': {
- 'meaning': 'depth',
- 'start': 'purple',
+ 'meaning': 'Lifespan',
+ 'start': 'red',
'end': 'green',
'bias': 1
},
'size': {
- 'meaning': 'children',
+ 'meaning': 'EnergyEaten',
'start': 1,
- 'end': 5,
+ 'end': 6,
'bias': 0.5
},
'opacity': {
- 'meaning': 'children',
- 'start': 0.3,
- 'end': 0.8,
+ 'meaning': 'EnergyEaten',
+ 'start': 0.2,
+ 'end': 1,
'bias': 1
}
@@ -292,5 +292,6 @@
def add_text(self, file, text, pos, anchor, style=''):
style = (style if style != '' else 'style="font-family: Arial; font-size: 12; fill: #000000;"')
- file.write('' + text + '')
+ # assuming font size 12, it should be taken from the style string!
+ file.write('' + text + '')
def add_dot(self, file, pos, style):
@@ -562,5 +563,5 @@
for i in range(len(self.props[prop])):
if self.props[prop][i] is not None:
- self.props[prop][i] = (self.props[prop][i] - min_val) / max_val
+ self.props[prop][i] = 0 if max_val == 0 else (self.props[prop][i] - min_val) / max_val
@@ -584,7 +585,11 @@
ids = {}
- def get_id(id):
- if id not in ids:
- ids[id] = len(ids)
+ def get_id(id, createOnError = True):
+ if createOnError:
+ if id not in ids:
+ ids[id] = len(ids)
+ else:
+ if id not in ids:
+ return None
return ids[id]
@@ -606,4 +611,5 @@
self.time = [0] * nodes
self.kind = [0] * nodes
+ self.life_lenght = [0] * nodes
self.props = {}
@@ -652,5 +658,5 @@
if prop not in default_props:
if prop not in self.props:
- self.props[prop] = [None for i in range(nodes)]
+ self.props[prop] = [0 for i in range(nodes)]
self.props[prop][creature_id] = creature[prop]
@@ -658,4 +664,14 @@
else:
raise LoadingError("[OFFSPRING] misses the 'FromIDs' field!")
+ if line_arr[0] == "[DIED]":
+ creature = json.loads(line_arr[1])
+ creature_id = get_id(creature["ID"], False)
+ if creature_id is not None:
+ for prop in creature:
+ if prop not in default_props:
+ if prop not in self.props:
+ self.props[prop] = [0 for i in range(nodes)]
+ self.props[prop][creature_id] = creature[prop]
+
if loaded_so_far >= max_nodes and max_nodes != 0: