def test_IonChromatogram(im, tic):
    # get the first ion chromatogram of the IntensityMatrix
    ic = im.get_ic_at_index(0)
    assert isinstance(ic, IonChromatogram)
    assert not ic.is_tic()

    # get the ion chromatogram for m/z = 73
    ic = im.get_ic_at_mass(73)
    assert isinstance(ic, IonChromatogram)
    assert not ic.is_tic()

    assert isinstance(tic, IonChromatogram)
    assert tic.is_tic()

    # Errors
    for obj in [test_string, *test_numbers, *test_sequences, test_dict]:
        with pytest.raises(TypeError):
            IonChromatogram(obj, tic.time_list)
    for obj in [test_string, *test_numbers, test_list_strs, test_dict]:
        with pytest.raises(TypeError):
            IonChromatogram(tic.intensity_array, obj)
    for obj in [test_string, *test_sequences, test_dict]:
        with pytest.raises(TypeError):
            IonChromatogram(tic.intensity_array, tic.time_list, mass=obj)

    with pytest.raises(ValueError):
        IonChromatogram(tic.intensity_array, test_list_ints)
Esempio n. 2
0
    def get_ic_at_index(self, ix):
        """
		Returns the ion chromatogram at the specified index

		:param ix: Index of an ion chromatogram in the intensity data
			matrix
		:type ix: int

		:return: Ion chromatogram at given index
		:rtype: pyms.IonChromatogram.IonChromatogram

		:authors: Qiao Wang, Andrew Isaac, Vladimir Likic
		"""

        if not isinstance(ix, int):
            raise TypeError("'ix' must be an integer")

        ia = []
        for i in range(len(self._intensity_array)):
            ia.append(self._intensity_array[i][ix])

        ic_ia = numpy.array(ia)
        mass = self.get_mass_at_index(ix)
        rt = copy.deepcopy(self._time_list)

        return IonChromatogram(ic_ia, rt, mass)
def test_equality(tic, im):
    assert tic == IonChromatogram(tic.intensity_array, tic.time_list)
    assert tic != im.get_ic_at_index(0)
    assert tic != test_string
    assert tic != test_int
    assert tic != test_float
    assert tic != test_list_ints
    assert tic != test_list_strs
    assert tic != test_dict
    assert tic != test_tuple
Esempio n. 4
0
	def tic(self) -> IonChromatogram:
		"""
		Returns the TIC of the intensity matrix.

		.. versionadded:: 2.3.0
		"""

		intensity_list = []
		for i in range(len(self._intensity_array)):
			intensity_list.append(sum(self._intensity_array[i]))

		return IonChromatogram(numpy.array(intensity_list), self._time_list[:], None)
Esempio n. 5
0
def test_intensity_array(tic, im):
	tic = copy.deepcopy(tic)

	assert isinstance(tic.intensity_array, numpy.ndarray)
	assert all(numpy.equal(IonChromatogram(tic.intensity_array, tic.time_list).intensity_array, tic.intensity_array))

	ic = im.get_ic_at_index(0)
	tic.intensity_array = ic.intensity_array
	assert all(numpy.equal(tic.intensity_array, ic.intensity_array))

	assert isinstance(tic.intensity_array, numpy.ndarray)
	assert isinstance(tic.intensity_array[0], float)
	assert tic.intensity_array[0] == 0.0
	assert tic.intensity_array[2] == 622.0
Esempio n. 6
0
    def _calc_tic(self) -> None:
        """
		Calculate the total ion chromatogram.

		:authors: Qiao Wang, Andrew Isaac, Vladimir Likic
		"""

        intensities = []
        for scan in self._scan_list:
            intensities.append(sum(scan.intensity_list))
        ia = numpy.array(intensities)
        rt = copy.deepcopy(self._time_list)
        tic = IonChromatogram(ia, rt)

        self._tic = tic
Esempio n. 7
0
    def test_success(self, im, tic):
        # get the first ion chromatogram of the IntensityMatrix
        ic = im.get_ic_at_index(0)
        assert isinstance(ic, IonChromatogram)
        assert not ic.is_tic()

        # get the ion chromatogram for m/z = 73
        ic = im.get_ic_at_mass(73)
        assert isinstance(ic, IonChromatogram)
        assert not ic.is_tic()

        assert isinstance(tic, IonChromatogram)
        assert tic.is_tic()

        with pytest.raises(
                ValueError,
                match="'intensity_list' and 'time_list' differ in length"):
            IonChromatogram(tic.intensity_array, test_list_ints)
Esempio n. 8
0
def sum_maxima(im: IntensityMatrix,
               points: int = 3,
               scans: int = 1) -> IonChromatogram:
    """
    Reconstruct the TIC as sum of maxima

    :param im: An :class:`~pyms.IntensityMatrix.IntensityMatrix` object
    :type im: ~pyms.IntensityMatrix.IntensityMatrix
    :param points: Peak if maxima over 'points' number of scans. Default ``3``
    :type points: int, optional
    :param scans: Number of scans to combine peaks from to compensate for spectra skewing. Default ``1``
    :type scans: int, optional

    :return: The reconstructed TIC
    :rtype: ~pyms.IonChromatogram.IonChromatogram

    :author: Andrew Isaac, Dominic Davis-Foster (type assertions)
    """

    if not isinstance(im, IntensityMatrix):
        raise TypeError("'im' must be an IntensityMatrix object")

    if not isinstance(points, int):
        raise TypeError("'points' must be an integer")

    if not isinstance(scans, int):
        raise TypeError("'scans' must be an integer")

    maxima_im = get_maxima_matrix(im, points)
    sums = []
    numrows = len(maxima_im)
    half = int(scans / 2)

    for row in range(numrows):
        val = 0
        for ii in range(scans):
            if 0 <= row - half + ii < numrows:
                val += maxima_im[row - half + ii].sum()
        sums.append(val)
    tic = IonChromatogram(numpy.array(sums), im.time_list)

    return tic
Esempio n. 9
0
    def __calc_tic(self):
        """
		Calculate the total ion chromatogram

		:return: Total ion chromatogram
		:rtype: pyms.IonChromatogram.IonChromatogram

		:author: Qiao Wang
		:author: Andrew Isaac
		:author: Vladimir Likic
		"""

        intensities = []
        for scan in self._scan_list:
            intensities.append(sum(scan.intensity_list))
        ia = numpy.array(intensities)
        rt = copy.deepcopy(self._time_list)
        tic = IonChromatogram(ia, rt)

        self._tic = tic
Esempio n. 10
0
	def get_ic_at_index(self, ix: int) -> IonChromatogram:
		"""
		Returns the ion chromatogram at the specified index.

		:param ix: Index of an ion chromatogram in the intensity data matrix.

		:return: Ion chromatogram at given index.

		:authors: Qiao Wang, Andrew Isaac, Vladimir Likic
		"""

		if not isinstance(ix, int):
			raise TypeError("'ix' must be an integer")

		ia = [intensities[ix] for intensities in self._intensity_array]

		ic_ia = numpy.array(ia)
		mass = self.get_mass_at_index(ix)
		rt = self._time_list[:]

		return IonChromatogram(ic_ia, rt, mass)
Esempio n. 11
0
 def test_errors_mass(self, value, tic):
     with pytest.raises(TypeError):
         IonChromatogram(tic.intensity_array, tic.time_list, mass=value)
Esempio n. 12
0
 def test_errors_intensity_list(self, value, tic):
     with pytest.raises(TypeError):
         IonChromatogram(value, tic.time_list)