예제 #1
0
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)
예제 #2
0
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..")