Releases: glarue/intronIC
intronIC v2.1.5
Bug fix: BED input mode crash
Fixed a crash when using BED input mode (-b / --bed) where intronIC would fail with:
AttributeError: 'NoneType' object has no attribute 'noncanonical'
Introns created from BED coordinates were not initialized with an IntronMetadata object, causing downstream scoring to fail on attribute access.
Affected use-cases: Only intronIC runs with the -b / --bed flag. Annotation mode (-g / --annotation) and sequence file mode (-q / --sequence-file) should be fine.
Files changed
src/intronIC/cli/main.py— InitializeIntronMetadata()for BED-derived intronssrc/intronIC/extraction/sequences.py— Defensive None check before setting noncanonical flagsrc/intronIC/extraction/filters.py— Guard metadata access in filter stats countingpyproject.toml— Version bump to 2.1.5pixi.toml— Version bump to 2.1.5
Full Changelog: v2.1.4...v2.1.5
intronIC v2.1.4
Fixed
- Automatically detect and rebuild corrupt pyfastx index (.fxi) files
- If a previous run was killed mid-indexing, the truncated index caused a cryptic <class 'Fasta'> returned a result with an exception set error on subsequent runs
- IndexedGenomeReader now catches the error, deletes the stale index, and retries once to rebuild it cleanly
Full Changelog: v2.1.3...v2.1.4
intronIC v2.1.3
Added
- New NO_SEQUENCE omission reason ([x] tag) for introns on genome regions missing from the FASTA (e.g. organellar genes referencing contigs not included in nuclear assemblies)
Fixed
- Pipeline no longer crashes when introns reference contigs absent from the genome FASTA
- SequenceExtractor now yields these introns marked as omitted_no_sequence instead of silently dropping them
- SequenceWriter skips introns without sequence data instead of raising ValueError
- Affected species include those with mitochondrial/plastid gene annotations
Dependencies
- Bump pillow from 12.0.0 to 12.1.1
New Contributors
- @dependabot[bot] made their first contribution in #7
Full Changelog: v2.1.2...v2.1.3
v2.1.2
Fix: remove log line wrap length of 120 characters
Full Changelog: v2.1.1...v2.1.2
v2.1.1
Fix: Strip ANSI color codes from log file output
Log files (.iic.log) previously contained raw ANSI escape sequences (e.g. ESC[94m...ESC[0m), which were only readable in ANSI-aware viewers like less -R. This made log files difficult to read in standard text editors, on different operating systems, or when shared/downloaded.
Change
In setup_logging() (cli/main.py), the Rich Console used for log file writing was changed from force_terminal=True (which forced ANSI codes into the file) to no_color=True (plain text output).
What's preserved
- Terminal output: Full Rich color rendering — unchanged
- Log file structure: Box-drawing characters (
┌─┬─┐,│,└─┴─┘), table formatting, and Unicode symbols (ℹ,✓,⚠) are all retained - Log file content: All the same information — command, configuration, filtering summary, classification results, boundary tables, etc.
What's removed
- Raw ANSI escape codes in
.iic.logfiles
Files changed
src/intronIC/cli/main.py—force_terminal=True→no_color=Trueinlog_consolecreationpyproject.toml— version 2.1.0 → 2.1.1pixi.toml— version 2.1.0 → 2.1.1
Full Changelog: v2.1.0...v2.1.1
v2.1.0
Release v2.1.0 Summary:
Model Improvements:
- Default model switched to isotonic calibration for better cross-species performance
- Provides more accurate results in C. elegans and other non-human species
- Previous sigmoid-calibrated model preserved as default_pretrained.model.sigmoid.pkl
Bug Fixes:
- intronIC test subcommand: Now displays correct intron counts from metrics file
- Shows total_scored (12,573) and high_confidence_u12 (32)
- Added thousand separators for readability
- Fixed UnboundLocalError by initializing variables before loop
- sklearn warnings: Completely suppressed
- All joblib.load() calls replaced with load_model() wrapper
- Fixed warning filter to catch InconsistentVersionWarning (not just UserWarning)
- Applied across pretrained model, normalizer, and ensemble loading paths
Full Changelog: v2.0.10...v2.1.0
intronIC v2.0.5
Full Changelog: v2.0.4...v2.0.5
intronIC v2.0.4
intronIC v2.0.4
A critical hotfix release that fixes data files missing from the PyPI package.
🐛 Bug Fixes
- Fixed missing data files in PyPI package: The default pretrained model, PWMs, and reference files were not being included in the pip-installable package,
causingModuleNotFoundErrorwhen using default settings. - Added hatchling artifacts configuration: Properly configured
pyproject.tomlto include all.pkl,.json,.iic.gz, and.logfiles from the data
directory.
🔧 Package Improvements
- Added missing
joblibdependency to pixi.toml: Ensures development environments have all required dependencies.
📦 What's Fixed
Users installing via pip install intronIC can now:
- Use the default pretrained model without specifying
--model - Access PWM scoring matrices automatically
- Use reference intron datasets for training
Previous workaround (no longer needed): Users had to train their own model with --train or specify a custom --model path.
🔗 Links
Installation:
pip install --upgrade intronICintronIC v2.0.3
Install/upgrade command:
pip install --upgrade intronIC
Summary of v2.0.3 (Hotfix)
This hotfix release adds the missing dependencies that were causing ModuleNotFoundError when installing from PyPI:
- Added tqdm (progress bars)
- Added pyyaml (YAML config files)
- Added joblib (model serialization)
- Added pyfastx (FASTA indexing)
All dependencies are now properly declared in pyproject.toml.
Updated to include joblib dependency in pixi.toml for development environments.
Full Changelog: v2.0.2...v2.0.3
intronIC v2.0.2
intronIC v2.0.2
QoL update focused on documentation improvements and bug fixes for configuration handling.
🐛 Bug Fixes
- Fixed CLI arguments not overriding YAML config: CLI args like
-p 1were being incorrectly overridden by YAML config values. All CLI arguments now
properly take precedence over config files. - Fixed model filename typo: Renamed
default_pretrained.model.plk→default_pretrained.model.pkl
📚 Documentation
- Condensed README (846 → 137 lines, 84% reduction): Now serves as a concise landing page with links to the comprehensive wiki
- Accurate runtime estimates: Updated from incorrect estimates (5-15 min) to accurate ones (1-2 min for Chr19 test)
- Clarified default model behavior: Made it clear that the pretrained model loads automatically—no
--modelflag needed - Removed unimplemented features: Deleted all references to
--recursiveflag (not implemented) - De-emphasized advanced features: Moved normalizer/adaptive mode documentation to "Advanced" sections
🔧 Code Quality
- Single source of truth for defaults: Argparse is now the only place argument defaults are defined, eliminating the potential for defaults to get out of sync between
args.pyandconfig.py
📋 Precedence Chain
The configuration precedence now works correctly for all arguments:
CLI arguments > YAML config > argparse defaults
Example:
- No
-pflag: uses YAML config value (5) -p 1specified: uses CLI value (1), overriding YAML- No
-pflag, no YAML: uses default (1)
Full Changelog: v2.0.1...v2.0.2