Earth observation processing framework for machine learning in Python
MIT License
Bot releases are hidden (Show)
Published by zigaLuksic 22 days ago
numpy<2
restriction.geopandas
version to < 1.0.0Published by tsuligoj 4 months ago
SnowMaskTask
now correctly handles temporally empty eopatches.Published by zigaLuksic 5 months ago
Published by zigaLuksic 9 months ago
numpy<2
in anticipation of numpy 2.0 release.Published by mlubej 12 months ago
RayExecutor
can now forward remote kwargs to ray jobs.ImportTiffTask
no longer uses the use_vsi
parameter. The IO part was fully off-loaded to rasterio
.ImportTiffTask
and ExportTiffTask
parameter folder
was renamed to path
. The renaming is backwards compatible for now.Published by zigaLuksic about 1 year ago
MorphologicalFilterTask
adapted to work on boolean values.temporal_subset
method to EOPatch
, which can be used to extract a subset of an EOPatch
by filtering out temporal slices. Also added a corresponding TemporalSubsetTask
.EOExecutor
now has an option to treat TemporalDimensionWarning
as an exception.EOPatch
objects was revisited to avoid edge cases where the output would print enormous objects.Published by zigaLuksic about 1 year ago
The release focuses on making eo-learn
much simpler to install, reducing the number of dependencies, and improving validation of soundness of EOPatch
data.
eo-learn
is now distributed as a single package. Installation of eo-learn-mask
and similar is no longer necessary and users are warned when such installations are detected.timestamps
and bbox
attributes of EOPatch
objects:
FeatureType.TIMESTAMPS
and FeatureType.BBOX
have been deprecated, data should be accessed via attributes. Feature parsers no longer return these values (for instance when calling EOPatch.get_features
).None
, whereas a timestamp value []
signifies that the EOPatch has a temporal dimension of 0.get_timestamps
method that will fail if timestamps
are None
. This can be used in cases where timestamps are assumed to be present (to avoid issues with type-checking and ill formed inputs).timestamps
into account either when processing the full eopatch (i.e. features=...
) or if the selection contains a temporal feature. The behavior can be controlled via the load_timestamps
/save_timestamps
/copy_timestamps
parameter.FeatureType.META_INFO
now processes each feature as a separate file, allowing better filtering and preventing accidental overwriting.SpatialResizeTask
has been switched to cv2
to reduce the number of dependencies.eolearn.geometry.morphology
tasks now use cv2
instead of scikit-image
to reduce the number of dependencies. The task interfaces have been slightly adjusted.CloudMaskTask
has been restricted to mono-temporal predictions using the s2cloudless
package. For the multi-temporal one check here.SaveTask
and LoadTask
) no longer pass arguments to the super-class via **kwargs in order to improve documentation and type-checking.SaveTask
and LoadTask
now raise OSError
exceptions instead of IOError
.eolearn.features.bands_extraction
has been renamed to eolearn.features.ndi
.eolearn.ml_tools.extra.plotting
has been moved to eolearn.visualization.utils
.compression_level
has been deprecated and has no effect.zarr
support for loading/saving temporal slices of temporal features. The API might be changed in future releases.rasterio
to 1.3.7 due to an issue with importing rasters from AWS S3Published by zigaLuksic over 1 year ago
Changelog:
EOTask
in the scope of the Global Earth Monitor Project, contributed by @meengel.sentinelhub-py
in SH related EOTasks
.EOPatch.merge
method and extracted it as a function.OVERWRITE_PATCH
permission and enforcing the usage of explicit string permissions.FeatureDict
class as Mapping
, removed inheritance from dict
.ruff
python linter, removed flake8
and isort
(covered by ruff
).master
branch.Published by zigaLuksic over 1 year ago
The future direction of eo-learn
will start prioritizing reliability and safety of code. After a lot of debate we decided that EOPatches
must be well defined in the sense of geo-spatial information (bounding box) and, when using temporal features, temporal information (timestamps). In this light we decided to slowly adjust the code so that ill-formed EOPatches
would occur less often. The end goal is to separate these patch-defining meta-information from other EOPatch
features.
In this minor release we added a fair amount of deprecation warnings, that should help users to adapt their code ahead of any big codebreaking changes.
EOPatch
objects will require a valid bbox
. For now the users are warned when no such value is provided.SaveTask
and LoadTask
now automatically save/load the bounding box whenever possible, even if not specified in features
parameter. CopyTask
and MergeEOPatchesTask
also always include the bounding box when possible.EOPatch
attribute bbox
can no longer be deleted via the del
command.EOPatch
attribute timestamp
was renamed into timestamps
. The old name still works, but the users are notified. Similarly for FeatureType.TIMESTAMP
which was renamed to FeatureType.TIMESTAMPS
.eolearn.core.utils.parsers
now support callables as input for allowed_feature_types
, which are used for filtration over all feature types. Due to this improvement the class FeatureTypeSet
was deprecated.FeatureType
were deprecated. Method is_raster
has been renamed to is_array
and designates feature types that contain numpy arrays. We also added is_image
for types that denote temporal and timeless imagery.CREDITS.md
file in the root of the repository.CONTRIBUTING.md
instructions.Published by zigaLuksic over 1 year ago
Changelog:
eolearn.coregistration
. See documentation for details.eolearn.visualization
.SpatialResizeTask
had a bug when resizing w.r.t resolution. The issue was fixed and the signature of the task was redesigned to better avoid mistakes. See documentation for details.EOPatch
methods get_features
and get_feature_list
were recombined into a new get_features
method. The method get_time_series
was removed. See documentation for details.use_int_coords
option in eolearn.ml_tools.sampling.random_point_in_triangle
.MeteoblueTask
.SentinelHubInputTask
no longer saves redundant data into meta-features.eolearn.core.utils.types
was moved to eolearn.core.types
. Old one will be removed in the future.opencv-contrib-python-headless
requirement to opencv-python-headless
Published by zigaLuksic almost 2 years ago
Changelog:
timestamp_filter
parameter, contributed by @ColinMoldenhauer.MergeFeatureTask
now supports the axis
parameter.sentinelhub.os_utils
.mypy
update.Published by zigaLuksic about 2 years ago
Changelog:
sentinelhub-py 3.8.0
which switched to Catalog 1.0.0.FeatureIO
class. Only affects direct use of class.eolearn.core
. The types are now exposed via py.typed
file, which enables use of mypy
. Added type-checking to CI for the core
module.object
populated arrays.Published by zigaLuksic about 2 years ago
Changelog:
no_data_value
in ImportFromTiffTask
and ExportToTiffTask
to None
. The previous default of 0
was a poor choice in many scenarios. The switch might alter behavior in existing code.SpatialResizeTask
accepts parameters for the final image size. Now supports resizing by using resolution.ExplodeBandsTask
that explodes a multi-band feature into multiple features.geometry
execution parameter.FeatureIO
and _FeatureDict
to improve types and maintainability.MeteoblueRasterTask
.FilterTimeSeriesTask
adjusted to work with multiprocessing.Published by AleksMat about 2 years ago
Changelog:
pickle_fs
and unpickle_fs
into eo-learn-core
,filesystem
as an __init__
parameter,EOExecutor
to support filesystem
propagation to worker processes.3.10
.eolearn.coregistration.ThunderRegistrationTask
into an extension of eo-learn-coregistration
package because it doesn't support Python 3.10
.eolearn.features.SimpleFilterTask
. It now returns a new EOPatch
and doesn't raise an error if all time slices would be filtered out.eolearn.io.ExportToTiffTask
. It doesn't allow undefined folder
parameter anymore, but it has better support for filesystem
objects.eolearn.core.utils.raster.fast_nanpercentile
utility function and moved constant_pad
function into the same module.EOPatch
with empty vector features.flake8
and checks for Jupyter notebooks.Published by AleksMat over 2 years ago
Changelog:
eolearn.io.ImportFromTiffTask
where a bounding box from the image wasn't added to the EOPatch.Pillow
dependency in eolearn.features
.Published by zigaLuksic over 2 years ago
Changelog:
eolearn.core.utils.parallelize
module, featuring tools for different parallelization modes.SentinelHubInputTask
, SentinelHubEvalscriptTask
and SentinelHubDemTask
by adding a session_loader
parameter. Session sharing of sentinelhub-py
is explained here.SpatialResizeTask
to eolearn.features.feature_manipulation
for spatially resizing EOPatch features.ImportFromTiffTask
reads from remote filesystems.EONode
class to avoid massive slowdowns in large workflows.Published by zigaLuksic over 2 years ago
Changelog:
fs==2.4.16
.LoadTask
and SaveTask
can now handle empty queries (by setting eopatch_folder=None
).Published by AleksMat over 2 years ago
Changelog:
EOPatch
merging procedure.aws_session_token
, contributed by @theirix.ImportFromTiffTask
.1.0.0
that was released to PyPI.eo-learn
abstract package from now on requires fixed versions of eo-learn
subpackages.isort
formatting on the entire package.Published by zigaLuksic over 2 years ago
This version fixes the dependencies, so that pip install "eo-learn<1"
works correctly.