Exemplo n.º 1
0
    def test_all_gates():
        gml_path = 'examples/data/gate_ref/gml/gml_all_gates.xml'
        truth_pattern = 'examples/data/gate_ref/truth/Results*.txt'

        res_files = glob.glob(truth_pattern)

        truth_dict = {}

        for res_path in res_files:
            match = re.search("Results_(.+)\\.txt$", res_path)
            if match is not None:
                g_id = match.group(1)
                truth = pd.read_csv(res_path,
                                    header=None,
                                    squeeze=True,
                                    dtype='bool').values

                truth_dict[g_id] = truth

        s = Session()
        group_name = 'gml'
        s.add_sample_group(group_name, gating_strategy=gml_path)
        s.add_samples(data1_sample)
        s.assign_samples(data1_sample.original_filename, group_name)
        s.analyze_samples(group_name=group_name)
        results = s.get_gating_results(group_name,
                                       data1_sample.original_filename)

        for row in results.report.itertuples():
            np.testing.assert_array_equal(
                truth_dict[row.gate_name],
                results.get_gate_membership(row.gate_name))
Exemplo n.º 2
0
    def test_quadrant2_gate():
        gml_path = 'examples/gate_ref/gml/gml_quadrant2_gate.xml'
        res1_path = 'examples/gate_ref/truth/Results_FSCN-SSCN.txt'
        res2_path = 'examples/gate_ref/truth/Results_FSCD-SSCN-FL1N.txt'
        res3_path = 'examples/gate_ref/truth/Results_FSCP-SSCN-FL1N.txt'
        res4_path = 'examples/gate_ref/truth/Results_FSCD-FL1P.txt'
        res5_path = 'examples/gate_ref/truth/Results_FSCN-SSCP-FL1P.txt'

        s = Session()
        group_name = 'gml'
        s.add_sample_group(group_name, gating_strategy=gml_path)
        s.add_samples(data1_sample)
        s.assign_sample(data1_sample.original_filename, group_name)
        s.analyze_samples(sample_group=group_name)

        truth1 = pd.read_csv(res1_path, header=None, squeeze=True, dtype='bool').values
        truth2 = pd.read_csv(res2_path, header=None, squeeze=True, dtype='bool').values
        truth3 = pd.read_csv(res3_path, header=None, squeeze=True, dtype='bool').values
        truth4 = pd.read_csv(res4_path, header=None, squeeze=True, dtype='bool').values
        truth5 = pd.read_csv(res5_path, header=None, squeeze=True, dtype='bool').values

        result = s.get_gating_results(group_name, data1_sample.original_filename)

        np.testing.assert_array_equal(truth1, result.get_gate_indices('FSCN-SSCN'))
        np.testing.assert_array_equal(truth2, result.get_gate_indices('FSCD-SSCN-FL1N'))
        np.testing.assert_array_equal(truth3, result.get_gate_indices('FSCP-SSCN-FL1N'))
        np.testing.assert_array_equal(truth4, result.get_gate_indices('FSCD-FL1P'))
        np.testing.assert_array_equal(truth5, result.get_gate_indices('FSCN-SSCP-FL1P'))
Exemplo n.º 3
0
    def test_quadrant1_gate():
        gml_path = 'examples/gate_ref/gml/gml_quadrant1_gate.xml'
        res1_path = 'examples/gate_ref/truth/Results_FL2N-FL4N.txt'
        res2_path = 'examples/gate_ref/truth/Results_FL2N-FL4P.txt'
        res3_path = 'examples/gate_ref/truth/Results_FL2P-FL4N.txt'
        res4_path = 'examples/gate_ref/truth/Results_FL2P-FL4P.txt'

        s = Session()
        group_name = 'gml'
        s.add_sample_group(group_name, gating_strategy=gml_path)
        s.add_samples(data1_sample)
        s.assign_sample(data1_sample.original_filename, group_name)

        truth1 = pd.read_csv(res1_path, header=None, squeeze=True, dtype='bool').values
        truth2 = pd.read_csv(res2_path, header=None, squeeze=True, dtype='bool').values
        truth3 = pd.read_csv(res3_path, header=None, squeeze=True, dtype='bool').values
        truth4 = pd.read_csv(res4_path, header=None, squeeze=True, dtype='bool').values

        s.analyze_samples(group_name)
        results = s.get_gating_results(group_name, data1_sample.original_filename)
        result1 = results.get_gate_indices('FL2N-FL4N')
        result2 = results.get_gate_indices('FL2N-FL4P')
        result3 = results.get_gate_indices('FL2P-FL4N')
        result4 = results.get_gate_indices('FL2P-FL4P')

        np.testing.assert_array_equal(truth1, result1)
        np.testing.assert_array_equal(truth2, result2)
        np.testing.assert_array_equal(truth3, result3)
        np.testing.assert_array_equal(truth4, result4)
Exemplo n.º 4
0
    def test_new_group_membership_is_empty(self):
        s = Session()

        group_name = 'new_group'
        s.add_sample_group(group_name)

        s.add_samples(copy.deepcopy(
            test_samples_base_set))  # load without assigning a group

        s_sample_ids = sorted(s.get_group_sample_ids(group_name))

        self.assertListEqual(s_sample_ids, [])
