Ejemplo n.º 1
0
 def testReadAndWriteDescription(self):
     m = Cml.Molecule()
     m.property["Description"] = "H20 is the base of all life."
     m.property["Description-Attribution"] = "Wikipedia, CC-BY-SA"
     m.write("tests/testWrite.cml")
     m = Cml.Molecule()
     m.parse("tests/testWrite.cml")
     self.assertEqual(m.property["Description"],  "H20 is the base of all life.")
     self.assertEqual(m.property["Description-Attribution"],  "Wikipedia, CC-BY-SA")
     os.remove("tests/testWrite.cml")
Ejemplo n.º 2
0
 def testWriteAndParsePropertys(self):
     m = Cml.Molecule()
     m.atoms["a1"] = Cml.Atom("a1", "H", 0, 0, 0)
     m.property["Name"] = "Hydrogen"
     m.property["Weight"] = 1.0
     m.property["Radius"] = 25
     m.write("tests/testHydrogen.cml")
     m = Cml.Molecule()
     m.parse("tests/testHydrogen.cml")
     self.assertEqual(m.property["Name"], "Hydrogen")
     self.assertEqual(m.property["Weight"], 1.0)
     self.assertEqual(m.property["Radius"], 25)
     self.assertEqual(m.is_atom, True)
     os.remove("tests/testHydrogen.cml")
Ejemplo n.º 3
0
 def testWriteAndParseStatePropertys(self):
     m = Cml.Molecule()
     gas = Cml.State("Gas", -426, 64)
     aq = Cml.State("Aqueous", ions=["Na+", "OH-"])
     m.states["Gas"] = gas
     m.states["Aqueous"] = aq
     m.write("tests/testSodiumhydroxide.cml")
     m = Cml.Molecule()
     m.parse("tests/testSodiumhydroxide.cml")
     self.assertEqual(m.states["Gas"].enthalpy, -426)
     self.assertEqual(m.states["Gas"].entropy, 64)
     self.assertEqual(m.states["Aqueous"].ions, ["Na+", "OH-"])
     self.assertEqual(m.states["Aqueous"].ions_str, "Na+,OH-")
     os.remove("tests/testSodiumhydroxide.cml")
Ejemplo n.º 4
0
 def testParsePropane(self):
     m = Cml.Molecule()
     m.parse("tests/testPropane.cml")
     self.assertEqual(len(m.atoms), 12)
     self.assertEqual(len(m.bonds), 11)
     self.assertEqual(m.atoms["a1"].elementType, "H")
     self.assertEqual(m.atoms["a1"].formalCharge, 0)
     self.assertEqual(m.atoms["a1"].x, -4.719821)
     self.assertEqual(m.atoms["a1"].y, 1.866564)
     self.assertEqual(m.atoms["a1"].z, -1.096199)
     self.assertEqual(m.atoms["a1"].pos, (-4.719821, 1.866564))
     self.assertEqual(m.atoms["a2"].x, -4.299694)
     self.assertEqual(m.atoms["a2"].y, 2.06041)
     self.assertEqual(m.atoms["a2"].z, -2.091249)
     self.assertEqual(m.atoms["a2"].pos, (-4.299694, 2.06041))
     self.assertEqual(m.atoms["a2"].elementType, "C")
     self.assertEqual(m.atoms["a2"].formalCharge, 0)
     self.assertEqual(m.bonds[0].atomA.id, "a1")
     self.assertEqual(m.bonds[0].atomB.id, "a2")
     self.assertAlmostEqual(m.bonds[0].atomA.x, -4.719821)
     self.assertAlmostEqual(m.bonds[0].atomA.y, 1.866564)
     self.assertAlmostEqual(m.bonds[0].atomA.z, -1.096199)
     self.assertAlmostEqual(m.bonds[0].atomB.x, -4.299694)
     self.assertAlmostEqual(m.bonds[0].atomB.y, 2.06041)
     self.assertAlmostEqual(m.bonds[0].atomB.z, -2.091249)
