Esempio n. 1
0
    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
Esempio n. 2
0
    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
Esempio n. 3
0
    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
Esempio n. 4
0
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()