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
Addedfor new features.Changedfor changes in existing functionality.Deprecatedfor soon-to-be removed features.Removedfor now removed features.Fixedfor any bug fixes.Securityin 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_boundsandTracesAPI.get_arraynow support pre-stack data.
[0.3.18] - 2023-03-22¶
Fixed¶
- gRPC errors not getting converted to
cognite.seismic.data_classes.errorstypes 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
protobufhas 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.SeismicDataTypeduring registration.traces.get_segyandtraces.stream_tracesnow accept atrace_group_extentto filter on sub-traces, using thecognite.seismic.SeismicTraceGroupExtenttype.
[0.3.13] - 2022-11-11¶
Added¶
- Survey, Partition, SourceSegyFile, Seismic, SeismicStore can be searched for by
last_modified. Survey and Partitionsearch()accepts alast_modifiedargument of typeSearchSpecLastModified, while SourceSegyFile, Seismic, and SeismicStoresearch()search_specargument can accept the same.
[0.3.11] - 2022-10-14¶
Changed¶
traces.get_segywill now automatically try to resume downloads if the connection resets- Streaming endpoints will now raise exceptions from
cognite.seismic.errorsinstead of native grpc exceptions, similar to the existing behavior of non-streaming endpoints. - Survey, Partition, SourceSegyFile, Seismic, SeismicStore objects now have a
last_modifiedfield.
[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¶
Seismic3dExtentnow has utility methods to simplify working directly with extents.get_inlineandget_xlineenumerate all inlines or crosslines.get_inline_rangeandget_xline_rangecalculate the minimum and maximum values of inlines or crosslines.get_bounding_boxcalculates 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.searchproperly raisesNotFoundErrorrather than a gRPCNotFoundstatus.
[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_idfield 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.registermethod. - The new
tracesAPI has been added as a unified way to stream trace data from both 2D and 3D objects, replacing the oldvolume_seismicAPI. Theget_volumefunction is replaced with thestream_tracesfunction, whileget_volume_sizeis replaced byget_trace_bounds.get_arrayhas also been generalized to support 2D data. - The
SeismicExtentclass 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 oldVolumeDefschema which it replaces for 3D data. - Similarly, the
SeismicCutoutclass hierarchy has been added to describe how seismics are cut out from their seismic stores.
Changed¶
seismicstore.search,seismic.search, andfile.searchuse asearch_specargument for distinguishing between search types rather than having amodeargument as a switch.get_allwas 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
uuidproperty. - Project name is now required when initializing the API client.
in_wktargument replaced withcoverage_formatfor methods using coverage.coverage_formatexpects one of"wkt"or"geojson", defaulting to the latter.
Removed¶
- All v0 apis were removed. All v1 apis were renamed (e.g.
client.file_seismicis nowclient.file). - The
volume_seismicAPI has been removed in favor oftracesAPI - The
VolumeDefjson schema has been removed in favor ofSeismicExtent. - The
Fileclass has been removed in favor ofSourceSegyFile, which is better adapted to the 2D / 3D split. - Removed the deprecated argument
include_coveragefromSeismicAPI.searchandSeismicStoreAPI.search. - Removed backwards compatibility for v1 Survey APIs.
[0.2.103] - 2022-07-07¶
Added¶
file_seismic.searchnow supports searching for files by the containing survey- The
SeismicStoreclass now has acrsattribute
[0.2.102] - 2022-05-13¶
Added¶
SeismicStorehas fieldingested_source_filewhich includes more information about the file, primarily concerned with adding 2D data support.
[0.2.101] - 2022-05-12¶
Changed¶
seismics.getraises specific exceptions (NotFoundError,InternalError,ValueError) instead ofException.
[0.2.99] - 2022-05-03¶
Added¶
seismicstore.searchhas 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.registeris deprecated and will be removed in version 0.3. Usesurvey_v1.createinstead.
[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,SegyOverrideshave a__repr__File,SeismicStore,Seismic,Partitionnow quote strings in__repr__.
[0.2.91] - 2022-03-14¶
Changed¶
- file_seismic
searchandgetreturn the new data typeSourceSegyFileinstead ofFile. This is a breaking change.
[0.2.90] - 2022-02-07¶
Changed¶
- survey_v1
editnow 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
createmethod that interfaces withSeismicService.CreateSurvey. The previously-usedregistermethod interfaces withIngestionService.RegisterSurveyand will be deprecated.
Changed¶
- survey_v1
deletenow 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_metadataargument, 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¶
Partitionobjects will no longer have a populatedseismicsfield, as it has been deprecated. Theseismic_idsfield 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.createhas a new parametercopy_metadatawhich, when true, will ignore the provided metadata and instead copy it from the underlying seismic store.
[0.2.76] - 2021-07-13¶
Added¶
seismic.createhas a new parameteremptywhich, 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_retriesonclientconstructor 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.seismicsandclient.seismicstoresfor the same reason.
[0.2.70] - 2021-06-22¶
Changed¶
searchandlistfor 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_nameetc to justidandnamewhere appropriate.- For example, methods on
client.filegenerally will omit thefile_prefix.
- For example, methods on
- Renamed
client.seismicstoclient.seismic, andclient.seismicstorestoclient.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
horizonparameter to slab.get() has been renamed tosurface.
Fixed¶
- slab.get() now works properly if
inline_rangeorxline_rangeare omitted.
[0.2.66] - 2021-05-25¶
Changed¶
CogniteSeismicClientbase_urlparam 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’sportandis_insecureparams 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_overrideparameter 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_overridefield, file.get() now also returnssource_group_scalar_overridefield
[0.2.59] - 2021-04-27¶
Added¶
file_seismicnow 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_definitionswhich, when set to true, includes volumedefs in the response.
[0.2.41] - 2021-03-02¶
Changed¶
file.registerandfile.editfunctions 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_coverageargument on SeismicStore and Seismicsearch(). Usecoverage_crsandcoverage_formatinstead.
Added¶
- Can specify the CRS and format of coverage on Seismic(Store) methods
get,list,search.coverage_formatis currently either “geojson” or “wkt”, and defaults to WKT.coverage_crsdefaults to the seismic(store)’s CRS.
Fixed¶
Geometry.geojsonis 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_coverageon 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.statuscan now takefile_idandseismicstore_idas args.
[0.2.27] - 2021-01-04¶
Changed¶
- Updated protobuf for ingestion status
JobAPI.statusnow 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=Trueenables access to these new methods viaSeismicStore.inline_volume_defandSeismicStore.crossline_volume_def.
Changed¶
- Renamed the argument for VolumeDef constructor to
json_payloadfromjson
[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_segyfile.get_segy_by_linesfile.get_segy_by_geometryslice.get_inlineslice.get_crosslineslice.get_arbitrary_linevolume.get_cube_by_linesvolume.get_cube_by_geometryvolume.gettime_slice.get_time_slice_by_linestime_slice.get_time_slice_by_geometryendpoints fromlisttogenerator.
- Changed
Trace3DList,Trace2DListandSurfacePointListclasses to extend fromCustomList(object).
Added¶
- Added
CustomListclass withloadmethod to save the data from generator.