Ejemplo n.º 5
0
 def testCachedMolecule(self):
     m = Cml.Molecule()
     m.parse("tests/testPropane.cml")
     m.write("tests/testWrite.cml")
     c = CachedCml.getMoleculeCml("tests/testWrite.cml")
     self.assertEqual(len(m.atoms), 12)
     self.assertEqual(len(m.bonds), 11)
     self.assertEqual(m.atoms["a1"].elementType, "H")
     self.assertAlmostEqual(m.atoms["a1"].x, -4.719821)
     self.assertAlmostEqual(m.atoms["a1"].y, 1.866564)
     self.assertAlmostEqual(m.atoms["a1"].z, -1.096199)
     self.assertAlmostEqual(m.atoms["a2"].x, -4.299694)
     self.assertAlmostEqual(m.atoms["a2"].y, 2.06041)
     self.assertAlmostEqual(m.atoms["a2"].z, -2.091249)
     self.assertEqual(m.atoms["a2"].elementType, "C")
     self.assertEqual(m.bonds[0].atomA.id, "a1")
     self.assertEqual(m.bonds[0].atomB.id, "a2")
     os.remove("tests/testWrite.cml")
     c = CachedCml.getMoleculeCml("tests/testWrite.cml")
     self.assertEqual(len(m.atoms), 12)
     self.assertEqual(len(m.bonds), 11)
     self.assertEqual(m.atoms["a1"].elementType, "H")
     self.assertAlmostEqual(m.atoms["a1"].x, -4.719821)
     self.assertAlmostEqual(m.atoms["a1"].y, 1.866564)
     self.assertAlmostEqual(m.atoms["a1"].z, -1.096199)
     self.assertAlmostEqual(m.atoms["a2"].x, -4.299694)
     self.assertAlmostEqual(m.atoms["a2"].y, 2.06041)
     self.assertAlmostEqual(m.atoms["a2"].z, -2.091249)
     self.assertEqual(m.atoms["a2"].elementType, "C")
     self.assertEqual(m.bonds[0].atomA.id, "a1")
     self.assertEqual(m.bonds[0].atomB.id, "a2")
Ejemplo n.º 6
0
def getMoleculeCml(filename):
    global __cml_cache
    if filename in __cml_cache:
        return __cml_cache[filename]

    m = Cml.Molecule()
    m.parse(filename)
    __cml_cache[filename] = m
    return m
Ejemplo n.º 7
0
 def testParseStatePropertys(self):
     m = Cml.Molecule()
     m.parse("tests/testProperty.cml")
     self.assertEqual(m.states["Gas"].enthalpy, -426)
     self.assertEqual(m.states["Gas"].entropy, 64)
     self.assertEqual(m.states["Gas"].short, "g")
     self.assertEqual(m.get_state("g").entropy, 64)
     self.assertEqual(m.get_state("l"), None)
     self.assertEqual(m.states["Aqueous"].ions, ["Na+", "OH-"])
Ejemplo n.º 8
0
 def testParseMoleculeWithoutBonds(self):
     m = Cml.Molecule()
     m.parse("data/molecule/NaCl.cml")
     self.assertEqual(len(m.atoms), 2)
     self.assertEqual(len(m.bonds), 1)
     self.assertEqual(m.atoms["a1"].elementType, "Na")
     self.assertEqual(m.atoms["a1"].formalCharge, 1)
     self.assertEqual(m.atoms["a1"].x, 1.0)
     self.assertEqual(m.atoms["a1"].y, 0.0)
     self.assertEqual(m.atoms["a2"].x, 0.0)
     self.assertEqual(m.atoms["a2"].y, 0.0)
     self.assertEqual(m.atoms["a2"].elementType, "Cl")
     self.assertEqual(m.atoms["a2"].formalCharge, -1)
Ejemplo n.º 9
0
 def testParseAmmonia(self):
     m = Cml.Molecule()
     m.parse("tests/testAmmonia.cml")
     self.assertEqual(len(m.atoms), 4)
     self.assertEqual(len(m.bonds), 3)
     self.assertEqual(m.atoms["a1"].elementType, "N")
     self.assertEqual(m.atoms["a1"].x, 1.0)
     self.assertEqual(m.atoms["a1"].y, 0.0)
     self.assertEqual(m.atoms["a2"].x, 2.02)
     self.assertEqual(m.atoms["a2"].y, 0.0)
     self.assertEqual(m.atoms["a2"].elementType, "H")
     self.assertEqual(m.bonds[0].atomA.id, "a1")
     self.assertEqual(m.bonds[0].atomB.id, "a2")
     self.assertEqual(m.is_atom, False)
Ejemplo n.º 10
0
 def testCreateMoleculeWithCharge(self):
     m = Cml.Molecule()
     a1 = Cml.Atom("a1", "C",-1, 0, 0)
     a2 = Cml.Atom("a2", "O", 1, 1, 0)
     m.atoms["a1"] = a1
     m.atoms["a2"] = a2
     b = Cml.Bond(a1, a2, 2)
     m.bonds.append(b)
     m.write("tests/testOxygen.cml")
     m = Cml.Molecule()
     m.parse("tests/testOxygen.cml")
     self.assertAlmostEqual(m.atoms["a1"].x, 0.0)
     self.assertAlmostEqual(m.atoms["a1"].y, 0.0)
     self.assertEqual(m.atoms["a1"].elementType, "C")
     self.assertEqual(m.atoms["a1"].formalCharge,-1)
     self.assertAlmostEqual(m.atoms["a2"].x, 1.0)
     self.assertAlmostEqual(m.atoms["a2"].y, 0.0)
     self.assertEqual(m.atoms["a2"].elementType, "O")
     self.assertEqual(m.atoms["a2"].formalCharge,1)
     self.assertEqual(m.bonds[0].atomA.id, "a1")
     self.assertEqual(m.bonds[0].atomB.id, "a2")
     self.assertEqual(m.bonds[0].bonds, 2)
     os.remove("tests/testOxygen.cml")
