Exemplo n.º 1
0
def main(args0):
    args = get_parser().parse_args(args0)

    template="craterstats/config/default.plt"
    functions="craterstats/config/functions.txt"

    c = gm.read_textstructure(template if args.template is None else args.template)
    f = gm.read_textstructure(functions)

    if args.lcs:
        print(gm.bright("\nChronology systems:"))
        print('\n'.join(['{0} {1}'.format(i + 1, e['name']) for i, e in enumerate(f['chronology_system'])]))
        print(gm.bright("\nEquilibrium functions:"))
        print('\n'.join(['{0} {1}'.format(i + 1, e['name']) for i, e in enumerate(f['equilibrium'])]))
        print(gm.bright("\nEpoch systems:"))
        print('\n'.join(['{0} {1}'.format(i + 1, e['name']) for i, e in enumerate(f['epochs'])]))
        return

    if args.lpc:
        print(gm.bright("\nPlot symbols:"))
        print('\n'.join(['{0} {1} ({2})'.format(i, e[1], e[0]) for i, e in enumerate(cst.MARKERS)]))
        print(gm.bright("\nColours:"))
        print('\n'.join(['{0} {1}'.format(i, e[2]) for i, e in enumerate(cst.PALETTE)]))
        return

    if args.about:
        print('\n'.join(cst.ABOUT))
        return

    if args.src:
        source_cmds(args.src)
        return

    if args.demo:
        demo()
        return

    cps_dict = construct_cps_dict(args, c, f)
    cp_dicts = construct_plot_dicts(args, c)
    cpl = [cst.Craterplot(d) for d in cp_dicts]

    cps=cst.Craterplotset(cps_dict,craterplot=cpl)
    if cpl:
        if args.autoscale or not ('xrange' in cps_dict and 'yrange' in cps_dict):
            cps.autoscale()

    drawn=False
    for f in cps.format:
        if f in {'png','jpg','pdf','svg','tif'}:
            if not drawn:
                cps.draw()
                drawn=True
            cps.fig.savefig(cps_dict['out']+'.'+f, dpi=500, transparent=args.transparent)
        if f in {'txt'}:
            cps.create_summary_table()
Exemplo n.º 2
0
    def test_Craterplotset_summary(self):
        cp = cst.Craterplot(cratercount=self.cc, range=[.2, .7], type='d-fit')
        cps = cst.Craterplotset(cf=self.cf, pf=self.pf, craterplot=[cp])

        def get_cps_summary():
            with patch('sys.stdout', new_callable=io.StringIO) as m:
                cps.create_summary_table()
                table = m.getvalue().split('\n')
                return table[1][:145]  # trim off source file

        # the following results are not fundamental, but verified against CraterstatsII (see demo plots):
        # name,area,binning,d_min,d_max,method,resurf,n,n_event,age,age-,age+,a0,a0-,a0+,N(1)
        self.assertEqual(
            get_cps_summary(),
            'Pickering                  3036.6 pseudo-log   0.2   0.7     d-fit      0   313.0       313   0.668   0.613   0.722 -3.488 -3.525 -3.453 3.25e-04'
        )
        cp.UpdateSettings(binning='10/decade')
        self.assertEqual(
            get_cps_summary(),
            'Pickering                  3036.6  10/decade   0.2  0.79     d-fit      0   313.0       313   0.645   0.593   0.697 -3.503 -3.539 -3.469 3.14e-04'
        )
        cp.UpdateSettings(type='c-fit', resurf=1, binning='pseudo-log')
        self.assertEqual(
            get_cps_summary(),
            'Pickering                  3036.6 pseudo-log   0.2   0.7     c-fit      1   313.0       313   0.691   0.653   0.729 -3.472 -3.497 -3.449 3.37e-04'
        )
        cp.UpdateSettings(type='poisson', range=[.22, .43], resurf=0)
        self.assertEqual(
            get_cps_summary(),
            'Pickering                  3036.6 pseudo-log  0.22  0.43   poisson      0     223       223   0.684    0.64   0.731 -3.477 -3.506 -3.448 3.34e-04'
        )
        cp.UpdateSettings(type='poisson', range=[.22, .43], binning='none')
        self.assertEqual(
            get_cps_summary(),
            'Pickering                  3036.6       none  0.22  0.43   poisson      0     223       223   0.684    0.64   0.731 -3.477 -3.506 -3.448 3.34e-04'
        )
Exemplo n.º 3
0
    def test_Craterplotset_autoscale(self):
        cp = cst.Craterplot(cratercount=self.cc)
        cps = cst.Craterplotset(craterplot=[cp])

        cps.autoscale()
        self.assertEqual(list(cps.xrange) + list(cps.yrange), [-2, 2, -5, 3])
Exemplo n.º 4
0
    def test_Craterplot_get_data_range(self):
        cp = cst.Craterplot(cratercount=self.cc)
        cps = cst.Craterplotset(craterplot=[cp])

        res = cp.get_data_range(cps)
        self.assertTrue(np.allclose(res, (.1, 2.7, 6.5e-4, 8.2), rtol=.05))