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()
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' )
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])
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))