def test_surf_fs_asc(self): s = surf.generate_sphere(5) * 100 _, fn = tempfile.mkstemp('surf', 'test') surf_fs_asc.write(fn, s, overwrite=True) t = surf_fs_asc.read(fn) os.remove(fn) assert_array_almost_equal(s.vertices, t.vertices) assert_array_almost_equal(s.vertices, t.vertices) theta = np.asarray([0, 0., 180.]) r = s.rotate(theta, unit='deg') l2r = surf_fs_asc.sphere_reg_leftrightmapping(s, r) l2r_expected = [0, 1, 2, 6, 5, 4, 3, 11, 10, 9, 8, 7, 15, 14, 13, 12, 16, 19, 18, 17, 21, 20, 23, 22, 26, 25, 24] assert_array_equal(l2r, np.asarray(l2r_expected)) sides_facing = 'apism' for side_facing in sides_facing: l, r = surf_fs_asc.hemi_pairs_reposition(s + 10., t + (-10.), side_facing) m = surf.merge(l, r) # not sure at the moment why medial rotation # messes up - but leave for now eps = 666 if side_facing == 'm' else .001 assert_true((abs(m.center_of_mass) < eps).all())
def test_surf_fs_asc(self): s = surf.generate_sphere(5) * 100 _, fn = tempfile.mkstemp('surf', 'test') surf_fs_asc.write(fn, s, overwrite=True) t = surf_fs_asc.read(fn) os.remove(fn) assert_array_almost_equal(s.vertices, t.vertices) assert_array_almost_equal(s.vertices, t.vertices) theta = np.asarray([0, 0., 180.]) r = s.rotate(theta, unit='deg') l2r = surf_fs_asc.sphere_reg_leftrightmapping(s, r) l2r_expected = [ 0, 1, 2, 6, 5, 4, 3, 11, 10, 9, 8, 7, 15, 14, 13, 12, 16, 19, 18, 17, 21, 20, 23, 22, 26, 25, 24 ] assert_array_equal(l2r, np.asarray(l2r_expected)) sides_facing = 'apism' for side_facing in sides_facing: l, r = surf_fs_asc.hemi_pairs_reposition(s + 10., t + (-10.), side_facing) m = surf.merge(l, r) # not sure at the moment why medial rotation # messes up - but leave for now eps = 666 if side_facing == 'm' else .001 assert_true((abs(m.center_of_mass) < eps).all())
def run_mapico(config, env): '''run MapIcosehedron to convert surfaces to standard topology''' sumadir = config['sumadir'] firstcmd = 'cd "%s" || exit 1' % sumadir cmds = [] icolds, hemis = _get_hemis_icolds(config) sid = config['sid'] # subject id for icold in icolds: icoprefix = config['mi_icopat'] % icold spherefns = [] for hemi in hemis: if not config['overwrite']: # the last file that is generated by MapIcosahedron lastsurffn = '%s/%s%sh.sphere.reg.asc' % ( sumadir, config['mi_icopat'] % icold, hemi) spherefns.append(lastsurffn) if os.path.exists(lastsurffn): print( "Seems MapIcosahedron was already run for %sh with ld=%d" % (hemi, icold)) continue cmd = ( 'MapIcosahedron -overwrite -spec %s_%sh.spec -ld %d -prefix %s' % (sid, hemi, icold, icoprefix)) cmds.append(cmd) if cmds: cmd = '%s;%s' % (firstcmd, ';'.join(cmds)) utils.run_cmds(cmd, env) cmds = [] if len(spherefns) == 2 and 'l' in hemis and 'r' in hemis: spheres = map(surf.read, spherefns) mapfn = (config['mi_icopat'] % icold) + config['hemimappingsuffix'] mappathfn = os.path.join(sumadir, mapfn) if config['overwrite'] or not os.path.exists(mappathfn): eps = .001 print "Computing bijection between nodes (ico=%d) - this may take a while" % icold bijection = surf_fs_asc.sphere_reg_leftrightmapping( spheres[0], spheres[1], eps) with open(mappathfn, 'w') as f: f.write('\n'.join(map(str, bijection))) print "Written bijection to %s" % mappathfn
def run_mapico(config, env): '''run MapIcosehedron to convert surfaces to standard topology''' sumadir = config['sumadir'] firstcmd = 'cd "%s" || exit 1' % sumadir cmds = [] icolds, hemis = _get_hemis_icolds(config) sid = config['sid'] # subject id for icold in icolds: icoprefix = config['mi_icopat'] % icold spherefns = [] for hemi in hemis: if not config['overwrite']: # the last file that is generated by MapIcosahedron lastsurffn = '%s/%s%sh.sphere.reg.asc' % (sumadir, config['mi_icopat'] % icold, hemi) spherefns.append(lastsurffn) if os.path.exists(lastsurffn): print("Seems MapIcosahedron was already run for %sh with ld=%d" % (hemi, icold)) continue cmd = ('MapIcosahedron -overwrite -spec %s_%sh.spec -ld %d -prefix %s' % (sid, hemi, icold, icoprefix)) cmds.append(cmd) if cmds: cmd = '%s;%s' % (firstcmd, ';'.join(cmds)) utils.run_cmds(cmd, env) cmds = [] if len(spherefns) == 2 and 'l' in hemis and 'r' in hemis: spheres = map(surf.read, spherefns) mapfn = (config['mi_icopat'] % icold) + config['hemimappingsuffix'] mappathfn = os.path.join(sumadir, mapfn) if config['overwrite'] or not os.path.exists(mappathfn): eps = .001 print "Computing bijection between nodes (ico=%d) - this may take a while" % icold bijection = surf_fs_asc.sphere_reg_leftrightmapping(spheres[0], spheres[1], eps) with open(mappathfn, 'w') as f: f.write('\n'.join(map(str, bijection))) print "Written bijection to %s" % mappathfn