Repository navigation
Expand file tree
/
Copy pathChangeLog
More file actions
5493 lines (5005 loc) · 236 KB
/
Copy pathChangeLog
File metadata and controls
5493 lines (5005 loc) · 236 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
################################################################################
#
# Change log of IntaRNA available at
#
# https://github.com/BackofenLab/IntaRNA
#
################################################################################
################################################################################
# changes in development version since last release
################################################################################
# IntaRNA
## Interface and handling
- select and visualize the first rank-sorted CopomuS mutation automatically
when browser results arrive (#317)
- select the first browser result and show its interaction visualization
automatically; reuse CSV help text as result-header tooltips and store bundled
examples in directly importable/exportable parameter JSON (#315)
- explain all browser input, CopomuS ranking and candidate-filter controls with
tooltips; annotate compensatory mutations in one vaRRI view and compare all
four-state energies in an adjacent Plotly chart (#313)
- isolate real-browser numerical fixtures from editable GUI examples and keep
CSV export checks synchronized with selected columns and seed-end defaults
- integrate CopomuS as the browser Mutation Design task with single-pair input,
native controls, extended tables and four-state vaRRI visualization (#307)
- fix IntaRNApvalue both-strand sampling and parameter consistency, bound retries,
validate FASTA/fits and expose empirical p-values (PR #298)
- fix CopomuS explicit mutations, GC filters, signed indices, zero scores and
shared profiles; validate inputs and preserve output on failure (PR #298)
- --outNumberPerSeed selects each seed's best candidate sites before final
deduplication, energy/overlap/count filtering; model P ranks left-most-anchor
ensembles; zero preserves ordinary prediction; the GUI exposes the quota next
to the global output count (#285, #288 review)
- refine GUI seed and CSV control widths, filter examples by task, cap result
table height and use dark active tabs for additional output views (PR #303 review)
- let users resize and transpose Plotly results, export their current dimensions,
and highlight all reported seed regions in vaRRI (#305)
- compact and left-align GUI parameter rows, split CSV controls into their own
tab, describe every additional output format and plot energy/probability files
with sequence names, source tabs and PNG export (PR #287 review)
- reorganize GUI parameters, add conditional seed/accessibility controls and
grouped CSV defaults, expand FASTA limits and refine result headers (PR #299)
- retain computed GUI runs as named, foldable sessions with JSON input restoration,
independent outputs, per-session ZIP export and deletion (PR #297 review)
- permit clearing inherited CSV sorting when replaying JSON as text reports;
validate JSON/GUI behavior in native release/debug and real browsers (#287)
- show prediction/evaluation tasks as always-visible choices with task-specific
descriptions and an expanded Seeds/Accessibility heading (PR #287 review)
- upload or drop local FASTA files into each GUI strand with validation and
protection against stale asynchronous reads (PR #287 review)
- clear all inputs on GUI reset and load named examples from maintainable JSON
files through an Example menu (PR #287 review)
- load/store GUI settings as portable JSON; ZIPs contain parameter.json with
embedded inputs/provenance and all outputs (PR #287 review)
- use one embedded-input JSON parameter document for each WASM invocation
(PR #287 review)
- accept JSON parameter files with embedded text inputs and personality defaults
through --parameterFile while retaining legacy configuration (PR #287 review)
- rename the browser interface directory and Pages URL to gui (PR #287 review)
- add selected-interaction vaRRI embeds and reproducible all-output ZIP downloads
to the browser interface; compact parameters into accessible tabs and update
the Freiburg group header and full-width result/footer notes (PR #287 review)
- extend the browser interface with vaRRI styling, prediction/evaluation tasks,
multi-FASTA, start indices, CLI parameter groups, selectable CSV columns and
additional output previews/downloads; label pair-relative differences mfe Δ
and display actual compiled versions (PR #287 review)
- display sortable/filterable browser results and native CSV downloads;
publish the tested interface alongside existing Pages documentation (#286)
- add responsive browser FASTA inputs, validation and abort dialog (#286, step 3)
- run browser predictions in cancellable, isolated Web Workers (#286, step 2)
- orient probability SVGs from the upper-left corner and highlight every MFE
pair, splitting seed/MFE cell borders into orange and green (PR #259 review)
- enable approximate actual-pair CSV/SVG probabilities for unseeded and seeded
heuristic ensembles, labelled explicitly as approximate (PR #259, step 11)
- reject nonfinite partition totals and finite-energy boundary underflow before
publishing exact unseeded or heuristic pair probabilities (PR #259 review)
- enable base-pair CSV/SVG probabilities for exact unseeded model P/mode M
predictions (PR #259, step 10)
- revise SVG axes, sequence labels and rounded tooltips; show intramolecular
pairing (1-Pu) frames and the best interaction region (PR #259 review)
- BUGFIX : use each strand's accessibility energy scale for SVG frames and
unpaired-probability exports, including mixed computed/imported inputs
- --out=bpsvg:FILE renders actual-pair probabilities with nucleotide/accessibility
frames, a shared CSS palette, signed-coordinate guides, hover values and admitted
seed outlines (PR #258, step 8)
- --out=bpProb:FILE writes actual-pair conditional probabilities for exact
model P/mode M stack-seed ensembles, with disjoint-region merging, original
coordinates and success-only publication (issue #257, implementation step 6)
- deterministic kinetic seed extension with --model=X --mode=K and configurable
local scoring; complete-energy downhill steps, atomic noLP loop/stack moves
and retained greedy traceback; equilibrium probability output is unsupported
- kinetic mode always uses stacked extensions and trusts handler-provided seeds;
reuse candidate pairing/local energies
- IntaRNAsnap personality enables kinetic seed extension with noLP by default
- apply outDeltaE relative to the sequence pair's best interaction when merging
regions; preserve local windows for outPerRegion output (PR #253)
- reject merged regions that cannot enforce the requested output overlap mode;
retain independent selection with --outPerRegion (PR #253)
- clarify that suboptimal predictions have distinct interaction-site boundaries
- IntaRNAeval / --rri evaluates predefined RNA-RNA interactions (issue #184)
- compressed binary .agz accessibility caches for repeated screens (issue #245)
- too short sequences are skipped with warning if they are shorter than the
required seed or helix length (were causing an exception and abort before)
- default SHAPE method changed to "D", which is the default for ViennaRNA 2.7.*
- output buffer size increased to 512 KB for higher performance and reduced
file-handle overhead
- reject Zall/Eall-dependent output in window mode
## Technical changes and Optimizations
- run the existing CopomuS Python workflow in checksum-pinned, self-hosted
Pyodide and replace subprocesses with validated JSON calls to IntaRNA WASM (#307)
- share Python companion-tool command execution, input validation and atomic
output handling after rebasing onto IntaRNA-fuse (PR #298 review)
- reduce ordinary heuristic ensemble runtime by batching more source boundaries
and avoiding exhaustive span probes for sparse seed domains (issue #301)
- record JSON/WASM/browser regression validation and preserve pinned JSON vendor
checksums while marking upstream files as vendored for review (PR #287)
- build WASM with ViennaRNA 2.7.2 locally and the newest stable 2.x in CI;
verify published archive checksums, isolate versioned caches and retain
selected dependency provenance and notices (PR #292 review)
- BUGFIX : restore WASM dependency downloads using the pinned official ViennaRNA
release asset; verify downloads before caching and recover invalid caches
(PR #291)
- annotate inherited virtual methods/destructors with override, preserve compiled
WASM asset provenance through staging, and expand protocol/browser validation
for the PR #287 review
- cross-compile IntaRNA and pinned dependencies to WebAssembly (#286, step 1)
- verify browser predictions against native accessibility/energy references and
exercise real WASM cancellation and nested Pages paths in Chromium/Firefox
- reuse MFE seed-extension scratch matrices and bound predecessor scans in exact
and heuristic prediction; evaluate physical energies directly (PR #276 review)
- share exact left-most seed-anchor extensions with heuristic prediction,
combining each true left extension with one retained right endpoint (#270)
- compute exact stack-seeded ensembles with left-most seed-anchored left/right
extensions and shared bounded workspaces (PR #268 review)
- reuse maximal seed-extension workspaces for exact/heuristic partitions,
endpoint selection and pair-probability differentiation (PR #266 review)
- compute exact and heuristic stack-seeded ensembles by first-seed ownership,
seed-avoiding left prefixes and unrestricted right extensions; differentiate
the same nonnegative retained ensemble for actual-pair probabilities (#264)
- initialize seed iteration outside the complete remaining sequence so a seed
beyond a cropped region cannot hide an earlier valid seed
- validate probability-region dimensions, seed masks and overlap in release
builds before accepting data or dereferencing a required annotation mask
- use hashed base-pair keys for sparse stack-seed lookup, assert internal seed
geometry in debug builds, and document probability computation steps and
contributor conventions (PR #258 review)
- document independent release/debug, installed-API and performance validation
for the reviewed unseeded and heuristic probability outputs (PR #259)
- transfer completed probability-output buffers without copying; independently
audit performance, accessibility conversion and recurrence depictions (PR #259)
- depict ensemble predictor recurrences and the exact base-pair inside/outside
computation in internal SVG documentation (PR #258, step 9)
- validate exact pair probabilities on independent mathematical/native oracles,
release/debug suites and installed consumers; document measured runtime and
storage, and supply the required logging link dependency (issue #257, step 7)
- collect raw actual-pair masses and disjoint regional denominators with explicit
successful-empty/nonempty/failed lifecycle (issue #257, step 5)
- count each exact stack-seeded interaction once; preserve tiny positive totals
through complete updates and output forwarding (issue #257, step 4)
- select the checked suffix inside/outside kernel after independent correctness
and maximal-stack timing comparisons (issue #257, implementation step 3)
- expose geometric stack-seed capability and compile contained occurrences plus
deduplicated eligible-start boxes (issue #257, implementation step 2)
- establish independent weighted-chain fixtures for seeded pair probabilities
(issue #257, implementation step 1)
- document the implementation plan for exact seeded base-pair probabilities,
including algorithm comparison, numerical/output contracts and validation;
no prediction or probability implementation changes (issue #257)
- require ViennaRNA >= 2.7.0 and its logger/prepared-window APIs at configure
time; install the logger lock for every supported version (PR #267)
- fix ViennaRNA parameter-cache races and enable parallel prepared window
accessibility; retain serialization for global MFE/PF and non-OpenMP
ViennaRNA builds, with a source audit and concurrency regressions (issue #265)
- keep the concurrency regression compatible with Apple Clang's standard
library using explicitly joined std::thread workers (PR #267)
- add an API overview, IntaRNA Doxygen styling, and automated documentation
builds and GitHub Pages publishing alongside the user guide (issue #22)
- install personality links in out-of-tree builds, including IntaRNAsnap
- BUGFIX : normalize single-pair suboptimal boundaries before traceback and
boundary-only output validation (PR #253)
- verify restricted heuristic traces against the independent tiny oracle and
cover output overlap checks after outMinPu decomposition (PR #253)
- BUGFIX : apply terminal GU and accessibility output limits to later heuristic
results, including seeded and helix predictors (PR #253)
- BUGFIX : heuristic ensemble suboptimals use finalized site energies and stop
safely when no compatible candidate remains (PR #253)
- analyse output overlap modes and implement the reviewed regional guards,
ensemble/output-filter fixes and global energy window; retain and document
the one-right-extension limitation (issue #212, PR #253)
- serialize stored accessibility rows directly and load retained rows in place;
benchmark direct/generic export and raw/gzip binary I/O (PR #250)
- add repository-specific AI coding guidance in AGENTS.md (issue #247)
- replace uBLAS storage matrices with std::vector and std::mdspan, retaining
compact upper-band and triangular storage; configure selects native mdspan
or bundled Kokkos headers while preserving GCC 14 support; document the
public matrix operations and align their layout with repository guidance
- reduce temporary allocations and fix cleanup on error paths
- remove redundant accessibility checks from predictor, helix and seed handling
- C++23 required; build and installation checks with GCC 14 and Apple Clang
- avoid repeated partition-map lookups in exact ensemble prediction
- add exhaustive interaction and seed oracles for short-sequence tests
- reduced memory use for exact non-seed ensemble prediction without trackers
- BUGFIX : heuristic cell initialization and noLP ensemble recurrences
- BUGFIX : ensemble filtering and seed-extension partition reset
- BUGFIX : target accessibility limits and seed-free outMinPu filtering
- BUGFIX : accessibility range splitting and intramolecular ensemble energies
- BUGFIX : interaction assignment, seed comparison and output handling
- BUGFIX : dangling-end probability computation using maxLength+1 ED values
- BUGFIX : multi-threading : serialization of ViennaRNA-based accessibility
computation since vrna-lib not thread-safe (up to v2.7.2)
- BUGFIX : multi-threading : IntaRNAsTar was not thread-safe due to shared
storage of computed ranges
# IntaRNAsnap
New personality IntaRNAsnap identifies the fastest "folding path" to a (locally)
optimal interaction after seed formation, rather than finding the global optimum
under the assumption of thermodynamic equilibrium.
To this end, IntaRNAsnap implements a kinetics-motivated greedy search for the
best interaction that can be reached from the given seed(s) by a series of
complete-energy downhill local moves.
Local moves are direct stack extensions or 2-base-pair loop/stack moves, i.e.
the same moves as used in the IntaRNA noLP model. That way, kinetic energy
barriers posed by the formation of loops and bulges are avoided, which mimics
the continuation of the zipping process after "jumping" over a loop or bulge.
This personality is only available with --model=X and --mode=K, and equilibrium
probability output is unsupported. The local scoring can be configured with
--kineticScore=A|B|C, and the output can include distinct structures, energies,
restricted partition sums, and trackers.
# IntaRNAeval
New personality of IntaRNA to evaluate predefined RNA-RNA interactions.
Given two RNA sequences and a set of predefined interactions, IntaRNAeval
computes the energy and accessibility of each interaction, and reports the
results in a CSV file. The evaluation can be performed with different energy
and accessibility models, and the output can include distinct structures,
energies, restricted partition sums, and trackers.
# Auxiliary Python output tools
- handle symlinked temporary directories in companion executable-lookup tests,
including macOS /var aliases (PR #298)
- align companion tools on Python 3.10+, declare pip dependencies, install shared
modules, and exercise source/installed/native commands in CI (PR #298)
- replace both R scripts with Python GEV/FDR estimation and region plotting;
document optional dependencies, migration and regression tests (issue #295)
# IntaRNA_plotRegions.R
- fix deprecation warning
# CopomuS.py
- bugfix version checking
# IntaRNA-fuse.py
- replace the Perl prototype with an installed Python script, honor input
sequences, validate external results, and document the fusion workflow (#294)
################################################################################
################################################################################
261027 Alexander Mitrofanov
* gui/copomus.js, scripts/wasm/test-browser.py
* Select the first rank-sorted CopomuS mutation after populating the browser
result table and immediately show its vaRRI and energy-plot visualizations;
restore both after folding and reopening the session (issue #317).
* gui/{index.html,docs/copomus.md}
* Document the automatic initial mutation selection in the interface and
CopomuS browser guide.
261027 Alexander Mitrofanov
* gui/{results.js,sessions.js,index.html}, scripts/wasm/test-browser.py
* Select the first energy-sorted interaction when a computation completes and
load its vaRRI visualization; retain the selection through later table
sorting and filtering.
* Apply each CSV catalog description to both its result-header cell and sort
button, matching the corresponding CSV-selection tooltip (issue #315).
* gui/{app.js,examples/,tests/parameter-file.test.mjs}, gui/docs/
* Move example display metadata into the example index so every example file
is an ordinary Store/Load parameter document with no wrapper (issue #315).
261027 Alexander Mitrofanov
* gui/{index.html,app.js,options.js,copomus-options.js,styles.css}
+ Add explanatory tooltips to every input label and all CopomuS ranking
measures and candidate filters; set both FASTA input minima to 400 pixels.
* gui/{copomus.js,visualization.js,index.html,styles.css}, gui/tests/,
scripts/wasm/test-browser.py
* Replace the four selectable mutation-state viewers with one wild-type vaRRI
view that annotates both designed substitutions in dark green at their
original signed coordinates.
+ Plot the ww, wm, mw and mm interaction energies beside vaRRI, including a
dotted blue wild-type baseline and responsive stacked layout (issue #313).
* README.md, gui/docs/copomus.md
* Document the annotated single-view and four-state energy comparison.
261026 Alexander Mitrofanov
* scripts/wasm/test-browser.py
* Stop loading editable GUI examples as numerical browser-test fixtures; seed
prediction, evaluation and mutation checks from explicit test-only inputs.
* Derive the expected CSV download header from the rendered result columns and
verify both seed boundaries, restoring the master WebAssembly workflow after
the GUI default changed.
261026 Alexander Mitrofanov
* gui/{index.html,app.js,styles.css,copomus*.js,runner.js,sessions.js},
gui/examples/, gui/tests/, scripts/wasm/test-browser.py
+ Add Mutation Design after Prediction and Evaluation, enforce one unambiguous
sequence per strand, and expose CopomuS measures, selection, filters,
generators, thresholds and explicit encodings in the Sequences panel.
+ Retain ranked extended TSV output in sessions and compare wildtype, both
single mutants and the compensatory mutant in vaRRI (issue #307).
* python/copomus/{browser.py,workflow.py}, python/CopomuS.py,
python/tests/test_copomus.py
+ Share CLI/browser ranking and output logic; run the existing mutation,
filter and measure classes asynchronously against JSON prediction callbacks
without changing CopomuS CLI behavior or output.
* scripts/wasm/{build.sh,stage.sh,write-build-info.mjs},
.github/workflows/build-wasm.yml, README.md, gui/docs/
+ Download and verify self-hosted Pyodide 314.0.7, stage the required Python
sources and MPL notice, record runtime digests, and validate the complete
Pyodide-to-IntaRNA-WASM workflow in Chromium and Firefox.
* gui/output-visualization.js, gui/styles.css, gui/tests/output-visualization.test.mjs
+ Add resizable Plotly canvases and matrix-axis transposition controls.
* Export PNGs at the current plotting dimensions instead of a fixed size.
* gui/visualization.js, gui/columns.js, gui/tests/{export,protocol}.test.mjs
+ Pass every complete reported seed boundary to vaRRI as a translucent purple
region highlight and include seed ends in prediction CSV defaults (#305).
* gui/docs/step4-results-and-deployment.md
* Document plot resizing, axis swapping, current-size export and seed overlays.
261024 Alexander Mitrofanov
* python/tests/test_common_tools.py
* Compare executable lookup against canonical fixture paths so macOS /var
aliases do not cause false failures after the helper resolves symlinks.
+ Exercise sibling, source-tree fallback, missing and frozen executable
lookup through an explicit directory symlink on every tested platform.
Reproduce and verify the macOS CI failure using an aliased TMPDIR (PR #298).
261024 Alexander Mitrofanov
* python/setup.py, python/pyproject.toml, python/MANIFEST.in, python/*/Makefile.am,
python/Makefile.am, configure.ac, python/intarna_tools.py
* Declare Python 3.10+ and NumPy/SciPy dependencies, offer optional plotting,
and install shared helpers alongside standalone scripts and Python modules.
* Replace legacy setup.py installation with an opt-in pip hook honoring DESTDIR
without fetching dependencies or uninstalling packages in another prefix.
* python/bin/build.py, python/intarnapvalue/test.py, python/README.md,
python/bin/README.md, python/DEVELOPMENT.md, python/requirements-output-tools.txt
* Make executable builds independent of the working directory and fail visibly;
refresh documentation, source-test entry point and audit/performance notes.
* Preserve direct invocation of the shuffle utility with argparse validation,
optional sample counts and local random seeds.
* python/copomus/measures.py, python/CopomuS.py, python/tests/*.py,
.github/workflows/{build,python-output-tools}.yml, .gitignore
* Validate shared profiles and thresholds; test malformed/NA profile data,
installed lookup, atomic writes, native sampling and mutation workflows.
* Exercise all companion tools and installation in Python/C++ CI, including
the dependent PR base; exclude Python caches/build outputs (PR #298).
261024 Alexander Mitrofanov
* python/intarnapvalue/intarna_pvalue.py, python/intarnapvalue/__main__.py
* Independently shuffle the correct target and query in pairwise batches;
apply the same parameter file to observed and shuffled predictions.
* Bound favorable-interaction resampling with --max-attempts, fail immediately
on command errors, and validate sample IDs/energies before publication.
* Normalize wrapped single-record FASTA and DNA, validate counts, preserve
zero energies, isolate RNG state and keep score ordering deterministic.
* Evaluate fitted CDFs instead of numerical integration; retain historical
raw-energy models, validate fits and expose empirical/none modes (PR #298).
* python/intarnapvalue/dinucl_shuffle.py, python/tests/test_intarnapvalue.py
* Handle singleton and invalid sequences; remove quadratic front-deletion
from Euler-path construction and support instance-local RNGs.
+ Test composition, sampling, bounded errors, constraints and CDF equivalence.
* python/intarnapvalue/README.md, python/Makefile.am
* Document real options, conditional sampling, dependencies and API behavior.
261024 Alexander Mitrofanov
* python/CopomuS.py, python/copomus/*.py, python/tests/test_copomus.py
* Validate sequences/FASTA, mutation positions and bases, delimiters and counts;
repair the explicit-selector call signature and CG/GC filter mismatch.
* Preserve zero energies and quoted CSV identifiers; fix signed-index conversion,
neighboring pairs across zero, and minimum-delta ordering at/below zero.
* Share profile contents across accessibility measures, clean private temporary
files, and reuse the wildtype prediction for all candidates (PR #298).
* Report errors on stderr and replace output only after successful computation.
* python/copomus/README.md, python/Makefile.am
* Correct option names, defaults, Python requirements and mutation/ranking docs;
distribute the focused regressions.
261024 Alexander Mitrofanov
* python/intarna_tools.py, python/IntaRNA-fuse.py, python/IntaRNA_CSV_p-value.py,
python/IntaRNA_plotRegions.py, python/Makefile.am, tests/testIntaRNAFuse.py,
python/tests/test_output_tools.py
+ Share dependency-free executable lookup, checked subprocess calls, RNA/FASTA
validation, CSV validation and atomic text publication between Python tools.
* Rebase onto feat/294-python-intarna-fuse; retain both migrations, their
installation rules and regression suites (PR #298).
261023 Alexander Mitrofanov
* python/IntaRNA_CSV_p-value.py, python/IntaRNA_plotRegions.py
+ Replace the R tools with standalone Python scripts preserving positional
arguments, negated-energy GEV tails, seven-digit rounding/BH correction,
ordered region rows, inclusive coverage and plotting parameter files.
+ Validate input and fitting; publish CSV atomically, preserve original CSV
fields, and support all previous figure formats without a display.
* python/tests/test_output_tools.py, .github/workflows/python-output-tools.yml
+ Test analytical tails, known GEV samples, BH, CSV errors/round trips,
plotting parameters, coverage and all seven output formats in Python CI.
* python/README.md, python/requirements-output-tools.txt, python/examples/*,
python/plotRegions.example.png, README.md, AGENTS.md
+ Document Python dependencies, migration, statistical and rendering
differences, parameter defaults and examples; replace README R snippets.
* Makefile.am, configure.ac, python/Makefile.am, R/*
* Install/distribute the Python replacements, documentation and fixtures.
- Remove the R scripts and their build directory.
* Resolves https://github.com/BackofenLab/IntaRNA/issues/295
261023 Alexander Mitrofanov
* python/IntaRNA-fuse.py, tests/testIntaRNAFuse.py, tests/runIntaRNAFuse.sh
+ Port the non-overlapping-site compatibility check and joint-accessibility
energy calculation to Python's standard library, retaining the CSV layout,
overlap criterion and both initiation terms.
* Honor required target/query sequences instead of overwriting them with
examples; handle empty predictions and reject failed commands or invalid
output without silently replacing missing energies with zero.
+ Check sequence forwarding, constraints, fused energies, column selection,
executable lookup and failures with subprocess fixtures and native tools.
* perl/, Makefile.am, configure.ac, python/Makefile.am, tests/Makefile.am
- Remove the Perl script/directory and their Autotools references.
+ Install/distribute the Python replacement and run its regression suite.
* README.md, python/README.md, AGENTS.md
+ Document installation, usage, migration, output and energy semantics;
update companion-tool paths for https://github.com/BackofenLab/IntaRNA/issues/294
261021 Alexander Mitrofanov
* OutputConstraint, OutputHandlerSeedCandidates, PredictorMfe, seeded predictors
+ Add bounded per-seed candidate selection before global pruning, preserving
eligible energy/traceback pairs and deduplicating sites before final filters.
* Reuse each MFE mode with an admitted single-seed adapter; preserve ordinary
statistics/trackers in one separate pass. Positive quotas can cost one
prediction per seed; zero retains the existing path.
* SeededPartitionFunction, PredictorMfeEns2d[Heuristic]SeedExtension
+ Rank/report left-most-anchor site ensemble energies independently of full
site partitions, Zall and actual-pair probabilities, per #288 guidance.
* CommandLineParsing, IntaRNA, README.md, doc/analysis/output-per-seed.md
+ --outNumberPerSeed=[0,1000], default zero; merge seed identities across
regions/windows and reset per region combination with --outPerRegion.
* Reject positive unseeded quotas, ignore evaluation, and apply final overlap
constraints to the retained union without refilling quotas (#285).
* gui/{options,protocol}.js, gui/tests/protocol.test.mjs,
scripts/wasm/{smoke-protocol.mjs,test-browser.py}
+ Expose outNumberPerSeed in the first GUI output row between outNumber and
outOverlap; move energy/accessibility filters to a dedicated second row.
+ Match native quota validation, window/region compatibility and JSON replay;
cover the default, range, rendered order and real WASM execution.
* PredictorSeedOracle_test.cpp, OutputHandlerSeedCandidates_test.cpp,
runOutputPerSeed.sh, library/test Makefile.am
+ Independent chain-enumeration, traceback, seed-only, mode-matrix, merge,
filter, CLI and unchanged-probability regressions; register/install sources.
261026 Alexander Mitrofanov
* scripts/wasm/test-browser.py
* decouple deterministic numerical browser checks from replaceable GUI example
payloads while retaining real-browser coverage of prediction/evaluation loading
261026 Alexander Mitrofanov
* gui/app.js, gui/{index.html,styles.css}, scripts/wasm/test-browser.py
* place Explicit seeds beside a half-width Seed constraint selector and halve
the CSV sort selector width; verify desktop/mobile control geometry
* show only examples for the selected task, retain complete CSV downloads while
scrolling result tables above 500 px, and match output tab selection styling
to the parameter tabs (PR #303 maintainer review)
* gui/docs/{json-workflow,step3-frontend-ui,step4-results-and-deployment}.md
* document task-specific examples, compact controls and the bounded result table
261026 Alexander Mitrofanov
* gui/{app,options,sessions,output-visualization}.js,
gui/{index.html,styles.css}
* compact bounded parameter rows while preserving their grouping and align
wrapped labels above left-aligned controls
* move CSV sorting/column selection into a dedicated tab between Output and
Model & Energy; add content/use tooltips to all additional output formats
+ show sequence-aware Plotly profiles, heatmaps and selected-spot bars beside
native file content; add header downloads and verified PNG export
* .gitattributes, gui/vendor/, scripts/wasm/stage.sh,
.github/workflows/build-wasm.yml
+ vendor and checksum Plotly.js Cartesian 4.1.2, stage its MIT license and
verify both assets in the combined Pages artifact
* gui/tests/output-visualization.test.mjs, scripts/wasm/test-browser.py,
README.md, gui/docs/
+ cover signed categorical axes, file/sequence mapping, malformed data,
responsive compact layout, plot rendering and PNG downloads in real
Chromium/Firefox with the existing WASM engine
* address https://github.com/BackofenLab/IntaRNA/pull/287#issuecomment-6416573560
* src/IntaRNA/SeededPartitionFunction.cpp
* Select sparse batch anchors by scanning admitted seeds instead of probing
every possible pair in every source span; retain the grid lookup for dense
domains and deterministic anchor order.
* Let partition-only heuristic ensembles batch up to 16 MiB of hybrid
coefficients, reducing repeated anchor-extension work without increasing
exact or pair-probability table budgets (issue #301).
* doc/analysis/{seed-extension-partition.md,heuristic-anchored-runtime.md}
* Document the adaptive anchor lookup and targeted runtime/memory tradeoff.
261024 Alexander Mitrofanov
* gui/{app,options,columns}.js, gui/{index.html,styles.css}
* organize tabs/rows as Sequences, Seed, Output, Model & Energy, Query,
Target and CLI-only; align wrapped labels and place Compute first
+ add a three-way seed selector, synchronized accessibility flags and
mode-dependent input availability; place SHAPE beside accessibility
* group compact CSV choices with descriptions and group selection actions;
default to 10 predictions and expanded task-specific energy columns,
explicitly preserving browser defaults in native-compatible JSON
* gui/{protocol,uploads,parameter-file}.js, gui/examples/
* accept 50 FASTA records per strand of 2-5,000 nt each, with longest
selected query x longest selected target <= 1,000,000; allow 1 MB FASTA
+ warn about ignored FASTA header descriptions while using first-token IDs
* gui/{sessions,results}.js
* select results from the header/name, order Show/Hide before the name and
ZIP/delete actions, compact table headings and distinguish selected rows
* gui/tests/, scripts/wasm/test-browser.py, README.md, gui/docs/
+ cover limits, native JSON replay/defaults, dependent controls, grouped CSV
choices, desktop/mobile alignment and result header selection
* address https://github.com/BackofenLab/IntaRNA/pull/299#issuecomment-6375752155
261023 Alexander Mitrofanov
* gui/{app,sessions,results,visualization}.js, gui/{index.html,styles.css}
+ retain successful runs in browser memory with unique IDs, editable names,
independent results/diagnostics and JSON snapshots of their computed inputs
* restore inputs and fold other output areas on selection; preserve sessions
across edits, reset, imports, failures and aborts; unload folded viewers
+ export each session's original JSON/outputs from its header and delete it
without overwriting editable inputs; keep controls keyboard accessible
* scripts/wasm/{stage.sh,test-browser.py}, README.md, gui/docs/
* stage the sessions module, exercise session lifetime and archive isolation
in real browsers, and document temporary storage and updated reset behavior
* follow-up to https://github.com/BackofenLab/IntaRNA/pull/297#issuecomment-6367326708
261023 Alexander Mitrofanov
* .gitattributes, gui/docs/json-workflow.md
+ Preserve exact upstream license whitespace and mark the JSON header and
license as vendored. Record native release/debug, WASM replay, browser,
distribution and provenance validation for the PR #287 revisions.
261023 Alexander Mitrofanov
* src/bin/CommandLineParsing.cpp, ParameterFile.h, tests/testParameterFile.py
* Accept an explicitly empty CSV sort value to clear a parameter-file
setting when reproducing non-CSV reports from the same JSON document.
* gui/app.js, gui/styles.css, scripts/wasm/test-browser.py
* Keep pending auxiliary-file reads from restoring reset inputs, return
Reset to Sequence input and make the entire task label clickable.
* doc/{Makefile.am,json-parameters.md}
+ Include JSON format documentation in source distributions and record the
observed WASM footprint and reproducible dependency comparison (#287).
261023 Alexander Mitrofanov
* gui/{index.html,app.js,styles.css}, scripts/wasm/test-browser.py
* Replace the task dropdown with visible, highlighted native radio choices
and task descriptions; update the heading to include Seeds/Accessibility.
* Keep Example, Reset, Load and Store adjacent and test keyboard selection
and responsive layout (PR #287 review).
261023 Alexander Mitrofanov
* gui/{uploads.js,app.js,index.html,styles.css}, gui/docs/json-workflow.md
+ Add Upload controls and file-drop hints to both FASTA headers; validate
file size/contents before replacing a strand and invalidate stale reads.
* gui/tests/uploads.test.mjs, scripts/wasm/{test-browser.py,stage.sh}
+ Test local upload/drop, invalid files and reset during a pending read;
stage the file-input module (PR #287 review).
261023 Alexander Mitrofanov
* gui/{app.js,index.html,styles.css,examples/}, gui/docs/json-workflow.md
* Reset clears inputs/results and restores defaults; example FASTA is shown
only as placeholders. Add a described Example dropdown beside Reset.
+ Ship two editable JSON examples and a manifest, using the common importer.
* gui/tests/parameter-file.test.mjs, scripts/wasm/{stage.sh,test-browser.py}
+ Validate/stage example files and check empty startup/reset behavior (#287).
261023 Alexander Mitrofanov
* gui/parameter-file.js, archive.js, app.js, index.html, protocol.js
+ Load and Store non-default settings and embedded inputs using native JSON;
validate imports before replacing the form and retain CSV selection order.
* ZIP exports contain only parameter.json and outputs. Record version and
native replay commands, including overrides for additional report formats.
* gui/tests/, scripts/wasm/{smoke-protocol.mjs,test-browser.py,stage.sh},
gui/docs/{json-workflow.md,step4-results-and-deployment.md}
+ Test JSON round trips, invalid imports, real WASM replay and output equality;
stage the serializer and nlohmann/json license (PR #287 review).
261023 Alexander Mitrofanov
* gui/protocol.js, gui/intarna-worker.js, gui/tests/protocol.test.mjs,
gui/docs/step2-worker-architecture.md
* Pass --parameterFile=/parameter.json to each WASM instance using the
native JSON format with embedded FASTA, SHAPE and accessibility text.
Preserve native output routing and independent report invocations (#287).
261023 Alexander Mitrofanov
* src/bin/ParameterFile.{h,cpp}, CommandLineParsing.{h,cpp}, Makefile.am
+ Detect JSON parameter files; reuse native CLI validation and precedence,
support embedded input text and retain files until computation finishes.
* Honor parameter-file personalities when selecting native defaults.
* src/bin/nlohmann/, doc/json-parameters.md, README.md, scripts/wasm/stage.sh
+ Vendor nlohmann/json 3.12.0 with its license, document the schema,
dependency tradeoff and reproduction contract (PR #287 review).
* tests/runParameterFile.sh, tests/testParameterFile.py, tests/Makefile.am
+ Check legacy/JSON equivalence, embedded inputs, precedence and errors.
261023 Alexander Mitrofanov
* gui/, scripts/wasm/, .github/workflows/build-wasm.yml, README.md,
doc/api-documentation.md, .gitignore
* Rename webinterface to gui, including imports, staging, tests and the
combined Pages artifact at /IntaRNA/gui/ (PR #287 review).
261022 Alexander Mitrofanov
* scripts/wasm/{vienna-release.py,vienna-release.json}, build.sh
+ Resolve the newest stable ViennaRNA >=2.7.2 and <3 from all official GitHub
release pages in CI; require its release tarball and published SHA-256.
* Pin 2.7.2 for reproducible local builds and accept saved release manifests.
Isolate RNAlib sources/installations and IntaRNA objects by archive identity
and keep Boost/zlib in a separate prefix to prevent reuse or include-path
shadowing of libraries/headers from another release (PR #292).
* scripts/wasm/patch-vienna.py
- Remove the dlib 19.24 compatibility patch; ViennaRNA 2.7.2 bundles dlib 20.0.
* scripts/wasm/{write-build-info.mjs,stage.sh,smoke-protocol.mjs,test-browser.py}
* Record the selected archive URL/checksum, check the compiled ViennaRNA
version, stage matching dependency notices and test actual version exports.
* scripts/wasm/test-vienna-release.py, .github/workflows/build-wasm.yml
+ Cover numeric version selection, pagination, major-3/prerelease exclusion,
missing/invalid asset metadata, API failures, manifest validation and
rejection of compiled engines with a stale ViennaRNA version.
* webinterface/docs/step1-wasm-compilation.md
* Document latest-2.x CI selection, pinned local reproduction, versioned
caches, current bundled dlib and archive provenance.
261022 Alexander Mitrofanov
* scripts/wasm/{build,download}.sh
* Use the official GitHub ViennaRNA 2.7.0 release asset and pin its SHA-256;
the university endpoint returned a short HTTP 200 text response, failing
the WASM build before compilation (PR #291).
+ Verify archives before caching, discard invalid cached responses and remove
failed partial downloads so rerunning a build can recover automatically.
* scripts/wasm/test-downloads.py, .github/workflows/build-wasm.yml
+ Test verified-cache reuse, invalid-cache recovery, checksum failures,
HTTP errors and truncated transfers against a local HTTP server in CI.
* webinterface/docs/step1-wasm-compilation.md
* Document the release source, archive verification and download regression
command, including recovery behavior for failed or outdated caches.
261022 Alexander Mitrofanov
* webinterface/{archive,visualization}.js
+ Build local UTF-8 ZIPs with normalized FASTA, compiled version provenance,
portable parameter files, selected CSV, auxiliary inputs and all outputs;
include separate replay configurations for native text report modes.
+ Construct selected-row vaRRI URLs from full target/query sequences, native
dot-bracket output, names and signed indices, preserving strand direction.
* webinterface/{app,results,protocol}.js, index.html, styles.css
+ Add row selection, embedded vaRRI/full-viewer link and Download ZIP action;
preserve completed-run inputs and clear exports/viewer when inputs change.
* Replace folded groups with keyboard-accessible tabs and compact parameter
grids; link Bioinformatics - University of Freiburg to the group website
and remove artificial width limits from table/footer notes.
* scripts/wasm/{stage.sh,smoke-protocol.mjs,test-browser.py}
* Stage the new modules; verify byte-identical replay through fresh engines
and browser tab/selection/ZIP behavior in Chromium and Firefox.
* webinterface/tests/export.test.mjs, README.md, webinterface/docs/*
+ Cover coordinate/identity mapping, effective settings and archive inputs;
document replay commands, external visualization and browser limitations
(https://github.com/BackofenLab/IntaRNA/pull/287#issuecomment-6321503136).
261021 Alexander Mitrofanov
* src/IntaRNA/*.h
* Mark 194 inherited virtual methods and 45 derived destructors override;
keep algorithms, interfaces and third-party headers unchanged.
* webinterface/{options,columns,protocol,app,results,intarna-worker}.js
+ Add CLI-based parameter groups and validation, multi-FASTA prediction,
signed per-strand start indices and IntaRNAeval structure evaluation.
+ Provide all CSV columns, table visibility controls, pair-relative mfe Δ,
local SHAPE/accessibility data and previews/downloads of native extra files.
* webinterface/index.html, styles.css, assets/*
* Follow vaRRI main-v2 colors and institutional header; keep one parameter
group open at a time and adapt controls/defaults to the selected task.
* scripts/wasm/{build,stage}.sh, write-build-info.mjs
+ Record actual compiled engine/library versions and asset hashes in text/JSON
at build time; preserve/check provenance during staging and show it in UI.
* Reject inconsistent missing overrides in the Emscripten build.
* webinterface/tests/*, scripts/wasm/{smoke-protocol.mjs,test-browser.py}
+ Exercise task validation/defaults, real WASM evaluation/prediction, multiple
records/coordinates, imported data, columns/reports and worker lifecycle.
* .github/workflows/{build,build-wasm}.yml, README.md, webinterface/docs/*
* Run WASM/browser checks on dependent PRs and document revised behavior,
provenance, native option replacements and browser limits (PR #287 review).
261020 Alexander Mitrofanov
* scripts/wasm/*, .github/workflows/build-wasm.yml, webinterface/app.js
+ Execute dependency API probes and test structured accessibility costs,
native prediction references, C++ errors, nested paths and literal IDs.
* Download archives atomically and clear obsolete diagnostics on input edits.
* webinterface/docs/step4-results-and-deployment.md
+ Record native API/CLI, real WASM and Chromium/Firefox validation (#286).
261020 Alexander Mitrofanov
* webinterface/results.js, app.js, index.html, styles.css, tests/*, README.md
+ Parse native CSV, preserve target/query orientation and inclusive indices,
and show energy/relative suboptimality with sorting, search and export.
* scripts/wasm/stage.sh, test-browser.py, .github/workflows/*
+ Stage matching WASM assets, notices and provenance; verify the real engine
in Chromium and Firefox, including cancellation/restart and error recovery.
* Publish one combined Pages artifact with the existing guide/API and the
browser application at /webinterface/ (#286, step 4).
261020 Alexander Mitrofanov
* webinterface/index.html, app.js, styles.css, mark.svg, docs/*
+ Add paired query/target editors, a valid example, bounded RNA/FASTA
validation and result counts; normalize lowercase and DNA input.
+ Keep the form responsive during predictions, display errors/diagnostics,
and abort by button or Escape (#286, step 3).
261020 Alexander Mitrofanov
* webinterface/protocol.js, intarna-worker.js, runner.js, tests/*
+ Validate FASTA at the worker boundary, run the existing CLI with MEMFS
input/output, and report CSV and bounded diagnostics asynchronously.
+ Terminate each worker on completion, failure or abort; test clean restart
and stale-message handling (#286, step 2); document the worker protocol.
261020 Alexander Mitrofanov
* scripts/wasm/*, .github/workflows/build-wasm.yml, configure.ac,
src/bin/Makefile.am, src/IntaRNA/Makefile.am
+ Build pinned zlib, Boost and ViennaRNA for wasm32, then the existing
IntaRNA CLI as an isolated ES module with MEMFS and callMain exports.
* Omit pthread flags for single-thread Emscripten builds; retain native flags.
* Resolve generated CLI headers/pkg-config data in the build tree; adapt
bundled dlib Unicode and template code to the SDK libc++ and Clang.
+ Document the toolchain and validate native-reference predictions in WASM
(https://github.com/BackofenLab/IntaRNA/issues/286, step 1).
261020 Alexander Mitrofanov
* PredictorMfe2dSeedExtension.*, PredictorMfe2dHeuristicSeedExtension.cpp
- Remove extensionLoopE(), the local loop-energy table, known-value flags,
pair-index map and cache initialization/reset/fallback machinery requested
in https://github.com/BackofenLab/IntaRNA/pull/276#discussion_r4312235144
* Restore direct energy.getE_interLeft() and energy.areComplementary() calls
in both predictors and traceback. Retain nonpreserving scratch resize,
bounded predecessor scans and their existing traversal order.
* PredictorSeedOracle_test.cpp
- Remove obsolete cache probes; retain independent recurrence, workspace,
tie, maximal-loop, range/offset, traceback and seed-witness regressions.
* doc/analysis/mfe-seed-extension-reuse.md,
doc/benchmarks/seed-extension/README.md
* Describe direct evaluation and label the archived cached-prototype timing
evidence explicitly so it is not attributed to the revised implementation.
261016 Alexander Mitrofanov
* PredictorMfe2dSeedExtension, PredictorMfe2dHeuristicSeedExtension
* reuse nonpreserving extension workspace capacity across seeds and traceback
+ cache seed-independent pair feasibility and loop energies within a bounded
16 MiB budget per prediction; invalidate caches before changing offsets
* bound predecessor scans without changing transition/update order (#274)
* tests/PredictorSeedOracle_test.cpp
+ exercise repeated exact/heuristic predictions and cache correctness
* doc/analysis/mfe-seed-extension-reuse.md, doc/benchmarks/seed-extension/
+ compare ensemble/MFE reuse strategies and record reproducible native
runtime, memory and byte-exact output comparisons against 21b9d8f
* doc/Makefile.am
+ distribute the analysis and benchmark evidence
261016 Alexander Mitrofanov
* SeededPartitionFunction.*, StackSeedDomain.h
* Share the exact left-most seed-anchor recurrence with heuristic mode.
Remove the separate source-relative heuristic kernel; join true left
extensions with the seed ending and one frozen selected right endpoint.
Keep every right ending when there is no left extension. Crop right tables
in batches without that no-left source and differentiate the same joins.
* Document why pruning containing seeds preserves first-completed ownership,
including shortest co-ending ties; retain singleton noLP support.
* PredictorMfeEns2dHeuristicSeedExtension.*
* Clarify shared factorization while preserving native right-selection hooks,
energy ranking, complete-boundary publication and gapped-seed fallback.
* SeededPartitionFunction_test.cpp, PredictorSeedOracle_test.cpp
+ Check nested ownership against the full declared family, one-sided paths,
invalid/cropped selectors, singleton noLP support, batch recomputation and
native virtual hooks against independent chain enumeration.
* README.md, doc/analysis/seed-extension-partition.md,
doc/analysis/heuristic-anchored-runtime.md, doc/benchmarks/seed-extension/*,
doc/Makefile.am
+ Document the common recurrence and record reproducible kernel/native
correctness, runtime, allocation and RSS comparisons. Add a native CLI
runner with alternating samples and numerical pair-output verification.
* Address https://github.com/BackofenLab/IntaRNA/pull/270#issuecomment-6216756696
directly on perf/268-exact-seed-anchored-extension.
261016 Alexander Mitrofanov
* StackSeedDomain.*
+ Enumerate a deterministic irredundant exact anchor family while retaining
the original admitted occurrences for annotations and heuristic choices.
* SeededPartitionFunction.*
* Evaluate exact stack-seeded ensembles by left-most ownership in an
equivalent seed family with redundant containing occurrences removed.
Reuse anchor-local left/right and outside workspaces; combine complete
boundary partitions in bounded batches before publication.
* Differentiate the same nonnegative ensemble for actual-pair masses,
including singleton support from either side under noLP. Preserve the
heuristic's first-completed-seed ownership and gapped-seed fallback.
* SeededPartitionFunction_test.cpp, PredictorSeedOracle_test.cpp
+ Compare nested mixed-length seeds, cropped/asymmetric spans and loop
limits, noLP support and native boundary optima with independent chain
enumeration. Check full hybrid callback coefficients, including zero
boundary factors, and identical partition-only/pair publication.
* doc/analysis/seed-extension-partition.md, doc/benchmarks/seed-extension/*,
doc/Makefile.am
+ Explain exact seed ownership, extension bounds, outside differentiation
and bounded boundary aggregation; record reproducible correctness,
runtime, allocation and RSS comparisons against PR #268. Add correctness-
only benchmark runs and record harness/shared-header source hashes.
* Address https://github.com/BackofenLab/IntaRNA/pull/268#issuecomment-6212869312.
261015 Alexander Mitrofanov
* SeededPartitionFunction.cpp
* Allocate prefix, first-hit, right-extension and outside matrices once per
computation at the inclusive span bounds. Use active upper index bounds
and reset active cells before accumulation, including shrink/regrowth.
* Reuse flat anchor/group storage and an endpoint index instead of creating
per-group vectors and hash nodes; omit outside buffers in partition mode.
* PredictorMfeEns2dHeuristicSeedExtension.cpp
* Reuse the maximal right-extension buffer while freezing native heuristic
endpoints, including explicit seeds of different lengths.
* SeededPartitionFunction_test.cpp, PredictorHeuristicSeededProbability_test.cpp
+ Compare changing workspace shapes with independent chain enumeration and
compare mixed-seed endpoint selection with isolated single-seed predictions.
* doc/analysis/seed-extension-partition.md, doc/benchmarks/seed-extension/*,
doc/Makefile.am
+ Document workspace bounds and reproduce exact/heuristic allocation counts,
requested bytes, runtime, RSS and numerical comparisons against PR #266.
* Address https://github.com/BackofenLab/IntaRNA/pull/266#issuecomment-6176325864.
261014 Alexander Mitrofanov
* SeededPartitionFunction.*
* Replace the combined absorbing-state recurrence by separate seed-free
prefixes, canonical first-hit injections and shared right extensions.
Apply full-boundary weights once after summing all seed owners; propagate
pair masses through the same nonnegative recurrence. Co-ending variable
seed lengths use their shortest admitted occurrence as canonical owner.
* PredictorMfeEns2d{,Heuristic}SeedExtension.*
* Route stack-seeded heuristic prediction through the common kernel with
frozen right choices. Retain one-sided and selected-endpoint two-sided
paths once; preserve legacy gapped-seed behavior and extension hooks.
* SeededChainOracle.h, SeededPartitionFunction_test.cpp,
PredictorSeedOracle_test.cpp, PredictorHeuristicSeededProbability_test.cpp,
PredictorMfeEnsRegression_test.cpp
+ Check first-hit ownership, complete boundaries, raw pair masses and
heuristic subsets with independent tiny-chain enumeration and fugacities.
* StackSeedDomain.cpp, StackSeedDomain_test.cpp
* Start iteration at the remaining sequence end; avoid colliding with an
explicit seed outside a cropped active region. Cover offset and repeated
regional predictions. Reject conflicting externally supplied lengths in
release builds to keep seed-start and seed-end lookup consistent.
* Align the conservative-handler capability test with the documented domain
precondition in debug builds while checking retained seed geometry.
* BasePairProbabilities.cpp
* Restore public region/mask/overlap validation in release builds; the full
suite exposed a missing-mask null dereference on the target branch.
* README.md, doc/analysis/seed-extension-partition.md, doc/Makefile.am,
doc/recursions/IntaRNA.SeededPartitionFunction.{inside,outside}.svg,
doc/benchmarks/seed-extension/*
+ Explain the Step 6 theory transfer, numerical/structural constraints,
changed heuristic semantics and validation; distribute the analysis and
identify the superseded suffix-recurrence diagrams as historical.
+ Supply reproducible baseline comparisons of all boundary/pair masses,
timing and process RSS, including the measured exact-kernel slowdown.
* Implement https://github.com/BackofenLab/IntaRNA/issues/264 on its
requested docs/257-base-pair-probability-plan base.
261013 Alexander Mitrofanov
* StackSeedDomain, SeededPartitionFunction, PredictorMfeEns2dSeedExtension
* use Interaction::BasePair coordinates and hashed sparse seed lookup tables
* replace the stack-only handler's equal-length invariant with a debug assert;
retain runtime validation of public input and numerical/extension failures
+ explain domain filtering, deterministic start traversal, inside/outside
recurrence steps and coordinate conversion (PR #258 review)
* BasePairProbabilities, AGENTS.md
+ explain validation and publication steps; document base-pair/hash storage,
debug-only invariants and implementation-comment conventions
* StackSeedDomain_test, seeded and heuristic probability oracle fixtures/tests
+ verify shortest shared seed endings, duplicate and unordered occurrences,
row-major traversal and release-time rejection of invalid seed inputs
* use the common base-pair representation while retaining independent oracles
261012 Alexander Mitrofanov
* BasePairProbabilitySvg, BasePairProbabilityWriter, CommandLineParsing
* restore top-to-bottom target indexing, aligned frames/guides and MFE region
+ reconstruct the MFE structure inside the best ensemble site for SVG only
+ highlight each MFE pair; shared seed pairs use orange vertical and green
horizontal edges, preserving both annotations (PR #259 review)
* testBasePairProbabilitySvg.py, README.md, seeded-probabilities-validation.md
+ verify complete internal MFE pairs, shared borders, signed guides and
output-off parity; document the fixed-boundary traceback and orientation
261009 Alexander Mitrofanov
* doc/analysis/seeded-probabilities-validation.md, doc/recursions :
* record final review validation and controlled runtime/memory measurements;
update the seeded-heuristic depiction for approximate pair output (PR #259)
261009 Alexander Mitrofanov
* PredictorMfeEns2dHeuristic, PredictorMfeEns2dHeuristicSeedExtension,
PredictorMfeEns2dSeedExtension, BasePairProbabilities, probability writers :
+ reverse retained candidate chains and signed seed-extension recurrences to
obtain marginals of the existing heuristic ensemble; preserve denominator
and seed-overlap corrections, validate all masses before publication
+ expose approximation metadata in CSV/SVG and retain seed provenance
* bound cropped noLP continuations by the active region and correct default
region offsets; reject unsupported singleton heuristic seeds explicitly
* CommandLineParsing, tests, README.md, doc/recursions :
+ enable model P/mode H probability output; add independent tiny-chain and