Repository navigation
Expand file tree
/
Copy pathChangeLog
More file actions
4451 lines (4091 loc) · 175 KB
/
Copy pathChangeLog
File metadata and controls
4451 lines (4091 loc) · 175 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
- 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
- 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.
# IntaRNA_plotRegions.R
- fix deprecation warning
# CopomuS.py
- bugfix version checking
################################################################################
################################################################################
261007 Alexander Mitrofanov
* doc/doxygen.cfg, doc/doxygen/* :
+ introduce the API main page with component links, prediction flow,
coordinate/energy conventions, and library integration guidance
+ add IntaRNA header/footer navigation and responsive project styling
* doc/build-api.sh, doc/check-api.py, doc/api-documentation.md, README.md :
+ build HTML without C++ dependencies and check entry-page links/assets
+ document local generation and the one-time Pages activation after merge
* .github/workflows/documentation.yml :
+ build the existing Jekyll guide and API on PRs and master commits;
publish both together from master only, with API content under /api/
* Makefile.am, doc/Makefile.am :
* rebuild documentation when headers or documentation assets change and
include all documentation sources and build helpers in distributions
* addresses https://github.com/BackofenLab/IntaRNA/issues/22
261005 Alexander Mitrofanov
* bin/CommandLineParsing, tests/runKineticSeedExtension.sh :
+ add IntaRNAsnap personality with model=X, mode=K and outNoLP=true defaults;
support executable-name and explicit personality selection
* configure.ac :
* find personality declarations via srcdir so out-of-tree installations
create the executable links, including IntaRNAsnap
* README.md, doc/kinetic-seed-extension.md,
doc/recursions/IntaRNAsnap.PredictorSeedExtensionKinetic.svg, doc/Makefile.am :
+ document personality usage and depict seed initialization, allowed moves,
complete-energy greedy selection, stopping and prefix reporting
+ distribute the benchmark's tutorial sequences with its script and results
* doc/benchmark-kix.py, doc/kix-benchmark-20261005.json :
+ compare IntaRNAsnap with default IntaRNA with and without GU-end constraints;
record wall time, peak RSS, MFE energy and maximum covered strand length
* implement https://github.com/BackofenLab/IntaRNA/pull/254#issuecomment-5995041057
261005 Alexander Mitrofanov
* IntaRNA/PredictorSeedExtensionKinetic :
* always evaluate single and double stacks plus atomic loop/stack extensions;
trust seed-handler structures/energies, including explicit lonely pairs
* cache each end's candidates, shared complementarity checks and local
energies; rebuild only the chosen end and refresh full opposite-end energy
* bin/CommandLineParsing :
* set --outNoLP=true with INFO for kinetic mode K
* tests/PredictorSeedExtensionKinetic_test.cpp, tests/runKineticSeedExtension.sh :
* update independent oracle and CLI expectations for atomic double stacks;
cover trusted seeds, caching and kinetic mode K
* README.md, doc/kinetic-seed-extension.md :
* document revised semantics in response to
https://github.com/BackofenLab/IntaRNA/pull/254
261005 Alexander Mitrofanov
* IntaRNA/PredictorMfe, tests/PredictorMfeHeuristicCellState_test.cpp,
tests/PredictorMfeEnsRegression_test.cpp :
* normalize coincident suboptimal boundaries to one base pair before
traceback or output, matching the initial optimum representation
+ assert valid single-pair candidates in traced and boundary-only output;
fixes failures exposed by the PR #253 debug/sanitizer regressions
261005 Alexander Mitrofanov
* tests/PredictorTinyOracle_test.cpp, tests/runOutputOverlap.sh :
+ verify every reported heuristic trace and energy against independently
enumerated structures filtered by GU/ED limits; check forbidden intervals
+ exercise automatic outMinPu region splitting on both RNAs in all overlap
modes with merged and independent output (PR #253)
261005 Alexander Mitrofanov
* README.md :
* retain and explain the one-right-extension strategy, including mode=M,
incomplete compatible alternatives and the limits of blocking paired bases
* doc/analysis/out-overlap.md, doc/analysis/out-overlap/reproduce.py :
+ record the accepted review decisions separately from historical findings
* capture old output and new regional input rejections without treating
historical bugs as regression expectations (PR #253)
261005 Alexander Mitrofanov
* bin/IntaRNA, bin/CommandLineParsing, README.md :
* filter merged results by the global minimum plus outDeltaE; keep the
independent energy windows for outPerRegion=true (PR #253)
* tests/runOutputOverlap.sh :
+ verify both region orders, zero/inclusive delta boundaries, permitted
overlap modes, independent regional output and empty merged results
261005 Alexander Mitrofanov
* IntaRNA/PredictorMfe, PredictorMfeEns, PredictorMfe2dHeuristic,
PredictorMfe2dHeuristicSeed, PredictorMfe2dHelixBlockHeuristic,
PredictorMfe2dHelixBlockHeuristicSeed :
* share complete-site GU/ED validation between initial and later candidates
* retain the existing matrix scan order and one-extension heuristic (PR #253)
* tests/PredictorMfeHeuristicCellState_test.cpp :
+ cover all four matrix selectors, terminal GU and nonzero ED limits,
all overlap modes, region offsets and boundary/traced output
261005 Alexander Mitrofanov
* bin/CommandLineParsing, README.md :
+ validate manual regions and automatic decomposition against outOverlap
+ N requires one region per RNA, T one target region, Q one query region;
B and independent outPerRegion output accept multiple regions (PR #253)
* tests/runOutputOverlap.sh, tests/Makefile.am :
+ exercise all overlap modes, manual/automatic regions, per-region output,
unchanged single regions and shifted sequence indices
261005 Alexander Mitrofanov
* IntaRNA/PredictorMfeEns2dHeuristic :
- remove raw-matrix suboptimal selection and its floating-point sentinel
* reuse validated, finalized per-site energies and E_INF exhaustion from
PredictorMfe; retain one best right extension per left boundary (PR #253)
* tests/PredictorMfeEnsRegression_test.cpp :
+ compare N/T/Q energies against B with accessibility and energy cutoffs
+ cover exhausted and empty candidate sets with and without traceback
261005 Alexander Mitrofanov
* README.md :
+ define suboptimal predictions by distinct start/end coordinates on both RNAs
* distinguish site prediction from evaluation of supplied structures (PR #253)
261003 Alexander Mitrofanov
* IntaRNA/PredictorSeedExtensionKinetic, src/IntaRNA/Makefile.am :
+ greedily extend seeds on either side using complete interaction-energy
differences and deterministic thermodynamic or distance-weighted scores
+ support noLP macro-steps, GU restrictions, per-strand loop/span constraints,
explicit-seed validation and cached trajectory traceback
+ retain valid visited prefixes and select non-overlapping output from the
complete retained candidate set; reject unsupported ensemble statistics
* bin/CommandLineParsing :
+ expose --mode=K exclusively for --model=X and --kineticScore=A|B|C
* tests/PredictorSeedExtensionKinetic_test.cpp, tests/runKineticSeedExtension.sh,
tests/Makefile.am :
+ validate local move choices, macro-step energetics, structural constraints,
traceback, output filtering and CLI compatibility
* README.md, doc/kinetic-seed-extension.md, doc/Makefile.am :
+ document scientific scope and complete-energy move enumeration
261002 Alexander Mitrofanov
* doc/analysis/out-overlap.md, doc/analysis/out-overlap/reproduce.py :
+ analyse all four output overlap modes and the documented enumeration limits
+ reproduce regional overlap and energy-window violations, heuristic output
filtering gaps, and invalid/incomplete ensemble candidate energies
+ provide 118 CLI observations, 64 controls and three independent site oracles
+ propose selection semantics and repairs for consultation; no predictor changes
* addresses analysis request in https://github.com/BackofenLab/IntaRNA/issues/212
* doc/Makefile.am :
+ distribute the analysis and standalone reproduction script
261001 Alexander Mitrofanov
* IntaRNA/PredictorEvalOnly, src/IntaRNA/Makefile.am :
+ parse colon-separated hybridDB structures with sequence/index/pair validation
+ evaluate explicit base pairs with the selected energy and accessibility model
+ report distinct structures, energies, restricted partition sums and trackers
* bin/CommandLineParsing, bin/IntaRNA :
+ --rri selects evaluation; IntaRNAeval personality requires interaction input
+ require one query/target and report ignored prediction and output constraints
* bypass prediction result filtering to preserve distinct structures with equal
energies, boundaries and base-pair counts; retain energy/accessibility settings
* tests/PredictorEvalOnly_test.cpp, tests/runIntaRNAeval.sh, tests/Makefile.am :
+ check malformed structures, shifted indices, ignored filters, duplicate/tied
structures, tracker coordinates, partition reset and energy contributions
+ reproduce ViennaRNA predictions through API and CLI evaluation round trips
* README.md and CLI help :
+ document input format, retained settings and supplied-structure ensemble scope
* resolves https://github.com/BackofenLab/IntaRNA/issues/184
260930 Alexander Mitrofanov
* IntaRNA/Matrix.h :
+ const/mutable upper-band row views that exclude structural zeros and padding
* IntaRNA/Accessibility, AccessibilityArchive, AccessibilityVrna, AccessibilityFromStream :
* export stored ED rows directly without copies or per-cell getED() calls
* retain generic export for other producers and constrained accessibility data
* deserialize retained rows into final storage; validate discarded band tails
* preserve version 1 archive bytes and existing constraint masking
* tests/AccessibilityBinary_test.cpp, tests/Matrix_test.cpp :
+ verify row aliasing, byte-identical direct/generic output, zero interface
lookups on direct export, constrained short sequences and corrupt discarded data
* doc/benchmarks/accessibility.cpp, doc/benchmarks/accessibility.md, doc/Makefile.am :
* compare direct/generic and raw/gzip binary I/O with exact ED verification
+ reproducible synthetic RNA and E. coli measurements with per-trial CSV results
* retain gzip: both 100,000-base datasets shrink by 58-59%, despite slower I/O
* README.md :
+ document direct matrix I/O and link the compression measurements
* addresses review requests in https://github.com/BackofenLab/IntaRNA/pull/250
260929 Alexander Mitrofanov
* IntaRNA/Accessibility, AccessibilityArchive, AccessibilityFromStream :
+ versioned Boost binary serialization of exact ED matrices and sequence data
+ stream rows with bounded scratch memory, retaining dangling-end intervals
+ validate sequence, dimensions, energies, archive format and stream integrity
* bin/CommandLineParsing, IntaRNA/general :
+ select compressed binary accessibility input/output via .agz filenames
* support all existing accessibility producers and both P/E input modes
* release accessibility streams when parsing or writing fails
* configure.ac, src/IntaRNA/Makefile.am :
+ check and link Boost.Serialization; distribute the internal matrix archive view
* tests/AccessibilityBinary_test.cpp, tests/runAccessibilityBinary.sh, tests/Makefile.am :
+ exact round trips, malformed archives, prediction reuse and filename dispatch
* doc/benchmarks/accessibility.cpp, doc/benchmarks/accessibility.md, doc/Makefile.am :
+ reproducible compressed text versus binary I/O benchmark with exact ED checks
* README.md and CLI help :
+ document binary caches, unchanged text formats and compatibility requirements
* resolves https://github.com/BackofenLab/IntaRNA/issues/245
* configure.ac, IntaRNA/Matrix.h, IntaRNA/intarna_config.h.in:
+ prefer native mdspan, falling back to bundled Kokkos with a public
INTARNA_USE_STD_MDSPAN define; allow explicit --with-mdspan selection
* src/mdspan, src/experimental:
+ vendor only the Kokkos headers and both copies of its license from
stable revision 8989f70749e28f337e6f7aa210db88659dba6f2f
+ distribute and install the headers with IntaRNA for external consumers
* CI, README.md, doc/mdspan-storage.md:
+ restore GCC 14 release/debug builds and document automatic fallback
+ record a clean GCC 14/Kokkos comparison against uBLAS with all outputs
matching across 160 executions; retain the original native measurements
* IntaRNA/Matrix.h, AGENTS.md:
+ document public matrix operations and place explicit inline template
definitions after class declarations, following the repository guidance
+ keep the guidance aligned with native/bundled mdspan selection (issue #246)
260928
* IntaRNA/Matrix.h and storage aliases:
+ replace uBLAS dense, upper-band and upper-triangular storage with owned
std::vector data accessed through C++23 std::mdspan
+ preserve logical resize, copy/move ownership and compact storage
* configure.ac, README.md:
+ probe native mdspan library support and document the toolchain requirement
* tests/Matrix_test.cpp, tests/benchmark/compare-matrix-storage.py:
+ add storage regression tests and reproducible before/after measurements
+ terminate the timed process group on timeout or interruption, with
regression checks
+ include the biological benchmark inputs in source distributions
* doc/mdspan-storage.md:
+ record validation and performance evaluation for issue #246
260928 Alexander Mitrofanov
* AGENTS.md :
+ repository-wide AI coding guidance based on the current code and build setup
+ C++23, Doxygen and explicit inline definitions after class declarations
+ build/test commands, scientific invariants and two-part ChangeLog updates
+ separate implementation branches and PRs documenting targets, changes and results
* resolves issue #247
260928 Martin Raden
* IntaRNA/IndexRangeList:
+ listIsComplete : whether or not the list is complete (no further ranges can be added)
+ setter/getter
* IntaRNA/Accessibility:
* decomposeByMaxED() : fix issue #219
+ bugfix: requires serialization to be thread-safe due to shared storage of computed ranges
+ mark computed ranges as complete to avoid recomputation
260925 Martin Raden
* bin/CommandLineParsing :
* isToShortQuery() : check if query length is < seedBP or helixMinBP (if required)
* isToShortTarget() : check if target length is < seedBP or helixMinBP (if required)
* parsing:
* provide warning instead of exception if query or target sequence is too short for seed or helix length
* default:
* default SHAPE methods changed to "D", which is the default for ViennaRNA 2.7.*
* bin/IntaRNA :
* skip too short query or target sequences
* IntaRNA/general :
* newOutputStream() :
+ increased output buffer size to 512 KB for higher performance and reduced file-handle overhead
260924 Martin Raden
* IntaRNA/AccessibilityVrna :
* fillByRNAplfold() :
+ multi-thread bugfix: serialize access to ViennaRNA library since not
thread-safe (up to v2.7.2)
260921 Martin Raden
* IntaRNA/general :
* bugfix cleanup of stream objects
* configure.ac :
* src/IntaRNA/Makefile.am :
* src/bin/Makefile.am :
* undo some diagnostic flags to allow compilation on test system
* IntaRNA/Accessibility* :
* constructors: generate/read/keep data for maxLength+1 to allow for
dangling-end probability computation
* tests/AccessibilityFromStream_test.cpp :
* tests/AccessibilityVrna_test.cpp :
+ check for maxLength+1 ED values
260919 Alexander Mitrofanov
* IntaRNA/PredictorMfe2d* :
* IntaRNA/PredictorMfeEns2d* :
* fillHybridE*(), fillHybridZ*(), predict(), parallelExtension()
* IntaRNA/HelixHandlerNoBulgeMax : fillHelix(), fillHelixSeed()
* IntaRNA/SeedHandler : isFeasibleSeedBasePair()
* remove accessibility checks already covered by areComplementary()
* tests/SeedHandlerNoBulge_test.cpp :
+ regression test for accessibility call counts
260919 Alexander Mitrofanov
* configure.ac / m4 / .github/workflows/build.yml :
* C++23 requirement, library checks and GCC 14 / Apple Clang builds
* IntaRNA.pc.in :
* fix installed include and library flags
* IntaRNA/AccessibilityVrna / InteractionEnergyVrna :
* C++ string constraints, avoid sequence copies and ensure cleanup on errors
* bin/IntaRNA :
* automatic cleanup of accessibility, energy, output and predictor objects
* IntaRNA/OutputHandlerCsv / OutputHandlerEnsemble / OutputHandlerText :
* use stream views to avoid temporary string copies
* IntaRNA/PredictorMfeEns :
* updateZ() : single lookup for partition insertion and accumulation
* IntaRNA/RnaSequence :
* use string::contains() for alphabet and ambiguity checks
* tests :
+ exhaustive interaction and seed oracles for short-sequence tests
+ ViennaRNA constraint and repeated partition update tests
* update Catch to 2.13.10
260919 Alexander Mitrofanov
* IntaRNA/PredictorMfe2dHeuristic :
* IntaRNA/PredictorMfe2dHeuristicSeed :
* fillHybridE() : BUGFIX : reset best energy for each cell
* IntaRNA/PredictorMfeEns2dHeuristic :
* fillHybridZ() :
* BUGFIX : reset best energy for each cell
* BUGFIX : noLP double counting and missing stacked/bulged extensions
* IntaRNA/PredictorMfeEns :
* updateZ() : BUGFIX : apply noGUend and maxED filters
* IntaRNA/PredictorMfeEns2dSeedExtension :
* IntaRNA/PredictorMfeEns2dHeuristicSeedExtension :
* predict() : BUGFIX : clear partition functions when no seed is found
* IntaRNA/PredictorMfeEns2dSeedExtension :
* fillHybridZ_left() : BUGFIX : multiply stacked partition factors
* bin/CommandLineParsing :
* parse() : reject Zall/Eall-dependent output in window mode
* getTargetAccessibility() : BUGFIX : use target-specific length limits
* getQueryRanges(), getTargetRanges() : BUGFIX : outMinPu without seeds
* IntaRNA/Accessibility :
* decomposeByMaxED() : BUGFIX : exclude forbidden positions and fix range length
* IntaRNA/InteractionEnergyBasePair :
* computeES() : BUGFIX : exclude empty structure
* IntaRNA/NussinovHandler :
* getQb() : BUGFIX : zero weight for out-of-range paired intervals
* IntaRNA/InteractionEnergyVrna :
* computeES() : BUGFIX : heed maximal base pair span
* computeES(), computeIntraEall() : BUGFIX : free ViennaRNA data on exit
* IntaRNA/Interaction :
* operator=() : BUGFIX : handle self-assignment
* operator==() : BUGFIX : handle missing seeds
* Seed::operator<() : BUGFIX : compare all seed boundaries on energy ties
* IntaRNA/OutputHandlerHub :
* add() : BUGFIX : fix output forwarding signature
* reported() : BUGFIX : report maximal child count
* IntaRNA/OutputHandlerInteractionList :
* add() : BUGFIX : handle zero storage capacity
+ tests : API and CLI regressions
+ doc/refactor/1-current-state.md : architecture and correctness audit
260919 Alexander Mitrofanov
* IntaRNA/PredictorMfeEns2d :
* fillHybridZ() : stream complete boundary partitions
* IntaRNA/PredictorMfeEns :
+ updateCompleteZ() : preserve virtual updateZ() dispatch and restore mode on exit
* updateZ() : consume complete partitions directly when no tracker is present
(trackers, seeded and heuristic predictions retain buffered updates)
+ updateZisComplete : scoped mode flag; changed object layout requires C++ rebuild
+ addPartitionContribution() : shared filtering, conversion and Zall update
* tests/PredictorMfeEnsRegression_test.cpp : streaming and buffered equivalence,
trackers, overlap modes, virtual hook and exception recovery
250219 Martin Raden
* python/CopomuS.py
* python/copomus/IntaRNA.py
* bugfix version checking (old string comparison fails for "3.12" < "3.7")
250214 Martin Raden
+ conda-build-env.yml : environment to build IntaRNA
* new github build workflow
250213 Martin Raden
* R/IntaRNA_plotRegions.R
* fix deprecation warning when using element_lines() with ggplot >= 3.4.0
################################################################################
### version 3.4.1
################################################################################
# IntaRNA
- BUGFIX : seed order check was buggy
- BUGFIX : explizit seed : wrong direction of query base pair parsing (thanks to Tim15-tech)
################################################################################
################################################################################
240918 Martin Raden
* IntaRNA/SeedHandlerExplicit :
* SeedData() :
+ BUGFIX : reversal of dotBar2 was missing
240430 Martin Raden
* IntaRNA/PredictorMfeEns :
* updateZ()
* BUGFIX : no handling of partial Z including ED values (so far not used)
240429 Martin Raden
* IntaRNA/Interaction
* Seed::operator"<"
* BUGFIX: less-than check fixed
+ operator<<(Boundary)
+ BasePair (explicit class definition)
* IntaRNA/PredictorMfe :
* updateOptima() :
+ no interaction update if "n==0"
* IntaRNA/SeedHandler :
* addSeeds()
* BUGFIX : if internal seed base pairs were not found seed was still added
################################################################################
### version 3.4.0
################################################################################
# IntaRNA
- new arguments t|qPfScale for sequence-specific ViennaRNA pf_scale parameter used
to scale partition functions for ED value computation to avoid overflows
- BUGFIX : when using sequence subset selection in combination with precomputed
accessibilities from file, wrong accessibilities were loaded for the selected
sequences
- BUGFIX : seed-extension-based predictions (default prediction mode) were not
heeding accessibility constraints
- BUGFIX : query accessibility constraints were applied in reversed indexing
################################################################################
################################################################################
240124 Martin Raden
* IntaRNA/AccessibilityConstraint() :
* AccessibilityConstraint() :
* BUGFIX: reversed index ranges were not stored
* PredictorMfe2dHeuristicSeedExtension :
* PredictorMfe2dSeedExtension :
* PredictorMfe2dSeedExtensionRIblast :
* PredictorMfeEns2sSeedExtension:
* BUGFIX: missing isAccessible() checks added
231201 Martin Raden
* IntaRNA/RNASequence :
+ seqNumber : index of this sequence among its input sequence set.
relevant for accessibility loading from file
* bin/CommandLineParsing :
* getFullFilename() : uses RNASequence::seqNumber instead of index within sequence
vector. this enables the correct loading of respective accessibility files in
case only a subset of the sequences is used for prediction (--tSet or --qSet)
230201 Martin Raden
* IntaRNA/AccessibilityVrna :
* constructor() :
* fillByRNAplfold()
+ pfScale parameter
* bin/CommandLineParsing :
+ t|qPfScale : sequence-specific parameters for explicit pf_scale setup for
accessibility computation of long sequences
* IntaRNA/VrnaHandler :
* getModel()
+ explicit pfScale parameter for rescaling of VRNA exp_params if pfScale >= 1.0
+ getPfScaleDefault() : provides default value from Vienna package
* README.md :
+ docu of Q overflow and pfScale usage
################################################################################
### version 3.3.2
################################################################################
# IntaRNA
- compilation fix: correcting shared variables for parallelization
- BUGFIX debug check
- BUGFIX IntaRNAhelix traceback of helices where seed is not at right end
################################################################################
################################################################################
220913 Martin Raden
* IntaRNA/HelixHandlerNoBulgeMax:
* traceBackHelixSeed() : bugfix: tracing of helices with seed-trailing bps
220505 Martin Raden
* bin/IntaRNA :
* compilation fix: removing queryNumber from shared variables, since constant
* IntaRNA/PredictorMfe2d:
* predict() : bugfix: debug check was calling wrong function
################################################################################
### version 3.3.1
################################################################################
# IntaRNA
- BUGFIX: empty lines with white spaces within FASTA input were causing parsing
errors
################################################################################
################################################################################
220328 Martin Raden
* bin/CommandLineParsing :
* parseSequencesFasta() :
* BUGFIX: missing handling of empty lines with white spaces only within
FASTA input (were causing parsing errors)
################################################################################
### version 3.3.0
################################################################################
# IntaRNA
- `--outPairwise` enables pairwise sequence processing instead of all-vs-all
- input range for `--q|tIdxPos0` is now +-2,000,000,000 (was +-9,999,999) to
enable genomic position settings
################################################################################
################################################################################
220215 Martin Raden
* bin/CommandLineParsing :
+ outPairwise : switch to trigger pairwise vs. all-vs-all sequence processing
+ getQueryNumberForTarget() : target-specific query sequence number
+ getQueryIndexForTarget() : index getter for target-specific query sequences
* bin/IntaRNA :
* query iteration now based on target-specific sequence number to enable
pairwise sequence processing
220214 Martin Raden
* bin/CommandLineParsing :
* idxpos0 range now +-2,000,000,000 (was +-9,999,999) for genomic positions
################################################################################
### version 3.2.2
################################################################################
# IntaRNA
- BUGFIX: maximal interaction length correction for precomputed accessibility
data was one to large (wrong dangling end computation for maximally long RRIs)
(thanks to Sabine Reisser)
- BUGFIX: explicit seed encodings within last 7 nucleotides (seedBP) were
ignored (thanks to Sebastian Holler)
- BUGFIX: outNoLP option was not correctly implemented (missing recursion cases)
and was thus missing interactions
- BUGFIX: osx: configure adaptation to old grep version in osx
################################################################################
################################################################################
220110 Martin Raden
* configure.ac :
* rewrite of grep personality call to be compatible with old grep version on osx
201204 Simon Bray (thanks!) :
* replace travis with github action
210211 Martin Raden
* IntaRNA/SeedConstraint :
* constructor: bp>2 check only if no explicit seed present
* IntaRNA/SeedHandlerExplicit :
- getSeedMaxBP() : obsolete, replaced by getSeedMinBP()
+ getSeedMinBP() : minimal number of bps within encoded seeds; used for seed
constraint initialization
* traceBackSeed() :
* bugfix: check for minimal seed length sufficient on one side
* bin/CommandLineParsing :
* seedBP now set to getSeedMinBP() if explicit seeds present
* bin/IntaRNA :
* exception information now motivates to send input along with report
+ docs/recursions : recursion depictions for sanity checks of implementations
+ PredictorMfe2d (+outNoLP)
+ PredictorMfe2dSeed (+outNoLP)
* IntaRNA/PredictorMfe2dSeed :
* IntaRNA/PredictorMfe2dHeuristic :
* IntaRNA/PredictorMfe2dHeuristicSeed :
* IntaRNA/PredictorMfeEns2dHeuristic :
* bugfix outNoLP : missing recursion cases
* IntaRNA/AccessibilityFromStream :
* bugfix read from stream
* test updated
201210 Martin Raden
* IntaRNA/AccessibilityFromStream :
* bugfix: max length == 1 smaller than max-accessibility-data-length due to
dangling-end treatment (thanks to Sabine Reisser)
################################################################################
### version 3.2.1
################################################################################
# IntaRNA
- support for multi-seq input when `seedQ|TRange` given
- BUGFIX: Andronescu07 energy parameter set was not loaded by name without file
- BUGFIX: 'outMinPu' was not fully implemented
- BUILDFIX: non-global import of boost::bind
# CopomuS :
- exit value 0 if no favorable interaction was found
################################################################################
201127 Martin Raden
* bin/CommandLineParsing :
* changing import and usage of boost::bind and boost::placeholders namespace
(thanks to Behra Phani Rama Krishna)
* R/IntaRNA_plotRegions.R :
* replace deprecated expand_scale() with expansion()
200615 Martin Raden
* IntaRNA/OutputConstraint :
+ maxED : maximal ED penalty of each interacting subsequence
* bin/CommandLineParsing :
* getOutputConstraint() :
+ energy argument to setup OutputConstraint constructor call
* IntaRNA/Predictor :
* updateZall() :
+ check for OutputConstraint.maxED
* IntaRNA/PredictorMfe :
* updateOptima() :
+ check for OutputConstraint.maxED
* IntaRNA/PredictorMfe* :
* obsolete OutputConstraint variable removed
200602 Martin Raden
* bin/CommandLineParsing :
+ sequence error information now with sequence ID rather than number
200602 Martin Raden
* bin/CommandLineParsing :
+ explicit seedQ|TRange check for each sequence (support for multi-seq input)
200429 Martin Raden
* python/copomus/candidate_selectors.py :
* bugfix: sys.exit(0) if not favorable interaction was found
200312 Martin Raden
* bin/CommandLineParsing :
* validate_energyFile() :
+ bugfix: missing check for predefined Andronescu07 data set name
################################################################################
### version 3.2.0
################################################################################
# IntaRNA
- BUGFIX: accessibility blocking constraints were only applied to seed location
- improved Zall estimate (and depending values) for `--model=X` (default)
- new arguments:
- `qId|tId` : optional id (FASTA prefix) setup for sequence naming
- `acc|accW|accL` : meta accessibility setup for both query and target
- `intLenMax|intLoopMax` : meta interaction and interior loop length setup
# CopomuS
- Compensatory mutation selector to support interaction validation experiments
################################################################################
200302 Martin Raden
* IntaRNA/IndexRange :
* fromString() :
* bugfix: + missing parsing of negative indices
* IntaRNA/InteractionEnergy :
* areComplementary() :
+ check if both positions are accessible (to avoid additional checks in
predictor recursions)
* bin/IntaRNA :
* ambiguous nt warning now in verbose log (was info log)
200217 Martin Raden
* bin/CommandLineParsing :
* NumericParameter :
* CharParameter :
+ isSet() : checks if value and default differ
+ qId|tId : id (prefix) for sequence naming
+ acc|accW|accL : meta for q|t*
+ intLenMax|intLoopMax : meta for q|t*
* resetParamDefault() :
+ overwrite value (since set to default in constructor)
+ validate_region|shape|shapeMethod|shapeConversion : generic checks for q|t
+ validate_seedRange : generic checks for q|t
+ validate_numberArgumentExcludeRange() : generic check excluding a range
+ validate_id() : checks for line breaks in q|tId
* parseSequences() :
* parseSequencesFasta() :
+ idPrefix handling
- obsolete functions
- validate_query|target
- validate_qAccW|L|Constr
- validate_q|tRegion|Shape|ShapeMethod|ShapeConversion
- validate_seedQ|TRange
* constructor() :
+ extended default reset for new arguments
* q|tAcc* arguments now hidden
* validation calls refactored
+ model|acc|intLenMax|intLoopMax now general arguments
* parse() :
+ additional checks for meta arguments with setup of q|t variables
+ usage of .isSet() where appropriate
+ check that outSep is not within id prefix in outMode=C
+ ensure intLenMax >= seedBP
200207 Martin Raden + Fabio Gutmann
+ python/CopomuS.py : Compensatory mutation selector to support interaction
validation experiments
+ python/copomus/* : utility functions of CopomuS
* python/README.md : links to dedicated README.md of subfolders
200131 Martin Raden
* IntaRNA/PredictorMfe2dHeuristicSeedExtension :
* fillHybridE_left() :
+ extended Zall update (additional save cases considered)
################################################################################
### version 3.1.5
################################################################################
# IntaRNA :
- bugfix traceback of interactions with seed on right-boundary
- bugfix traceback of seeds with bulges when outNoLP present
################################################################################
200131 Martin Raden
* IntaRNA/PredictorMfe*SeedExtension* :
* undo bugfix
* traceback() :
+ additional check if seed exceeds right interaction boundary
* IntaRNA/SeedHandler :
* isFeasibleSeedBasePair() :
* debug checks obsolete since part of the check
* updateToNextSeed() :
* bugfix : right boundary was exclusive (but has to be inclusive)
* IntaRNA/SeedHandlerMfe :
* getSeedE()
* setSeedE()
* traceBackSeed()
* now using global indices (offset shift done internally)
* fillSeed() :
+ additional feasibility test for noLP
* traceback() :
* bugfix noLP energy trace : energy was from wrong cells
* trace small to large gaps (should be faster)
* test/SeedHandlerMfe :
+ traceback tests (number of bps in traced seeds)
################################################################################
### version 3.1.4
################################################################################
# IntaRNA
- bugfix generation and tracing of seeds with bulges and no GU ends
- bugfix seed-extension prediction for seeds with bulges
- noLP for seeds with bulges enabled
# R
- `IntaRNA_CSV_p-value.R` script to estimate p-values based on energy values
- `IntaRNA_plotRegions.R` = renaming of former `plotRegions.R`
################################################################################
200130 Martin Raden
* IntaRNA/SeedHandlerMfe :
* bugfix generation and tracing of seeds with bulges and no GU ends
* IntaRNA/PredictorMfe*SeedExtension* :
* bugfix enumeration of seeds with bulges
* bin/CommandLineParseing :
* error msgs rephrased
+ noLP for seeds with bulges enabled
+ setup noLP for seed constraints via outNoLP
* IntaRNA/SeedConstraint :
+ isLpAllowed : whether or not lps are allowed in seeds
* IntaRNA/SeedHandlerMfe :
+ support for noLP constraint
* test/SeedHandlerMfe :
+ test with lp
+ test no lp (boundary)
+ test no lp (internal)
* test/*
* adaptation to SeedConstraint constructor changes
200121 Martin Raden
+ R/IntaRNA_CSV_p-value.R : former addPvalues2csv.R
+ R/IntaRNA_plotRegions.R : former plotRegions.R
- R/addPvalues2csv.R : renamed
- R/plotRegions.R : renamed
* README.md : adapted to renamings
+ R/Makefile.am : install R scripts
191115 Martin Raden
+ R/addPvalues2csv.R
* R/README.md :
+ docu of addPvalue2csv.R
################################################################################
### version 3.1.3
################################################################################
# IntaRNA
- bugfix latest changes on traceback
################################################################################
191104 Martin Raden
* PredictorMfe2dSeedExtension::
* traceBack()
* bugfix tracback (reset of k2 iteration)
191031 Martin Raden
* using c++11 raw strings where appropriate
################################################################################
### version 3.1.2
################################################################################
# IntaRNA
- `--outSep` = user-defined column separator for tabular CSV output
- bugfix non-overlapping suboptimal enumeration
- bugfix noLP optimization (missing case of direct left-stack extension)
- CSV output
- new ensemble energy and partition function output for intra-molecular
structures formed by seq1 and seq2 (`Eall1, Eall2, Zall1, Zall2`)
- new total energy output `Etotal` = (E+Eall1+Eall2) and
`EallTotal` = (Eall+Eall1+Eall2)
- new `RT` output
- new `bpList` output
# auxiliary R scripts
- plotRegions.py - visualization of sequence regions covered by IntaRNA
predictions, similar to the IntaRNA webserver output (thanks to @dgelsin)
################################################################################
191030 Martin Raden
* IntaRNA/OutputHandlerCsv :
+ RT
* string2list() :
+ support of '*' encoding to generate full list
* bin/CommandLineParsing :
+ docu and implementation of '*' outCsvCol behaviour
* IntaRNA/InteractionEnergyBasePair :
+ computeIntraEall() : computes Eall1|2 via NussinovHandler
* getEall1|2() : call computeIntraEall if needed
* README.md
+ RT CSV col
191029 Martin Raden
* IntaRNA/PredictorMfe :
* getNextBest() :
* bugfix: energy check was applying duplicated ED values
(thanks to Jens Georg)
* IntaRNA/PredictorMfe2dSeedExtension :
* IntaRNA/PredictorMfe2dHeuristicSeedExtension :
* IntaRNA/PredictorMfeEns2dSeedExtension :
* fillHybrid*_left() :
* traceBack() :
* bugfix: missing case in noLP mode (direct left-stack extension)
* IntaRNA/AccessibilityVrna :
+ addConstraints() : dedicated function to add constraint to VrnaFoldCompound
* fillByRNAplfold() : using addConstraints()
* IntaRNA/InteractionEnergy :
+ getBoltzmannWeight( Z_type ) : conversion from kcal/mol-based energies
+ getEall1|2() : ensemble energy for seq1|2
* IntaRNA/InteractionEnergyBasePair :
+ getEall1|2() : NOT IMPLEMENTED YET
* IntaRNA/InteractionEnergyIdxOffset :
+ getEall1|2() : forward to wrapped energy handler
* IntaRNA/InteractionEnergyVrna :
+ Eall1|2 : ensemble energies for seq1|2
+ getEall1|2() : lazy computation of Eall1|2 using computeIntraEall()
+ computeIntraEall() : Eall* computation via vrna_pf() using the respective
accessibility constraints
* IntaRNA/OutputHandlerEnsemble :
- no output of Zall
+ output of RT, Eall1, Eall2, EallTotal
* IntaRNA/OutputHandlerCsv :
+ Eall1, Eall2, EallTotal, Etotal, Zall1, Zall2
* README.md :
+ docu of new CSV columns (Eall1, Eall2, Zall1, Zall2, Etotal, EallTotal)