- Improvements
- Adds User-Agent headers to outgoing calls to BossDB (#110)
- Adds the ability to toggle the
public
status of a Boss Resource (#109)
- Fixes
- Fixes single-index cutouts in the CloudVolume convenience volume provider (#108)
- Improvements
- Removes the
mock
library (thanks @musicinmybrain!) - Confirms that incoming upload data are C-contiguous prior to upload
- Extracts the
normalize_key
function to make slicing into convenience arrays more robust and reports voxel size relative to the requested resolution (thanks @CBroz1!)
- Removes the
- Features
- A new convenience function
array.from_images
uploads an entire directory as a new BossDB dataset
- A new convenience function
- Fixes
- Resolves a TypeError when warning in the non-cloudvolume case.
- Fixes
- Resolves an issue with cloudvolume imports on non-cloudvolume-dependent resources.
- Fixes
- Resolves an issue with accessing cloudvolume-backed public data in BossDB with ZYX/XYZ axis-ordering
- Convenience API
- Adds support for channel-level metadata using the array().metadata dict-like API (#87)
- Adds a
array().downsampled
property on the convenience API (#84) - Fixes voxel_unit getters and setters to be more consistent with convenience API constructor (#83)
- Adds data-source inference to redirect requests to the correct
Remote
(#91) - Adds a metadata interface
Metadata()
for general metadata read/write access (#92)
- Improvements
- Adds a
BossResource.public
boolean flag to mirror if a resource is publicly accessible (#89)
- Adds a
- Fixes
- Closes the multiprocessing Pool to avoid too many open files when parallelizing requests (#86)
Updates to the cloudvolume adapters, and parallelism fixes.
- Convenience API
- Adds support for uint16 image channel creation with the convenience API (#71)
- Now, the
array
class reports voxel size as afloat[3]
andvoxel_units
as a string (e.g. "nanometers") to match the input arguments to thearray
constructor (#83)
- Parallelism
- Fixes parallelism defaulting to n=1 (#70)
- CloudVolume
- Removes cloudvolume core dependency, and makes it an optional extra-install (#68)
- Fixes and Improvements
- Adds support for the new "queued" downsample channel status (#78)
- Adds support for z-index slicing in the convenience array API (#77)
Pip-installability fix (#67).
Updates to the convenience API.
- Convenience API
- New arguments to specify the source channel for annotation channels
- Specify BossDB config inline without special imports with
array(..., boss_config: dict)
argument - Specify descriptions for newly created resources when calling
array(..., create_new=True)
.
This version introduces the convenience API which uses numpy-like indexing.
This build switches intern
CI to GitHub actions, and now tests both 3.6 as well as 3.7. Python 2.7 testing is no longer supported.
- Convenience API (#48)
- This adds support for the simple
intern.array
interface which mocks the numpy array API for getters and setters.
- This adds support for the simple
- Add support for DVID and cloud-volume hosted data with
DVIDRemote
andCloudVolumeRemote
. (#46) - Add parallelism to
BossRemote#get_cutout
calls by passingparallel=True
orparallel=<int # of jobs>
as an argument. (#52) - Addition of a
MeshService
for local meshing of 3D segmentation data.
v0.10.0 is the last version of
intern
that support Python 2.x. If you need Python 2 support, you must runpip install intern==0.10.0
. The development team does not anticipate further development for Python 2, and support for Python 2 environments will be discontinued. In future versions ofintern
, it will be assumed that the user is on Python 3 (3.6 or above).
- Allow the "~" character in config-file path pointers when creating a new
BossRemote
BossRemote#get_channel
now supports a single string argument of the formbossdb://[collection]/[experiment]/[channel]
. Likewise, you can pass this string directly to, e.g.,BossRemote#get_cutout
as the first argument.- Chunked downloads and uploads enable arbitrarily large cutouts from
BossRemote
.
intern incorporates the access_mode parameter when grabbing cutouts of small AND large sizes. Backwards compatibility with previous versions that make use of the no_cache boolean parameter. Whenever a user makes use of the no_cache param intern will return a deprecation warning. The translation occurs in intern/remote/boss/remote.py and should be removed in future major version upgrades. intern now uses an enum class to limit the possibility of cache modes.
- access_mode = CacheMode.cache - Utilizes the cache and checks for dirty keys
- access_mode = CacheMode.no_cache - Does not check the cache but does check for dirty keys
- access_mode = CacheMode.raw - Does not check the cache and DOES NOT check for dirty keys
This is for functions:
- intern.remote.boss.remote.py:
BossRemote.get_cutout()
- intern.serivce.boss.baseversion.py:
BaseVersion.get_cutout_request()
Convenience functions added:
BossRemote#get_experiment()
BossRemote#get_coordinate_frame()
BossRemote#get_neuroglancer_link()
get a neuroglancer URL from cutout argumentscreate_cutout
will now chunk large cutouts into smaller components to eliminate HTTP size limitation and timeout errors.
- Intern now forwards no_cache option when breaking apart large cutouts.
- Modified the intern
get_cutout()
no_cache
option to default to true instead of false
- BugFix: Removed extra slash after no-cache option on URL that was causing issues.
- Added new no-cache option to the
get_cutout(... no_cache=True)
This option will pull directly from the S3. It should be used when reading large amounts of data at once. Using this option can also increase throughput as the cache can become a bottleneck if a large amount of data is cycled through the cache
- Merged PR #14 from ben_dev - correctly populate downsample_status of ChannelResource.
- Relaxed requests dependency to >= 2.11.1.
- Added BossRemote.get_channel() to ensure users use a fully specified channel with the cutout service.
- Allow experiment time units to be unspecified.
- API v1
- Fix recursion loop when breaking cutout into chunks.
- Fix x-y mistake in chunking.
- Coordinate frame hierarchy methods now
anisotropic
andisotropic
. - Channels now have downsample_status.
Rebranded as intern.
- Made Python 2 compatible.
- Version no longer controlled by resources. Now passed into BossRemote constructor.
- Imports simplified.
- Older Boss API support removed.
- Config dictionary can be used instead of a config file.
- Cutout range args now passed as a list of ints instead of a string.
- Separate list methods for each resource type provided for convenience.
- JHU ndio dependencies removed from requirements.txt.
- Additional legacy code removed
- Can provide config for each service or globally under the [Default] section of the config file
- Can provide config via environment variables
- Changed from a noun_verb convention to a verb_noun convention for function names
- User management now done through entirely through SSO (Keycloak) server.
- Resource, group, and permission API updates reflected in intern
- New
ndio.remote.boss.remote.Remote
methods that support user and access management: group_create()
group_delete()
group_get()
group_add_user()
permissions_add()
permissions_get()
permissions_delete()
user_get_roles()
user_add_role()
user_delete_role()
user_get()
user_get_groups()
user_add()
user_delete()
- Only the name and description of a coordinate frame, can be changed, after creation.
ndio.remote.boss.remote.Remote
method changes:- Exceptions are raised when any non-2xx response received from the Boss.
- Methods that previously returned True to indicate success no longer return a value. Instead, an exception indicates failure (see above).
project_create()
returns anndio.resource.boss.resource.Resource
instead of a dictionary.project_get()
returns anndio.resource.boss.resource.Resource
instead of a dictionary.project_update()
returns anndio.resource.boss.resource.Resource
instead of a bool.ndio.resource.boss.resource.ChannelResource
no longer allows the uint64 data type.
Initial release.