def testAppend(self):
     if IGNORE_TEST:
         return
     moiety2 = Moiety(MOIETY_NAME2)
     molecule = Molecule(MOIETY_NAME1)
     new_molecule = molecule.append(moiety2)
     self.assertEqual(new_molecule.name, Molecule(MOLECULE_NAME).name)
Beispiel #2
0
 def testDifference(self):
     if IGNORE_TEST:
         return
     df = self.comparator.difference()
     self.assertLess(df.loc[MOIETY_NAME1].tolist()[0], 0)
     #
     comparator = MoietyComparator(self.molecules1,
                                   self.molecules2,
                                   implicits=[MOIETY_NAME1])
     df = comparator.difference()
     self.assertFalse(MOIETY_NAME1 in df.index)
     #
     config._config_dict[cn.CFG_PROCESS_BOUNDARY_REACTIONS] = False
     molecules1 = [
         MoleculeStoichiometry(Molecule(n), 0)
         for n in MOLECULE_NAME_SET[:3]
     ]
     comparator = MoietyComparator(molecules1, self.molecules2)
     df = comparator.difference()
     self.assertEqual(df[df.columns[0]].sum(), 0)
     #
     config._config_dict[cn.CFG_PROCESS_BOUNDARY_REACTIONS] = True
     molecules1 = [
         MoleculeStoichiometry(Molecule(n), 0)
         for n in MOLECULE_NAME_SET[:3]
     ]
     comparator = MoietyComparator(molecules1, self.molecules2)
     df = comparator.difference()
     self.assertNotEqual(df[df.columns[0]].sum(), 0)
 def testCountMoietys(self):
     if IGNORE_TEST:
         return
     moiety_stoich = MoietyStoichiometry(Molecule(MOIETY_NAME1), NUM1)
     mole_stoich = MoleculeStoichiometry(Molecule(str(moiety_stoich)), NUM2)
     df = mole_stoich.countMoietys()
     self.assertEqual(df.columns.tolist(), [cn.VALUE])
     expected = NUM1 * NUM2
     trues = [expected == n for n in df[cn.VALUE]]
Beispiel #4
0
 def testMoietyStoichiometrys(self):
     if IGNORE_TEST:
         return
     config.setConfiguration(TEST_CFG_FILE)
     #
     molecule = Molecule("Glu6P")
     self.assertEqual(molecule.moiety_stoichiometrys[0].moiety.name, "Glu")
     #
     molecule = Molecule("ATP")
     self.assertEqual(len(molecule.moiety_stoichiometrys), 2)
Beispiel #5
0
 def setUp(self):
     self.molecules1 = [
         MoleculeStoichiometry(Molecule(n), NUM1)
         for n in MOLECULE_NAME_SET[:3]
     ]
     self.molecules2 = [
         MoleculeStoichiometry(Molecule(n), NUM2)
         for n in MOLECULE_NAME_SET[3:]
     ]
     self.comparator = MoietyComparator(self.molecules1, self.molecules2)
     self.config_dict = copy.deepcopy(config._config_dict)
 def testCountMoietys2(self):
     if IGNORE_TEST:
         return
     m_ss = [
         MoleculeStoichiometry(Molecule("A_P_P_P"), 1),
         MoleculeStoichiometry(Molecule("A__P_3"), 1),
     ]
     dfs = []
     for m_s in m_ss:
         dfs.append(m_s.countMoietys())
     self.assertTrue(dfs[0].equals(dfs[1]))
 def testGetMoietys(self):
     if IGNORE_TEST:
         return
     m_s1 = MoietyStoichiometry(Moiety(MOIETY_NAME1), NUM1)
     m_s2 = MoietyStoichiometry(MOIETY_NAME2, NUM2)
     m_s3 = MoietyStoichiometry(MOIETY_NAME1, NUM2)
     molecule = Molecule(str(m_s1))
     molecule = molecule.append(Moiety(str(m_s2)))
     moietys = molecule.getMoietys()
     expected = [Moiety(MOIETY_NAME1), Moiety(MOIETY_NAME2)]
     for moiety in moietys:
         self.assertTrue(any([moiety.isEqual(e) for e in expected]))
