Пример #1
0
    def test_calc_enhancement(self):

        nmr.remove_offset(self.ws)
        nmr.window(self.ws, linewidth=15)
        nmr.fourier_transform(self.ws, zero_fill_factor=2)
        nmr.autophase(self.ws, method="arctan")

        ws = copy.deepcopy(self.ws)

        nmr.calculate_enhancement(
            self.ws,
            off_spectrum=1,
            on_spectra="all",
            integrate_center=0,
            integrate_width="full",
            method="integrate",
            dim="f2",
        )

        self.assertAlmostEqual(self.ws["enhancements"].values[0], 1.0, places=6)
        self.assertAlmostEqual(
            self.ws["enhancements"].values[-1], -1.3615844024369856, places=6
        )

        nmr.remove_offset(self.ws_off)
        nmr.window(self.ws_off, linewidth=15)
        nmr.fourier_transform(self.ws_off, zero_fill_factor=2)
        nmr.autophase(self.ws_off, method="arctan")

        nmr.calculate_enhancement(
            self.ws_off,
            off_spectrum=self.ws_off["proc"],
            on_spectra=self.ws["proc"],
            integrate_center="max",
            integrate_width="full",
            method="amplitude",
            dim="f2",
        )

        self.assertAlmostEqual(
            self.ws_off["enhancements"].values[0], -0.005967949713665632, places=6
        )
        self.assertAlmostEqual(
            self.ws_off["enhancements"].values[-1], 0.004154668257187268, places=6
        )

        dnp.dnpTools.integrate(ws, integrate_center=0, integrate_width="full")
        nmr.calculate_enhancement(ws, off_spectrum=1)

        self.assertAlmostEqual(ws["enhancements"].values[0], 1.0, places=6)
        self.assertAlmostEqual(
            ws["enhancements"].values[-1], -1.3615844024369856, places=6
        )
Пример #2
0
    def test_integrate(self):

        ws = copy.deepcopy(self.ws)

        nmr.remove_offset(ws)
        nmr.window(ws, linewidth=15)
        nmr.fourier_transform(ws, zero_fill_factor=2)
        nmr.autophase(ws, method="arctan")

        ws2 = copy.deepcopy(ws)
        ws3 = copy.deepcopy(ws)
        dnp.dnpTools.integrate(ws,
                               dim="f2",
                               integrate_center=0,
                               integrate_width=50)
        self.assertEqual((8, ), np.shape(ws["integrals"].values))
        self.assertAlmostEqual(max(ws["integrals"].values.real),
                               6170.447249940133,
                               places=4)
        self.assertAlmostEqual(min(ws["integrals"].values.real),
                               -7188.897892203664,
                               places=4)

        dnp.dnpTools.integrate(ws2,
                               dim="f2",
                               integrate_center=[-10, 0, 10],
                               integrate_width=50)
        self.assertEqual((3, 8), np.shape(ws2["integrals"].values))
        self.assertAlmostEqual(max(ws2["integrals"].values.real[1]),
                               6170.447249940133,
                               places=4)
        self.assertAlmostEqual(min(ws2["integrals"].values.real[1]),
                               -7188.897892203664,
                               places=4)

        dnp.dnpTools.integrate(ws3,
                               dim="f2",
                               integrate_center=[-10, 0, 10],
                               integrate_width=[10, 50, 10])
        self.assertEqual((3, 8), np.shape(ws2["integrals"].values))
        self.assertAlmostEqual(max(ws3["integrals"].values.real[1]),
                               6170.447249940133,
                               places=4)
        self.assertAlmostEqual(min(ws3["integrals"].values.real[1]),
                               -7188.897892203664,
                               places=4)
Пример #3
0
    def test_fit_functions(self):
        nmr.remove_offset(self.ws)
        nmr.window(self.ws, type="lorentz_gauss", linewidth=[5, 10])
        nmr.fourier_transform(self.ws, zero_fill_factor=2)
        nmr.autophase(self.ws, method="search", order="zero")
        tools.baseline(self.ws, type="polynomial", order=2, reference_slice=None)
        tools.integrate(self.ws, dim="f2", integrate_center=0, integrate_width=50)
        efit.exponential_fit(self.ws, type="T1")
        self.assertAlmostEqual(self.ws["fit"].attrs["T1"], 2.140702947551208, places=4)

        efit.exponential_fit(self.ws, type="T2")
        self.assertAlmostEqual(self.ws["fit"].attrs["T2"], 1.0682212598985381, places=4)

        efit.exponential_fit(self.ws, type="T2", stretched=True)
        self.assertAlmostEqual(self.ws["fit"].attrs["T2"], 0.8938213879865939, places=4)

        efit.exponential_fit(self.ws, type="mono")
        self.assertAlmostEqual(self.ws["fit"].attrs["tau"], 2.140702798915825, places=4)
