Skip to content

Extract intervals_chain, intervals_tuple, intervals_distribution modules#104

Open
Maximus2012 wants to merge 2 commits intomainfrom
intervals-chain
Open

Extract intervals_chain, intervals_tuple, intervals_distribution modules#104
Maximus2012 wants to merge 2 commits intomainfrom
intervals-chain

Conversation

@Maximus2012
Copy link
Copy Markdown
Contributor

Summary

Phase 1.1: Decompose foapy.intervals into dedicated modules.

Changes

  • _intervals_chain.py – core chain-building logic
  • _intervals_tuple.py – unchaining strategies (lossy, normal, cycle, redundant)
  • _intervals_distribution.py – histogram of interval lengths from a tuple
  • _intervals.py – updated to delegate to the new modules
  • core/__init__.py – exports for all new modules

Related Issues

Closes #83
Closes #84
Closes #85

@coveralls
Copy link
Copy Markdown

Pull Request Test Coverage Report for Build 23052076641

Details

  • 54 of 61 (88.52%) changed or added relevant lines in 6 files are covered.
  • No unchanged relevant lines lost coverage.
  • Overall coverage decreased (-1.1%) to 92.793%

Changes Missing Coverage Covered Lines Changed/Added Lines %
src/foapy/core/_intervals_distribution.py 4 11 36.36%
Totals Coverage Status
Change from base Build 17007836198: -1.1%
Covered Lines: 412
Relevant Lines: 444

💛 - Coveralls

@github-actions
Copy link
Copy Markdown

