LIVE NEWS
  • Trinidad and Tobago police uncover 56 bodies, mostly children, at cemetery | Crime News
  • The best TV antennas to buy in 2024
  • Look beyond Trump for the real story on US climate action
  • Obama meets Mamdani in New York City before reading to preschoolers
  • How Trump is pushing psychedelics reform through the health agencies
  • Now is your last chance to grab our EXCLUSIVE Surfshark deal — year-low prices with 4 months extra protection included
  • Middle East crisis live: ships report attacks as Iran closes strait of Hormuz; Trump reportedly convenes Situation Room meeting | US-Israel war on Iran
  • 50,640 People Affected After Hackers Hit Healthcare Firm, Stealing Personal, Financial and Medical Data
Prime Reports
  • Home
  • Popular Now
  • Crypto
  • Cybersecurity
  • Economy
  • Geopolitics
  • Global Markets
  • Politics
  • See More
    • Artificial Intelligence
    • Climate Risks
    • Defense
    • Healthcare Innovation
    • Science
    • Technology
    • World
Prime Reports
  • Home
  • Popular Now
  • Crypto
  • Cybersecurity
  • Economy
  • Geopolitics
  • Global Markets
  • Politics
  • Artificial Intelligence
  • Climate Risks
  • Defense
  • Healthcare Innovation
  • Science
  • Technology
  • World
Home»Artificial Intelligence»A Coding Implementation for Building and Analyzing Crystal Structures Using Pymatgen for Symmetry Analysis, Phase Diagrams, Surface Generation, and Materials Project Integration
Artificial Intelligence

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

primereportsBy primereportsMarch 22, 2026No Comments3 Mins Read
Share Facebook Twitter Pinterest LinkedIn Tumblr Reddit Telegram Email
A Coding Implementation for Building and Analyzing Crystal Structures Using Pymatgen for Symmetry Analysis, Phase Diagrams, Surface Generation, and Materials Project Integration
Share
Facebook Twitter LinkedIn Pinterest Email


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)


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.")
Share. Facebook Twitter Pinterest LinkedIn Tumblr Email
Previous Article‘It was our little idyll – until the solar farm landed’: the battle raging in the heart of the British countryside | Solar power
Next Article Iranian missiles injure 160 in towns near Israeli nuclear site
primereports
  • Website

Related Posts

Artificial Intelligence

The best TV antennas to buy in 2024

April 19, 2026
Artificial Intelligence

OpenAI Agents SDK improves governance with sandbox execution

April 18, 2026
Artificial Intelligence

A End-to-End Coding Guide to Running OpenAI GPT-OSS Open-Weight Models with Advanced Inference Workflows

April 18, 2026
Add A Comment
Leave A Reply Cancel Reply

Top Posts

Global Resources Outlook 2024 | UNEP

December 6, 20258 Views

The D Brief: DHS shutdown likely; US troops leave al-Tanf; CNO’s plea to industry; Crowded robot-boat market; And a bit more.

February 14, 20264 Views

German Chancellor Merz faces difficult mission to Israel – DW – 12/06/2025

December 6, 20254 Views
Stay In Touch
  • Facebook
  • YouTube
  • TikTok
  • WhatsApp
  • Twitter
  • Instagram
Latest Reviews

Subscribe to Updates

Get the latest tech news from FooBar about tech, design and biz.

PrimeReports.org
Independent global news, analysis & insights.

PrimeReports.org brings you in-depth coverage of geopolitics, markets, technology and risk – with context that helps you understand what really matters.

Editorially independent · Opinions are those of the authors and not investment advice.
Facebook X (Twitter) LinkedIn YouTube
Key Sections
  • World
  • Geopolitics
  • Popular Now
  • Artificial Intelligence
  • Cybersecurity
  • Crypto
All Categories
  • Artificial Intelligence
  • Climate Risks
  • Crypto
  • Cybersecurity
  • Defense
  • Economy
  • Geopolitics
  • Global Markets
  • Healthcare Innovation
  • Politics
  • Popular Now
  • Science
  • Technology
  • World
  • About Us
  • Contact Us
  • Privacy Policy
  • Terms & Conditions
  • Disclaimer
  • Cookie Policy
  • DMCA / Copyright Notice
  • Editorial Policy

Sign up for Prime Reports Briefing – essential stories and analysis in your inbox.

By subscribing you agree to our Privacy Policy. You can opt out anytime.
Latest Stories
  • Trinidad and Tobago police uncover 56 bodies, mostly children, at cemetery | Crime News
  • The best TV antennas to buy in 2024
  • Look beyond Trump for the real story on US climate action
© 2026 PrimeReports.org. All rights reserved.
Privacy Terms Contact

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