Beispiel #1
0
    def test_buffer_export(self):
        with TmpDir() as dir_:
            filename = os.path.join(dir_, "export.fcs")
            text_start = 256
            fseg = TextSegment(
                self.data.shape[0],
                self.long_channels,
                self.channels,
                self.data.max(axis=0),
                text_start=text_start,
            )
            header = HeaderSegment(text_start, fseg.text_end, fseg.data_start,
                                   fseg.data_end)
            fcs = Fcs(self.data, self.long_channels, self.channels)
            with open(filename, "wb") as fp:
                fcs.export(fp)

            with open(filename, "rb") as fp:
                assert fp.read(58).decode("UTF-8") == header.to_string()
                fp.seek(text_start)
                assert (fp.read(header.text_end - fseg.text_start +
                                1).decode("UTF-8").strip() == fseg.to_string())
                fp.seek(fseg.data_start)
                dseg = DataSegment.from_string(
                    fp.read(fseg.data_end - fseg.data_start + 1),
                    fseg.datatype,
                    len(fseg.pnn),
                    fseg.tot,
                    fseg.endian,
                )
                assert np.array_equal(dseg.values, self.data)
Beispiel #2
0
    def test_update_pns(self):
        fseg = TextSegment(
            self.data.shape[0],
            self.long_channels,
            self.channels,
            self.data.max(axis=0),
            data_start=1000,
        )
        fseg.update_pns({"a": "aa", "b": "bb"})
        assert fseg.pns == ["aa", "bb", "c", "d"]

        text_str = fseg.to_string()
        assert "$P1S/aa" in text_str
        assert "$P2S/bb" in text_str
Beispiel #3
0
    def test_update_pnn(self):
        fseg = TextSegment(
            self.data.shape[0],
            self.long_channels,
            self.channels,
            self.data.max(axis=0),
            data_start=1000,
        )
        fseg.update_pnn({"A": "AA", "B": "BB"})
        assert fseg.pnn == ["AA", "BB", "C", "D"]

        text_str = fseg.to_string()
        assert "$P1N/AA" in text_str
        assert "$P2N/BB" in text_str
Beispiel #4
0
    def test_from_string(self):
        with open("tests/TextSegment.txt", "rb") as fp:
            s = fp.readline()

        fseq = TextSegment.from_string(s)
        assert fseq.data_start == 4064
        assert fseq.data_end == 119207043
Beispiel #5
0
    def test_cal_datapos(self):
        textend = 2
        datasize = 8
        start_expected = 4
        end_expected = 11
        start, end = TextSegment.cal_datapos(textend, datasize)
        assert start == start_expected
        assert end == end_expected

        textend = 999
        datasize = 9000
        start_expected = 1007
        end_expected = 10006
        start, end = TextSegment.cal_datapos(textend, datasize)
        assert start == start_expected
        assert end == end_expected
Beispiel #6
0
 def test_locations(self):
     fseg = TextSegment(
         self.data.shape[0],
         self.long_channels,
         self.channels,
         self.data.max(axis=0),
         data_start=1000,
     )
     assert fseg.text_start == 256
     assert fseg.text_end == 564
     assert fseg.data_start == 1000
     assert fseg.data_end == 0
Beispiel #7
0
    def test_write_text_segment(self):
        with TmpDir() as dir_:
            filename = os.path.join(dir_, "export.fcs")
            fcs = Fcs(self.data, self.long_channels, self.channels)
            fcs.export(filename)

            fseg = TextSegment(
                self.data.shape[0],
                self.long_channels,
                ["w", "x", "y", "z"],
                self.data.max(axis=0),
                text_start=256,
            )

            Fcs.write_text_segment(filename, fseg)
            tseg = Fcs.read_text_segment(filename)
            assert tseg.pns == ["w", "x", "y", "z"]
Beispiel #8
0
 def test_cal_max_text_ends(self):
     assert TextSegment.cal_max_text_ends({}, "/", 0) == 124
Beispiel #9
0
 def test_dict_to_string(self):
     text = {}
     text["BEGINDATA"] = "256"
     text["BYTEORD"] = "1,2,3,4"  # little endian
     assert (TextSegment.dict_to_string(
         text, "/") == "/$BEGINDATA/256/$BYTEORD/1,2,3,4/")
Beispiel #10
0
 def test_data_pos(self):
     assert TextSegment.cal_datapos(10, 100) == (14, 113)