@@ -29,7 +29,6 @@ def get_rect_height(name, obj):
2929 nlines += len (getattr (obj , '_all_attrs' , []))
3030 nlines += len (getattr (obj , '_single_child_objects' , []))
3131 nlines += len (getattr (obj , '_multi_child_objects' , []))
32- nlines += len (getattr (obj , '_multi_parent_objects' , []))
3332 return nlines * line_heigth
3433
3534
@@ -58,7 +57,7 @@ def calc_coordinates(pos, height):
5857 return pos [0 ], y
5958
6059
61- def generate_diagram (filename , rect_pos , rect_width , figsize ):
60+ def generate_diagram (rect_pos , rect_width , figsize ):
6261 rw = rect_width
6362
6463 fig = pyplot .figure (figsize = figsize )
@@ -67,7 +66,7 @@ def generate_diagram(filename, rect_pos, rect_width, figsize):
6766 all_h = {}
6867 objs = {}
6968 for name in rect_pos :
70- objs [name ] = fake_neo (name )
69+ objs [name ] = fake_neo (name , cascade = False )
7170 all_h [name ] = get_rect_height (name , objs [name ])
7271
7372 # draw connections
@@ -81,6 +80,8 @@ def generate_diagram(filename, rect_pos, rect_width, figsize):
8180
8281 for r in range (3 ):
8382 for ch_name in relationships [r ]:
83+ if ch_name not in rect_pos :
84+ continue
8485 x1 , y1 = calc_coordinates (rect_pos [ch_name ], all_h [ch_name ])
8586 x2 , y2 = calc_coordinates (pos , all_h [name ])
8687
@@ -100,8 +101,7 @@ def generate_diagram(filename, rect_pos, rect_width, figsize):
100101 for name , pos in rect_pos .items ():
101102 htotal = all_h [name ]
102103 obj = objs [name ]
103- allrelationship = (list (getattr (obj , '_child_containers' , []))
104- + list (getattr (obj , '_multi_parent_containers' , [])))
104+ allrelationship = list (getattr (obj , '_child_containers' , []))
105105
106106 rect = Rectangle (pos , rect_width , htotal ,
107107 facecolor = 'w' , edgecolor = 'k' , linewidth = 2. )
@@ -123,8 +123,7 @@ def generate_diagram(filename, rect_pos, rect_width, figsize):
123123 ax .add_patch (rect )
124124
125125 # multi relationship
126- relationship = (list (getattr (obj , '_multi_child_objects' , []))
127- + list (getattr (obj , '_multi_parent_containers' , [])))
126+ relationship = list (getattr (obj , '_multi_child_objects' , []))
128127 pos2 = (pos [1 ] + htotal - line_heigth * (1.5 + len (relationship ))
129128 - rect_height )
130129 rect_height = len (relationship ) * line_heigth
@@ -196,28 +195,38 @@ def generate_diagram(filename, rect_pos, rect_width, figsize):
196195
197196 ax .set_xticks ([])
198197 ax .set_yticks ([])
199- fig .savefig (filename , dpi = dpi )
198+
199+ return fig
200200
201201
202202def generate_diagram_simple ():
203203 figsize = (18 , 12 )
204204 rw = rect_width = 3.
205205 bf = blank_fact = 1.2
206- rect_pos = {'Block' : (.5 + rw * bf * 0 , 4 ),
206+ rect_pos = {
207+ # col 0
208+ 'Block' : (.5 + rw * bf * 0 , 4 ),
209+ # col 1
207210 'Segment' : (.5 + rw * bf * 1 , .5 ),
211+ 'Group' : (.5 + rw * bf * 1 , 6.5 ),
212+ # col 2 : not do for now too complicated with our object generator
213+ # 'ChannelView': (.5 + rw * bf * 2, 5),
214+
215+ # col 2.5
216+ 'ImageSequence' : (.5 + rw * bf * 2.5 , 3.0 ),
217+ 'SpikeTrain' : (.5 + rw * bf * 2.5 , 0.5 ),
218+ # col 3
219+ 'IrregularlySampledSignal' : (.5 + rw * bf * 3 , 9 ),
220+ 'AnalogSignal' : (.5 + rw * bf * 3 , 7. ),
221+ # col 3
208222 'Event' : (.5 + rw * bf * 4 , 3.0 ),
209223 'Epoch' : (.5 + rw * bf * 4 , 1.0 ),
210- 'Group' : (.5 + rw * bf * 1 , 7.5 ),
211- 'ChannelView' : (.5 + rw * bf * 2. , 9.9 ),
212- 'SpikeTrain' : (.5 + rw * bf * 3 , 7.5 ),
213- 'IrregularlySampledSignal' : (.5 + rw * bf * 3 , 0.5 ),
214- 'AnalogSignal' : (.5 + rw * bf * 3 , 4.9 ),
224+
215225 }
216226 # todo: add ImageSequence, RegionOfInterest
217- generate_diagram ('simple_generated_diagram.svg' ,
218- rect_pos , rect_width , figsize )
219- generate_diagram ('simple_generated_diagram.png' ,
220- rect_pos , rect_width , figsize )
227+ fig = generate_diagram (rect_pos , rect_width , figsize )
228+ fig .savefig ('simple_generated_diagram.png' , dpi = dpi )
229+ fig .savefig ('simple_generated_diagram.svg' , dpi = dpi )
221230
222231
223232if __name__ == '__main__' :
0 commit comments