Beispiel #1
0
    def test_parse_wsp_with_ellipse(self):
        wsp_path = "examples/data/8_color_data_set/8_color_ICS_with_ellipse.wsp"
        fcs_path = "examples/data/8_color_data_set/fcs_files/101_DEN084Y5_15_E01_008_clean.fcs"
        sample_id = '101_DEN084Y5_15_E01_008_clean.fcs'
        sample_grp = 'DEN'
        gate_name = 'ellipse1'
        gate_path = ('root', 'Time', 'Singlets', 'aAmine-', 'CD3+')

        fks = Session(fcs_samples=fcs_path)
        fks.import_flowjo_workspace(wsp_path, ignore_missing_files=True)

        fks.analyze_samples(sample_grp, sample_id=sample_id)
        gate_indices = fks.get_gate_membership(sample_grp,
                                               sample_id,
                                               gate_name,
                                               gate_path=gate_path)

        self.assertIsInstance(gate_indices, np.ndarray)
        self.assertEqual(np.sum(gate_indices), 7018)
Beispiel #2
0
    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)
Beispiel #3
0
    def test_add_matrix_poly4_gate():
        fks = Session(fcs_samples=data1_sample)

        fks.add_comp_matrix(comp_matrix_01)

        dim1 = Dimension('PE', compensation_ref='MySpill')
        dim2 = Dimension('PerCP', compensation_ref='MySpill')
        dims = [dim1, dim2]

        poly_gate = gates.PolygonGate('Polygon4', None, dims, poly1_vertices)
        fks.add_gate(poly_gate)

        res_path = 'examples/gate_ref/truth/Results_Polygon4.txt'
        truth = pd.read_csv(res_path, header=None, squeeze=True,
                            dtype='bool').values

        fks.analyze_samples()
        result = fks.get_gating_results('default',
                                        data1_sample.original_filename)

        np.testing.assert_array_equal(truth,
                                      result.get_gate_indices('Polygon4'))
Beispiel #4
0
    def test_load_wsp_single_quad(self):
        wsp_path = "examples/simple_diamond_example/simple_diamond_example_quad_gate.wsp"
        fcs_path = "examples/simple_diamond_example/test_data_diamond_01.fcs"

        fks = Session(fcs_samples=fcs_path)
        fks.import_flowjo_workspace(wsp_path)

        # FlowJo quadrant gates are not true quadrant gates, rather a collection of rectangle gates
        self.assertIsInstance(
            fks.get_gate('All Samples', 'test_data_diamond_01.fcs',
                         'Q1: channel_A- , channel_B+'), gates.RectangleGate)

        fks.analyze_samples(sample_group='All Samples')
        results = fks.get_gating_results('All Samples',
                                         'test_data_diamond_01.fcs')

        gate_count_q1 = results.get_gate_count('Q1: channel_A- , channel_B+')
        gate_count_q2 = results.get_gate_count('Q2: channel_A+ , channel_B+')
        gate_count_q3 = results.get_gate_count('Q3: channel_A+ , channel_B-')
        gate_count_q4 = results.get_gate_count('Q4: channel_A- , channel_B-')
        self.assertEqual(gate_count_q1, 49671)
        self.assertEqual(gate_count_q2, 50596)
        self.assertEqual(gate_count_q3, 50330)
        self.assertEqual(gate_count_q4, 49403)
Beispiel #5
0
    def test_add_transform_asinh_range1_gate():
        fks = Session(fcs_samples=data1_sample)
        fks.add_transform(asinh_xform1)

        dim1 = Dimension('FL1-H',
                         'uncompensated',
                         'AsinH_10000_4_1',
                         range_min=0.37,
                         range_max=0.63)
        dims = [dim1]

        rect_gate = gates.RectangleGate('ScaleRange1', None, dims)
        fks.add_gate(rect_gate)

        res_path = 'examples/gate_ref/truth/Results_ScaleRange1.txt'
        truth = pd.read_csv(res_path, header=None, squeeze=True,
                            dtype='bool').values

        fks.analyze_samples()
        result = fks.get_gating_results('default',
                                        data1_sample.original_filename)

        np.testing.assert_array_equal(truth,
                                      result.get_gate_indices('ScaleRange1'))
Beispiel #6
0
    def test_load_samples_from_list_of_samples(self):
        samples = [Sample(file_path) for file_path in fcs_file_paths]
        fks = Session(fcs_samples=samples)

        self.assertEqual(len(fks.sample_lut.keys()), 3)
        self.assertIsInstance(fks.get_sample('100715.fcs'), Sample)
Beispiel #7
0
    def test_calculate_comp_from_beads(self):
        bead_dir = "examples/4_color_beads"
        fks = Session()
        comp = fks.calculate_compensation_from_beads(bead_dir)

        self.assertIsInstance(comp, Matrix)
Beispiel #8
0
    def test_get_transform(self):
        fks = Session(fcs_samples=data1_sample)
        fks.add_transform(asinh_xform1)
        comp_mat = fks.get_transform('default', 'B07', 'AsinH_10000_4_1')

        self.assertIsInstance(comp_mat, transforms.AsinhTransform)
Beispiel #9
0
    def test_get_comp_matrix(self):
        fks = Session(fcs_samples=data1_sample)
        fks.add_comp_matrix(comp_matrix_01)
        comp_mat = fks.get_comp_matrix('default', 'B07', 'MySpill')

        self.assertIsInstance(comp_mat, Matrix)
Beispiel #10
0
"""
Tests for GatingResults class
"""
import copy
import unittest
from flowkit import Session
from .session_tests import test_samples_8c_full_set

wsp_path = "examples/data/8_color_data_set/reused_quad_gate_with_child.wsp"
group_name = 'All Samples'
sample_id = '101_DEN084Y5_15_E01_008_clean.fcs'

fks = Session(copy.deepcopy(test_samples_8c_full_set))
fks.import_flowjo_workspace(wsp_path, ignore_missing_files=True)
fks.analyze_samples(group_name=group_name, sample_id=sample_id)
results_8c_sample_008 = fks.get_gating_results(group_name=group_name,
                                               sample_id=sample_id)


class GatingResultsTestCase(unittest.TestCase):
    def test_get_gate_count_ambiguous_raises_value_error(self):
        gate_name = 'some_child_gate'

        self.assertRaises(ValueError, results_8c_sample_008.get_gate_count,
                          gate_name)

    def test_get_gate_count_with_gate_path(self):
        gate_name = 'some_child_gate'
        gate_path_1 = ('root', 'good cells', 'cd4+', 'Q2: CD107a+, IL2+')

        gate_count = results_8c_sample_008.get_gate_count(
Beispiel #11
0
    def test_load_samples_from_list_of_samples(self):
        samples = copy.deepcopy(test_samples_base_set)
        fks = Session(fcs_samples=samples)

        self.assertEqual(len(fks.sample_lut.keys()), 3)
        self.assertIsInstance(fks.get_sample('100715.fcs'), Sample)