from pymatgen.core import Element as PymatgenElement KNOWN_ELEMENT_SYMBOLS = {el.symbol for el in PymatgenElement} ATMOSPHERE_CONFIG = { "patterns": [ (r'\b(air)\b', 'Air', 'Oxidizing'), (r'\b(O\s?2|oxygen)\b', 'O2', 'Oxidizing'), (r'\b(Ar|argon)\b', 'Ar', 'Inert'), (r'\b(N\s?2|nitrogen)\b', 'N2', 'Inert'), (r'\b(H\s?2/N\s?2|N\s?2/H\s?2|forming\s*gas)\b', 'FormingGas(N2/H2)', 'Reducing'), (r'\b(Ar/H\s?2|H\s?2/Ar)\b', 'Ar/H2', 'Reducing'), (r'\b(H\s?2|hydrogen)\b', 'H2', 'Reducing'), (r'\b(vacuum)\b', 'Vacuum', 'Vacuum'), (r'\b(He|helium)\b', 'He', 'Inert'), (r'\b(CO2|carbon\s*dioxide)\b', 'CO2', 'Neutral/Other'), (r'\b(CO|carbon\s*monoxide)\b', 'CO', 'Reducing'), (r'\b(NH3|ammonia)\b', 'NH3', 'Reducing/Other'), ], "default_specific": "unknown_atm_specific", "default_category": "Unknown_Atm_Category" } MIXING_METHOD_CONFIG = { "patterns": [ (r'\b(ball\s*mill(?:ing)?)\b', 'ball_milling'), (r'\b(grind(?:ing)?|ground|pulverized|milled)\b', 'grinding'), (r'\b(solution|wet|homogeni[sz]ation|slurr(y|ies))\b', 'wet_method'), (r'\b(solid-state|solid\s*state(\s*reaction)?)\b', 'solid_state_mixing'), (r'\b(stir(?:ring)?)\b', 'stirring'), (r'\b(sonica(te|tion|ted))\b', 'sonication'), (r'\b(planetary\s*mill(?:ing)?)\b', 'planetary_milling'), (r'\b(attritor\s*mill(?:ing)?)\b', 'attritor_milling'), (r'\b(shaker\s*mill(?:ing)?)\b', 'shaker_milling'), (r'\b(mortar\s*(and\s*pestle)?)\b', 'mortar_pestle'), ], "default_method": "unknown_mix_method" } MAGPIE_LABELS = [] matminer_available = False MAGPIE_FEATURIZER = None try: from matminer.featurizers.composition import ElementProperty matminer_available = True MAGPIE_FEATURIZER = ElementProperty.from_preset("magpie", impute_nan=True) MAGPIE_LABELS = [f'magpie_{label.replace(" ", "_")}' for label in MAGPIE_FEATURIZER.feature_labels()] except ImportError: pass except Exception: pass