Esempio n. 1
0
def test_list_vs(bedmaster_reader: BedmasterReader, empty_matfile: h5py.File):
    expected_vs = ["CO", "CUFF", "HR", "SPO2%", "SPO2R"]
    assert bedmaster_reader.list_vs() == expected_vs

    # No vs on file:
    empty_reader = BedmasterReader(empty_matfile.name)
    assert empty_reader.list_vs() == []
Esempio n. 2
0
def test_list_wv(bedmaster_reader: BedmasterReader, empty_matfile: h5py.File):
    expected_dict = {
        "I": "ch7",
        "II": "ch8",
        "III": "ch9",
        "V": "ch10",
        "SPO2": "ch39",
        "RESP": "ch40",
    }
    assert bedmaster_reader.list_wv() == expected_dict

    # No wv on file:
    empty_reader = BedmasterReader(empty_matfile.name)
    assert empty_reader.list_vs() == []
Esempio n. 3
0
    def _write_bedmaster_data(
        bedmaster_files: List[str],
        writer: Writer,
        scaling_and_units: Dict,
    ):
        all_files = True
        previous_max = None
        untensorized_files: Dict[str, List[str]] = {"file": [], "error": []}
        for bedmaster_file in bedmaster_files:
            try:
                with BedmasterReader(bedmaster_file, scaling_and_units) as reader:
                    if previous_max:
                        reader.get_interbundle_correction(previous_max)

                    # These blocks can be easily parallelized with MPI:
                    # >>> rank = MPI.COMM_WORLD.rank
                    # >>> if rank == 1:
                    vs_signals = reader.list_vs()
                    for vs_signal_name in vs_signals:
                        vs_signal = reader.get_vs(vs_signal_name)
                        if vs_signal:
                            writer.write_signal(vs_signal)

                    # >>> if rank == 2
                    wv_signals = reader.list_wv()
                    for wv_signal_name, channel in wv_signals.items():
                        wv_signal = reader.get_wv(channel, wv_signal_name)
                        if wv_signal:
                            writer.write_signal(wv_signal)

                    previous_max = reader.max_segment
            except Exception as error:
                untensorized_files["file"].append(bedmaster_file)
                untensorized_files["error"].append(repr(error))
        if len(untensorized_files["file"]) > 0:
            all_files = False
        return all_files, untensorized_files
Esempio n. 4
0
def bedmaster_reader(
    test_scale_units: Dict[str, Dict[str, Union[int, float, str]]],
) -> Iterator[BedmasterReader]:
    with h5py.File(pytest.mat_file, "r") as mat_file:
        reader = BedmasterReader(mat_file.filename, test_scale_units)
        yield reader