def test_terminal_br(self): eldata = placentagen.import_exelem_tree(TESTDATA_FILENAME1) noddata = placentagen.import_exnode_tree(TESTDATA_FILENAME) term_br = placentagen.calc_terminal_branch(noddata['nodes'], eldata['elems']) print(term_br['terminal_elems']) self.assertTrue(term_br['terminal_elems'][0] == 1)
def test_terminals_elem_general_absent(self): noddata = placentagen.import_exnode_tree(TESTDATA_FILENAME) eldata = placentagen.import_exelem_tree(TESTDATA_FILENAME1) term_br = placentagen.calc_terminal_branch(noddata['nodes'], eldata['elems']) placenta_list = [1] rectangular_mesh = {} rectangular_mesh['elems'] = np.zeros((8, 9), dtype=int) rectangular_mesh['nodes'] = [[0., -1., -1.], [1., -1., -1.], [0., 0., -1.], [1., 0., -1.], [0., -1., 0.], [1., -1., 0.], [0., 0., 0.], [1., 0., 0.]] rectangular_mesh['elems'][1] = [0, 0, 1, 2, 3, 4, 5, 6, 7] term_grid = placentagen.terminals_in_sampling_grid(rectangular_mesh, placenta_list, term_br, noddata['nodes']) self.assertTrue( np.sum(term_grid['terminal_elems']) == 0) # all must be zero as could not locate any terminal br
def test_term_br_loc(self): eldata = placentagen.import_exelem_tree(TESTDATA_FILENAME1) nodedata = placentagen.import_exnode_tree(TESTDATA_FILENAME) term_br = placentagen.calc_terminal_branch(nodedata['nodes'], eldata['elems']) volume = 1 # mm^3 thickness = 1 # mm ellipticity = 1.00 # no units spacing = 1.0 # mm rectangular_mesh = placentagen.gen_rectangular_mesh( volume, thickness, ellipticity, spacing, spacing, spacing) terminals_in_grid = placentagen.terminals_in_sampling_grid( rectangular_mesh, term_br, nodedata['nodes']) test_array = terminals_in_grid == [[0, 1, 0, 1]] self.assertTrue(test_array.all)
node_file='full.exnode' stem_file='stem_xy.txt' velocity=26.5#mm3 per sec inlet and outlet vel of spiral artery and decidual vein #################################################################################################################################### total_start = time.time() #Read in exnode and exelem files desrcibing whole placenta tree nodes_input=pg.import_exnode_tree(node_file) elems_input=pg.import_exelem_tree(el_file) #Define element radii by Strahler order elem_radius = pg.define_radius_by_order(nodes_input['nodes'],elems_input['elems'],'strahler',0,start_radius,strahler_order) pg.export_exfield_1d_linear(elem_radius, 'arteries', 'radius', 'artery_radius') #Calculate location of terminal branches terminal_branches = pg.calc_terminal_branch(nodes_input['nodes'],elems_input['elems']) #define rectangular mesh rectangular_mesh = pg.gen_rectangular_mesh(volume, thickness, ellipticity,spacing,spacing,spacing) pg.export_ex_coords(rectangular_mesh['nodes'],'samplingmesh','sampling_mesh','exnode') pg.export_exelem_3d_linear(rectangular_mesh['elems'],'samplingmesh','sampling_mesh') start = time.time() #define the placental volume in each element of the sampling grid placental_volume= pg.ellipse_volume_to_grid(rectangular_mesh, volume, thickness, ellipticity,20) pg.export_exelem_3d_linear_list(rectangular_mesh['elems'], placental_volume['non_empty_rects'],'samplingmesh','sm_nonempty') end = time.time() #Locate terminals in sampling grid start = time.time() terminals_in_grid = pg.terminals_in_sampling_grid_fast(rectangular_mesh,terminal_branches,nodes_input['nodes'])