Exemplo n.º 5
0
    def test_add_samples_with_group(self):
        sample_ids = ["100715.fcs", "109567.fcs", "113548.fcs"]

        s = Session()

        group_name = 'gml'
        s.add_sample_group(group_name)

        s.add_samples(copy.deepcopy(test_samples_base_set), group_name)

        s_sample_ids = sorted(s.get_group_sample_ids(group_name))

        self.assertListEqual(sample_ids, s_sample_ids)
Exemplo n.º 6
0
    def test_poly2_gate():
        gml_path = 'examples/gate_ref/gml/gml_poly2_gate.xml'
        res_path = 'examples/gate_ref/truth/Results_Polygon2.txt'

        s = Session()
        group_name = 'gml'
        s.add_sample_group(group_name, gating_strategy=gml_path)
        s.add_samples(data1_sample)
        s.assign_sample(data1_sample.original_filename, group_name)
        s.analyze_samples(sample_group=group_name)

        truth = pd.read_csv(res_path, header=None, squeeze=True, dtype='bool').values
        result = s.get_gate_indices(group_name, data1_sample.original_filename, 'Polygon2')

        np.testing.assert_array_equal(truth, result)
Exemplo n.º 7
0
    def test_get_parent_quadrant_gate(self):
        gml_path = 'examples/gate_ref/gml/gml_parent_quadrant_rect_gate.xml'

        s = Session()
        group_name = 'gml'
        s.add_sample_group(group_name, gating_strategy=gml_path)
        s.add_samples(data1_sample)
        s.assign_sample(data1_sample.original_filename, group_name)
        parent_id = s.get_parent_gate_id(group_name, 'ParRectangle1')

        self.assertEqual(parent_id, 'FL2P-FL4P')

        parent_gate = s.get_gate(group_name, data1_sample.original_filename, parent_id)

        self.assertIsInstance(parent_gate, gates.Quadrant)
Exemplo n.º 8
0
    def test_get_parent_rect_gate(self):
        gml_path = 'examples/data/gate_ref/gml/gml_parent_rect1_rect_par1_gate.xml'

        s = Session()
        group_name = 'gml'
        s.add_sample_group(group_name, gating_strategy=gml_path)
        s.add_samples(data1_sample)
        s.assign_samples(data1_sample.original_filename, group_name)
        parent_gate_name = s.get_parent_gate_name(group_name, 'ScalePar1')

        self.assertEqual(parent_gate_name, 'ScaleRect1')

        parent_gate = s.get_gate(group_name,
                                 parent_gate_name,
                                 sample_id=data1_sample.original_filename)

        self.assertIsInstance(parent_gate, gates.RectangleGate)
Exemplo n.º 9
0
    def test_boolean_or2_complement_gate():
        gml_path = 'examples/data/gate_ref/gml/gml_boolean_or2_gate.xml'
        res_path = 'examples/data/gate_ref/truth/Results_Or2.txt'

        s = Session()
        group_name = 'gml'
        s.add_sample_group(group_name, gating_strategy=gml_path)
        s.add_samples(data1_sample)
        s.assign_samples(data1_sample.original_filename, group_name)
        s.analyze_samples(group_name=group_name)

        truth = pd.read_csv(res_path, header=None, squeeze=True,
                            dtype='bool').values
        result = s.get_gate_membership(group_name,
                                       data1_sample.original_filename, 'Or2')

        np.testing.assert_array_equal(truth, result)
Exemplo n.º 10
0
    def test_matrix_transform_logicle_rect1_gate():
        gml_path = 'examples/data/gate_ref/gml/gml_matrix_transform_logicle_rect1_gate.xml'
        res_path = 'examples/data/gate_ref/truth/Results_ScaleRect1.txt'

        s = Session()
        group_name = 'gml'
        s.add_sample_group(group_name, gating_strategy=gml_path)
        s.add_samples(data1_sample)
        s.assign_samples(data1_sample.original_filename, group_name)
        s.analyze_samples(group_name=group_name)

        truth = pd.read_csv(res_path, header=None, squeeze=True,
                            dtype='bool').values
        result = s.get_gate_membership(group_name,
                                       data1_sample.original_filename,
                                       'ScaleRect1')

        np.testing.assert_array_equal(truth, result)
Exemplo n.º 11
0
    def test_quadrant_gate_relative_percent(self):
        gml_path = 'examples/gate_ref/gml/gml_quadrant1_gate.xml'

        s = Session()
        group_name = 'gml'
        s.add_sample_group(group_name, gating_strategy=gml_path)
        s.add_samples(data1_sample)
        s.assign_sample(data1_sample.original_filename, group_name)
        s.analyze_samples(sample_group=group_name)

        result = s.get_gating_results(group_name, data1_sample.original_filename)

        total_percent = result.get_gate_relative_percent('FL2N-FL4N') + \
            result.get_gate_relative_percent('FL2N-FL4P') + \
            result.get_gate_relative_percent('FL2P-FL4N') + \
            result.get_gate_relative_percent('FL2P-FL4P')

        self.assertEqual(100.0, total_percent)