def build_db(session): mdf = Forge("mdf-test") mdf.match_field("projects.nanomfg.catalyst", "*") rslt = mdf.search() def safe_get_recipe_value(recipe, property): if property in recipe and recipe[property]: return recipe[property] else: return None for recipe in rslt: r = MdfForge() r.mdf_id = recipe["mdf"]["mdf_id"] r.title = recipe["dc"]["titles"][0]["title"] recipe_data = recipe["projects"]["nanomfg"] r.base_pressure = recipe_data["base_pressure"] r.carbon_source = recipe_data["carbon_source"] r.catalyst = recipe_data["catalyst"] r.grain_size = safe_get_recipe_value(recipe_data, "grain_size") r.max_temperature = recipe_data["max_temperature"] r.orientation = safe_get_recipe_value(recipe_data, "orientation") r.sample_surface_area = safe_get_recipe_value(recipe_data, "sample_surface_area") r.sample_thickness = safe_get_recipe_value(recipe_data, "sample_thickness") session.add(r) session.commit()
from mdf_forge.forge import Forge # You don't have to use the name "mdf" but we do for consistency. mdf = Forge("mdf-test") def catalysts(datasets): return set( map(lambda dataset: dataset["projects"]["nanomfg"]["catalyst"], datasets)) mdf.match_field("projects.nanomfg.catalyst", "*") rslt = mdf.search() print(len(rslt)) print("Unique catalysts: " + str(catalysts(rslt))) mdf.match_range("projects.nanomfg.max_temperature", 0, 1000) res = mdf.search() print(len(res))
@IDE : PyCharm @Time1 : 2020-04-25 20:09:10 @Time2 : 2020/4/25 8:09 下午 @Month1 : 4月 @Month2 : 四月 """ from mdf_forge.forge import Forge import json mdf = Forge() # mdf.match_field("material.elements", "Al") # mdf.match_field("material.elements", "Cu") # mdf.match_field("material.elements", "Sn") mdf.match_field("material.elements", "H") # mdf.match_field("material.elements", "Zr") # mdf.match_field("material.elements", "Fe") mdf.exclude_field("material.elements", "C") mdf.exclude_field("material.elements", "O") # mdf.exclude_field("material.elements", "N") # mdf.exclude_field("material.elements", "F") # mdf.exclude_field("material.elements", "Cl") mdf.match_field("mdf.source_name", "oqmd*") res = mdf.search() with open('Hcoms_oqmd.json', 'w') as f: for i in res: print(i['material']['composition']) f.write(json.dumps(i)) f.write('\n')