Changelog¶
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Changes are grouped as follows
Added
for new features.Changed
for changes in existing functionality.Deprecated
for soon-to-be removed features.Removed
for now removed features.Fixed
for any bug fixes.Security
in case of vulnerabilities.
[0.3.20] - 2023-08-22¶
Fixed¶
- SearchSpec objects will now raise an error if given more than one identifier to search by. This was never supported.
- Documentation improvements.
[0.3.19] - 2023-04-21¶
Added¶
TracesAPI.get_trace_bounds
andTracesAPI.get_array
now support pre-stack data.
[0.3.18] - 2023-03-22¶
Fixed¶
- gRPC errors not getting converted to
cognite.seismic.data_classes.errors
types when client retries enabled.
[0.3.17] - 2023-03-20¶
Changed¶
- Changed the name of the version header to help with internal usage metrics.
[0.3.16] - 2023-03-01¶
Changed¶
- The dependency on
protobuf
has been reverted back to version 3 for compatibility with apache-beam.
[0.3.14] - 2023-01-25¶
Added¶
- Prestack migrated SegY file support. Files can now have a specified seismic data type (poststack or prestack, defaulting to poststack) by using the
cognite.seismic.data_classes.SeismicDataType
during registration.traces.get_segy
andtraces.stream_traces
now accept atrace_group_extent
to filter on sub-traces, using thecognite.seismic.SeismicTraceGroupExtent
type.
[0.3.13] - 2022-11-11¶
Added¶
- Survey, Partition, SourceSegyFile, Seismic, SeismicStore can be searched for by
last_modified
. Survey and Partitionsearch()
accepts alast_modified
argument of typeSearchSpecLastModified
, while SourceSegyFile, Seismic, and SeismicStoresearch()
search_spec
argument can accept the same.
[0.3.11] - 2022-10-14¶
Changed¶
traces.get_segy
will now automatically try to resume downloads if the connection resets- Streaming endpoints will now raise exceptions from
cognite.seismic.errors
instead of native grpc exceptions, similar to the existing behavior of non-streaming endpoints. - Survey, Partition, SourceSegyFile, Seismic, SeismicStore objects now have a
last_modified
field.
[0.3.10] - 2022-09-30¶
Changed¶
- SearchSpec’s are now frozen dataclasses, which in particular makes them hashable.
[0.3.7] - 2022-08-11¶
Added¶
Seismic3dExtent
now has utility methods to simplify working directly with extents.get_inline
andget_xline
enumerate all inlines or crosslines.get_inline_range
andget_xline_range
calculate the minimum and maximum values of inlines or crosslines.get_bounding_box
calculates a bounding box that fits all traces specified in the extent.
[0.3.5] - 2022-08-01¶
Added¶
- Seismics can be searched for by seismic store using SearchSpecSeismicStore.
[0.3.4] - 2022-07-29¶
Fixed¶
file.search
properly raisesNotFoundError
rather than a gRPCNotFound
status.
[0.3.3] - 2022-07-22¶
Added¶
- It is now possible to search for jobs by a source segy file’s integer id, instead of its (legacy) uuid.
[0.3.2] - 2022-07-18¶
Added¶
- SeismicStore and Seismic objects now have the following methods available,
stream_traces
,get_trace_bounds
,get_array
.
[0.3.1] - 2022-07-11¶
Added¶
- SeismicStore objects now have a
survey_id
field containing the numeric id of the containing survey (in addition to the old-style uuid insurvey_uuid
).
[0.3.0] - 2022-07-07¶
Major new release including support for 2D seismic files. See the documentation for a more exhaustive overview of all the changes.
Added¶
- It is now possible to specify the dimensionality of registered files, and to control which trace headers should be used to index traces, by passing arguments to the
file.register
method. - The new
traces
API has been added as a unified way to stream trace data from both 2D and 3D objects, replacing the oldvolume_seismic
API. Theget_volume
function is replaced with thestream_traces
function, whileget_volume_size
is replaced byget_trace_bounds
.get_array
has also been generalized to support 2D data. - The
SeismicExtent
class hierarchy has been added as a flexible way to describe exactly which traces to include in a given request. It supports both 2D and 3D data, and also subsumes the oldVolumeDef
schema which it replaces for 3D data. - Similarly, the
SeismicCutout
class hierarchy has been added to describe how seismics are cut out from their seismic stores.
Changed¶
seismicstore.search
,seismic.search
, andfile.search
use asearch_spec
argument for distinguishing between search types rather than having amode
argument as a switch.get_all
was removed in favor ofSearchSpecGetAll
.- File ids and survey ids are now internal, numeric ids by default. The old uuid-style ids are still avaible through the
uuid
property. - Project name is now required when initializing the API client.
in_wkt
argument replaced withcoverage_format
for methods using coverage.coverage_format
expects one of"wkt"
or"geojson"
, defaulting to the latter.
Removed¶
- All v0 apis were removed. All v1 apis were renamed (e.g.
client.file_seismic
is nowclient.file
). - The
volume_seismic
API has been removed in favor oftraces
API - The
VolumeDef
json schema has been removed in favor ofSeismicExtent
. - The
File
class has been removed in favor ofSourceSegyFile
, which is better adapted to the 2D / 3D split. - Removed the deprecated argument
include_coverage
fromSeismicAPI.search
andSeismicStoreAPI.search
. - Removed backwards compatibility for v1 Survey APIs.
[0.2.103] - 2022-07-07¶
Added¶
file_seismic.search
now supports searching for files by the containing survey- The
SeismicStore
class now has acrs
attribute
[0.2.102] - 2022-05-13¶
Added¶
SeismicStore
has fieldingested_source_file
which includes more information about the file, primarily concerned with adding 2D data support.
[0.2.101] - 2022-05-12¶
Changed¶
seismics.get
raises specific exceptions (NotFoundError
,InternalError
,ValueError
) instead ofException
.
[0.2.99] - 2022-05-03¶
Added¶
seismicstore.search
has a new ‘file’ mode which searchs for seismic stores by file.
[0.2.97] - 2022-04-11¶
Fixed¶
- Fixed a protocol error causing files to be registered with the wrong dimensions.
[0.2.96] - 2022-03-18¶
Deprecated¶
survey_v1.register
is deprecated and will be removed in version 0.3. Usesurvey_v1.create
instead.
[0.2.95] - 2022-03-29¶
Added¶
- Enum to represent dimensionality of the seismic file.
Changed¶
- Registering a file allows the specifying the dimensionality of the data.
[0.2.92] - 2022-03-15¶
Added¶
SourceSegyFile
,SegyOverrides
have a__repr__
File
,SeismicStore
,Seismic
,Partition
now quote strings in__repr__
.
[0.2.91] - 2022-03-14¶
Changed¶
- file_seismic
search
andget
return the new data typeSourceSegyFile
instead ofFile
. This is a breaking change.
[0.2.90] - 2022-02-07¶
Changed¶
- survey_v1
edit
now interfaces withSeismicService.EditSurvey
. The signature has been modified to conform with the new interface.
[0.2.89] - 2022-02-04¶
Fixed¶
- The volume_seismic API’s get_volume_size now works also with z_range = None.
[0.2.88] - 2022-01-24¶
Changed¶
- The seismic service will now respect step sizes in get_volume calls. The volume_seismic API’s get_volume_size and get_array methods have been updated to take this into account. Calling get_array with a step size will now fail with older sdk versions.
[0.2.87] - 2021-11-18¶
Added¶
- survey_v1 now has the
create
method that interfaces withSeismicService.CreateSurvey
. The previously-usedregister
method interfaces withIngestionService.RegisterSurvey
and will be deprecated.
Changed¶
- survey_v1
delete
now also interfaces withSeismicService.DeleteSurvey
. Its behaviour should be backwards-compatible.
[0.2.86] - 2021-11-29¶
Changed¶
- The File API’s register method now allows crs to be None. If so, the crs will be taken from the file’s survey.
[0.2.85] - 2021-10-28¶
Added¶
- Introduced dedicated exception types for the GRPC status codes ALREADY_EXISTS and FAILED_PRECONDITION. These errors are usually returned when API requests would create an object with an identifier that is already present in the service, and when a deletion requests attempts to delete an object that contains other objects that must be removed first, respectively.
[0.2.83] - 2021-10-01¶
Fixed¶
- Use the certifi Python package for root certificates to improve compatibility with Let’s Encrypt certificates over GRPC’s default root certificates.
[0.2.82] - 2021-09-22¶
Fixed¶
- Improved support for OIDC tokens. oidc_token callables that automatically return refreshed tokens as the old ones expire will now be correctly used to obtain new tokens for every call.
[0.2.81] - 2021-09-07¶
Added¶
- SDK support for OpenID Connect authentication. OIDC may not be supported by the service yet.
[0.2.80] - 2021-09-01¶
Added¶
- The V1 Survey API now has the ability to request a specific source for a survey’s coverage (custom or calculated) when searching/listing. If no source is specified, the default behavior is to prioritize custom coverage.
- Seismic objects returned from the seismic.get/search APIs now include ‘trace_count’ and ‘created_empty’ fields, indicating the number of traces in the seismic object, and whether the seismic object was created empty to serve as a placeholder or not.
[0.2.79] - 2021-08-23¶
Added¶
- The V1 Survey API now has the ability to search by metadata using the
survey_contains_exact_metadata
argument, which filters surveys depending on whether their metadata is an exact superset of the provided metadata. It is case sensitive.
[0.2.78] - 2021-08-11¶
Changed¶
Partition
objects will no longer have a populatedseismics
field, as it has been deprecated. Theseismic_ids
field will have a list of seismic ids that are included in the partition, and seismics can be searched for by partition id.
[0.2.77] - 2021-08-02¶
Added¶
seismic.create
has a new parametercopy_metadata
which, when true, will ignore the provided metadata and instead copy it from the underlying seismic store.
[0.2.76] - 2021-07-13¶
Added¶
seismic.create
has a new parameterempty
which, when true, will create an empty seismic object
[0.2.73] - 2021-07-09¶
Changed¶
- Allow grpc maximum message size to be configured when initializing client, e.g,
CogniteSeismicClient(..., max_message_size_MB=20)
. Please be mindful when configuring the maximum message size to be above the default of 10MB that the client may incur significant memory costs if a message is received whose size is now accepted by that new maximum. This property acts as a safety valve to prevent excessive memory usage in the unlikely event of the client receiving a significantly large message.
[0.2.72] - 2021-06-30¶
Added¶
- Keyword argument
no_retries
onclient
constructor that disables auto-retry on failure
[0.2.71] - 2021-06-29¶
Changed¶
- Restore
survey_*
as args for v1 Survey APIs, for backwards compatibility until the next minor version bump. - Restore
client.seismics
andclient.seismicstores
for the same reason.
[0.2.70] - 2021-06-22¶
Changed¶
search
andlist
for seismics and seismic stores now returns a generator instead of a list.
[0.2.69] - 2021-05-28¶
Changed¶
- In v1, renamed most
file_id
,survey_name
etc to justid
andname
where appropriate.- For example, methods on
client.file
generally will omit thefile_
prefix.
- For example, methods on
- Renamed
client.seismics
toclient.seismic
, andclient.seismicstores
toclient.seismicstore
.
[0.2.68] - 2021-06-04¶
Added¶
- Now supports specifying custom survey coverage: If a custom_coverage argument is provided to survey.register() or survey.edit(), this custom coverage will now be used as the survey coverage.
[0.2.67] - 2021-05-31¶
Changed¶
- The
horizon
parameter to slab.get() has been renamed tosurface
.
Fixed¶
- slab.get() now works properly if
inline_range
orxline_range
are omitted.
[0.2.66] - 2021-05-25¶
Changed¶
CogniteSeismicClient
base_url
param now takes any valid URL, including scheme (e.g.https
) and port number. An unspecified schemes default tohttps
, a missing URL defaults toapi.cognitedata.com
, and an unspecified port defaults to443
. Paths and query parameters are discarded.
Deprecated¶
CogniteSeismicClient
’sport
andis_insecure
params are deprecated. Port and protocol information should go inbase_url
.
[0.2.65] - 2021-05-20¶
Fixed¶
- survey.register() now also properly handles the absence of the optional crs argument.
[0.2.64] - 2021-05-10¶
Fixed¶
- survey.edit() now properly handles the absence of the optional crs argument.
[0.2.62] - 2021-05-04¶
Added¶
- Survey queries now support specifying a user-defined affine transformation between bin grid (inline, xline) coordinates and projected (x, y) coordinates, to be used by all files and seismic objects in this survey.
[0.2.61] - 2021-05-03¶
Fixed¶
- Setting the
source_group_scalar_override
parameter on file.edit and file.register calls should no longer raise a ValueError.
[0.2.60] - 2021-04-29¶
Added¶
- file.edit() and file.register() now accept and return new
source_group_scalar_override
field, file.get() now also returnssource_group_scalar_override
field
[0.2.59] - 2021-04-27¶
Added¶
file_seismic
now has list, get and search endpoints- The v1 api has an overview in the examples section
[0.2.56] - 2021-03-24¶
Fixed¶
- Fixed an issue where using slab api with constant z would always result in an exception
[0.2.55] - 2021-03-24¶
Changed¶
- Slab API’s returned array dims are now (inline, crossline, z_offset)
[0.2.52] - 2021-03-12¶
Added¶
- The v1 volume_seismic API has a new method get_volume_size, to estimate the transferred size of the traces returned by get_volume
[0.2.51] - 2021-03-12¶
Changed¶
- Listing and searching seismic stores now defaults to omitting volumedefs, making the operation faster on average.
- Seismic store list has the argument
include_volume_definitions
which, when set to true, includes volumedefs in the response.
[0.2.41] - 2021-03-02¶
Changed¶
file.register
andfile.edit
functions now support cdp_x_offset and cdp_y_offset arguments for files with custom cdp_x and cdp_y offsets.
[0.2.40] - 2021-02-24¶
Removed¶
include_coverage
argument on SeismicStore and Seismicsearch()
. Usecoverage_crs
andcoverage_format
instead.
Added¶
- Can specify the CRS and format of coverage on Seismic(Store) methods
get
,list
,search
.coverage_format
is currently either “geojson” or “wkt”, and defaults to WKT.coverage_crs
defaults to the seismic(store)’s CRS.
Fixed¶
Geometry.geojson
is now a native Python object instead of a Protobuf Struct
[0.2.39] - 2021-02-15¶
Changed¶
- The v1 volume_seismic API’s get_array method now produces a masked numpy array, masks indicating where no traces exist in the seismic data set.
Fixed¶
- The CDF_PROJECT environment variable / project constructor is now documented.
- The v1 seismics.create API would fail to create seismics from volumedef based cutouts. This has been remedied.
[0.2.38] - 2021-02-05¶
Added¶
- The v1 survey API now includes access to spatial coverage data for the surveys.
[0.2.37] - 2021-02-03¶
Added¶
- The new function client.volume_seismic.get_array() will fetch trace data into a numpy array.
Changed¶
- All instances of “crossline” in the v1 sdk were renamed to “xline”
- The VolumeDef schema can now optionally include a sample_count, giving the number of samples in each trace.
[0.2.35] - 2021-01-21¶
Added¶
- VolumeDef utils, including
get_crossline_range()
andget_inline_range()
. - A short explanation on how to use VolumeDefs, located under “VolumeDef Schema” in the docs
[0.2.34] - 2020-01-20¶
Changed¶
- The default CRS for the result of the file.get_file_coverage() operation is now the file’s default CRS. Previously it defaulted to EPSG:23031 (ED50/UTM 31N). Note that the CRS of the result was always included in the response.
Fixed¶
- client.seismics.get() now includes the volume definition.
- client.partition.get() now accepts either one of the id or external_id arguments.
[0.2.31] - 2021-01-15¶
Added¶
- New argument
include_coverage
on seismic search() that includes coverage
[0.2.29] - 2021-01-11¶
Added¶
- Error types (
NotFoundError
,TransientError
,InternalError
,AuthenticationError
,InvalidArgumentError
,PermissionError
). This should allow for easier error handling in scripts. They are subclasses of the existingSeismicServiceError
, so no changes should be needed.
[0.2.28] - 2021-01-04¶
Added¶
- Updated protobuf for ingestion status
JobAPI.status
can now takefile_id
andseismicstore_id
as args.
[0.2.27] - 2021-01-04¶
Changed¶
- Updated protobuf for ingestion status
JobAPI.status
now also returns logs from ingestion of file.
[0.2.23] - 2020-12-07¶
Added¶
- VolumeDef has new methods
count_line_traces()
andcount_total_traces()
that parse the volume definition to determine how many ‘live’ traces exist on that object. - Getting a SeismicStore with
include_volume_definitions=True
enables access to these new methods viaSeismicStore.inline_volume_def
andSeismicStore.crossline_volume_def
.
Changed¶
- Renamed the argument for VolumeDef constructor to
json_payload
fromjson
[0.2.18] - 2020-11-25¶
Added¶
- search_seismic_store now has a new argument include_volume_definition. If set to false, will omit fetching volume definitions (inline and crossline).
[0.2.21] - 2020-11-25¶
Added: Tenant/project name¶
The CogniteSeismicClient now accepts the project id as an argument during construction. In time, this project id argument will be required when constructing a seismic client. For now, a warning will be printed if the client does not have a known project id.
There are two ways to set the project name for the client:
- Through the constructor as described above. For example, CogniteSeismicClient(api_key=”…”, base_url=”api.cognitedata.com”, project=”public-data”).
- Through the environment variable COGNITE_PROJECT. The value of this environment variable will be used by the client if the project argument is not defined.
[0.2.4] - 2020-10-26¶
Changed¶
We now wrap all V1 API endpoint objects as Python data types, with full type hints available.
- Primitive fields (e.g. id or external_id) will need no changes
- Lists and non-nested dicts will need minimal changes – cannot use ProtoBuf methods anymore, but can use all Python methods for the appropriate objects.
- GeoJson objects are still returned as ProtoBuf Structs – this may change in the future.
[0.2] - 2020-10-14¶
There were several inconsistencies in the naming convention in v0.1 version. The naming convention of endpoints/parameters was modified with the following rules in v0.2:
- All mentions of “iline” changed to “inline”.
- All mentions of “crossline” changed to “xline”.
- All named “id” or “name” arguments have been renamed to include the object they identify, ie “file_id”, “file_name”, “survey_id” or “survey_name”, as appropriate for the API method they belong to.
[0.1.17] - 2020-04-08¶
Changed¶
- Modified return types of
file.get_segy
file.get_segy_by_lines
file.get_segy_by_geometry
slice.get_inline
slice.get_crossline
slice.get_arbitrary_line
volume.get_cube_by_lines
volume.get_cube_by_geometry
volume.get
time_slice.get_time_slice_by_lines
time_slice.get_time_slice_by_geometry
endpoints fromlist
togenerator
.
- Changed
Trace3DList
,Trace2DList
andSurfacePointList
classes to extend fromCustomList(object)
.
Added¶
- Added
CustomList
class withload
method to save the data from generator.