Пример #1
0
    def test_speed_of_reading_fcs_files(self):
        """ Testing the speed of loading a FCS files"""
        fname = file_formats["mq fcs 3.1"]
        number = 1000

        print

        time = timeit.timeit(
            lambda: parse_fcs(fname, meta_data_only=True, output_format="DataFrame", reformat_meta=False), number=number
        )
        print "Loading fcs file {0} times with meta_data only without reformatting of meta takes {1} per loop".format(
            time / number, number
        )

        time = timeit.timeit(
            lambda: parse_fcs(fname, meta_data_only=True, output_format="DataFrame", reformat_meta=True), number=number
        )
        print "Loading fcs file {0} times with meta_data only with reformatting of meta takes {1} per loop".format(
            time / number, number
        )

        time = timeit.timeit(
            lambda: parse_fcs(fname, meta_data_only=False, output_format="DataFrame", reformat_meta=False),
            number=number,
        )
        print "Loading fcs file {0} times both meta and data but without reformatting of meta takes {1} per loop".format(
            time / number, number
        )
Пример #2
0
 def test_fcs_reader_API(self):
     """
     Makes sure that the API remains consistent.
     """
     print "\n"
     for fname in file_formats.values():
         print "Running file {0}".format(fname)
         meta = parse_fcs(fname, meta_data_only=True)
         meta, data_pandas = parse_fcs(fname, meta_data_only=False, output_format="DataFrame")
         meta, data_pandas = parse_fcs(fname, meta_data_only=False, output_format="DataFrame", reformat_meta=True)
         meta, data_numpy = parse_fcs(fname, meta_data_only=False, output_format="ndarray", reformat_meta=False)
         meta, data_numpy = parse_fcs(fname, meta_data_only=False, output_format="ndarray", reformat_meta=True)
         self.assertTrue(meta["_channel_names_"])
         self.assertTrue(len(meta["_channel_names_"]) != 0)
Пример #3
0
    def test_mq_FCS_3_1_text_segment(self):
        """ Tests TEXT segment parsed from FCS (3.1 format) file produced by a MACSQuant flow cytometer """
        fname = file_formats["mq fcs 3.1"]
        meta = parse_fcs(fname, meta_data_only=True, output_format="ndarray")

        str_value = "MACSQuant"
        self.assertTrue(meta["$CYT"] == str_value)
Пример #4
0
    def test_mq_FCS_2_0_text_segment(self):
        """ Tests TEXT segment parsed from FCS (2.0 format) file produced by a MACSQuant flow cytometer """
        fname = file_formats["mq fcs 2.0"]
        meta = parse_fcs(fname, meta_data_only=True, output_format="ndarray")

        self.assertTrue(meta["$FIL"] == "EY_2013-07-19_PBS_FCS_2.0_Custom_Without_Add_Well_A1.001.fcs")

        str_value = "MACSQuant"
        self.assertTrue(meta["$CYT"] == str_value)
Пример #5
0
    def test_mq_FCS_3_0_text_segment(self):
        """ Tests TEXT segment parsed from FCS (3.0 format) file produced by a MACSQuant flow cytometer """
        fname = file_formats["mq fcs 3.0"]
        meta = parse_fcs(fname, meta_data_only=True, output_format="ndarray")

        str_value = "EY_2013-07-19_PID_101_MG1655_Transformants_D01_Well_A4.001.fcs"
        self.assertTrue(meta["$FIL"] == str_value)

        str_value = "MACSQuant"
        self.assertTrue(meta["$CYT"] == str_value)
Пример #6
0
    def read_data(self, **kwargs):
        '''
        Read the datafile specified in Sample.datafile and
        return the resulting object.
        Does NOT assign the data to self.data

        It's advised not to use this method, but instead to access
        the data through the FCMeasurement.data attribute.
        '''
        meta, data = parse_fcs(self.datafile, **kwargs)
        return data
