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))
def test_quadrant2_gate(): gml_path = 'examples/data/gate_ref/gml/gml_quadrant2_gate.xml' res1_path = 'examples/data/gate_ref/truth/Results_FSCN-SSCN.txt' res2_path = 'examples/data/gate_ref/truth/Results_FSCD-SSCN-FL1N.txt' res3_path = 'examples/data/gate_ref/truth/Results_FSCP-SSCN-FL1N.txt' res4_path = 'examples/data/gate_ref/truth/Results_FSCD-FL1P.txt' res5_path = 'examples/data/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_samples(data1_sample.original_filename, group_name) s.analyze_samples(group_name=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_membership('FSCN-SSCN')) np.testing.assert_array_equal( truth2, result.get_gate_membership('FSCD-SSCN-FL1N')) np.testing.assert_array_equal( truth3, result.get_gate_membership('FSCP-SSCN-FL1N')) np.testing.assert_array_equal(truth4, result.get_gate_membership('FSCD-FL1P')) np.testing.assert_array_equal( truth5, result.get_gate_membership('FSCN-SSCP-FL1P'))
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)
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)
def test_get_parent_quadrant_gate(self): gml_path = 'examples/data/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_samples(data1_sample.original_filename, group_name) parent_gate_name = s.get_parent_gate_name(group_name, 'ParRectangle1') self.assertEqual(parent_gate_name, 'FL2P-FL4P') parent_gate = s.get_gate(group_name, parent_gate_name, sample_id=data1_sample.original_filename) self.assertIsInstance(parent_gate, gates.QuadrantGate) self.assertIn('FL2P-FL4P', parent_gate.quadrants.keys())
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)
def test_quadrant_gate_relative_percent(self): gml_path = 'examples/data/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_samples(data1_sample.original_filename, group_name) s.analyze_samples(group_name=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)
def test_quadrant1_gate(): gml_path = 'examples/data/gate_ref/gml/gml_quadrant1_gate.xml' res1_path = 'examples/data/gate_ref/truth/Results_FL2N-FL4N.txt' res2_path = 'examples/data/gate_ref/truth/Results_FL2N-FL4P.txt' res3_path = 'examples/data/gate_ref/truth/Results_FL2P-FL4N.txt' res4_path = 'examples/data/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_samples(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_membership('FL2N-FL4N') result2 = results.get_gate_membership('FL2N-FL4P') result3 = results.get_gate_membership('FL2P-FL4N') result4 = results.get_gate_membership('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)