def test_IntensityMatrix_custom(data): # IntensityMatrix # must build intensity matrix before accessing any intensity matrix methods. # bin interval of 0.5, eg. for double charge ions # intensity matrix, bin interval = 0.5, boundary +/- 0.25 im = build_intensity_matrix(data, 0.5, 0.25, 0.25) assert isinstance(im, IntensityMatrix) # size of intensity matrix (#scans, #bins) assert isinstance(im.size, tuple) assert im.size == (2103, 900) # start mass assert isinstance(im.min_mass, float) assert im.min_mass == 50.2516 # end mass assert isinstance(im.max_mass, float) assert im.max_mass == 499.7516 # the index of the nearest mass to 73.3m/z index = im.get_index_of_mass(73.3) assert isinstance(index, int) assert index == 46 # the nearest mass to 73.3m/z assert isinstance(im.get_mass_at_index(index), float) assert im.get_mass_at_index(index) == 73.2516 # get the list of masses (bin centers), and print the first ten masses = im.mass_list assert isinstance(masses, list) assert masses[0] == 50.2516
def test_build_intensity_matrix_errors(data, obj): with pytest.raises( TypeError, match="'<=' not supported between instances of '.*' and 'int'"): build_intensity_matrix(data, bin_interval=obj) with pytest.raises(TypeError, match="'bin_left' must be a number."): build_intensity_matrix(data, bin_left=obj) with pytest.raises(TypeError, match="'bin_right' must be a number."): build_intensity_matrix(data, bin_right=obj) with pytest.raises(TypeError, match="'min_mass' must be a number."): build_intensity_matrix(data, min_mass=obj) with pytest.raises(ValueError, match="The bin interval must be larger than zero."): build_intensity_matrix(data, bin_interval=0)
"""proc.py """ # This file has been replaced by jupyter/NoiseSmoothing.ipynb from pyms.GCMS.IO.ANDI import ANDI_reader from pyms.IntensityMatrix import build_intensity_matrix from pyms.Noise.SavitzkyGolay import savitzky_golay_im # read the raw data andi_file = "data/gc01_0812_066.cdf" data = ANDI_reader(andi_file) # build an intensity matrix object from the data im = build_intensity_matrix(data) # Use Savitzky-Golay filtering to smooth all IC's in the IM print("Smoothing ...") im_smooth = savitzky_golay_im(im) print("Done") # find the IC for derivatisation product ion before smoothing ic = im.get_ic_at_index(73) # find the IC for derivatisation product ion after smoothing ic_smooth = im_smooth.get_ic_at_index(73) ic.write("output/ic.dat", minutes=True) ic_smooth.write("output/ic_smooth.dat", minutes=True)
def test_build_intensity_matrix(data): # todo for obj in [test_dict, *test_lists, test_string, *test_numbers]: with pytest.raises(TypeError): build_intensity_matrix(obj) for obj in [test_dict, *test_lists, test_string]: with pytest.raises(TypeError): build_intensity_matrix(data, bin_interval=obj) for obj in [test_dict, *test_lists, test_string]: with pytest.raises(TypeError): build_intensity_matrix(data, bin_left=obj) for obj in [test_dict, *test_lists, test_string]: with pytest.raises(TypeError): build_intensity_matrix(data, bin_right=obj) for obj in [test_dict, *test_lists, test_string]: with pytest.raises(TypeError): build_intensity_matrix(data, min_mass=obj) with pytest.raises(ValueError): build_intensity_matrix(data, bin_interval=0)
# This file has been replaced by jupyter/IntensityMatrix.ipynb import pathlib data_directory = pathlib.Path(".").resolve().parent.parent / "pyms-data" # Change this if the data files are stored in a different location from pyms.GCMS.IO.JCAMP import JCAMP_reader from pyms.IntensityMatrix import build_intensity_matrix # read the raw data jcamp_file = data_directory / "gc01_0812_066.jdx" data = JCAMP_reader(jcamp_file) # IntensityMatrix # must build intensity matrix before accessing any intensity matrix methods. # bin interval of 0.5, eg. for double charge ions print("intensity matrix, bin interval = 0.5, boundary +/- 0.25") im = build_intensity_matrix(data, 0.5, 0.25, 0.25) print(" -> size of intensity matrix (#scans, #bins):", im.size) print(im.mass_list[:10]) print(" -> start mass:", im.min_mass) print(" -> end mass:", im.max_mass) index = im.get_index_of_mass(73.3) print(" -> the index of the nearest mass to 73.3m/z is:", index) print(" -> the nearest mass to 73.3m/z is:", im.get_mass_at_index(index))
def im(data): # build an intensity matrix object from the data return build_intensity_matrix(data)
def test_build_intensity_matrix_errors_data(obj): with pytest.raises(TypeError, match="'data' must be a GCMS_data object"): build_intensity_matrix(obj)