diff --git a/requirements.txt b/requirements.txt index 1a1f86b6..11ba40c7 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,5 @@ asteval==0.9.29 +brukeropusreader==1.3.4 contourpy==1.0.7 cycler==0.11.0 fonttools==4.39.0 @@ -9,7 +10,6 @@ kiwisolver==1.4.4 lmfit==1.1.0 matplotlib==3.7.1 numpy==1.24.2 -opusFC==1.3.0 packaging==23.0 pandas==1.5.3 patsy==0.5.3 diff --git a/setup.py b/setup.py index 45bd7128..a107869a 100644 --- a/setup.py +++ b/setup.py @@ -38,6 +38,7 @@ DATA_FILES = [] INSTALL_REQUIRES = [ + "brukeropusreader", # rc1-parser "h5py", "lmfit", "matplotlib", @@ -45,13 +46,12 @@ "pandas", "pydantic==1.*", "pyhht", + "renishawWiRE", # rc1-parser "scikit-learn", "scipy>=1.8.0", + "spc-io~=0.0.2", # rc1-parser "statsmodels", "uncertainties", - "renishawWiRE", # rc1-parser - "opusFC", # rc1-parser - "spc-io~=0.0.2", # rc1-parser ] CLASSIFIERS = [ diff --git a/src/ramanchada2/io/experimental/rc1_parser/third_party_readers.py b/src/ramanchada2/io/experimental/rc1_parser/third_party_readers.py index 1636ce38..2c7b6063 100644 --- a/src/ramanchada2/io/experimental/rc1_parser/third_party_readers.py +++ b/src/ramanchada2/io/experimental/rc1_parser/third_party_readers.py @@ -2,7 +2,7 @@ from renishawWiRE import WDFReader from spc_io import SPC -import opusFC +from brukeropusreader import read_file def readWDF(file): @@ -34,6 +34,16 @@ def readSPC(file): def readOPUS(file, obj_no=0): - c = opusFC.listContents(file) - data = opusFC.getOpusData(file, c[obj_no]) - return data.x, data.y, data.parameters + opus_data = read_file(file) + x = opus_data.get_range("AB") + y = opus_data["AB"] + meta = {} + for key in opus_data: + if key == "AB": + continue + if isinstance(opus_data[key], dict): + for subkey in opus_data[key]: + meta["{}.{}".format(key, subkey)] = opus_data[key][subkey] + else: + meta[key] = opus_data[key] + return x, y, meta diff --git a/tests/conftest.py b/tests/conftest.py index 7b89d796..3160efa6 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -29,3 +29,8 @@ def crystal_simulation_raw_dat_file(): def vasp_simulation_dat_file(): with open(test_data_dir + '/data/simulations/vasp/snCAL_vasp_raman_ALL.dat') as f: yield f + + +@pytest.fixture +def opus_experimental_file(): + return test_data_dir + '/data/experimental/test_opus.0' diff --git a/tests/data/experimental/test_opus.0 b/tests/data/experimental/test_opus.0 new file mode 100644 index 00000000..8fd52969 Binary files /dev/null and b/tests/data/experimental/test_opus.0 differ diff --git a/tests/io/experimental/test_input.py b/tests/io/experimental/test_input.py new file mode 100644 index 00000000..9963353a --- /dev/null +++ b/tests/io/experimental/test_input.py @@ -0,0 +1,12 @@ +from ramanchada2.io.experimental.rc1_parser.third_party_readers import readOPUS + + +def test_opus(opus_experimental_file): + x, y, meta = readOPUS(opus_experimental_file) + assert 4096 == len(x) + assert 4096 == len(y) + assert 96 == len(meta) + if "NPT" in meta: + assert 4096 == meta["NPT"] + elif "AB Data Parameter.NPT" in meta: + assert 4096 == meta["AB Data Parameter.NPT"]