def test_mkigmsys(): outfile = 'tmp.json' pargs = pyigm_mkigmsys.parser( ['dla', '3.0', outfile, '--NHI=20.5', '--zem=4.', '--vlim=-232,300']) pyigm_mkigmsys.main(args=pargs) # Read as JSON with open(outfile, 'r') as f: jdict = json.load(f) assert np.isclose(jdict['zabs'], 3.) # Now load as a system dla = DLASystem.from_dict(jdict) assert np.isclose(dla.NHI, 20.5)
def main(args=None): from linetools import utils as ltu pargs = parser() # Read jdict = ltu.loadjson(pargs.jsonfile) if 'class' not in jdict.keys(): raise KeyError("This script only works with JSON files with named classes") if jdict['class'] == 'IGMSightline': from pyigm.igm.igmsightline import IGMSightline obj = IGMSightline.from_dict(jdict) flg_tbl = True elif jdict['class'] == 'DLASystem': from pyigm.abssys.dla import DLASystem obj = DLASystem.from_dict(jdict) flg_tbl = False elif jdict['class'] == 'LLSSystem': from pyigm.abssys.lls import LLSSystem obj = LLSSystem.from_dict(jdict) obj.fill_ionN() flg_tbl = True # Column density table else: raise IOError("Not prepared for this class: {:s}".format(jdict['class'])) # name try: name = jdict['name'] except KeyError: try: name = jdict['Name'] except: name = 'None' print("Name of object: {:s}".format(name)) # Generate table if flg_tbl: if jdict['class'] == 'IGMSightline': tbl = obj.build_table() elif jdict['class'] == 'LLSSystem': tbl = obj._ionN tbl['logN'].format = '5.2f' tbl['sig_logN'].format = '5.2f' tbl['vmin'].format = '8.1f' tbl['vmax'].format = '8.1f' else: tbl = None # Print if len(tbl) > 0: tbl.pprint(99999, max_width=120) else: print("Table was empty..")