Ejemplo n.º 11
0
 def testSortedAtoms(self):
     m = Cml.Molecule()
     m.parse("tests/testPropane.cml")
     self.assertEqual(m.atoms_sorted[0].id, "a1")
     self.assertEqual(m.atoms_sorted[1].id, "a2")
     self.assertEqual(m.atoms_sorted[2].id, "a3")
     self.assertEqual(m.atoms_sorted[3].id, "a4")
     self.assertEqual(m.atoms_sorted[4].id, "a5")
     self.assertEqual(m.atoms_sorted[5].id, "a6")
     self.assertEqual(m.atoms_sorted[6].id, "a7")
     self.assertEqual(m.atoms_sorted[7].id, "a8")
     self.assertEqual(m.atoms_sorted[8].id, "a9")
     self.assertEqual(m.atoms_sorted[9].id, "a10")
     self.assertEqual(m.atoms_sorted[10].id, "a11")
     self.assertEqual(m.atoms_sorted[11].id, "a12")
     self.assertEqual(m.getDigits("asdas23434"), 23434)
Ejemplo n.º 12
0
    def openFile(self, filename):
        self.filename = filename
        self.current_pos = self.folder_list.index(filename)
        molecule = Cml.Molecule()
        self.molecule = molecule
        molecule.parse(filename)
        formula = filename.split("/")[-1].split(".cml")[0]
        state_formula = formula+"(g)"
        cml2img.convert_cml2png(state_formula, "preview.png")
        pixBuffPreview = Pixbuf.new_from_file("preview.png")
        imgPreview = self.widget("imgPreview")
        imgPreview.set_from_pixbuf(pixBuffPreview)

        self.txtMoleculeName = self.widget("txtName")
        self.txtAtomWeight = self.widget("txtWeight")
        self.txtAtomRadius = self.widget("txtRadius")

        self.txtMoleculeName.set_text(str(molecule.property.get("Name", "")))
        self.widget("txtAttribution").set_text(
                molecule.property.get("DescriptionAttribution", ""))
        self.widget("textbufferDescription").set_text(
                molecule.property.get("Description", ""))

        if self.molecule.is_atom:
            self.setAtomSettings()
        else:
            self.txtAtomWeight.set_text("")
            self.txtAtomWeight.set_sensitive(False)
            self.txtAtomRadius.set_text("")
            self.txtAtomRadius.set_sensitive(False)

        self.modelStates.clear()
        for state in molecule.states.values():
            stateList = [state.name, state.enthalpy, state.entropy, state.ions_str]
            stateList = [str(x) if x is not None else "" for x in stateList]
            self.modelStates.append(stateList)

        self.widget("cmbLicense").set_active(-1)
        index = 0
        for license in self.widget("liststoreLicenses"):
            if license[0] == molecule.property.get("DescriptionLicense", "N/A"):
                self.widget("cmbLicense").set_active(index)
                break
            index += 1
Ejemplo n.º 13
0
 def testNormalizePos(self):
     m = Cml.Molecule()
     m.parse("tests/testPropane.cml")
     self.assertEqual(m.max_pos(), (-0.605318, 3.557669, -1.096199))
     self.assertEqual(m.min_pos(), (-4.928943, 1.137126, -4.097433))
     m.normalize_pos()
     self.assertEqual(m.max_pos(), (4.323625, 2.4205430000000003, 3.0012339999999997))
     self.assertEqual(m.min_pos(), (0.0, 0.0, 0.0))
     self.assertEqual(len(m.atoms), 12)
     self.assertEqual(len(m.bonds), 11)
     self.assertEqual(m.atoms["a1"].elementType, "H")
     self.assertAlmostEqual(m.atoms["a1"].x, 0.209122)
     self.assertAlmostEqual(m.atoms["a1"].y, 0.729438)
     self.assertAlmostEqual(m.atoms["a1"].z, 3.001234)
     self.assertAlmostEqual(m.atoms["a2"].x, 0.629249)
     self.assertAlmostEqual(m.atoms["a2"].y, 0.923284)
     self.assertAlmostEqual(m.atoms["a2"].z, 2.006184)
     self.assertEqual(m.atoms["a2"].elementType, "C")
     self.assertEqual(m.bonds[0].atomA.id, "a1")
     self.assertEqual(m.bonds[0].atomB.id, "a2")
Ejemplo n.º 14
0
 def testAllMolecules(self):
     for filename in glob.glob("data/molecule/*"):
         m = Cml.Molecule()
         m.parse(filename)
         self.assertNotEqual(len(m.states), 0, msg="%s dont have any state info!" % filename)