https://gitlab.com/kantundpeterpan/masseltof
Tip revision: c45a7e66a8a89c436d41b8431938b35acfa4e53b authored by Heiner Atze on 17 August 2021, 11:38:48 UTC
Update README.md
Update README.md
Tip revision: c45a7e6
mz_binning.py
import numpy as np
#pythran export binning(float64[:,:], float64)
def binning(mzs,
binsize,
):
min_mz = np.min(mzs[:,0])
max_mz = np.max(mzs[:,0])
delta = max_mz-min_mz
bins = np.linspace(min_mz, max_mz,num = int(delta/binsize))
spectrum = np.empty((len(bins),2))
spectrum[:,0] = bins+binsize/2
spectrum[:,1] = np.zeros(len(bins))
chunked = np.array_split(mzs, indices_or_sections=100)
for div in chunked:
mz_s = div[:,0]
counts = div[:,1].astype(int)
ind_mz_indices = np.digitize(mz_s, bins)
populated_bins = np.unique(ind_mz_indices)
ind_mz_indices-=1
populated_bins-=1
temp_spectrum = np.empty((len(bins),2))
temp_spectrum[:,0] = bins
temp_spectrum[:,1] = np.zeros(len(bins))
for bin_no in populated_bins:
mz = bins[bin_no]+binsize/2
ind = (ind_mz_indices == bin_no)
temp_sum_counts = int(np.sum(counts[ind]))
temp_spectrum[bin_no][1] = int(temp_sum_counts)
temp_spectrum[:,0] = bins+binsize/2
spectrum[:,1]+=temp_spectrum[:,1]
return spectrum