Exemplo n.º 1
0
    def test_mag_mix(self):
        """
        Desired Output:
        1. Magnetically release pcr_0 beads for 30.0 seconds at an amplitude of 0
        2. Distribute from test/1 into wells test/7, test/8, test/9
        3. Distribute from test/2 into wells test/10
        4. Distribute from test/0 into wells test/1
        5. Magnetically mix pcr_0 beads for 30.0 seconds at an amplitude of 0
        """

        p = Protocol()
        pcrs = [p.ref("pcr_%s" % i, None, "96-pcr", storage="cold_20")
                for i in range(7)]
        pcr = pcrs[0]

        p.mag_release("96-pcr", pcr, "30:second", "1:hertz",
                      center=float(5) / 100, amplitude=0)

        c = p.ref("test", None, "96-flat", discard=True)
        srcs = c.wells_from(1, 2).set_volume("100:microliter")
        dests = c.wells_from(7, 4)
        p.distribute(srcs, dests, "30:microliter", allow_carryover=True)
        p.distribute(c.well("A1").set_volume(
            "20:microliter"), c.well("A2"), "5:microliter")

        p.mag_mix("96-pcr", pcr, "30:second", "60:hertz",
                  center=float(100) / 100, amplitude=0)

        pjsonString = json.dumps(p.as_dict(), indent=2)
        pjson = json.loads(pjsonString)
        parser_instance = english.AutoprotocolParser(pjson)
        parser_instance.job_tree()

        parsed_output = parser_instance.parsed_output
        steps = parser_instance.object_list
        forest = parser_instance.forest_list

        self.assertEqual(
            parsed_output, ["Magnetically release pcr_0 beads for 30.0 seconds at an amplitude of 0",
                            "Distribute from test/1 into wells test/7, test/8, test/9",
                            "Distribute from test/2 into wells test/10",
                            "Distribute from test/0 into wells test/1",
                            "Magnetically mix pcr_0 beads for 30.0 seconds at an amplitude of 0"])
        self.assertEqual(forest, [[1, [5]], [2, [4]], [3]])