Beispiel #8
0
def getMolecules(libsbml_reaction, func):
    """
  Constructs molecules for the species returned by function.
  :param Function func: gets libsbml.SpeciesReference
  :return list-MoleculeStoichiometry:
  """
    species = func(libsbml_reaction)
    molecule_stoichiometrys = []
    for spc in species:
        molecule = Molecule.getMolecule(spc.getSpecies())
        if molecule is None:
            molecule = Molecule(spc.getSpecies())
        molecule_stoichiometrys.append(
            MoleculeStoichiometry(molecule, spc.getStoichiometry()))
    return molecule_stoichiometrys
 def testConstructor(self):
     if IGNORE_TEST:
         return
     molecule = Molecule(MOLECULE_NAME)
     m_s = MoleculeStoichiometry(molecule, NUM1)
     self.assertTrue(m_s.molecule.isEqual(molecule))
     self.assertEqual(m_s.stoichiometry, NUM1)
 def testGetMolecules(self):
     if IGNORE_TEST:
         return
     names = ["a", "b", "c"]
     full_names = list(names)
     full_names.extend(names)
     m_ss = [MoleculeStoichiometry(Molecule(n), NUM1) for n in full_names]
     molecules = MoleculeStoichiometry.getMolecules(m_ss)
     self.assertEqual(len(molecules), len(names))
 def testCountMoietysInCollection(self):
     if IGNORE_TEST:
         return
     m_ss = [
         MoleculeStoichiometry(Molecule(n), NUM1)
         for n in MOLECULE_NAME_SET[:3]
     ]
     df = MoleculeStoichiometry.countMoietysInCollection(m_ss)
     indexes = df.index.tolist()
     self.assertEqual(len(indexes), len(set(indexes)))
 def testExtractMoietyStoichiometrys(self):
     if IGNORE_TEST:
         return
     for expected, strings in MOLECULE_STOICHIOMETRY_STGS.items():
         moietys = list(set([e[0] for e in expected]))
         moietys.sort()
         m_ss = [MoietyStoichiometry(m, 1) for m in moietys]
         for stg in strings:
             result = Molecule.getMoietyStoichiometrys(stg)
             trues = [x.isEqual(y) for x, y in zip(result, m_ss)]
             self.assertTrue(all(trues))
Beispiel #13
0
 def makeMoleculeStoichiometrys(self, func_get_one, func_get_num):
   """
   Creates a list of MoleculeStoichiometry
   :param Function func_get_one: get one element by index
   :param Function func_get_num: get number of elements
   :return list-MoleculeStoichiometry:
   """
   result = []
   collection = [func_get_one(n) for n in range(func_get_num())]
   for s_r in collection:
     molecule = Molecule(s_r.species)
     stoich = s_r.getStoichiometry()
     result.append(MoleculeStoichiometry(molecule, stoich))
   return result
 def testHasMoiety(self):
     if IGNORE_TEST:
         return
     molecule = Molecule(MOLECULE_NAME)
     self.assertTrue(molecule.hasMoiety(Moiety(MOIETY_NAME1)))
     self.assertTrue(molecule.hasMoiety(Moiety(MOIETY_NAME2)))
 def testConstructor(self):
     if IGNORE_TEST:
         return
     molecule = Molecule(NAME)
     self.assertEqual(molecule.name, NAME)
 def testExtractMoietyStoichiometrys(self):
     if IGNORE_TEST:
         return
     moiety_stoich = MoietyStoichiometry(Molecule(MOIETY_NAME1), NUM1)
     mole_stoich = MoleculeStoichiometry(Molecule(str(moiety_stoich)), NUM2)
import tesbml
import unittest

IGNORE_TEST = False
NUM1 = 2
NUM2 = 3
MOIETY_NAME1 = "first"
MOIETY_NAME2 = "second"
MOIETY_NAME3 = "third"
NAME = "name"
NO_NAME = 'not_a_name'
MOLECULE_NAME = "%s%s%s" % (MOIETY_NAME1, cn.MOIETY_DOUBLE_SEPARATOR,
                            MOIETY_NAME2)
MOLECULE_STOICHIOMETRY_STGS = {
    ((Moiety("A"), 1), (Moiety("P"), 1)):
    [Molecule("A_P"), Molecule("A_1__P"),
     Molecule("A__P")],
    ((Moiety("AA"), 1), (Moiety("PP"), 1)): [
        Molecule("AA_PP"),
        Molecule("AA_1__PP"),
        Molecule("AA__PP"),
    ],
}
NAMES = [MOIETY_NAME1, MOIETY_NAME2, MOIETY_NAME3]
iterator = itertools.product([0, 1], [0, 1], [0, 1])
MOLECULE_NAME_SET = []  # A set of names from moiety combinations
for item in iterator:
    name = ""
    for idx, ele in enumerate(item):
        if ele == 1:
            if len(name) == 0: