def test_BilinearInterpolation(self): mat = pyopenms.MatrixDouble() mat.resize(2, 3, float()) mat.setValue(0, 0, 17) mat.setValue(0, 1, 18.9) mat.setValue(0, 2, 20.333) mat.setValue(1, 0, -0.1) mat.setValue(1, 1, -0.13) mat.setValue(1, 2, -0.001) bilip = pyopenms.BilinearInterpolation() bilip.setData(mat) bilip.setMapping_0(13.0, 230.0, 14.0, 250.0) bilip.setMapping_1(15.0, 2100.0, 17.0, 2900.0) bilip_2 = pyopenms.BilinearInterpolation() bilip_2 = bilip self.assertAlmostEqual(bilip_2.getScale_0(), 20) self.assertAlmostEqual(bilip_2.getScale_1(), 400) self.assertAlmostEqual(bilip_2.getOffset_0(), -30) self.assertAlmostEqual(bilip_2.getOffset_1(), -3900) self.assertAlmostEqual(bilip_2.getInsideReferencePoint_0(), 13) self.assertAlmostEqual(bilip_2.getOutsideReferencePoint_0(), 230) self.assertAlmostEqual(bilip_2.getInsideReferencePoint_1(), 15) self.assertAlmostEqual(bilip_2.getOutsideReferencePoint_1(), 2100) for i in range(mat.rows()): for j in range(mat.cols()): self.assertAlmostEqual(bilip.getData().getValue(i, j), mat.getValue(i, j))
def test_value(self): bilip_small = pyopenms.BilinearInterpolation() bilip_big = pyopenms.BilinearInterpolation() tmp_small = bilip_small.getData() tmp_big = bilip_big.getData() tmp_small.resize(5, 5, float()) tmp_big.resize(15, 15, float()) for i in range(5): for j in range(5): num = int(math.floor(random.random() * 100)) tmp_small.setValue(i, j, num) tmp_big.setValue(i + 5, j + 5, num) bilip_small.setData(tmp_small) bilip_big.setData(tmp_big) bilip_small.setMapping_0(0.0, 0.0, 5.0, 5.0) bilip_small.setMapping_1(0.0, 0.0, 5.0, 5.0) bilip_big.setMapping_0(5.0, 0.0, 10.0, 5.0) bilip_big.setMapping_1(5.0, 0.0, 10.0, 5.0) for i in range(-50, 101): p = i / 10.0 for j in range(-50, 101): q = j / 10.0 self.assertAlmostEqual(bilip_small.value(p, q), bilip_big.value(p, q))
def test_addValue(self): for i in range(-50, 101): p = i / 10.0 for j in range(-50, 101): q = j / 10.0 bilip_small = pyopenms.BilinearInterpolation() tmp = bilip_small.getData() tmp.resize(5, 5, float()) bilip_small.setData(tmp) bilip_small.setMapping_0(0.0, 0.0, 5.0, 5.0) bilip_small.setMapping_1(0.0, 0.0, 5.0, 5.0) bilip_small.addValue(p, q, 100) bilip_big = pyopenms.BilinearInterpolation() tmp = bilip_big.getData() tmp.resize(15, 15, float()) bilip_big.setData(tmp) bilip_big.setMapping_0(5.0, 0.0, 10.0, 5.0) bilip_big.setMapping_1(5.0, 0.0, 10.0, 5.0) bilip_big.addValue(p, q, 100) big_submatrix = pyopenms.MatrixDouble() big_submatrix.resize(5, 5, float()) for m in range(5): for n in range(5): big_submatrix.setValue(m, n, bilip_big.getData().getValue(m+5, n+5)) for m in range(bilip_small.getData().rows()): for n in range(bilip_small.getData().cols()): self.assertAlmostEqual(bilip_small.getData().getValue(m, n), big_submatrix.getValue(m, n))
def test_getData_setData(self): bilip = pyopenms.BilinearInterpolation() tmp = bilip.getData() tmp.resize(2, 3, float()) tmp.setValue(1, 2, 10012) tmp.setValue(0, 0, 10000) tmp.setValue(1, 0, 10010) bilip.setData(tmp) bilip_2 = pyopenms.BilinearInterpolation(bilip) self.assertAlmostEqual(bilip_2.getData().getValue(1, 2), 10012) self.assertAlmostEqual(bilip_2.getData().getValue(0, 0), 10000) self.assertAlmostEqual(bilip_2.getData().getValue(1, 0), 10010)
def test_setMapping_0(self): bilip = pyopenms.BilinearInterpolation() bilip.setMapping_0(1.0, 2.0, 3.0, 8.0) self.assertAlmostEqual(bilip.getScale_0(), 3) self.assertAlmostEqual(bilip.getOffset_0(), -1) self.assertAlmostEqual(bilip.getScale_1(), 1) self.assertAlmostEqual(bilip.getOffset_1(), 0) bilip2 = pyopenms.BilinearInterpolation() bilip2.setMapping_0(3.0, 1.0, 2.0) self.assertAlmostEqual(bilip2.getScale_0(), 3) self.assertAlmostEqual(bilip2.getOffset_0(), -1) self.assertAlmostEqual(bilip2.getScale_1(), 1) self.assertAlmostEqual(bilip2.getOffset_1(), 0)
def test_getInsideReferencePoint_0(self): bilip = pyopenms.BilinearInterpolation() bilip.setMapping_0(1.0, 4.0, 3.0, 8.0) self.assertAlmostEqual(bilip.getInsideReferencePoint_0(), 1) self.assertAlmostEqual(bilip.getOutsideReferencePoint_0(), 4) self.assertAlmostEqual(bilip.getInsideReferencePoint_1(), 0) self.assertAlmostEqual(bilip.getOutsideReferencePoint_1(), 0)
def setSpectra(self, msexperiment): msexperiment.updateRanges() # resolution: mz_res Da in m/z, rt_res seconds in RT dimension mz_res = 1.0 rt_res = 1.0 # size of image cols = 1.0 / mz_res * msexperiment.getMaxMZ() rows = 1.0 / rt_res * msexperiment.getMaxRT() # create regular spaced data to turn spectra into an image """se_comment: max_intensity was never used""" """max_intensity = msexperiment.getMaxInt()""" bilip = pyopenms.BilinearInterpolation() tmp = bilip.getData() tmp.resize(int(rows), int(cols), float()) bilip.setData(tmp) bilip.setMapping_0(0.0, 0.0, rows - 1, msexperiment.getMaxRT()) bilip.setMapping_1(0.0, 0.0, cols - 1, msexperiment.getMaxMZ()) img = pg.ImageItem(autoDownsample=True) self.addItem(img) for spec in msexperiment: if spec.getMSLevel() == 1: mzs, ints = spec.get_peaks() rt = spec.getRT() for i in range(0, len(mzs)): bilip.addValue(rt, mzs[i], ints[i]) # slow data = np.ndarray(shape=(int(cols), int(rows)), dtype=np.float64) grid_data = bilip.getData() for i in range(int(rows)): for j in range(int(cols)): data[j][i] = grid_data.getValue(i, j) # slow # Set a custom color map pos = np.array([0.0, 0.01, 0.05, 0.1, 1.0]) color = np.array( [ (255, 255, 255, 0), (255, 255, 0, 255), (255, 0, 0, 255), (0, 0, 255, 255), (0, 0, 0, 255), ], dtype=np.ubyte, ) cmap = pg.ColorMap(pos, color) img.setLookupTable(cmap.getLookupTable(0.0, 1.0, 256)) img.setImage(data)
def test_supportMax_1(self): bilip = pyopenms.BilinearInterpolation() bilip.setMapping_1(3.0, 1.0, 2.0) bilip.setMapping_0(5.0, 3.0, 4.0) tmp = bilip.getData() tmp.resize(3, 2, float()) bilip.setData(tmp) self.assertAlmostEqual(bilip.index2key_1(0), -1) self.assertAlmostEqual(bilip.index2key_1(1), 2) self.assertAlmostEqual(bilip.supportMin_1(), -4) self.assertAlmostEqual(bilip.supportMax_1(), 5) self.assertAlmostEqual(bilip.index2key_0(0), -11) self.assertAlmostEqual(bilip.index2key_0(2), -1) self.assertAlmostEqual(bilip.supportMin_0(), -16) self.assertAlmostEqual(bilip.supportMax_0(), 4)
def test_empty(self): bilip = pyopenms.BilinearInterpolation() self.assertTrue(bilip.empty()) tmp = bilip.getData() tmp.resize(1, 2, float()) bilip.setData(tmp) self.assertFalse(bilip.empty()) tmp = bilip.getData() tmp.resize(0, 0, float()) bilip.setData(tmp) self.assertTrue(bilip.empty()) tmp = bilip.getData() tmp.resize(1, 2, float()) bilip.setData(tmp) self.assertFalse(bilip.empty()) tmp = bilip.getData() tmp.resize(1, 0, float()) bilip.setData(tmp) self.assertTrue(bilip.empty()) tmp = bilip.getData() tmp.resize(1, 2, float()) bilip.setData(tmp) self.assertFalse(bilip.empty()) tmp = bilip.getData() tmp.resize(0, 0, float()) bilip.setData(tmp) self.assertTrue(bilip.empty()) tmp = bilip.getData() tmp.resize(2, 2, float()) bilip.setData(tmp) self.assertFalse(bilip.empty()) tmp = bilip.getData() tmp.clear() bilip.setData(tmp) self.assertTrue(bilip.empty())
def test_key2index_0(self): bilip = pyopenms.BilinearInterpolation() bilip.setMapping_0(3.0, 1.0, 2.0) self.assertAlmostEqual(bilip.key2index_0(-1), 0) self.assertAlmostEqual(bilip.key2index_1(0), 0)
def test_setScale_0(self): bilip = pyopenms.BilinearInterpolation() bilip.setScale_0(987) self.assertAlmostEqual(bilip.getScale_0(), 987)
def test_index2key_1(self): bilip = pyopenms.BilinearInterpolation() bilip.setMapping_1(3.0, 1.0, 2.0) self.assertAlmostEqual(bilip.index2key_1(0), -1) self.assertAlmostEqual(bilip.index2key_0(0), 0)