Releases: miguelinux314/experiment-notebook
v1.0.5
2024/10/28 v1.0.5
Improvements:
- Fixed a problem that prevented values in .ini files from being recognized
(persistence_dir, base_dataset_dir, analysis_dir, output_plots_dir) - Fixed regression bug that prevented some columns from being populated if they were defined after the table's
persistence CSV file was created. - The enb.ini plugin is now installed with all options commented-out, ready for the user to modify at will
Deprecations:
- Fixed enb.atable.ATable's typo: dataset_files_extension becomes dataset_file_extension.
The old name will be kept for now as a deprecated property.
v1.0.4
Improvements:
- Enhanced documentation explaining how to store compressed and reconstructed files in compression experiments
(see https://miguelinux314.github.io/experiment-notebook/lossless_compression_example.html#saving-the-compressed-and-or-reconstructed-files). - Improved error handling of images files with non-compliant names.
- Fixed some external library warnings due to API changes (numpy, pandas)
v1.0.3
Improvements:
-
When failing to build/install a plugin with
enb plugin install <plugin_name> <destination>
, a copy of the
incomplete installation dir is copied to a temporary dir so that you can attempt a manual installation. -
The
corpus
column now treats symbolic links within the dataset folder as regular files.
This way:- One can arrange data samples from multiple sources and still have a consistent corpus name.
- One can change the name of a symbolic link, and that name will be employed within the experiments.
- One can mix symbolic links and regular files as needed.
For instance, the following dataset folder setup (->
indicates a symbolic link):- Would assign corpus
"C1"
to samplesA.txt
andB.txt
, and"C2"
to samplesB.txt
andC.txt
,
regardless of the physical folders where those samples are. - The data in
/home/shared/altsource/some_name.txt
would be known asdatasets/C1/B.txt
to the experiment. - File
datasets/E.txt
is not a symbolic link and is treated normally.
- Would assign corpus
- datasets/ - C1 - A.txt -> /data/source1/A.txt - B.txt -> /home/shared/altsource/some_name.txt - C2 - C.txt -> /home/shared/altsource/C.txt - D.txt -> /data/source2/D.txt - E.txt
-
Added
lc
, a lossless codec that wraps the LC Framework functionality.
v1.0.2
2024/02/06 v1.0.2
Improvements:
-
Enhanced progress reporting of parallel row computation. You can test it in your scripts invoking them with
-v
or-vv
or, equivalently, addingenb.config.options.verbose = 1
orenb.config.options.verbose = 2
to your code. -
Messages displayed with
enb.logger
(and, by default also withprint
) are now colorized based on their priority.
You can easily configure the styles by installing thecolors-default
,colors-dark
orenb.ini
plugins
(e.g.,enb plugin install colors-default .
in your project folder) and modifying the installed.ini
file,
and/or by modifying thestyle_*
members ofenb.logger
. -
Added the
compression_results
anddecompression_results
properties toenb.icompression.CompressionExperiment
,
which areenb.icompression.CompressionResults
andenb.icompression.DecompressionResults
instances, respectively.
These can be called from functions that set row columns of compression experiment subclasses. For instance,
they can be used to access the original, compressed and/or reconstructed file paths, e.g.,import enb class CustomExperiment(enb.icompression.LosslessCompressionExperiment): def column_first_compressed_byte(self, index, row): """Set the 'first_compressed_byte' column of the experiment. """ with open(self.compression_results.compressed_path, "r") as compressed_file: return int(compressed_file.read(1))
-
Added the
grid_alpha
,subgrid_alpha
andtick_direction
to theenb.aanalysis.Analyzer
class.
These parameters can also be managed with.ini
files (see theenb.ini
plugin), or passed directly
to theget_df
method of Analyzer subclasses.
Bug fixes:
-
Prevented spurious exceptions while shutting down, which could happen when an
enb.atable.ATable
instance
is created but itsget_df
method is not called. -
Using relative imports (e.g., of plugins or other modules within the project folder) now works for remote
ray clusters. A small refactoring related to identifying local and remote nodes, as well as adapting
paths relative to the remote mount point when needed has been introduced, too. -
Added missing
h5py
dependency tosetup.py
.
v1.0.1
After 4 years of development and a lot of user feedback, switched from beta status to stable/production!
NOTE: This version change does NOT imply a change in the API (backwards compatibility with 0.4.x is expected).
However, a cleanup of old blobs was performed on the repository.
You might need to use git pull --force
to update your local development repository.
New features:
- Added the
enb.aanalysis.ScalarNumericJointAnalyzer
class,
which allows numerical data analysis considering two classifications
at the same time. Useful to produce 2D tables (also in latex format) with categorical columns and rows.
(Check out the documentation). - Added support for group comparison in the
enb.aanalysis.TwoNumericAnalyzer
class when theline
render mode is requested. - Added a plugin for the Montsec codec. You can install it with
enb plugin install montsec plugins/montsec
.
Improvements:
- Enhanced plugin installation messages and behavior.
- Improved computation time of ATable.get_df when part of the rows already existed.
- All
enb.aanalysis.Analyzer
subclasses now accept single strings in theselected_render_mode
argument.
Previously, a list empty or containing mode names was mandatory.
Bug fixes:
- Fixed regression bug that prevented the
plot_title
from being displayed onenb.aanalysis.Analyzer
subclasses.
Also added atitle_y
parameter to theirget_df
method to allow manual title height adjustment. - Fixed a bug in the
enb.icompression.LittleEndianWrapper
class that prevented lossless reconstruction.
Updated the HEVC codec to accept 16 bit samples (now that the endianness is properly handled).
v0.4.5
2023/09/15 v0.4.5
New features:
- Added a plugin that can apply the direct and inverse BWT. Uses the codec API (compress, decompress).
- Added a plugin for the LPAQ8 codec.
- Added support in
enb.isets
for reading and writing BIL and BIP raw data orderings. Added the BIPToBSQ
and BILToBSQ ImageVersionTable subclasses to facilitate curation of BIL and BIP datasets. - Tested on a Raspberry Pi (improved installation instructions for this platform.)
Behavior changes:
- When computing the dynamic range of integer samples in
enb.isets
,
this value was obtained considering only the difference between
theminimum
andmaximum
sample values. Therefore, ifmaximum-minimum=1
, then the dynamic range was set as 1
even if min and max are large values, e.g., 4094 and 4095.
From version v0.4.5 onwards, the
dynamic range B is the minimum integer so that all data samples lie in
[0, 2^B-1]
for unsigned data and in[-2^(B-1), 2^(B-1)-1]
for signed data.
The calculation for floating point data is not changed, and is always8*bytes_per_sample
.
Note: This change affects only thedynamic_range_bits
column ofenb.isets.ImagePropertiesTable
,
thepsnr_dr
column ofenb.icompression.LossyCompressionExperiment
and the sample precision selection
of thelcnl
(CCSDS 123.0-B.2) andkakadu
(JPEG 2000) plugins.
Other changes:
- Removed ray as a dependency when installing enb.
- Speedup of experiments with a large number of tasks/target indices. Only chunk_size needs to be touched.
- The
task_label
column is now by default the task's class name (elements of the tasks' param_dict are not
included in it anymore). - Fixed CLI argument parsing for some numerical values.
- Partial code cleanup using pylint.
- Removal of the byte_value_* columns in ImagePropertiesTable to speed up compression experiments with
large files. - Speedup of enb.aanalyis.Analizer subclases with more than one render mode.
v0.4.4
Small improvements:
- Fixed bug in
enb.plotdata
when the y limits were explicitly set to None. - Added the --disable_progress_bar flag to supress the display of the animated progress bar
(useful to minimize the stdout output volume, e.g., for logging purposes). This helps executing enb in
headless and virtualized platforms. - Added compression/decompression resident memory size for WrapperCodec subclasses.
v0.4.3
Updated to version v0.4.3 (2022/12/02)
New features:
- Added the classic JPEG codec to the jpeg plugin
- Added the
apply(self, experiment, index, row)
to theenb.experiment.ExperimentTask
class.
This method is now called by theenb.experiment.Experiment
class and its subclasses
before computing any other row. - Added the
iraf_photometry
plugin that allows automatic photometry processing using IRAF
(IRAF must be installed separately). - Added the
enb.icompression.GeneralLosslessExperiment
that allows seamless execution of lossless compression
codecs on files without needed to add image geometry information to their name nor change their extension
(e.g, general files).
Improvements:
- Updated kakadu and FAPEC codecs to specify the exact dynamic bit range instead of the nominal one,
which allows compression of 17-28bps images stored in u32be and s32be formats. - Added support for 4-byte entropy and 4-byte entropy efficiency.
- The CCSDS codec now uses 1 sample per packet to allow automatic compression of wide images.
- Cleanup of the lcnl codec wrapper.
- Added the "image" category for image processing and compression plugins.
v0.4.2
Minor version update
- Improved error text when not enough data is available in the scalar analyzer class.
- Fixed the lossy compression template plugin so that it does show data instead of using alpha=0.
- Added the
file_version_example
plugin that demonstrates the use ofenb.sets.FileVersionTable
. - Created a documentation page about
enb.sets.FileVersionTable
and its subclasses.
v0.4.1
Some minor updates over 0.4.0. Please check the CHANGELOG for full details.