ChemQuery / app.py
Rezuwan's picture
Update app.py
db8f05b verified
raw
history blame
1.74 kB
import gradio as gr
import pubchempy as pcp
def get_chemical_info(chemical_name):
try:
compound = pcp.get_compounds(chemical_name, 'name')[0]
output = []
output.append(f"IUPAC Name: {compound.iupac_name}")
output.append(f"Common Name: {compound.synonyms[0]}")
output.append(f"Synonyms: {', '.join(compound.synonyms[:4])}")
output.append(f"Formula: {compound.molecular_formula}")
output.append(f"Molecular Weight: {compound.molecular_weight}")
output.append(f"Exact Molecular Weight: {compound.exact_mass}")
output.append(f"Isotope Atom Count: {compound.isotope_atom_count}")
output.append(f"Charge: {compound.charge}")
# Atoms
output.append("\nAtoms:")
for i, atom in enumerate(compound.atoms, start=1):
output.append(f" Atom {i}: Element = {atom.element}")
# Bonds
output.append("\nBonds:")
for bond in compound.bonds:
atom1 = bond.atom1.element
atom2 = bond.atom2.element
output.append(f" Bond between {atom1} and {atom2}, Order: {bond.order}")
return "\n".join(output)
except IndexError:
return f"No information found for '{chemical_name}'. Please try a more precise name."
# Gradio Interface
demo = gr.Interface(
fn=get_chemical_info,
inputs=gr.Textbox(label="Enter Chemical Name"),
outputs=gr.Textbox(label="Compound Information", lines=20),
title="ChemQuery: Learn Molecules Easily",
description="Enter a chemical name to get formula, synonyms, atomic structure, and more. Powered by PubChem & PubChemPy. Designed for student use in chemistry learning."
)
if __name__ == "__main__":
demo.launch()