def test_nprods_none_dict(self): net = Uniform(10, 50, {(1, 1): 1, (2, 2): 2.0}, None) net = Uniform(10, 50, {(1, 1): 1, (2, 2): 2.0}, None, rng=self.rng) self.assertEqual(net.seen, self.mols)
def test_rate_float(self): net = Uniform(10, 50, 2, 2, 2.5) net = Uniform(10, 50, 2, 2, 2.5, rng=self.rng) self.assertEqual(net.seen, self.mols)
def test_nprods_dict(self): net = Uniform(10, 50, 2, {1: 1, 2: 2}) net = Uniform(10, 50, 2, {1: 1, 2: 2}, rng=self.rng) self.assertEqual(net.seen, self.mols)
def test_nprods_none_tuple(self): net = Uniform(10, 50, ((1, 1), (2, 2), (2, 2)), None) net = Uniform(10, 50, ((1, 1), (2, 2), (2, 2)), None, rng=self.rng) self.assertEqual(net.seen, self.mols)
def test_nprods_tuple(self): net = Uniform(10, 50, 2, (1, 2, 2)) net = Uniform(10, 50, 2, (1, 2, 2), rng=self.rng) self.assertEqual(net.seen, self.mols)
def test_nprods_list(self): net = Uniform(10, 50, 2, [1, 2, 2]) net = Uniform(10, 50, 2, [1, 2, 2], rng=self.rng) self.assertEqual(net.seen, self.mols)
def test_nreacts_dict(self): net = Uniform(10, 50, {1: 1, 2: 2.0}, 2) net = Uniform(10, 50, {1: 1, 2: 2.0}, 2, rng=self.rng) self.assertEqual(net.seen, self.mols)
def test_rate_dict(self): net = Uniform(10, 50, 2, 2, {1: 1, 1.0: 1, 2.5: 2.5}) net = Uniform(10, 50, 2, 2, {1: 1, 1.0: 1, 2.5: 2.5}, rng=self.rng) self.assertEqual(net.seen, self.mols)
def test_nreacts_tuple(self): net = Uniform(10, 50, (1, 2, 2), 2) net = Uniform(10, 50, (1, 2, 2), 2, rng=self.rng) self.assertEqual(net.seen, self.mols)
def test_nreacts_list(self): net = Uniform(10, 50, [1, 2, 2], 2) net = Uniform(10, 50, [1, 2, 2], 2, rng=self.rng) self.assertEqual(net.seen, self.mols)
def test_nmols_dict(self): mols = dict(list(zip(self.mols, list(range(1, len(self.mols) + 1))))) net = Uniform(mols, 50, 2, 2) net = Uniform(mols, 50, 2, 2, rng=self.rng) self.assertEqual(net.seen, self.mols)
def test_nmols_list(self): net = Uniform(list(self.mols), 50, 2, 2) net = Uniform(list(self.mols), 50, 2, 2, rng=self.rng) self.assertEqual(net.seen, self.mols)
def test_nmols_tuple(self): net = Uniform(self.mols, 50, 2, 2) net = Uniform(self.mols, 50, 2, 2, rng=self.rng) self.assertEqual(net.seen, self.mols)
def test_rate_list(self): net = Uniform(10, 50, 2, 2, [1, 2.5, 3]) net = Uniform(10, 50, 2, 2, [1, 2.5, 3], rng=self.rng) self.assertEqual(net.seen, self.mols)
def test_nprods_int(self): net = Uniform(10, 50, 2, 2) net = Uniform(10, 50, 2, 2, rng=self.rng) self.assertEqual(net.seen, self.mols)
def main(): parser = argparse.ArgumentParser( description="Generates `.chem` using Uniform algorithm.") parser.add_argument( "-o", "--outfile", action="store", type=argparse.FileType('w'), help="write to OUTFILE in .chem format (if ommited, use stdout)", metavar="OUTFILE") parser.add_argument("-n", "--nmols", action="store", type=int, help="number of molecules", default=10) parser.add_argument("-m", "--nreactions", action="store", type=int, help="number of reactions", default=10) parser.add_argument("-r", "--nreactants", action="append", help="possible number of reactants", default=[2]) parser.add_argument("-p", "--nproducts", action="append", help="possible number of products", default=[2]) parser.add_argument("-t", "--rates", action="append", help="possible reaction rates", default=[1.0]) parser.add_argument("-s", "--seed", action="store", type=int, help="pseudo-random seed", default=None) args = parser.parse_args() nmols = args.nmols nreactions = args.nreactions nreactants = [int(x) for x in args.nreactants] nproducts = [int(x) for x in args.nproducts] rates = [float(x) for x in args.rates] #strip defaults if len(nreactants) > 1: nreactants = nreactants[1:] if len(nproducts) > 1: nproducts = nproducts[1:] if len(rates) > 1: rates = rates[1:] rng = random.Random(args.seed) net = Uniform(nmols, nreactions, nreactants, nproducts, rates, rng=rng) chemstr = """#Uniform reaction network # nmols = {0} # nreactions = {1} # reactants = {2} # products = {3} # rates = {4} # seed = {5} """.format(repr(nmols), repr(nreactions), repr(nreactants), repr(nproducts), repr(rates), args.seed) chemstr += str(net) chemstr += "\n" if args.outfile is None: #print to standard out sys.stdout.write(chemstr) else: #write to provided filename args.outfile.write(chemstr)
def test_rate_tuple(self): net = Uniform(10, 50, 2, 2, (1, 2.5, 3)) net = Uniform(10, 50, 2, 2, (1, 2.5, 3), rng=self.rng) self.assertEqual(net.seen, self.mols)