Beispiel #1
0
def main ():
    global args
    # read PIF
    if args.ifile is not None:
        with open(args.ifile) as ifs:
            pifdata = pif.load(ifs)
    else:
        pifdata = pif.load(sys.stdin)
    # perform requested action
    if args.action == 'property':
        rval = str(property(pifdata))
    elif args.action == 'uid':
        rval = str(uid(pifdata))
    elif args.action == 'sagittariidae':
        if not isinstance(pifdata, list):
            pifdata = [pifdata]
        add_link = sagittariidae.link_factory(
			projectID='nq3X4-concept-inconel718',
			host='http://sagittariidae.adapt.mines.edu')
        for p in pifdata:
            add_link(p)
        return json.dumps(pifdata)
    else:
        msg = '{} is not a recognized action.'.format(args.action)
        raise ValueError(msg)
    # write PIF
    if args.ofile is not None:
        if authorize_overwrite(args.ofile):
            with open(args.ofile, 'w') as ofs:
                ofs.write(rval)
    else:
        sys.stdout.write(rval)
Beispiel #2
0
	def test_property_add_Ifile(self):
		rval, out, err = execute('pifmod -i data/pif.json -o data/test.pif ' \
			'property foo=bar')
		with open('data/out.pif') as ifs:
			expected = pif.load(ifs)
		with open('data/test.pif') as ifs:
			received = pif.load(ifs)
		assert rval == 0
		assert empty(out)
		assert empty(err)
		assert compare_dictionaries(expected.as_dictionary(),
									received.as_dictionary()), \
			'\n'.join(strdiff(pif.dumps(expected), pif.dumps(received)))
Beispiel #3
0
	def test_property_add_volume_Ifile(self):
		# with tags...
		rval, out, err = execute('pifmod -i data/pif.json -o data/test.pif ' \
			'property data/pore-distribution.json volume')
		with open('data/out_volume.pif') as ifs:
			expected = pif.load(ifs)
		with open('data/test.pif') as ifs:
			received = pif.load(ifs)
		assert rval == 0
		assert empty(out)
		assert empty(err)
		assert compare_dictionaries(expected.as_dictionary(),
									received.as_dictionary()), \
			'{}'.format(strdiff(pif.dumps(expected), pif.dumps(received)))
Beispiel #4
0
	def test_property_add_tags_Ifile(self):
		# with tags...
		rval, out, err = execute('pifmod -i data/pif.json -o data/test.pif ' \
			'property --tag="Hello World" foo=bar')
		with open('data/out_tags.pif') as ifs:
			expected = pif.load(ifs)
		with open('data/test.pif') as ifs:
			received = pif.load(ifs)
		assert rval == 0
		assert empty(out)
		assert empty(err)
		assert compare_dictionaries(expected.as_dictionary(),
									received.as_dictionary()), \
			'{}'.format(strdiff(pif.dumps(expected), pif.dumps(received)))
Beispiel #5
0
	def test_property_add_contacts_Ifile(self):
		# with contacts...
		rval, out, err = execute('pifmod -i data/pif.json -o data/test.pif ' \
			'property --contact="Branden Kappes,[email protected]" ' \
			'foo=bar')
		with open('data/out_contact.pif') as ifs:
			expected = pif.load(ifs)
		with open('data/test.pif') as ifs:
			received = pif.load(ifs)
		assert rval == 0
		assert empty(out)
		assert empty(err)
		assert compare_dictionaries(expected.as_dictionary(),
									received.as_dictionary()), \
			'{}'.format(strdiff(pif.dumps(expected), pif.dumps(received)))
Beispiel #6
0
	def test_linkages_sagittariidae(self):
		# try:
		with open('data/package.json') as ifs:
			pifdata = pif.load(ifs)
		add_link = sagittariidae.link_factory(
			projectID='nq3X4-concept-inconel718',
			host='http://sagittariidae.adapt.mines.edu')
		for p in pifdata:
			add_link(p)
		with open('delme.json', 'w') as ofs:
			pif.dump(pifdata, ofs)
def test_auto_dft():
    """Test that auto-format works"""
    argv = "tests/dft/B.hR12".split()
    args = get_cli().parse_args(args=argv)
    main(args)

    # Make sure both files are processed
    assert exists(
        "tests/dft/B.hR12/pif.json"), "Expected to find output pif for B.hR12"
    assert not exists("tests/dft/B.hR105/pif.json"
                      ), "Did not expect to find output pif for B.hR105"
    # Check basic parsing
    with open("tests/dft/B.hR12/pif.json", "r") as f:
        bhr12 = pif.load(f)[0]
    assert bhr12.chemical_formula == "B12"
Beispiel #8
0
def test_recursive_dft():
    """Test that recursive application of the DFT ingester works"""
    argv = "tests/dft dft -r".split()
    args = get_cli().parse_args(args=argv)
    main(args)

    # Make sure both files are processed
    assert exists(
        "tests/dft/B.hR12/pif.json"), "Expected to find output pif for B.hR12"
    assert exists("tests/dft/B.hR105/pif.json"
                  ), "Expected to find output pif for B.hR105"

    # Check basic parsing
    with open("tests/dft/B.hR12/pif.json", "r") as f:
        bhr12 = pif.load(f)
    assert bhr12.chemical_formula == "B12"
def test_recursive_dft():
    """Test that recursive application of the DFT ingester works"""
    argv = "tests/dft -f dft -m tests/dft/metadata.json -r".split()
    args = get_cli().parse_args(args=argv)
    main(args)

    # Make sure both files are processed
    assert exists(
        "tests/dft/B.hR12/pif.json"), "Expected to find output pif for B.hR12"
    assert exists("tests/dft/B.hR105/pif.json"
                  ), "Expected to find output pif for B.hR105"

    # Check basic parsing
    with open("tests/dft/B.hR12/pif.json", "r") as f:
        bhr12 = pif.load(f)[0]
    assert bhr12.chemical_formula == "B12"
    assert len(bhr12.contacts) == 2

    emails = set(["*****@*****.**", "*****@*****.**"])
    assert set(x.email for x in bhr12.contacts) == emails
def test_csv_generator():
    """Test that generator-returning ingesters work"""
    argv = "tests/csv/template_example.csv".split()
    args = get_cli().parse_args(args=argv)
    main(args)

    # Make sure both files are processed
    expected_name = "tests/csv/template_example.csv_pif.json"
    assert exists(expected_name), "Expected to find output pif for template_example"

    # Check basic parsing
    with open(expected_name, "r") as f:
        csv_pif = pif.load(f)

    assert csv_pif[0].names[0] == 'P20 Tool steel'
    assert csv_pif[0].sub_systems[0].names[0] == 'Martensite'
    assert csv_pif[0].sub_systems[0].quantity.ideal_mass_percent.value == '80'
    assert csv_pif[0].contacts[0].name == 'Jo Hill'
    assert csv_pif[0].contacts[0].email == '*****@*****.**'
    assert csv_pif[0].contacts[2].name == 'Mary'
    assert csv_pif[0].contacts[2].url == 'http://jo'
Beispiel #11
0
def test_dft_csv_merge():
    """Test that merge works works"""
    argv = "tests/merge/1000000.cif -f merge".split()
    args = get_cli().parse_args(args=argv)
    main(args)

    # Make sure there is an output
    assert exists("tests/merge/1000000.cif_pif.json"
                  ), "Expected to find output pif for 1000000.cif"

    # Check that one property from each ingester is included
    with open("tests/merge/1000000.cif_pif.json", "r") as f:
        merged = pif.load(f)[0]
    # This is from the calphad tdb ingester
    assert next(
        (x for x in merged.properties if x.name == "Thermodynamic database"),
        None) != None
    # This is from the CIF ingester
    space_group = next(
        (x for x in merged.properties if x.name == "Space group symbol"), None)
    assert (space_group.scalars[0].value == "P2_1/c")
from pypif import pif
from pypif.obj import *
import csv
import json

# Open the json file that contains the pifs
json_file = open("pifs.json")

# Load json with pif
pifs = pif.load(json_file)
# Find all the CSV headers
headers = []
for p in pifs:
    props = p.properties
    names = []
    for i in props:
        names.append(i.name)
    if len(names) > len(headers):
        headers = names

# Possible attributes associated with a pif:
pif_common_objs = []
header = []

# CSV outfile
csv_out = "pifs.csv"
with open(csv_out, 'w', newline='') as outfile:
    csvwriter = csv.writer(outfile)
    csvwriter.writerow(headers)

    # Loop through each pif
Beispiel #13
0
def stress_dataframe():
    with open(STRESS) as ifs:
        pifobj = pif.load(ifs)
    return pif_to_dataframe(pifobj)
Beispiel #14
0
def strain_dataframe():
    with open(STRAIN) as ifs:
        pifobj = pif.load(ifs)
    return pif_to_dataframe(pifobj)
Beispiel #15
0
def test_key_error_case():
    with open("./pypif_sdk/readview/tests/csv_pif.pif") as f:
        test_case = load(f)
    rv = ReadView(test_case)
    assert len(rv.keys()) > 0
Beispiel #16
0
def sspif():
    # stress-strain PIF
    with open('{}/data/astm-mark10-aramis.json'.format(HERE)) as ifs:
        rval = pif.load(ifs)
    return rval