Skip to content

Commit 85dc187

Browse files
fixed bin offset calculation
1 parent 70a7210 commit 85dc187

1 file changed

Lines changed: 21 additions & 4 deletions

File tree

python/proteolizardalgo/hashing.py

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -259,12 +259,15 @@ def get_max_similarity(self, b, window, resolution=2):
259259

260260
return M[argmax_sim], max_sim, monoisotopic_mass, charge_state
261261

262-
def find_isotope_patterns(self, frame: TimsFrame, min_intensity=100, min_peaks=5, overlapping=True):
262+
def find_isotope_patterns(self, frame: TimsFrame, min_intensity=100, min_peaks=5, overlapping=True,
263+
window_length=4, min_cosim=0.6):
263264
"""
264265
:param frame:
265266
:param min_intensity:
266267
:param min_peaks:
267268
:param overlapping:
269+
:param window_length:
270+
:param min_cosim:
268271
:return:
269272
"""
270273

@@ -281,7 +284,8 @@ def find_isotope_patterns(self, frame: TimsFrame, min_intensity=100, min_peaks=5
281284
r_list = []
282285

283286
for scan, mz_bin, keys, vectors in zip(s, b, WK, F):
284-
r_list.append(self.calculate_window_collision(scan, np.abs(mz_bin), keys, vectors))
287+
r_list.append(self.calculate_window_collision(scan, mz_bin, keys, vectors, window_length=window_length,
288+
min_cosim=min_cosim))
285289

286290
A = np.hstack([np.expand_dims(s, axis=1), np.expand_dims(b, axis=1), np.array(r_list)])
287291
patterns = pd.DataFrame(A[A[:, 4] != -1], columns=['scan', 'bin', 'cosim', 'mz_mono', 'charge'])
@@ -309,7 +313,20 @@ def find_isotope_patterns(self, frame: TimsFrame, min_intensity=100, min_peaks=5
309313

310314
return patterns
311315

312-
def calculate_window_collision(self, scan, mz_bin, keys, dense_vector, min_cosim=0.6):
316+
def calculate_window_collision(self, scan, mz_bin, keys, dense_vector, window_length=4, min_cosim: float = 0.6):
317+
"""
318+
319+
:param scan:
320+
:param mz_bin:
321+
:param keys:
322+
:param dense_vector:
323+
:param window_length:
324+
:param min_cosim:
325+
:return:
326+
"""
327+
328+
is_overlapping = int(((np.sign(mz_bin) - 1) / - 2))
329+
mz_bin = np.abs(mz_bin)
313330

314331
if mz_bin in self.key_dict:
315332

@@ -324,7 +341,7 @@ def calculate_window_collision(self, scan, mz_bin, keys, dense_vector, min_cosim
324341

325342
argmax_cosim = np.argmax(real_cosim)
326343
max_cosim = np.round(real_cosim[argmax_cosim][0], 2)
327-
max_m_c = m_c[argmax_cosim]
344+
max_m_c = m_c[argmax_cosim] - is_overlapping * (window_length / 2)
328345
max_c_c = c_c[argmax_cosim]
329346

330347
if max_cosim > min_cosim:

0 commit comments

Comments
 (0)