19#define ISOSPEC_ALGO_LAYERED 0
20#define ISOSPEC_ALGO_ORDERED 1
21#define ISOSPEC_ALGO_THRESHOLD_ABSOLUTE 2
22#define ISOSPEC_ALGO_THRESHOLD_RELATIVE 3
23#define ISOSPEC_ALGO_LAYERED_ESTIMATE 4
32ISOSPEC_C_API
void * setupIso(
int dimNumber,
33 const int* isotopeNumbers,
34 const int* atomCounts,
35 const double* isotopeMasses,
36 const double* isotopeProbabilities);
38ISOSPEC_C_API
void * isoFromFasta(
const char* fasta,
bool use_nominal_masses,
bool add_water);
40ISOSPEC_C_API
double getLightestPeakMassIso(
void* iso);
41ISOSPEC_C_API
double getHeaviestPeakMassIso(
void* iso);
42ISOSPEC_C_API
double getMonoisotopicPeakMassIso(
void* iso);
43ISOSPEC_C_API
double getModeLProbIso(
void* iso);
44ISOSPEC_C_API
double getModeMassIso(
void* iso);
45ISOSPEC_C_API
double getTheoreticalAverageMassIso(
void* iso);
46ISOSPEC_C_API
double getIsoVariance(
void* iso);
47ISOSPEC_C_API
double getIsoStddev(
void* iso);
48ISOSPEC_C_API
double* getMarginalLogSizeEstimates(
void* iso,
double target_total_prob);
51ISOSPEC_C_API
void deleteIso(
void* iso);
53#define ISOSPEC_C_FN_HEADER(generatorType, dataType, method)\
54ISOSPEC_C_API dataType method##generatorType(void* generator);
56#define ISOSPEC_C_FN_HEADER_GET_CONF_SIGNATURE(generatorType)\
57ISOSPEC_C_API void method##generatorType(void* generator);
59#define ISOSPEC_C_FN_HEADERS(generatorType)\
60ISOSPEC_C_FN_HEADER(generatorType, double, mass) \
61ISOSPEC_C_FN_HEADER(generatorType, double, lprob) \
62ISOSPEC_C_FN_HEADER(generatorType, double, prob) \
63ISOSPEC_C_FN_HEADER_GET_CONF_SIGNATURE(generatorType) \
64ISOSPEC_C_FN_HEADER(generatorType, bool, advanceToNextConfiguration) \
65ISOSPEC_C_FN_HEADER(generatorType, void, delete)
71ISOSPEC_C_API
void* setupIsoThresholdGenerator(
void* iso,
76 bool reorder_marginals);
77ISOSPEC_C_FN_HEADERS(IsoThresholdGenerator)
81ISOSPEC_C_API
void* setupIsoLayeredGenerator(
void* iso,
84 bool reorder_marginals,
86ISOSPEC_C_FN_HEADERS(IsoLayeredGenerator)
89ISOSPEC_C_API
void* setupIsoOrderedGenerator(
void* iso,
92ISOSPEC_C_FN_HEADERS(IsoOrderedGenerator)
94ISOSPEC_C_API
void* setupIsoStochasticGenerator(
void* iso,
98ISOSPEC_C_FN_HEADERS(IsoStochasticGenerator)
101ISOSPEC_C_API
void* setupThresholdFixedEnvelope(
void* iso,
106ISOSPEC_C_API
void* setupTotalProbFixedEnvelope(
void* iso,
107 double taget_coverage,
111ISOSPEC_C_API
void* setupStochasticFixedEnvelope(
void* iso,
117ISOSPEC_C_API
void* setupBinnedFixedEnvelope(
void* iso,
118 double target_total_prob,
122ISOSPEC_C_API
void freeReleasedArray(
void* array);
124ISOSPEC_C_API
void array_add(
double* array,
size_t N,
double what);
125ISOSPEC_C_API
void array_mul(
double* array,
size_t N,
double what);
126ISOSPEC_C_API
void array_fma(
double* array,
size_t N,
double mul,
double add);
128ISOSPEC_C_API
void* setupFixedEnvelope(
double* masses,
double* probs,
size_t size,
bool mass_sorted,
bool prob_sorted,
double total_prob);
129ISOSPEC_C_API
void* copyFixedEnvelope(
void* other);
130ISOSPEC_C_API
void deleteFixedEnvelope(
void* tabulator,
bool releaseEverything);
132ISOSPEC_C_API
const double* massesFixedEnvelope(
void* tabulator);
133ISOSPEC_C_API
const double* probsFixedEnvelope(
void* tabulator);
134ISOSPEC_C_API
const int* confsFixedEnvelope(
void* tabulator);
135ISOSPEC_C_API
size_t confs_noFixedEnvelope(
void* tabulator);
137ISOSPEC_C_API
double empiricAverageMass(
void* tabulator);
138ISOSPEC_C_API
double empiricVariance(
void* tabulator);
139ISOSPEC_C_API
double empiricStddev(
void* tabulator);
141ISOSPEC_C_API
double wassersteinDistance(
void* tabulator1,
void* tabulator2);
142ISOSPEC_C_API
double orientedWassersteinDistance(
void* tabulator1,
void* tabulator2);
143ISOSPEC_C_API
double abyssalWassersteinDistance(
void* tabulator1,
void* tabulator2,
double abyss_depth,
double other_scale);
152ISOSPEC_C_API
struct ws_match_res wassersteinMatch(void* tabulator1,
void* tabulator2,
double flow_dist,
double other_scale);
154ISOSPEC_C_API
void* addEnvelopes(
void* tabulator1,
void* tabulator2);
155ISOSPEC_C_API
void* convolveEnvelopes(
void* tabulator1,
void* tabulator2);
157ISOSPEC_C_API
double getTotalProbOfEnvelope(
void* envelope);
158ISOSPEC_C_API
void scaleEnvelope(
void* envelope,
double factor);
159ISOSPEC_C_API
void normalizeEnvelope(
void* envelope);
160ISOSPEC_C_API
void shiftMassEnvelope(
void* envelope,
double d_mass);
161ISOSPEC_C_API
void resampleEnvelope(
void* envelope,
size_t ionic_current,
double beta_bias);
162ISOSPEC_C_API
void* binnedEnvelope(
void* envelope,
double width,
double middle);
163ISOSPEC_C_API
void* linearCombination(
void*
const *
const envelopes,
const double* intensities,
size_t count);
165ISOSPEC_C_API
void sortEnvelopeByMass(
void* envelope);
166ISOSPEC_C_API
void sortEnvelopeByProb(
void* envelope);
168ISOSPEC_C_API
void parse_fasta_c(
const char* fasta,
int atomCounts[6]);