def test_16_models_stats(self): if CHKTIME: t0 = time() models = load_structuralmodels('models.pick') # write cmm models.write_cmm('.', model_num=2) model = load_impmodel_from_cmm('model.%s.cmm' % models[2]['rand_init']) # clean system('rm -f model.*') # stats self.assertEqual(200, round(model.distance(2, 3), 0)) self.assertTrue(9 <= round(model.distance(8, 20) / 100, 0) <= 10) self.assertEqual(round(30, 0), round(model.radius_of_gyration() / 20, 0)) self.assertEqual(400, round(model.contour() / 10, 0)) self.assertTrue( 21 <= round((model.shortest_axe() + model.longest_axe()) / 100, 0) <= 22) self.assertEqual([15, 16], model.inaccessible_particles(1000)) acc, num, acc_area, tot_area, bypt = model.accessible_surface( 150, superradius=200, nump=150) self.assertTrue(210 <= acc <= 240) self.assertTrue(500 <= num <= 600) self.assertEqual(0.4, round(acc_area, 1)) self.assertEqual(4, round(tot_area, 0)) self.assertEqual(101, len(bypt)) self.assertTrue(19 <= bypt[100][0] <= 22 and 8 <= bypt[100][1] <= 38 and 8 <= bypt[100][2] <= 23) if CHKTIME: print '16', time() - t0
def test_16_models_stats(self): if ONLY and "16" not in ONLY: return if CHKTIME: t0 = time() models = load_structuralmodels("models.pick") # write cmm models.write_cmm(".", model_num=2) model = load_impmodel_from_cmm("model.%s.cmm" % models[2]["rand_init"]) # clean system("rm -f model.*") # stats self.assertEqual(200, round(model.distance(2, 3), 0)) self.assertTrue(9 <= round(model.distance(8, 20) / 100, 0) <= 10) self.assertEqual(round(30, 0), round(model.radius_of_gyration() / 20, 0)) self.assertEqual(400, round(model.contour() / 10, 0)) self.assertTrue(21 <= round((model.shortest_axe() + model.longest_axe()) / 100, 0) <= 22) self.assertEqual([15, 16], model.inaccessible_particles(1000)) acc, num, acc_area, tot_area, bypt = model.accessible_surface(150, superradius=200, nump=150) self.assertTrue(210 <= acc <= 240) self.assertTrue(500 <= num <= 600) self.assertEqual(0.4, round(acc_area, 1)) self.assertEqual(4, round(tot_area, 0)) self.assertEqual(101, len(bypt)) self.assertTrue(19 <= bypt[100][0] <= 22 and 8 <= bypt[100][1] <= 38 and 8 <= bypt[100][2] <= 23) if CHKTIME: print "16", time() - t0
def test_16_models_stats(self): if CHKTIME: t0 = time() models = load_structuralmodels('models.pick') # write cmm models.write_cmm('.', model_num=2) model = load_impmodel_from_cmm('model.%s.cmm' % models[2]['rand_init']) # clean system('rm -f model.*') # stats self.assertEqual(200, round(model.distance(2, 3), 0)) self.assertEqual(11, round(model.distance(8, 20)/100, 0)) self.assertEqual(round(593, 0), round(model.radius_of_gyration(), 0)) self.assertEqual(400, round(model.contour()/10, 0)) self.assertEqual(21, round((model.shortest_axe()+model.longest_axe())/100, 0)) self.assertEqual([11, 16], model.inaccessible_particles(1000)) acc, num, acc_area, tot_area, bypt = model.accessible_surface( 150, superradius=200, nump=150) self.assertEqual(214, acc) self.assertEqual(502, num) self.assertEqual(0.4, round(acc_area, 1)) self.assertEqual(4, round(tot_area, 0)) self.assertEqual(101, len(bypt)) self.assertEqual(bypt[100], (21, 11, 8)) if CHKTIME: print '16', time() - t0
def main(): opts = get_options() if opts.model_path.endswith('.cmm'): model = load_impmodel_from_cmm(opts.model_path) elif opts.model_path.endswith('.xyz'): model = load_impmodel_from_xyz(opts.model_path) nump = int(opts.nump) radius = int(opts.radius) (accesible_parts, number_parts, accessible_area, total_area, by_part) = model.accessible_surface( radius, nump=nump, verbose=True, write_cmm_file=opts.outfcmm, include_edges=opts.slow, superradius=(int(opts.superradius) if opts.superradius else None)) print '\n GLOBAL STATS:\n -------------\n' print ' - accesible dots (of the mesh) : %s' % accesible_parts print ' - total number dots calculated : %s' % number_parts print ' - proportion of accesible dots : %.2f%%' % (100*float(accesible_parts)/number_parts) print ' - accessible area : %.4f square micrometers' % accessible_area print ' - total area (straight chromatin) : %.4f square micrometers' % total_area print ' - proportion of accesible surface : %.2f%%' % (100*float(accessible_area)/total_area) print '' if opts.outf: out = open(opts.outf, 'w') else: out = stdout for part, acc, ina in by_part: if opts.burry: burried = 1 if (100*float(ina) / (acc + ina)) > float(opts.burry) else 0 out.write('%s\t%.2f\n' % (part, burried)) else: try: out.write('%s\t%.2f\n' % (part, 100*float(ina) / (acc + ina))) except ZeroDivisionError: out.write('%s\t%s\n' % (part, 'nan')) out.close()