3 PUTATIVE INSIGHTS (things we think we've learned so far)
5 - At least for deeper mod searches, evaluation time for real vs synthetic
6 spectra swamps everything else. (Generation of synthetic spectra is
7 noticeable, at about 15%.) This means that ordering spectra by parent mass
10 - We can afford to be a little sloppy in how we generate the comparisons
11 (as long as we're not generating duplicates, of course).
13 - The number of leaves at level N is probably about N times more than all of
14 the previous N-1 levels put together.
16 - SEQUEST does its FFT step only for a fixed number (500?) of candidate
17 matches for each spectrum. If the number of matches explodes with
18 increasing depth, maybe this implies that only their preliminary scoring
19 algorithm really matters for mod searches?
21 - X!Tandem limits modification combinations searched to 2**12 or so. For
22 deeper searches they just silently give up.
24 - The way X!Tandem quantizes peaks leads to noticeable quantization error.
26 - Myrimatch silently fails if the number of possible mod positions/kinds is
27 more than 2^31 or 2^64 (depending on sizeof(int)).
30 ------------------------------------------------------------------------------
32 One of our goals is to keep things simple and concise. Here's a
33 comparison against similar programs (generated using David A. Wheeler's
36 greylag: cpp: 813 py: 1367
37 xtandem: cpp: 14426 (15697 with parallel tandem)
38 omssa: cpp: 7583 (plus an unknown, possibly large number from the NCBI
39 toolkits [33 distinct headers])
40 (the toolkits are 1000000 sloc, 65% cpp, 34% c)
44 ------------------------------------------------------------------------------
46 This is a nice way to print the source code three-up, in a fairly small font,
47 which makes it easy to study off-line:
49 enscript -E -B -3 -r -s 0 --borders -fCourier4.8 --mark-wrapped-lines=arrow