Пример #4
0
    def test_signal_to_noise(self):

        ws = copy.deepcopy(self.ws)

        nmr.remove_offset(ws)
        nmr.window(ws, linewidth=15)
        nmr.fourier_transform(ws, zero_fill_factor=2)
        nmr.autophase(ws, method="arctan")

        dnp.dnpTools.signal_to_noise(
            ws,
            signal_center=0,
            signal_width="full",
            noise_center="default",
            noise_width="default",
        )

        self.assertEqual(len(ws["proc"].attrs["s_n"]), 8)
        self.assertAlmostEqual(ws["proc"].attrs["s_n"][4],
                               10.91728842,
                               places=6)

        nmr.remove_offset(self.ws_off)
        nmr.window(self.ws_off, linewidth=15)
        nmr.fourier_transform(self.ws_off, zero_fill_factor=2)
        nmr.autophase(self.ws_off, method="search")

        dnp.dnpTools.signal_to_noise(
            self.ws_off,
            signal_center=-10,
            signal_width=100,
            noise_center=200,
            noise_width=50,
        )

        self.assertAlmostEqual(self.ws_off["proc"].attrs["s_n"],
                               3.3986939859030096,
                               places=6)
Пример #5
0
    def test_baseline(self):

        ws = copy.deepcopy(self.ws)
        shape_data = np.shape(ws)

        nmr.remove_offset(ws)
        nmr.window(ws, linewidth=15)
        nmr.fourier_transform(ws, zero_fill_factor=2)
        nmr.autophase(ws, method="search")

        dnp.dnpTools.baseline(ws,
                              type="polynomial",
                              order=1,
                              reference_slice=None)
        self.assertEqual(shape_data, np.shape(ws))
        self.assertAlmostEqual(max(ws["proc"].values[:, 2].real),
                               29.894686521140628,
                               places=4)
        self.assertAlmostEqual(min(ws["proc"].values[:, 2].real),
                               -921.7417731961074,
                               places=4)
        self.assertAlmostEqual(len(ws["proc"].attrs["baseline"]),
                               len(ws["proc"].values))
