Skip to content

Commit 1df16f5

Browse files
author
Michal Startek
committed
Bugfix for sort_by_probs issue from #65
1 parent f061fa4 commit 1df16f5

File tree

6 files changed

+26
-1
lines changed

6 files changed

+26
-1
lines changed

src/IsoSpec++/cwrapper.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -295,6 +295,12 @@ void* setupFixedEnvelope(double* masses, double* probs, size_t size, bool mass_s
295295
return reinterpret_cast<void*>(ret);
296296
}
297297

298+
void* setupFixedEnvelopeWithConfs(double* masses, double* probs, int* confs, size_t size, int allDim, bool mass_sorted, bool prob_sorted, double total_prob)
299+
{
300+
FixedEnvelope* ret = new FixedEnvelope(masses, probs, confs, size, allDim, mass_sorted, prob_sorted, total_prob);
301+
return reinterpret_cast<void*>(ret);
302+
}
303+
298304
void deleteFixedEnvelope(void* t, bool release_everything)
299305
{
300306
FixedEnvelope* tt = reinterpret_cast<FixedEnvelope*>(t);

src/IsoSpec++/cwrapper.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,7 @@ ISOSPEC_C_API void array_mul(double* array, size_t N, double what);
138138
ISOSPEC_C_API void array_fma(double* array, size_t N, double mul, double add);
139139

140140
ISOSPEC_C_API void* setupFixedEnvelope(double* masses, double* probs, size_t size, bool mass_sorted, bool prob_sorted, double total_prob);
141+
ISOSPEC_C_API void* setupFixedEnvelopeWithConfs(double* masses, double* probs, int* confs, size_t size, int allDim, bool mass_sorted, bool prob_sorted, double total_prob);
141142
ISOSPEC_C_API void* copyFixedEnvelope(void* other);
142143
ISOSPEC_C_API void deleteFixedEnvelope(void* tabulator, bool releaseEverything);
143144

src/IsoSpec++/fixedEnvelopes.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,19 @@ _probs(in_probs),
5656
_confs(nullptr),
5757
_confs_no(in_confs_no),
5858
allDim(0),
59+
allDimSizeofInt(0),
60+
sorted_by_mass(masses_sorted),
61+
sorted_by_prob(probs_sorted),
62+
total_prob(_total_prob)
63+
{}
64+
65+
FixedEnvelope::FixedEnvelope(double* in_masses, double* in_probs, int* in_confs, size_t in_confs_no, int _allDim, bool masses_sorted, bool probs_sorted, double _total_prob) :
66+
_masses(in_masses),
67+
_probs(in_probs),
68+
_confs(in_confs),
69+
_confs_no(in_confs_no),
70+
allDim(_allDim),
71+
allDimSizeofInt(_allDim * sizeof(int)),
5972
sorted_by_mass(masses_sorted),
6073
sorted_by_prob(probs_sorted),
6174
total_prob(_total_prob)

src/IsoSpec++/fixedEnvelopes.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ class ISOSPEC_EXPORT_SYMBOL FixedEnvelope {
7171
FixedEnvelope(FixedEnvelope&& other);
7272

7373
FixedEnvelope(double* masses, double* probs, size_t confs_no, bool masses_sorted = false, bool probs_sorted = false, double _total_prob = NAN);
74+
FixedEnvelope(double* masses, double* probs, int* confs, size_t confs_no, int _allDim, bool masses_sorted = false, bool probs_sorted = false, double _total_prob = NAN);
7475

7576
virtual ~FixedEnvelope()
7677
{

src/IsoSpecPy/IsoSpecPy.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -376,7 +376,10 @@ def wrap(typename, what, attrname, mult = 1):
376376
raise RuntimeError("Invalid arguments for IsoDistribution constructor")
377377

378378
def _get_cobject(self):
379-
return isoFFI.clib.setupFixedEnvelope(self.masses, self.probs, len(self.masses), self.mass_sorted, self.prob_sorted, self._total_prob)
379+
if hasattr(self, 'raw_confs') and self.raw_confs is not None:
380+
return isoFFI.clib.setupFixedEnvelopeWithConfs(self.masses, self.probs, self.raw_confs, len(self.masses), self.sum_isotope_numbers, self.mass_sorted, self.prob_sorted, self._total_prob)
381+
else:
382+
return isoFFI.clib.setupFixedEnvelope(self.masses, self.probs, len(self.masses), self.mass_sorted, self.prob_sorted, self._total_prob)
380383

381384
def copy(self):
382385
x = self._get_cobject()

src/IsoSpecPy/isoFFI.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ def __init__(self):
110110
double bin_middle);
111111
112112
void* setupFixedEnvelope(double* masses, double* probs, size_t size, bool mass_sorted, bool prob_sorted, double total_prob);
113+
void* setupFixedEnvelopeWithConfs(double* masses, double* probs, int* confs, size_t size, int allDim, bool mass_sorted, bool prob_sorted, double total_prob);
113114
void* copyFixedEnvelope(void* other);
114115
void deleteFixedEnvelope(void* tabulator, bool releaseEverything);
115116

0 commit comments

Comments
 (0)