Close Menu
    Facebook X (Twitter) Instagram
    • Privacy Policy
    • Terms Of Service
    • Social Media Disclaimer
    • DMCA Compliance
    • Anti-Spam Policy
    Facebook X (Twitter) Instagram
    Deep Tech Ledger
    • Home
    • Crypto News
      • Bitcoin
      • Ethereum
      • Altcoins
      • Blockchain
      • DeFi
    • AI News
    • Stock News
    • Learn
      • AI for Beginners
      • AI Tips
      • Make Money with AI
    • Reviews
    • Tools
      • Best AI Tools
      • Crypto Market Cap List
      • Stock Market Overview
      • Market Heatmap
    • Contact
    Deep Tech Ledger
    Home»AI News»A Coding Implementation for Building and Analyzing Crystal Structures Using Pymatgen for Symmetry Analysis, Phase Diagrams, Surface Generation, and Materials Project Integration
    A Coding Implementation for Building and Analyzing Crystal Structures Using Pymatgen for Symmetry Analysis, Phase Diagrams, Surface Generation, and Materials Project Integration
    AI News

    A Coding Implementation for Building and Analyzing Crystal Structures Using Pymatgen for Symmetry Analysis, Phase Diagrams, Surface Generation, and Materials Project Integration

    March 22, 20263 Mins Read
    Share
    Facebook Twitter LinkedIn Pinterest Email
    ledger


    header(“11. DISORDERED STRUCTURE -> ORDERED APPROXIMATION”)

    disordered = Structure(
    Lattice.cubic(3.6),
    [{“Cu”: 0.5, “Au”: 0.5}],
    [[0, 0, 0]],
    )

    disordered.make_supercell([2, 2, 2])

    print(“Disordered composition:”, disordered.composition)

    synthesia

    try:
    disordered_oxi = disordered.copy()
    disordered_oxi.add_oxidation_state_by_element({“Cu”: 1, “Au”: 1})

    ordered_transform = OrderDisorderedStructureTransformation()

    ordered_candidates = ordered_transform.apply_transformation(
    disordered_oxi,
    return_ranked_list=3,
    )

    for idx, cand in enumerate(ordered_candidates):
    s = cand[“structure”].copy()
    s.remove_oxidation_states()
    print(f”Ordered candidate {idx+1}: formula={s.composition.formula}, sites={len(s)}”)

    except Exception as e:
    print(“Ordering step skipped due to transformation issue:”, e)

    header(“12. MOLECULE SUPPORT”)

    water = Molecule(
    [“O”, “H”, “H”],
    [
    [0.0, 0.0, 0.0],
    [0.7586, 0.0, 0.5043],
    [-0.7586, 0.0, 0.5043],
    ],
    )

    print(“Water formula:”, water.composition.formula)

    print(“Water center of mass:”, np.round(water.center_of_mass, 4))

    print(
    “O-H bond lengths:”,
    round(water.get_distance(0, 1), 4),
    round(water.get_distance(0, 2), 4),
    )

    header(“13. CIF EXPORT”)

    output_dir = “/content/pymatgen_tutorial_outputs”

    os.makedirs(output_dir, exist_ok=True)

    si_cif = os.path.join(output_dir, “si.cif”)
    nacl_cif = os.path.join(output_dir, “nacl.cif”)
    slab_cif = os.path.join(output_dir, “si_111_slab.cif”)

    CifWriter(si).write_file(si_cif)
    CifWriter(nacl).write_file(nacl_cif)
    CifWriter(slab).write_file(slab_cif)

    print(“Saved:”, si_cif)
    print(“Saved:”, nacl_cif)
    print(“Saved:”, slab_cif)

    header(“14. DATAFRAME SUMMARY”)

    rows = []

    for name, s in [
    (“Si”, si),
    (“NaCl”, nacl),
    (“LiFePO4-like”, li_fe_po4),
    (“Si slab”, slab),
    ]:

    sga = SpacegroupAnalyzer(s, symprec=0.1)

    rows.append(
    {
    “name”: name,
    “formula”: s.composition.reduced_formula,
    “sites”: len(s),
    “volume_A3”: round(s.volume, 4),
    “density_g_cm3”: round(float(s.density), 4),
    “spacegroup”: sga.get_space_group_symbol(),
    “sg_number”: sga.get_space_group_number(),
    }
    )

    df = pd.DataFrame(rows)

    print(df)

    header(“15. OPTIONAL MATERIALS PROJECT API ACCESS”)

    mp_api_key = None

    try:
    from google.colab import userdata
    mp_api_key = userdata.get(“MP_API_KEY”)
    except Exception:
    pass

    if not mp_api_key:
    mp_api_key = os.environ.get(“MP_API_KEY”, None)

    if mp_api_key:

    try:
    from pymatgen.ext.matproj import MPRester

    with MPRester(mp_api_key) as mpr:

    mp_struct = mpr.get_structure_by_material_id(“mp-149”)

    summary_docs = mpr.summary.search(
    material_ids=[“mp-149”],
    fields=[
    “material_id”,
    “formula_pretty”,
    “band_gap”,
    “energy_above_hull”,
    “is_stable”,
    ],
    )

    print(“Fetched mp-149 from Materials Project”)

    print(“Formula:”, mp_struct.composition.reduced_formula)

    print(“Sites:”, len(mp_struct))

    if len(summary_docs) > 0:

    doc = summary_docs[0]

    print(
    {
    “material_id”: str(doc.material_id),
    “formula_pretty”: doc.formula_pretty,
    “band_gap”: doc.band_gap,
    “energy_above_hull”: doc.energy_above_hull,
    “is_stable”: doc.is_stable,
    }
    )

    except Exception as e:
    print(“Materials Project API section skipped due to runtime/API issue:”, e)

    else:
    print(“No MP_API_KEY found. Skipping live Materials Project query.”)
    print(“In Colab, add a secret named MP_API_KEY or set os.environ[‘MP_API_KEY’].”)

    header(“16. SAVE SUMMARY JSON”)

    summary = {
    “structures”: {
    “Si”: {
    “formula”: si.composition.reduced_formula,
    “sites”: len(si),
    “spacegroup”: SpacegroupAnalyzer(si, symprec=0.1).get_space_group_symbol(),
    },
    “NaCl”: {
    “formula”: nacl.composition.reduced_formula,
    “sites”: len(nacl),
    “spacegroup”: SpacegroupAnalyzer(nacl, symprec=0.1).get_space_group_symbol(),
    },
    “LiFePO4-like”: {
    “formula”: li_fe_po4.composition.reduced_formula,
    “sites”: len(li_fe_po4),
    “spacegroup”: SpacegroupAnalyzer(li_fe_po4, symprec=0.1).get_space_group_symbol(),
    },
    },
    “phase_diagram”: {
    “target”: target.composition.reduced_formula,
    “energy_above_hull_eV_atom”: float(e_above_hull),
    },
    “files”: {
    “si_cif”: si_cif,
    “nacl_cif”: nacl_cif,
    “slab_cif”: slab_cif,
    },
    }

    json_path = os.path.join(output_dir, “summary.json”)

    with open(json_path, “w”) as f:
    json.dump(summary, f, indent=2)

    print(“Saved:”, json_path)

    header(“17. FINAL NOTES”)

    print(“Tutorial completed successfully.”)

    print(“Artifacts are saved in:”, output_dir)

    print(“You can now extend this notebook to parse VASP outputs, query MP at scale, or build defect/workflow pipelines.”)



    Source link

    aistudios
    Share. Facebook Twitter Pinterest LinkedIn Tumblr Email
    CryptoExpert
    • Website

    I’m someone who’s deeply curious about crypto and artificial intelligence. I created this site to share what I’m learning, break down complex ideas, and keep people updated on what’s happening in crypto and AI—without the unnecessary hype.

    Related Posts

    Meta enters the AI coding wars with Muse Spark 1.2 and Muse Code with persistent async background agents

    August 6, 2026

    Pixel-Native RAG: A Practical Guide to Visual Document Indexing

    August 5, 2026

    Alexander Rakhlin named director of the MIT Statistics and Data Science Center | MIT News

    August 4, 2026

    Stop graphing everything: When GraphRAG actually beats vector RAG

    August 3, 2026
    Add A Comment
    Leave A Reply Cancel Reply

    changelly
    Latest Posts

    The most interesting “hack” in history…

    August 5, 2026

    BlackRock Taps JPMorgan to Tokenize European Money Market Funds

    August 5, 2026

    Whale Stakes 112,000 ETH Worth $208 Million

    August 5, 2026

    Forgd Market-Maker Leaderboard Integrates With DefiLlama

    August 5, 2026

    Galaxy Bitcoin ETF Returns to Inflows Amid Coldcard Hack

    August 5, 2026
    binance
    LEGAL INFORMATION
    • Privacy Policy
    • Terms Of Service
    • Social Media Disclaimer
    • DMCA Compliance
    • Anti-Spam Policy
    Top Insights

    Amazon, Alphabet, and Microsoft All Delivered Soaring Cloud Growth Thanks to AI. Here’s the 1 I’d Buy Right Now

    August 6, 2026

    Dogecoin (DOGE) Crashes to a 3-Year Low, Yet Analysts Expect a Big Move Up Ahead: Details

    August 6, 2026
    notion
    Facebook X (Twitter) Instagram Pinterest
    © 2026 DeepTechLedger.com - All rights reserved.

    Type above and press Enter to search. Press Esc to cancel.