Пример #7
0
    def test_channel_naming_automatic_correction(self):
        """ Checks that channel names are assigned automatically corrected if duplicate names
        encountered. """
        path = "../tests/data/FlowCytometers/MiltenyiBiotec/FCS3.1/SG_2014-09-26_Duplicate_Names.fcs"

        with warnings.catch_warnings(record=True) as w:
            # Cause all warnings to always be triggered.
            warnings.simplefilter("always")
            meta = parse_fcs(path, meta_data_only=True, reformat_meta=True)
            channel_names = list(meta["_channel_names_"])

            self.assertTrue(
                channel_names == ["HDR-CE", "HDR-SE", "HDR-V", "FSC-A", "FSC-H", "SSC-A", "SSC-H", "FL7-A", "FL7-H"]
            )

            # Verify some things
            assert len(w) == 1
Пример #8
0
    def read_meta(self, **kwargs):
        '''
        Read only the annotation of the FCS file (without reading DATA segment).

        It's advised not to use this method, but instead to access
        the meta data through the FCMeasurement.meta attribute.
        '''
        # TODO Try to rewrite the code to be more logical
        # The reason the equivalent statement is not in the read_data method
        # above is because self.readdata_kwargs are passed
        # as **kwargs to the read_data function.
        if 'channel_naming' in self.readdata_kwargs:
            kwargs['channel_naming'] = self.readdata_kwargs['channel_naming']
        meta = parse_fcs(self.datafile,
                reformat_meta=True,
                meta_data_only=True, **kwargs)
        return meta
Пример #9
0
    def test_channel_naming_manual(self):
        """ Checks that channel names correspond to manual setting """
        pnn_names = [
            "Time",
            "HDR-CE",
            "HDR-SE",
            "HDR-V",
            "FSC-A",
            "FSC-H",
            "FSC-W",
            "SSC-A",
            "SSC-H",
            "SSC-W",
            "FL2-A",
            "FL2-H",
            "FL2-W",
            "FL4-A",
            "FL4-H",
            "FL4-W",
            "FL7-A",
            "FL7-H",
            "FL7-W",
        ]
        pns_names = [
            "HDR-T",
            "HDR-CE",
            "HDR-SE",
            "HDR-V",
            "FSC-A",
            "FSC-H",
            "FSC-W",
            "SSC-A",
            "SSC-H",
            "SSC-W",
            "V2-A",
            "V2-H",
            "V2-W",
            "Y2-A",
            "Y2-H",
            "Y2-W",
            "B1-A",
            "B1-H",
            "B1-W",
        ]

        path = "../tests/data/FlowCytometers/MiltenyiBiotec/FCS3.1/EY_2013-07-19_PBS_FCS_3.1_Well_A1.001.fcs"
        meta = parse_fcs(path, meta_data_only=True, reformat_meta=True, channel_naming="$PnN")
        channel_names = list(meta["_channel_names_"])

        self.assertTrue(channel_names == pnn_names)

        # ---  Test with data

        meta, data = parse_fcs(path, meta_data_only=False, reformat_meta=True, channel_naming="$PnN")
        channel_names = list(meta["_channel_names_"])

        self.assertTrue(channel_names == pnn_names)
        self.assertTrue(list(data.columns.values) == pnn_names)

        # ---  Test with data

        meta, data = parse_fcs(path, meta_data_only=False, reformat_meta=True, channel_naming="$PnS")
        channel_names = list(meta["_channel_names_"])

        self.assertTrue(channel_names == pns_names)
        self.assertTrue(list(data.columns.values) == pns_names)
Пример #10
0
 def test_mq_FCS_3_1_data_segment(self):
     """ Tests DATA segment parsed from FCS (3.1 format) file produced by a MACSQuant flow cytometer """
     fname = file_formats["mq fcs 3.1"]
     meta, matrix = parse_fcs(fname, output_format="ndarray")
Пример #11
0
def check_data_segment(fcs_format, array_values):
    fname = file_formats[fcs_format]
    meta, matrix = parse_fcs(fname, output_format="ndarray")
    diff = numpy.abs(array_values - matrix[0:4, :])
    return numpy.all(diff < 10 ** -8)  # Is this the proper way to do the test?