Пример #6
0
    def test_basic_nmr_processing(self):

        shape_data = np.shape(self.ws)
        n_pts = np.shape(self.ws["proc"])
        self.assertAlmostEqual(
            max(self.ws["proc"].values[:, 1].real), 5.447918664876271, places=4
        )
        self.assertAlmostEqual(
            min(self.ws["proc"].values[:, 1].real), -4.128415225672084, places=4
        )

        nmr.remove_offset(self.ws)
        self.assertAlmostEqual(shape_data, np.shape(self.ws))
        self.assertAlmostEqual(
            max(self.ws["proc"].values[:, 1].real), 5.445267326190019, places=4
        )
        self.assertAlmostEqual(
            min(self.ws["proc"].values[:, 1].real), -4.131066564358336, places=4
        )

        self.ws.copy("proc", "temp")
        nmr.left_shift(self.ws, shift_points=100)
        shifted_n_pts = np.shape(self.ws["proc"])
        self.assertEqual(shifted_n_pts[0], n_pts[0] - 100)
        self.ws.copy("temp", "proc")

        wf = nmr.hamming_window(len(self.ws["proc"].values))
        self.assertEqual(max(wf), 1.0)
        self.assertAlmostEqual(min(wf), 0.07671999999999995, places=4)

        wf = nmr.hann_window(len(self.ws["proc"].values))
        self.assertEqual(max(wf), 1.0)
        self.assertEqual(min(wf), 0.0)

        wf = nmr.lorentz_gauss_window(self.ws["proc"], dim="t2", exp_lw=5, gauss_lw=10)
        self.assertAlmostEqual(max(wf), 1.1895922020471337, places=4)

        self.ws.copy("proc", "temp")
        nmr.window(self.ws, type="hamming", inverse=True)
        self.assertAlmostEqual(
            max(self.ws["proc"].values[0]),
            2.5727782192869477 - 4.397983406867447j,
            places=4,
        )
        self.ws.copy("temp", "proc")

        wf = nmr.sin2_window(len(self.ws["proc"]))
        self.assertEqual(max(wf), 1.0)

        wf = nmr.traf_window(self.ws["proc"], dim="t2", exp_lw=1, gauss_lw=1)

        wf = nmr.exponential_window(self.ws["proc"], "t2", 5)
        self.assertAlmostEqual(min(wf), 0.00035733315645396175, places=4)

        self.ws.copy("proc", "temp")
        nmr.window(self.ws, type="gaussian", linewidth=[2, 10])
        self.assertAlmostEqual(
            max(self.ws["proc"].values[:, 1].real),
            5.456135803263017,
            places=4,
        )
        self.ws.copy("temp", "proc")

        self.ws.pop("temp")

        nmr.window(self.ws, type="exponential", linewidth=5)
        self.assertEqual(shape_data, np.shape(self.ws))
        self.assertAlmostEqual(
            max(self.ws["proc"].values[:, 1].real), 5.390978190372195, places=4
        )
        self.assertAlmostEqual(
            min(self.ws["proc"].values[:, 1].real), -3.9647928998767163, places=4
        )

        nmr.fourier_transform(self.ws, zero_fill_factor=2)
        self.assertEqual(shape_data, np.shape(self.ws))
        self.assertEqual(len(self.ws["proc"].values[:, 4].real), 15844)
        self.assertAlmostEqual(
            max(self.ws["proc"].values[:, 4].real), 61.3994271072369, places=4
        )
        self.assertAlmostEqual(
            min(self.ws["proc"].values[:, 4].real), -76.53300374124703, places=4
        )

        self.ws.copy("proc", "temp")
        nmr.autophase(
            self.ws,
            method="search",
            order="first",
            pivot=len(self.ws["proc"].values[:, 7]) / 2,
            delta=np.pi / 2,
            reference_slice=None,
            force_positive=False,
        )
        self.assertAlmostEqual(
            max(self.ws["proc"].values[:, 3].real), 242.36299886442168, places=4
        )
        self.assertAlmostEqual(
            min(self.ws["proc"].values[:, 3].real), -65.59778997862813, places=4
        )
        phs0 = self.ws["proc"].attrs["phase0"]
        phs1 = self.ws["proc"].attrs["phase1"]
        self.assertEqual(len(phs1), len(self.ws["proc"].values))
        self.ws.copy("proc", "keep")
        self.ws.copy("temp", "proc")

        nmr.autophase(
            self.ws,
            method="arctan",
            order="zero",
            reference_slice=1,
            force_positive=True,
        )
        self.assertAlmostEqual(
            max(self.ws["proc"].values[:, 7].real), 398.66277628048533, places=4
        )
        self.assertAlmostEqual(
            min(self.ws["proc"].values[:, 7].real), -47.32339420356964, places=4
        )
        self.ws.copy("temp", "proc")

        nmr.autophase(
            self.ws,
            method="manual",
            order="first",
            pivot=len(self.ws["proc"].values[:, 7]) / 2,
            delta=np.pi / 2,
            phase=phs1 * (45 * np.pi / 180),
        )
        self.assertAlmostEqual(
            max(self.ws["proc"].values[:, 3].real), 239.3422920589204, places=4
        )
        self.assertAlmostEqual(
            min(self.ws["proc"].values[:, 3].real), -64.37971134351001, places=4
        )
        self.ws.copy("temp", "proc")

        nmr.autophase(
            self.ws,
            method="manual",
            order="zero",
            phase=phs0 * (45 * np.pi / 180),
        )
        self.assertAlmostEqual(
            max(self.ws["proc"].values[:, 3].real), 238.27990936049952, places=4
        )
        self.assertAlmostEqual(
            min(self.ws["proc"].values[:, 3].real), -66.28951430959444, places=4
        )
Пример #7
0
    def test_basic_nmr_processing(self):

        self.ws = nmr.remove_offset(self.ws, {})
        self.ws = nmr.window(self.ws, {})
        self.ws = nmr.fourier_transform(self.ws, {})
        self.ws = nmr.autophase(self.ws, {})