Пример #1
0
 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)
Пример #2
0
 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
Пример #3
0
    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'])