Change Before [58bd76e] <0.0.22> After [4e60273] Ratio Benchmark (Parameter)
- 17.2±0.1μs 15.4±0.03μs 0.9 bench_alphabet.AlphabetSuite.time_alphabet(500, 'DNA')
- 17.5±0.09μs 15.4±0.1μs 0.88 bench_alphabet.AlphabetSuite.time_alphabet(500, 'Normal')
- 19.8±0.1μs 15.7±0.1μs 0.79 bench_alphabet.AlphabetSuite.time_alphabet(500, 'Worst')
- 28.8±0.2μs 24.6±0.06μs 0.85 bench_alphabet.AlphabetSuite.time_alphabet(5000, 'Best')
- 156±1μs 119±0.4μs 0.76 bench_alphabet.AlphabetSuite.time_alphabet(5000, 'DNA')
- 264±0.4μs 127±1μs 0.48 bench_alphabet.AlphabetSuite.time_alphabet(5000, 'Normal')
- 345±0.8μs 136±2μs 0.4 bench_alphabet.AlphabetSuite.time_alphabet(5000, 'Worst')
- 4.69±0.1ms 4.22±0.05ms 0.9 bench_alphabet.AlphabetSuite.time_alphabet(500000, 'Best')
- 12.3±0.05μs 11.1±0.01μs 0.9 bench_intervals.IntervalsSuite.time_intervals(5, 'Best', 2, 1)
- 12.3±0.2μs 11.1±0.02μs 0.9 bench_intervals.IntervalsSuite.time_intervals(5, 'Normal', 2, 1)
- 11.3±0.2μs 10.3±0.04μs 0.91 bench_intervals.IntervalsSuite.time_intervals(5, 'Normal', 2, 3)
- 11.4±0.02μs 10.3±0.2μs 0.9 bench_intervals.IntervalsSuite.time_intervals(5, 'Worst', 1, 1)
- 12.1±0.06μs 11.0±0.03μs 0.91 bench_intervals.IntervalsSuite.time_intervals(50, 'Best', 1, 1)
- 11.1±0.09μs 10.1±0.01μs 0.91 bench_intervals.IntervalsSuite.time_intervals(50, 'Best', 1, 3)
- 12.6±0.1μs 11.5±0.04μs 0.91 bench_intervals.IntervalsSuite.time_intervals(50, 'Best', 2, 1)
- 11.7±0.04μs 10.7±0.06μs 0.91 bench_intervals.IntervalsSuite.time_intervals(50, 'Best', 2, 3)
- 12.1±0.05μs 11.0±0.07μs 0.91 bench_intervals.IntervalsSuite.time_intervals(50, 'DNA', 1, 3)
- 13.7±0.06μs 12.4±0.03μs 0.91 bench_intervals.IntervalsSuite.time_intervals(50, 'DNA', 2, 1)
- 12.9±0.06μs 11.7±0.02μs 0.91 bench_intervals.IntervalsSuite.time_intervals(50, 'Normal', 1, 1)
- 11.9±0.03μs 10.7±0.02μs 0.9 bench_intervals.IntervalsSuite.time_intervals(50, 'Normal', 1, 3)
- 12.5±0.05μs 11.3±0.05μs 0.9 bench_intervals.IntervalsSuite.time_intervals(50, 'Normal', 2, 3)
- 12.5±0.1μs 11.3±0.03μs 0.9 bench_intervals.IntervalsSuite.time_intervals(50, 'Worst', 1, 1)
- 17.4±0.04μs 15.8±0.03μs 0.91 bench_intervals.IntervalsSuite.time_intervals(500, 'Best', 2, 1)
- 22.6±0.1μs 20.5±0.1μs 0.91 bench_intervals.IntervalsSuite.time_intervals(500, 'DNA', 1, 2)
- 24.9±0.07μs 22.3±0.1μs 0.89 bench_intervals.IntervalsSuite.time_intervals(500, 'DNA', 2, 3)
- 27.3±0.2μs 24.1±0.2μs 0.88 bench_intervals.IntervalsSuite.time_intervals(500, 'Normal', 1, 1)
- 24.1±0.3μs 20.7±0.3μs 0.86 bench_intervals.IntervalsSuite.time_intervals(500, 'Normal', 1, 2)
- 25.5±0.2μs 22.4±0.1μs 0.88 bench_intervals.IntervalsSuite.time_intervals(500, 'Normal', 1, 3)
- 27.9±0.2μs 24.8±0.1μs 0.89 bench_intervals.IntervalsSuite.time_intervals(500, 'Normal', 2, 1)
- 24.0±0.2μs 21.3±0.2μs 0.89 bench_intervals.IntervalsSuite.time_intervals(500, 'Normal', 2, 2)
- 26.1±0.2μs 23.1±0.07μs 0.88 bench_intervals.IntervalsSuite.time_intervals(500, 'Normal', 2, 3)
- 27.0±0.2μs 22.3±0.3μs 0.83 bench_intervals.IntervalsSuite.time_intervals(500, 'Worst', 1, 1)
- 24.9±0.1μs 20.5±0.3μs 0.82 bench_intervals.IntervalsSuite.time_intervals(500, 'Worst', 1, 2)
- 26.1±0.3μs 21.8±0.1μs 0.84 bench_intervals.IntervalsSuite.time_intervals(500, 'Worst', 1, 3)
- 27.7±0.6μs 22.8±0.3μs 0.82 bench_intervals.IntervalsSuite.time_intervals(500, 'Worst', 2, 1)
- 25.4±0.2μs 21.2±0.3μs 0.83 bench_intervals.IntervalsSuite.time_intervals(500, 'Worst', 2, 2)
- 26.9±0.2μs 22.5±0.1μs 0.84 bench_intervals.IntervalsSuite.time_intervals(500, 'Worst', 2, 3)
- 191±4μs 146±0.8μs 0.77 bench_intervals.IntervalsSuite.time_intervals(5000, 'DNA', 1, 1)
- 175±2μs 138±0.8μs 0.79 bench_intervals.IntervalsSuite.time_intervals(5000, 'DNA', 1, 2)
- 180±0.8μs 141±1μs 0.78 bench_intervals.IntervalsSuite.time_intervals(5000, 'DNA', 1, 3)
- 189±1μs 150±1μs 0.79 bench_intervals.IntervalsSuite.time_intervals(5000, 'DNA', 2, 1)
- 177±3μs 142±1μs 0.81 bench_intervals.IntervalsSuite.time_intervals(5000, 'DNA', 2, 2)
- 184±4μs 145±1μs 0.79 bench_intervals.IntervalsSuite.time_intervals(5000, 'DNA', 2, 3)
- 321±2μs 189±2μs 0.59 bench_intervals.IntervalsSuite.time_intervals(5000, 'Normal', 1, 1)
- 289±0.9μs 152±0.9μs 0.52 bench_intervals.IntervalsSuite.time_intervals(5000, 'Normal', 1, 2)
- 300±0.3μs 167±1μs 0.56 bench_intervals.IntervalsSuite.time_intervals(5000, 'Normal', 1, 3)
- 306±0.8μs 274±4μs 0.89 bench_intervals.IntervalsSuite.time_intervals(5000, 'Normal', 1, 4)
- 323±2μs 192±3μs 0.59 bench_intervals.IntervalsSuite.time_intervals(5000, 'Normal', 2, 1)
- 295±3μs 156±1μs 0.53 bench_intervals.IntervalsSuite.time_intervals(5000, 'Normal', 2, 2)
- 302±0.7μs 168±2μs 0.56 bench_intervals.IntervalsSuite.time_intervals(5000, 'Normal', 2, 3)
- 307±1μs 276±2μs 0.9 bench_intervals.IntervalsSuite.time_intervals(5000, 'Normal', 2, 4)
- 364±1μs 156±0.9μs 0.43 bench_intervals.IntervalsSuite.time_intervals(5000, 'Worst', 1, 1)
- 357±1μs 150±1μs 0.42 bench_intervals.IntervalsSuite.time_intervals(5000, 'Worst', 1, 2)
- 363±1μs 155±1μs 0.43 bench_intervals.IntervalsSuite.time_intervals(5000, 'Worst', 1, 3)
- 369±0.9μs 276±3μs 0.75 bench_intervals.IntervalsSuite.time_intervals(5000, 'Worst', 1, 4)
- 367±0.8μs 159±1μs 0.43 bench_intervals.IntervalsSuite.time_intervals(5000, 'Worst', 2, 1)
- 361±2μs 153±1μs 0.42 bench_intervals.IntervalsSuite.time_intervals(5000, 'Worst', 2, 2)
- 365±2μs 166±6μs 0.46 bench_intervals.IntervalsSuite.time_intervals(5000, 'Worst', 2, 3)
- 373±3μs 291±2μs 0.78 bench_intervals.IntervalsSuite.time_intervals(5000, 'Worst', 2, 4)
- 11.6±0.2ms 9.97±0.5ms 0.86 bench_intervals.IntervalsSuite.time_intervals(500000, 'Best', 1, 1)
- 10.6±0.4ms 9.27±0.09ms 0.88 bench_intervals.IntervalsSuite.time_intervals(500000, 'Best', 1, 2)
- 10.8±0.5ms 9.44±0.1ms 0.87 bench_intervals.IntervalsSuite.time_intervals(500000, 'Best', 1, 3)
- 11.9±0.09ms 10.2±0.4ms 0.86 bench_intervals.IntervalsSuite.time_intervals(500000, 'Best', 2, 1)
- 10.7±0.3ms 9.55±0.1ms 0.89 bench_intervals.IntervalsSuite.time_intervals(500000, 'Best', 2, 3)
- 49.4±0.1μs 38.1±0.09μs 0.77 bench_ma_alphabet.MaAlphabetSuite.time_alphabet(5, 'Best')
- 64.2±2μs 44.4±0.5μs 0.69 bench_ma_alphabet.MaAlphabetSuite.time_alphabet(5, 'DNA')
- 50.1±2μs 37.4±1μs 0.75 bench_ma_alphabet.MaAlphabetSuite.time_alphabet(5, 'Normal')
- 52.7±0.6μs 40.0±0.6μs 0.76 bench_ma_alphabet.MaAlphabetSuite.time_alphabet(5, 'Worst')
- 50.7±0.7μs 38.2±0.08μs 0.75 bench_ma_alphabet.MaAlphabetSuite.time_alphabet(50, 'Best')
- 65.9±1μs 46.2±0.6μs 0.7 bench_ma_alphabet.MaAlphabetSuite.time_alphabet(50, 'DNA')
- 54.5±0.5μs 41.4±0.1μs 0.76 bench_ma_alphabet.MaAlphabetSuite.time_alphabet(50, 'Normal')
- 54.7±0.4μs 41.9±0.5μs 0.77 bench_ma_alphabet.MaAlphabetSuite.time_alphabet(50, 'Worst')
- 55.3±0.2μs 41.7±0.1μs 0.75 bench_ma_alphabet.MaAlphabetSuite.time_alphabet(500, 'Best')
- 80.0±0.6μs 56.5±1μs 0.71 bench_ma_alphabet.MaAlphabetSuite.time_alphabet(500, 'DNA')
- 74.1±0.7μs 56.6±0.2μs 0.76 bench_ma_alphabet.MaAlphabetSuite.time_alphabet(500, 'Normal')
- 75.9±0.2μs 58.7±0.4μs 0.77 bench_ma_alphabet.MaAlphabetSuite.time_alphabet(500, 'Worst')
- 92.9±0.5μs 71.6±0.2μs 0.77 bench_ma_alphabet.MaAlphabetSuite.time_alphabet(5000, 'Best')
- 390±4μs 237±10μs 0.61 bench_ma_alphabet.MaAlphabetSuite.time_alphabet(5000, 'Normal')
- 427±3μs 291±20μs 0.68 bench_ma_alphabet.MaAlphabetSuite.time_alphabet(5000, 'Worst')
- 134±0.4μs 97.3±2μs 0.73 bench_ma_intervals.MaIntervalsSuite.time_intervals(5, 'Best', 1, 1)
- 134±0.8μs 94.8±2μs 0.71 bench_ma_intervals.MaIntervalsSuite.time_intervals(5, 'Best', 1, 2)
- 134±0.8μs 92.4±0.5μs 0.69 bench_ma_intervals.MaIntervalsSuite.time_intervals(5, 'Best', 1, 3)
- 134±1μs 93.2±1μs 0.69 bench_ma_intervals.MaIntervalsSuite.time_intervals(5, 'Best', 1, 4)
- 149±0.9μs 103±0.6μs 0.7 bench_ma_intervals.MaIntervalsSuite.time_intervals(5, 'Best', 2, 1)
- 146±0.9μs 102±0.7μs 0.7 bench_ma_intervals.MaIntervalsSuite.time_intervals(5, 'Best', 2, 2)
- 151±2μs 103±0.5μs 0.68 bench_ma_intervals.MaIntervalsSuite.time_intervals(5, 'Best', 2, 3)
- 150±4μs 102±0.8μs 0.68 bench_ma_intervals.MaIntervalsSuite.time_intervals(5, 'Best', 2, 4)
- 136±2μs 95.6±2μs 0.7 bench_ma_intervals.MaIntervalsSuite.time_intervals(5, 'DNA', 1, 1)
- 136±2μs 93.7±1μs 0.69 bench_ma_intervals.MaIntervalsSuite.time_intervals(5, 'DNA', 1, 2)
- 136±0.6μs 93.5±2μs 0.69 bench_ma_intervals.MaIntervalsSuite.time_intervals(5, 'DNA', 1, 3)
- 134±2μs 93.0±2μs 0.7 bench_ma_intervals.MaIntervalsSuite.time_intervals(5, 'DNA', 1, 4)
- 148±2μs 105±1μs 0.71 bench_ma_intervals.MaIntervalsSuite.time_intervals(5, 'DNA', 2, 2)
- 152±1μs 104±1μs 0.69 bench_ma_intervals.MaIntervalsSuite.time_intervals(5, 'DNA', 2, 3)
- 136±2μs 97.7±3μs 0.72 bench_ma_intervals.MaIntervalsSuite.time_intervals(5, 'Worst', 1, 1)
- 136±3μs 94.5±4μs 0.7 bench_ma_intervals.MaIntervalsSuite.time_intervals(5, 'Worst', 1, 2)
- 136±2μs 95.6±2μs 0.71 bench_ma_intervals.MaIntervalsSuite.time_intervals(5, 'Worst', 1, 3)
- 136±1μs 93.1±1μs 0.68 bench_ma_intervals.MaIntervalsSuite.time_intervals(5, 'Worst', 1, 4)
- 152±2μs 110±1μs 0.72 bench_ma_intervals.MaIntervalsSuite.time_intervals(5, 'Worst', 2, 1)
- 141±3μs 94.8±0.4μs 0.67 bench_ma_intervals.MaIntervalsSuite.time_intervals(50, 'Best', 1, 1)
- 134±0.2μs 96.0±3μs 0.71 bench_ma_intervals.MaIntervalsSuite.time_intervals(50, 'Best', 1, 2)
- 133±2μs 92.8±0.4μs 0.7 bench_ma_intervals.MaIntervalsSuite.time_intervals(50, 'Best', 1, 3)
- 133±0.3μs 93.7±1μs 0.71 bench_ma_intervals.MaIntervalsSuite.time_intervals(50, 'Best', 1, 4)
- 150±0.5μs 104±0.3μs 0.7 bench_ma_intervals.MaIntervalsSuite.time_intervals(50, 'Best', 2, 1)
- 148±0.3μs 103±2μs 0.7 bench_ma_intervals.MaIntervalsSuite.time_intervals(50, 'Best', 2, 2)
- 150±0.4μs 103±0.4μs 0.69 bench_ma_intervals.MaIntervalsSuite.time_intervals(50, 'Best', 2, 3)
- 148±0.2μs 102±2μs 0.69 bench_ma_intervals.MaIntervalsSuite.time_intervals(50, 'Best', 2, 4)
- 137±2μs 98.2±2μs 0.72 bench_ma_intervals.MaIntervalsSuite.time_intervals(50, 'DNA', 1, 1)
- 140±0.9μs 95.6±2μs 0.68 bench_ma_intervals.MaIntervalsSuite.time_intervals(50, 'DNA', 1, 2)
- 142±4μs 95.4±0.9μs 0.67 bench_ma_intervals.MaIntervalsSuite.time_intervals(50, 'DNA', 1, 3)
- 138±0.5μs 97.5±2μs 0.71 bench_ma_intervals.MaIntervalsSuite.time_intervals(50, 'DNA', 1, 4)
- 154±1μs 105±2μs 0.68 bench_ma_intervals.MaIntervalsSuite.time_intervals(50, 'DNA', 2, 2)
- 153±0.8μs 106±1μs 0.69 bench_ma_intervals.MaIntervalsSuite.time_intervals(50, 'DNA', 2, 3)
- 156±1μs 105±2μs 0.67 bench_ma_intervals.MaIntervalsSuite.time_intervals(50, 'DNA', 2, 4)
- 147±4μs 104±2μs 0.71 bench_ma_intervals.MaIntervalsSuite.time_intervals(50, 'Normal', 1, 1)
- 143±4μs 102±3μs 0.71 bench_ma_intervals.MaIntervalsSuite.time_intervals(50, 'Normal', 1, 2)
- 145±3μs 103±3μs 0.71 bench_ma_intervals.MaIntervalsSuite.time_intervals(50, 'Normal', 1, 3)
- 145±3μs 103±0.5μs 0.71 bench_ma_intervals.MaIntervalsSuite.time_intervals(50, 'Normal', 1, 4)
- 161±1μs 115±3μs 0.71 bench_ma_intervals.MaIntervalsSuite.time_intervals(50, 'Normal', 2, 1)
- 163±3μs 114±2μs 0.7 bench_ma_intervals.MaIntervalsSuite.time_intervals(50, 'Normal', 2, 2)
- 161±3μs 110±3μs 0.69 bench_ma_intervals.MaIntervalsSuite.time_intervals(50, 'Normal', 2, 3)
- 159±2μs 114±2μs 0.72 bench_ma_intervals.MaIntervalsSuite.time_intervals(50, 'Normal', 2, 4)
- 178±6μs 130±4μs 0.73 bench_ma_intervals.MaIntervalsSuite.time_intervals(50, 'Worst', 1, 1)
- 169±4μs 140±10μs 0.83 bench_ma_intervals.MaIntervalsSuite.time_intervals(50, 'Worst', 1, 2)
- 169±4μs 122±4μs 0.72 bench_ma_intervals.MaIntervalsSuite.time_intervals(50, 'Worst', 1, 3)
- 171±4μs 126±2μs 0.74 bench_ma_intervals.MaIntervalsSuite.time_intervals(50, 'Worst', 1, 4)
- 186±1μs 141±2μs 0.76 bench_ma_intervals.MaIntervalsSuite.time_intervals(50, 'Worst', 2, 2)
- 188±3μs 137±3μs 0.73 bench_ma_intervals.MaIntervalsSuite.time_intervals(50, 'Worst', 2, 3)
- 186±4μs 138±5μs 0.74 bench_ma_intervals.MaIntervalsSuite.time_intervals(50, 'Worst', 2, 4)
- 149±0.7μs 105±0.7μs 0.7 bench_ma_intervals.MaIntervalsSuite.time_intervals(500, 'Best', 1, 1)
- 146±0.5μs 103±0.8μs 0.71 bench_ma_intervals.MaIntervalsSuite.time_intervals(500, 'Best', 1, 2)
- 146±0.7μs 103±0.4μs 0.71 bench_ma_intervals.MaIntervalsSuite.time_intervals(500, 'Best', 1, 3)
- 146±0.7μs 104±0.5μs 0.72 bench_ma_intervals.MaIntervalsSuite.time_intervals(500, 'Best', 1, 4)
- 165±1μs 115±0.7μs 0.7 bench_ma_intervals.MaIntervalsSuite.time_intervals(500, 'Best', 2, 1)
- 164±0.6μs 120±3μs 0.73 bench_ma_intervals.MaIntervalsSuite.time_intervals(500, 'Best', 2, 2)
- 165±2μs 115±0.4μs 0.7 bench_ma_intervals.MaIntervalsSuite.time_intervals(500, 'Best', 2, 3)
- 164±1μs 114±0.3μs 0.7 bench_ma_intervals.MaIntervalsSuite.time_intervals(500, 'Best', 2, 4)
- 155±7μs 110±8μs 0.71 bench_ma_intervals.MaIntervalsSuite.time_intervals(500, 'DNA', 1, 1)
- 156±5μs 110±4μs 0.71 bench_ma_intervals.MaIntervalsSuite.time_intervals(500, 'DNA', 1, 2)
- 150±5μs 119±3μs 0.8 bench_ma_intervals.MaIntervalsSuite.time_intervals(500, 'DNA', 1, 3)
- 151±8μs 110±5μs 0.72 bench_ma_intervals.MaIntervalsSuite.time_intervals(500, 'DNA', 1, 4)
- 172±8μs 124±1μs 0.72 bench_ma_intervals.MaIntervalsSuite.time_intervals(500, 'DNA', 2, 1)
- 176±4μs 116±5μs 0.66 bench_ma_intervals.MaIntervalsSuite.time_intervals(500, 'DNA', 2, 2)
- 175±6μs 121±4μs 0.69 bench_ma_intervals.MaIntervalsSuite.time_intervals(500, 'DNA', 2, 3)
- 172±7μs 125±5μs 0.73 bench_ma_intervals.MaIntervalsSuite.time_intervals(500, 'DNA', 2, 4)
- 392±9μs 342±9μs 0.87 bench_ma_intervals.MaIntervalsSuite.time_intervals(500, 'Normal', 1, 1)
- 406±30μs 333±10μs 0.82 bench_ma_intervals.MaIntervalsSuite.time_intervals(500, 'Normal', 1, 2)
- 411±20μs 360±20μs 0.88 bench_ma_intervals.MaIntervalsSuite.time_intervals(500, 'Normal', 1, 3)
- 385±20μs 321±10μs 0.83 bench_ma_intervals.MaIntervalsSuite.time_intervals(500, 'Normal', 1, 4)
- 423±30μs 349±20μs 0.82 bench_ma_intervals.MaIntervalsSuite.time_intervals(500, 'Normal', 2, 2)
- 425±10μs 358±20μs 0.84 bench_ma_intervals.MaIntervalsSuite.time_intervals(500, 'Normal', 2, 3)
- 926±10μs 794±30μs 0.86 bench_ma_intervals.MaIntervalsSuite.time_intervals(500, 'Worst', 1, 1)
- 913±30μs 796±30μs 0.87 bench_ma_intervals.MaIntervalsSuite.time_intervals(500, 'Worst', 1, 2)
- 935±10μs 822±30μs 0.88 bench_ma_intervals.MaIntervalsSuite.time_intervals(500, 'Worst', 1, 3)
- 1.03±0.03ms 913±30μs 0.88 bench_ma_intervals.MaIntervalsSuite.time_intervals(500, 'Worst', 2, 1)
- 977±10μs 887±50μs 0.91 bench_ma_intervals.MaIntervalsSuite.time_intervals(500, 'Worst', 2, 2)
- 993±40μs 902±30μs 0.91 bench_ma_intervals.MaIntervalsSuite.time_intervals(500, 'Worst', 2, 4)
- 53.6±0.4μs 35.3±0.2μs 0.66 bench_ma_order.MaOrderSuite.time_order(5, 'Best')
- 60.3±2μs 39.4±0.2μs 0.65 bench_ma_order.MaOrderSuite.time_order(5, 'DNA')
- 55.4±1μs 33.0±1μs 0.6 bench_ma_order.MaOrderSuite.time_order(5, 'Normal')
- 61.3±0.5μs 39.4±0.2μs 0.64 bench_ma_order.MaOrderSuite.time_order(5, 'Worst')
- 55.0±0.2μs 35.7±0.1μs 0.65 bench_ma_order.MaOrderSuite.time_order(50, 'Best')
- 64.6±0.5μs 41.5±0.2μs 0.64 bench_ma_order.MaOrderSuite.time_order(50, 'DNA')
- 65.7±0.9μs 41.9±0.2μs 0.64 bench_ma_order.MaOrderSuite.time_order(50, 'Normal')
- 67.2±0.4μs 45.2±0.2μs 0.67 bench_ma_order.MaOrderSuite.time_order(50, 'Worst')
- 61.9±0.4μs 42.2±0.2μs 0.68 bench_ma_order.MaOrderSuite.time_order(500, 'Best')
- 83.8±0.7μs 57.7±0.5μs 0.69 bench_ma_order.MaOrderSuite.time_order(500, 'DNA')
- 140±0.6μs 110±2μs 0.78 bench_ma_order.MaOrderSuite.time_order(500, 'Normal')
- 264±2μs 227±4μs 0.86 bench_ma_order.MaOrderSuite.time_order(500, 'Worst')
- 120±0.3μs 91.8±0.4μs 0.77 bench_ma_order.MaOrderSuite.time_order(5000, 'Best')
- 288±5μs 215±2μs 0.75 bench_ma_order.MaOrderSuite.time_order(5000, 'DNA')
- 10.9±0.4ms 8.82±0.2ms 0.81 bench_ma_order.MaOrderSuite.time_order(5000, 'Normal')
- 39.1±0.3ms 29.4±0.4ms 0.75 bench_ma_order.MaOrderSuite.time_order(5000, 'Worst')
- 15.2±0.2μs 12.9±0.02μs 0.85 bench_order.OrderSuite.time_order(5, 'Best')
- 15.5±0.05μs 13.2±0.04μs 0.85 bench_order.OrderSuite.time_order(5, 'DNA')
- 15.3±0.07μs 13.1±0.1μs 0.86 bench_order.OrderSuite.time_order(5, 'Normal')
- 15.5±0.1μs 13.3±0.03μs 0.85 bench_order.OrderSuite.time_order(5, 'Worst')
- 16.0±0.2μs 13.5±0.03μs 0.84 bench_order.OrderSuite.time_order(50, 'Best')
- 17.1±0.04μs 14.5±0.09μs 0.85 bench_order.OrderSuite.time_order(50, 'DNA')
- 16.8±0.08μs 14.3±0.2μs 0.86 bench_order.OrderSuite.time_order(50, 'Normal')
- 16.9±0.3μs 14.3±0.1μs 0.85 bench_order.OrderSuite.time_order(50, 'Worst')
- 21.2±0.06μs 18.6±0.08μs 0.88 bench_order.OrderSuite.time_order(500, 'Best')
- 30.2±0.1μs 26.6±0.2μs 0.88 bench_order.OrderSuite.time_order(500, 'DNA')
- 31.5±0.1μs 26.8±0.1μs 0.85 bench_order.OrderSuite.time_order(500, 'Normal')
- 33.9±0.2μs 28.3±0.3μs 0.84 bench_order.OrderSuite.time_order(500, 'Worst')
- 208±3μs 161±2μs 0.78 bench_order.OrderSuite.time_order(5000, 'DNA')
- 309±1μs 176±2μs 0.57 bench_order.OrderSuite.time_order(5000, 'Normal')
- 397±0.8μs 207±20μs 0.52 bench_order.OrderSuite.time_order(5000, 'Worst')
Change Before [58bd76e] <0.0.22> After [4e60273] Ratio Benchmark (Parameter)
---------- ------------------------------ --------------------- --------- -----------------------------------------------------------------------
+ 4.06±0.1ms 4.55±0.2ms 1.12 bench_alphabet.AlphabetSuite.time_alphabet(50000, 'Normal')
+ 5.84±0.1ms 6.53±0.2ms 1.12 bench_alphabet.AlphabetSuite.time_alphabet(50000, 'Worst')
+ 50.9±0.9ms 57.7±2ms 1.13 bench_alphabet.AlphabetSuite.time_alphabet(500000, 'Normal')
+ 70.7±0.8ms 81.3±0.3ms 1.15 bench_alphabet.AlphabetSuite.time_alphabet(500000, 'Worst')
+ 12.2±0.03μs 14.1±0.05μs 1.15 bench_intervals.IntervalsSuite.time_intervals(5, 'Best', 1, 4)
+ 13.2±0.03μs 15.1±0.3μs 1.15 bench_intervals.IntervalsSuite.time_intervals(5, 'Best', 2, 4)
+ 12.4±0.08μs 14.3±0.04μs 1.15 bench_intervals.IntervalsSuite.time_intervals(5, 'DNA', 1, 4)
+ 13.2±0.05μs 15.0±0.04μs 1.14 bench_intervals.IntervalsSuite.time_intervals(5, 'DNA', 2, 4)
+ 12.2±0.03μs 14.1±0.01μs 1.15 bench_intervals.IntervalsSuite.time_intervals(5, 'Normal', 1, 4)
+ 13.1±0.05μs 15.1±0.02μs 1.15 bench_intervals.IntervalsSuite.time_intervals(5, 'Normal', 2, 4)
+ 12.2±0.09μs 14.2±0.04μs 1.16 bench_intervals.IntervalsSuite.time_intervals(5, 'Worst', 1, 4)
+ 13.1±0.07μs 15.0±0.09μs 1.15 bench_intervals.IntervalsSuite.time_intervals(5, 'Worst', 2, 4)
+ 12.7±0.04μs 14.7±0.02μs 1.15 bench_intervals.IntervalsSuite.time_intervals(50, 'Best', 1, 4)
+ 13.5±0.03μs 15.6±0.09μs 1.15 bench_intervals.IntervalsSuite.time_intervals(50, 'Best', 2, 4)
+ 13.7±0.05μs 16.3±0.06μs 1.18 bench_intervals.IntervalsSuite.time_intervals(50, 'DNA', 1, 4)
+ 14.5±0.03μs 17.2±0.07μs 1.18 bench_intervals.IntervalsSuite.time_intervals(50, 'DNA', 2, 4)
+ 13.4±0.04μs 15.6±0.04μs 1.16 bench_intervals.IntervalsSuite.time_intervals(50, 'Normal', 1, 4)
+ 14.3±0.04μs 16.6±0.05μs 1.16 bench_intervals.IntervalsSuite.time_intervals(50, 'Normal', 2, 4)
+ 13.2±0.06μs 15.7±0.07μs 1.19 bench_intervals.IntervalsSuite.time_intervals(50, 'Worst', 1, 4)
+ 14.2±0.1μs 16.6±0.2μs 1.17 bench_intervals.IntervalsSuite.time_intervals(50, 'Worst', 2, 4)
+ 16.9±0.07μs 20.6±0.04μs 1.22 bench_intervals.IntervalsSuite.time_intervals(500, 'Best', 1, 4)
+ 17.9±0.03μs 21.8±0.1μs 1.22 bench_intervals.IntervalsSuite.time_intervals(500, 'Best', 2, 4)
+ 25.7±0.1μs 35.7±0.3μs 1.39 bench_intervals.IntervalsSuite.time_intervals(500, 'DNA', 1, 4)
+ 26.7±0.1μs 36.7±0.2μs 1.37 bench_intervals.IntervalsSuite.time_intervals(500, 'DNA', 2, 4)
+ 27.2±0.2μs 35.2±0.2μs 1.3 bench_intervals.IntervalsSuite.time_intervals(500, 'Normal', 1, 4)
+ 28.4±0.2μs 36.7±0.2μs 1.29 bench_intervals.IntervalsSuite.time_intervals(500, 'Normal', 2, 4)
+ 29.3±1μs 35.0±0.6μs 1.19 bench_intervals.IntervalsSuite.time_intervals(500, 'Worst', 1, 4)
+ 29.1±0.2μs 36.4±0.2μs 1.25 bench_intervals.IntervalsSuite.time_intervals(500, 'Worst', 2, 4)
+ 52.6±0.2μs 67.2±0.1μs 1.28 bench_intervals.IntervalsSuite.time_intervals(5000, 'Best', 1, 4)
+ 54.8±0.4μs 71.6±0.1μs 1.31 bench_intervals.IntervalsSuite.time_intervals(5000, 'Best', 2, 4)
+ 182±1μs 259±1μs 1.42 bench_intervals.IntervalsSuite.time_intervals(5000, 'DNA', 1, 4)
+ 191±3μs 263±2μs 1.38 bench_intervals.IntervalsSuite.time_intervals(5000, 'DNA', 2, 4)
+ 1.29±0.07ms 1.56±0.08ms 1.21 bench_intervals.IntervalsSuite.time_intervals(50000, 'Best', 1, 2)
+ 1.31±0.07ms 1.57±0.08ms 1.2 bench_intervals.IntervalsSuite.time_intervals(50000, 'Best', 1, 3)
+ 1.31±0.07ms 1.58±0.08ms 1.2 bench_intervals.IntervalsSuite.time_intervals(50000, 'Best', 2, 2)
+ 1.32±0.07ms 1.57±0.07ms 1.19 bench_intervals.IntervalsSuite.time_intervals(50000, 'Best', 2, 3)
+ 2.74±0.06ms 3.10±0.01ms 1.13 bench_intervals.IntervalsSuite.time_intervals(50000, 'DNA', 1, 2)
+ 2.78±0.06ms 3.12±0.01ms 1.12 bench_intervals.IntervalsSuite.time_intervals(50000, 'DNA', 1, 3)
+ 2.98±0.06ms 5.18±0.09ms 1.74 bench_intervals.IntervalsSuite.time_intervals(50000, 'DNA', 1, 4)
+ 2.76±0.06ms 3.13±0.01ms 1.13 bench_intervals.IntervalsSuite.time_intervals(50000, 'DNA', 2, 2)
+ 2.80±0.06ms 3.16±0.03ms 1.13 bench_intervals.IntervalsSuite.time_intervals(50000, 'DNA', 2, 3)
+ 3.02±0.07ms 5.23±0.09ms 1.73 bench_intervals.IntervalsSuite.time_intervals(50000, 'DNA', 2, 4)
+ 4.83±0.2ms 5.60±0.2ms 1.16 bench_intervals.IntervalsSuite.time_intervals(50000, 'Normal', 1, 1)
+ 4.70±0.2ms 5.27±0.2ms 1.12 bench_intervals.IntervalsSuite.time_intervals(50000, 'Normal', 1, 2)
+ 4.83±0.04ms 9.35±0.3ms 1.93 bench_intervals.IntervalsSuite.time_intervals(50000, 'Normal', 1, 4)
+ 5.00±0.2ms 5.89±0.4ms 1.18 bench_intervals.IntervalsSuite.time_intervals(50000, 'Normal', 2, 1)
+ 4.84±0.05ms 9.64±0.4ms 1.99 bench_intervals.IntervalsSuite.time_intervals(50000, 'Normal', 2, 4)
+ 6.67±0.04ms 12.9±0.1ms 1.93 bench_intervals.IntervalsSuite.time_intervals(50000, 'Worst', 1, 4)
+ 6.66±0.05ms 13.0±0.1ms 1.95 bench_intervals.IntervalsSuite.time_intervals(50000, 'Worst', 2, 4)
+ 27.2±0.3ms 30.4±0.4ms 1.12 bench_intervals.IntervalsSuite.time_intervals(500000, 'DNA', 1, 2)
+ 27.4±0.3ms 30.4±0.4ms 1.11 bench_intervals.IntervalsSuite.time_intervals(500000, 'DNA', 1, 3)
+ 28.5±0.4ms 53.3±0.5ms 1.87 bench_intervals.IntervalsSuite.time_intervals(500000, 'DNA', 1, 4)
+ 27.5±0.5ms 30.7±0.3ms 1.12 bench_intervals.IntervalsSuite.time_intervals(500000, 'DNA', 2, 2)
+ 27.7±0.2ms 31.2±0.4ms 1.12 bench_intervals.IntervalsSuite.time_intervals(500000, 'DNA', 2, 3)
+ 28.8±0.4ms 53.7±0.6ms 1.87 bench_intervals.IntervalsSuite.time_intervals(500000, 'DNA', 2, 4)
+ 56.6±0.8ms 67.9±4ms 1.2 bench_intervals.IntervalsSuite.time_intervals(500000, 'Normal', 1, 1)
+ 54.1±2ms 62.8±2ms 1.16 bench_intervals.IntervalsSuite.time_intervals(500000, 'Normal', 1, 2)
+ 57.2±1ms 63.9±2ms 1.12 bench_intervals.IntervalsSuite.time_intervals(500000, 'Normal', 1, 3)
+ 55.5±0.6ms 115±2ms 2.08 bench_intervals.IntervalsSuite.time_intervals(500000, 'Normal', 1, 4)
+ 58.4±1ms 66.7±2ms 1.14 bench_intervals.IntervalsSuite.time_intervals(500000, 'Normal', 2, 1)
+ 55.7±1ms 64.3±2ms 1.15 bench_intervals.IntervalsSuite.time_intervals(500000, 'Normal', 2, 2)
+ 58.7±1ms 65.6±2ms 1.12 bench_intervals.IntervalsSuite.time_intervals(500000, 'Normal', 2, 3)
+ 57.3±0.4ms 117±3ms 2.04 bench_intervals.IntervalsSuite.time_intervals(500000, 'Normal', 2, 4)
+ 74.0±0.3ms 86.4±0.3ms 1.17 bench_intervals.IntervalsSuite.time_intervals(500000, 'Worst', 1, 1)
+ 73.4±0.2ms 85.8±0.2ms 1.17 bench_intervals.IntervalsSuite.time_intervals(500000, 'Worst', 1, 2)
+ 77.2±0.5ms 160±0.6ms 2.07 bench_intervals.IntervalsSuite.time_intervals(500000, 'Worst', 1, 4)
+ 75.0±0.7ms 87.5±0.3ms 1.17 bench_intervals.IntervalsSuite.time_intervals(500000, 'Worst', 2, 1)
+ 74.3±0.4ms 87.0±0.4ms 1.17 bench_intervals.IntervalsSuite.time_intervals(500000, 'Worst', 2, 2)
+ 76.7±0.9ms 87.2±0.2ms 1.14 bench_intervals.IntervalsSuite.time_intervals(500000, 'Worst', 2, 3)
+ 77.4±0.6ms 161±0.4ms 2.09 bench_intervals.IntervalsSuite.time_intervals(500000, 'Worst', 2, 4)
+ 4.72±0.2ms 5.31±0.2ms 1.13 bench_ma_alphabet.MaAlphabetSuite.time_alphabet(50000, 'Normal')
+ 4.71±0.02ms 5.31±0.04ms 1.13 bench_ma_alphabet.MaAlphabetSuite.time_alphabet(50000, 'Worst')
+ 3.06±0.07ms 3.44±0.03ms 1.12 bench_order.OrderSuite.time_order(50000, 'DNA')
+ 83.0±0.3ms 95.4±0.4ms 1.15 bench_order.OrderSuite.time_order(500000, 'Worst')

Comment on lines +77 to +79
for interval in tuple_result:
distribution[int(interval) - 1] += 1

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do not use loops. We should use numpy functions instead of loops

@goruha
Copy link
Copy Markdown
Member

goruha commented Mar 28, 2026

We need to create tests and performance tests for new functions.

@goruha
Copy link
Copy Markdown
Member

goruha commented Mar 28, 2026

@Maximus2012

Comment on lines +63 to +73
if mode == constants_mode.redundant:
perm = ar.argsort(kind="mergesort")
mask = np.empty(ar.shape[0] + 1, dtype=bool)
mask[:1] = True
mask[1:-1] = ar[perm[1:]] != ar[perm[:-1]]
mask[-1:] = True
last_mask = mask[1:]
trailing = len(ar) - perm[last_mask]
if binding == constants_binding.end:
trailing = trailing[::-1]
return np.concatenate((chain, trailing))
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Это вряд ли работает корректно. Нужно сделать тесты.
На вход же приходит intervals_chain - если ты их отсортируешь то потеряешь связанность

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Create foapy.intervals_distribution function Create foapy.intervals_tuple function Create foapy.intervals_chain module

3 participants