Shard support - #177
Merged
Merged
Conversation
…ay be needed when multiple codecs are supported
* add a test
…nto wip/codecsReadData
* remove duplicate license header * add constants
…ip/codecsReadData # Conflicts: # src/main/java/org/janelia/saalfeldlab/n5/HttpKeyValueAccess.java
…tation refactor: reduce scope of shard capability. Only support full Shard writes (InMemoryShard) and partial shard reads (VirtualShard)
fix(test): shardIndex writeRead
…ip/codecsReadData
* refactor tests in shardstuff
* moved to PositionValueAccess
* not Function * because the function is DatasetAttributes.relativeBlockPath
* Slices * SliceTrackingReadData
Co-authored-by: Caleb Hulbert <cmhulbert@gmail.com>
Co-authored-by: tpietzsch <tobias.pietzsch@gmail.com>
commit 552d416f07197325a5341d8f2c69b97bd8aa7521
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Mon Nov 3 15:07:59 2025 -0500
chore!: rm tentative blockExists method stub
commit 1bb10bb098c67ced598d957ce0f7395843f29525
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Mon Nov 3 15:02:22 2025 -0500
style!: remove unused classes
* Slices
* SliceTrackingReadData
commit 619f308b7ee9d0dd3d85d4e9e0d128ea466a0ecb
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Mon Nov 3 15:01:39 2025 -0500
style!: rm unused method registerGson
commit 06a1e2d60a6ecbe52f114c92120631825229a29e
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Mon Nov 3 11:06:31 2025 -0500
test: rm unused testWriteReadShardOnUnshardedDataset
commit ef2de58ec7141a02e15cd5a33543ae67df99f609
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Mon Nov 3 10:56:58 2025 -0500
refactor!: PositionValueAccess takes DatasetAttributes
* not Function
* because the function is DatasetAttributes.relativeBlockPath
commit ebca3401df63870376e32f6362fcd26f90a396c8
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Mon Nov 3 10:20:11 2025 -0500
BREAING!: rm GsonKeyValueN5Reader.absoluteDataBlockPath
* moved to PositionValueAccess
commit 0dff84989df182e8a75449efc6f8f5e514585aa0
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Mon Nov 3 10:18:55 2025 -0500
feat!/test: clean up N5Writer delete implementation
* refactor tests in shardstuff
commit 5f23b09d592db214a4c4af2f34bd5135819e7ecc
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Mon Nov 3 10:02:32 2025 -0500
test: clean up ShardTest
commit 1ea9da21cf5f731e7856254c75ff24f29fda1b4b
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Fri Oct 31 16:16:59 2025 -0400
doc: correct DatasetAttributes.getDatasetAccess
commit 2e5d86b83f65e33a1f7b52542682c1e1fb6f043b
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Wed Oct 29 15:14:29 2025 -0400
test: update tests to work with less accessible DatasetAccess
commit 162309cbcf6c544f5659262e37ffda42cce2a5da
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Wed Oct 29 15:12:31 2025 -0400
feat: add getNestedBlockGrid method to DatasetAttributes
* getDatasetAccess no longer public
commit 1de7b706598640f06a39f330e6d9a6667075c2d8
Author: Caleb Hulbert <cmhulbert@gmail.com>
Date: Wed Oct 29 14:00:01 2025 -0400
fix(test): don't specify relative paths for createTempN5Writer; in this case, default is fine
commit 380964c6d4cae6bd991c80a6c8c51c92112062ca
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Fri Aug 16 14:00:54 2024 -0400
test: start of partial read benchmarks
Signed-off-by: Caleb Hulbert <cmhulbert@gmail.com>
commit ddcc821f153bfa997d212ef148bc3d53df999b85
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Wed Oct 29 13:05:37 2025 -0400
test: add extensible method that defines illegal characters
commit 152aef6b8f50f6a3153b69e0a0cf9ec219c01efe
Merge: e9ece6e 7fe7749
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Tue Oct 28 10:35:00 2025 -0400
Merge branch 'development' of github.com:saalfeldlab/n5 into development
commit e9ece6e21d2fdd47ecd9461100b9ea04d72ba0a5
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Tue Oct 28 10:34:47 2025 -0400
doc: improve Nesting.positionInSubGrid doc
commit a4f8b4c7fee2f2cdefbfd63e45cde2697c0dfb9d
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Tue Oct 28 10:34:25 2025 -0400
test: generalize ShardTest for n5-zarr re-use
commit 7fe774905e05ec9d5432881298d67b5c128d5e34
Author: Caleb Hulbert <cmhulbert@gmail.com>
Date: Fri Oct 24 16:59:54 2025 -0400
feat(test): change test size defaults so the dimensions are larger than the blocks;
add tests for blocksize/dimensions edge cases
commit 574127b32b4cd4f37430901edfdc70c4e68c086c
Merge: 14cd4f5 8442671
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Thu Oct 23 15:19:48 2025 -0400
Merge branch 'feat/attributesKey' into development
# Conflicts:
# src/main/java/org/janelia/saalfeldlab/n5/DatasetAttributes.java
# src/main/java/org/janelia/saalfeldlab/n5/GsonN5Reader.java
# src/main/java/org/janelia/saalfeldlab/n5/GsonUtils.java
# src/test/java/org/janelia/saalfeldlab/n5/http/HttpReaderFsWriter.java
commit 844267138974525b795e0573ba8b136641f9e1fa
Merge: f1e82a7 41fb0e5
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Thu Oct 23 14:37:44 2025 -0400
Merge branch 'master' into feat/attributesKey
commit 14cd4f5762ca1e91aa3778104d5cb35f43e911d0
Merge: 685eabe 41fb0e5
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Thu Oct 23 13:57:46 2025 -0400
Merge remote-tracking branch 'origin/master' into development
# Conflicts:
# src/main/java/org/janelia/saalfeldlab/n5/KeyValueAccessReadData.java
# src/main/java/org/janelia/saalfeldlab/n5/readdata/segment/SegmentedReadData.java
# src/test/java/org/janelia/saalfeldlab/n5/readdata/segment/SegmentTest.java
commit 685eabe960664881bd4a499d229f261c10364220
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Wed Oct 22 22:03:31 2025 -0400
feat: add NestedGrid.positionInSubGrid
commit d53b7a6de4276ab9caf03142d5e75733f7a01156
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Wed Oct 22 17:56:30 2025 -0400
test: additions to ShardTest
commit 26576f248c324fd7054e96d6010a2dabc83405b5
Merge: 8b9a85f fc4a1ec
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Wed Oct 22 17:05:32 2025 -0400
Merge branch 'development' of github.com:saalfeldlab/n5 into development
commit 8b9a85fe039c6dbd2b8d8fb977aa7a2c85b50f46
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Wed Oct 22 17:05:28 2025 -0400
test: more NestedGrid tests
commit fc4a1ec97e2642a19a1cc977bb6502ef2998c659
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Wed Oct 22 22:37:58 2025 +0200
clean up
Better to not have a default implementation for requireLength().
The details are different and tricky enough between ReadData
implementations to encourage thinking about every case individually.
commit 8a491ef41a986d7c347dd2f7b019ee97cbe54221
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Wed Oct 22 22:29:51 2025 +0200
typo
commit 5eab7660bfb74cbac3fda4a773f0b330fd0d3ff4
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Wed Oct 22 16:09:28 2025 -0400
refactor/doc: NestedGrid
* rename NestedGrid fields
* add some basic javadoc
commit 0b8ffed749064807ea8ecd4bbf97f672a8546b1f
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Wed Oct 22 22:06:37 2025 +0200
javadoc
commit 15c5768a1e606fd5ab850e7cffe07d42dd1ab03c
Merge: 7120b38 387a10b
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Wed Oct 22 13:42:38 2025 -0400
Merge branch 'development' of github.com:saalfeldlab/n5 into development
commit 7120b3875f06f132ae19f6d7d5ac75634f4699c5
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Wed Oct 22 13:42:30 2025 -0400
test: update getTestAttributes given dstAttribute changes
commit 9186e2d066caa7597c93ce72fee845d01874ff8b
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Wed Oct 22 13:42:12 2025 -0400
fix: DefaultShardCodecInfo's serialization
* default serialization should be for zarr
commit 6c99a00dbe75b306f9f2f6a241341a0a81db3b19
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Wed Oct 22 13:41:23 2025 -0400
wip!: DatasetAttributes changes
* remove constructor with shard size
* createDatasetAccess method now protected (for zarr)
* rm defaultShardCodecInfo (n5 format does not use it)
commit 80d9e01dab6e10802f5fff0df13f6b187b0de1ff
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Wed Oct 22 13:39:45 2025 -0400
fix: IdentityCodec implements DeterministicSizeDataCodec
commit 387a10b8b32dad10ed97cfb2c87597b29b968698
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Wed Oct 22 13:00:36 2025 +0200
javadoc
commit e980a041f8689c857b40d3db6d4633fe5504de47
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Wed Oct 22 12:17:17 2025 +0200
Add static Range.equals() to check two Ranges for equality
commit d987cd461608fce2e3415c00175cefc63d8cc3f7
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Wed Oct 22 12:16:40 2025 +0200
augment and document concatenate test
commit de5ec1a98f710d02018a4b48202142866cd49081
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Wed Oct 22 10:30:22 2025 +0200
refactor: rename Concatenate to ConcatenatedReadData
commit f807bd767f86ec4f2e157a9b9754e79ffb3dcec3
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Tue Oct 21 21:51:52 2025 +0200
javadoc
commit 81a4890c9f5a7b2a02db18c9d894393ff0a65eff
Author: Caleb Hulbert <cmhulbert@gmail.com>
Date: Tue Oct 21 13:03:22 2025 -0400
fix: return empty list for readBlocks over nonexistent blocks, not null
commit a4ea057148cc54f2d29ef24fb435a9af2d491ce1
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Tue Oct 21 16:57:53 2025 +0200
refactor: rename SegmentLocation to Range and move to readdata package
commit 6fb023c95250419816385601834a32b8c73608f0
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Tue Oct 21 16:49:31 2025 +0200
refactor: Make DefaultSegmentLocation a local class
commit d3b111a3f0a14f4edb8ddfab9d4e1ac8f94ca9ef
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Tue Oct 21 13:41:30 2025 +0200
Use SegmentLocation.at instead of constructor
commit c8f0cad53778fa55b228e74bc16dd94c777e8e21
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Tue Oct 21 13:24:44 2025 +0200
clean up imports
commit 4d2d201413fb6361e47747565ab101c5c136033f
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Tue Oct 21 13:11:13 2025 +0200
javadoc
commit 5a1d57c5ce0803d59033c478310091495d96a239
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Tue Sep 23 21:31:47 2025 +0200
DefaultSegmentedReadData forwards prefetch() to delegate
commit eeca2a4f02b8aab864c1d7823655ff2dcf3e2f4f
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Tue Sep 23 21:28:00 2025 +0200
Add prefetch() to ReadData interface
default implementation does nothing
commit efc6b5770d7e5a007e48d76dabc740591455a1e7
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Tue Sep 23 21:21:25 2025 +0200
Remove redundant modifier
commit 7c5b609ef74a23975a06475f51c4d41073e205ed
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Tue Oct 21 12:29:36 2025 +0200
clean up
commit 10fc3df0da66da5ac3a29ebec4c957d9bddbda4d
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Fri Oct 17 15:01:07 2025 -0400
refactor: rm old shard classes, shardstuff -> shard
commit 24a75d6006b4341862336bcfc753774b5f7fe887
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Fri Oct 17 14:22:57 2025 -0400
test: AbstractN5Test fix random seed
commit 1f13153f0301ccc7cb23c97f04b05eace6b261d3
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Fri Oct 17 14:20:27 2025 -0400
refactor: rename ShardedDatasetAccess to DefaultDatasetAccess
* move creation into DatasetAttributes
commit 16cd811e3d41944b73a6bdbcc3bb82948a5413b2
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Thu Oct 16 13:04:24 2025 -0400
feat: StringDataBlock uses UTF_8 encoding
commit ace0b16a439ac9387cb89ad5b6ef1a4f905d4476
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Thu Oct 16 10:52:42 2025 -0400
test: remove hard-coded compressor for testOverwriteBlock
commit 61e6075ab9bb112bf0aad86f2b0cf09d10f933cc
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Thu Oct 16 10:52:25 2025 -0400
fix: NameConfig.Names should not collid with CompressionType name
* because Compression is also a DataCodecInfo
* causing serialization issues for zarr
commit 6e2dfd364acb68c859e281d3c4f7b514f05e33db
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Tue Oct 14 16:41:38 2025 -0400
feat: DatasetAttributes can map grid positions to relative path
* necessary for zarr's dimensionSeparator
* use this in PositionValueAccess
commit f5385ba686be1123dde7871f791dc04c6a45b739
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Tue Oct 14 16:34:38 2025 -0400
feat: add block / data codecinfo getters
* useful for zarr
commit e73ecd3ee41b88e6e02fbf2ff07ba20bd339696b
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Tue Oct 14 16:34:06 2025 -0400
DatasetAttributes clean up
commit 98d7618080fca32357f382822bb99a38ee297a11
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Tue Oct 14 16:32:32 2025 -0400
n5.list returns a sorted list
commit feb70afebd049746b95c954952bc5b11a47b9341
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Tue Oct 14 16:32:12 2025 -0400
createDataset takes Block/DataCodecInfos
* and has a default BlockCodecInfo
* guard against null dataCodecInfos
commit a379ed400bc17351b54d85019b787aa7e08de5ab
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Tue Oct 14 16:29:44 2025 -0400
remove read/write Shard implementations
commit 901642c0d78b41e5d7084fa898ad2cb3e503c9c0
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Tue Oct 14 16:24:14 2025 -0400
test: ignore testWriteInvalidBlock for the moment
commit 493db08e279ebe577cdf90f001c8b717495835aa
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Tue Oct 14 16:23:03 2025 -0400
remove read/write/delete Shard interface methods
commit c940ebbb5b641c2d40f12792edab3ce694a68807
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Tue Oct 14 16:17:22 2025 -0400
style: rm unused dependencies
commit 7751fade975c1222aa9c4969bbae687c34a1fedd
Merge: 3dcb8f0 ff994d4
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Wed Oct 8 18:07:10 2025 -0400
Merge branch 'wip/nesting-into-development' of github.com:saalfeldlab/n5 into wip/nesting-into-development
commit 3dcb8f0c28271c54e845d74641aae63e6ca81a63
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Wed Oct 8 18:06:28 2025 -0400
test: start backward compatibility tests
* check that old data can be read
* check that written data matches some specfied version
* adds legacy data from previous major versions
* adds scripts to create data for future versions
commit ff994d4c4bf7b222d856fcfd6aea7669806d0a61
Author: Caleb Hulbert <cmhulbert@gmail.com>
Date: Mon Oct 6 16:11:02 2025 -0400
feat: nested implementation of readBlocks/writeBlocks
commit 2091dad4ed8682579d3a37c2dd71176262d9d2ee
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Mon Oct 6 16:13:38 2025 -0400
make DatasetAccess transient
commit e1725361db21fb66d019135492291ff9e7856fff
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Mon Oct 6 16:09:41 2025 -0400
partially working ShardTest
commit 8f7f5da363ee52caa292c8cae982562d4547ee07
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Mon Oct 6 16:09:30 2025 -0400
feat: serialization for DefaultShardCodecInfo and RawCompression
commit 6232eda77537e3ba82276de3e64cd837de9be0c2
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Fri Sep 26 08:24:33 2025 -0400
fix: ShardedDatasetAccess set existingData to null if no key
commit e61b513f0a0fa164663c75693ecac65c30c2e357
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Wed Sep 24 21:54:57 2025 -0400
fix: null check on existingData in writeBlockRecursive is not enough
* when the existingData is a LazyReadData
commit 1db5b73211e25f1b596d58724cf1f7afb3cca52b
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Wed Sep 24 21:53:55 2025 -0400
fix: ShardedDatasetAccess create method with validation
commit 3d97e94131531eead8604acb21af6ac89fe25401
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Wed Sep 24 15:50:17 2025 -0400
wip: tmp comment shard related things
commit 07b4b811cbcf7d809a97c2e4e3ac1697d65a19a6
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Wed Sep 24 15:50:01 2025 -0400
fix: DatasetAttributes build dataCodecInfos from shard size
* tmp commenting out some shard methods
commit 10b87c2166f1499f4fe10bc4cb2003463f4bf75d
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Wed Sep 24 15:42:00 2025 -0400
feat: add NestedGrid.getBlockSize
commit ec27cb595471dd146ba319260deca06245c4b4be
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Wed Sep 24 15:38:06 2025 -0400
fix: Nesting blockSize size checks were backwards
commit 1861cc1891ca3bd4b79c3dc80dc0ae5263918024
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Wed Sep 24 12:02:42 2025 -0400
fix: use NestedGrid for error checking
* before building BlockCodecs
commit 552d7123332f94819aea30b78fdd5d4c9fbc2edb
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Wed Sep 24 11:58:00 2025 -0400
fix: NestedGrid validates blockSizes
commit 8cba4f9face221e30f0a3b4bec98890f273d00ba
Merge: 3ac4f2f 39f1c8a
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Tue Sep 23 15:24:19 2025 -0400
Merge remote-tracking branch 'origin/nesting' into wip/nesting-into-development
commit 3ac4f2fa01e3e7034a9d46a34b0e033663b1b00a
Merge: f255fd8 6dec879
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Tue Sep 23 15:23:48 2025 -0400
Merge branch 'nesting' into development
# Conflicts:
# src/main/java/org/janelia/saalfeldlab/n5/DatasetAttributes.java
# src/main/java/org/janelia/saalfeldlab/n5/GsonKeyValueN5Reader.java
# src/main/java/org/janelia/saalfeldlab/n5/GsonKeyValueN5Writer.java
# src/main/java/org/janelia/saalfeldlab/n5/codec/BlockCodecInfo.java
# src/main/java/org/janelia/saalfeldlab/n5/codec/N5BlockCodecInfo.java
commit 39f1c8a4c69acef654c21180f2899e7ad29c3fd5
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Mon Sep 22 22:45:21 2025 +0200
minimal prefetch implementation
commit 97098890e371a5bf166c5fd76596bc56e43ab2a3
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Mon Sep 22 22:36:09 2025 +0200
Add (empty) prefetch method
commit cc1312a808543b01b06b5025f4e8a0c53e3a3ee6
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Mon Sep 22 11:31:52 2025 +0200
WIP: Always use SliceTrackingReadData in SegmentedReadData wrapper
commit 2082f86e564970e0769f4334146b3f67d43709df
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Mon Sep 22 21:51:29 2025 +0200
WIP: Add SliceTrackingReadData
commit e8ce75be41fded5cb34c047758ac421222aba4bf
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Mon Sep 22 21:51:05 2025 +0200
Slice prefetching math and tests
commit db1928dbf6bef9240eaf2ab3d26a83ff521e4950
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Mon Sep 22 21:47:32 2025 +0200
Revise SegmentLocation
Add TODO for potential renaming: SegmentLocation will be uased in other
instances that require a (offset, length) pair. Therefore, it should
probably be renamed to "Range" or similar.
Add convenience method end() == offset() + length().
Add equals/hashCode for DefaultSegmentLocation.
commit 6dec87911fc7c7b9bc20727179ba020195409914
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Wed Sep 17 20:00:46 2025 -0400
feat!: use DatasetAccess instead of BlockCodec
* rm getBlockCodecInfo and getBlockCodec from DatasetAttrubutes
* add getDatasetAccess
* use getDatasetAccess in readBlock / writeBlock
* add PositionValueAccess wrapping KeyValueAccess
commit 373c0ecf3438e121b1e87ca202be1ec4272715de
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Wed Sep 17 19:58:49 2025 -0400
fix/test: ReadData test for length vs requiredLength
commit 6b284e0746a47946df44fa0848cb9a39c2ab0b8c
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Sat Sep 13 14:38:54 2025 +0200
RawCompression is a DeterministicSizeDataCodec
commit 73042ccb6c4bd209335bd11d60d24a6e79f6a44b
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Sat Sep 13 14:36:52 2025 +0200
Concatenation of DeterministicSizeDataCodec
commit ce464735a092f78ed4e9dbc61902777db38d9aa3
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Fri Sep 12 23:41:14 2025 +0200
Add BlockDodec.encodedSize(int[]) and implementations
commit 500f600dcbf20e946baadebab430c9d3a0d13261
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Fri Sep 12 23:17:40 2025 +0200
clean up
commit f9645d8762d708e17956fa1eb6b14c1161aa0d61
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Fri Sep 12 23:17:33 2025 +0200
MAke ShardIndex package-private
commit ca0c9f87f42b88ac38dab7108eaf3b6bca8c6ac9
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Fri Sep 12 23:17:18 2025 +0200
add TODO
commit cba45a4c97ca24a48cfc809c9db1131bcbaaf9b8
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Mon Sep 8 22:39:33 2025 +0200
refactor
commit 76c83c041a48823357b9fbed8304494c2fbf66c2
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Mon Sep 8 22:37:28 2025 +0200
refactor
commit dad4adc4ba1d8fe715458b1983a55afcd32076d8
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Mon Sep 8 22:17:11 2025 +0200
refactor
commit 9627749976b618f6fce798b80db42d63661ad3eb
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Mon Sep 8 22:03:00 2025 +0200
Clean up
commit 6531f00b3d878f19a3dd62faa9e706d20dccae4d
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Mon Sep 8 21:59:17 2025 +0200
Add some TODOs
commit 35166d8980a9adccafd88f0772edfb51d9e30d22
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Mon Sep 8 21:50:46 2025 +0200
WIP deleteBlock
commit e233eab29c7cfd2ca86ade6336b283ddd60354c7
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Mon Sep 8 18:10:47 2025 +0200
WIP testing
commit 09000189aadddce45b6176035a0cc72898fb6c93
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Mon Sep 8 17:27:49 2025 +0200
bugfix: ReadData should know its length() after writeTo(OutputStream)
commit 0e00feaae6bebc2845de6bb27be09c28ffc549e1
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Mon Sep 8 17:23:59 2025 +0200
WIP testing
commit 8fc92447f9121bf35ce300b6edc663ad85f46054
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Mon Sep 8 16:40:37 2025 +0200
WIP
commit b482a4b320bf1b6d417b92872830cb94b45d4c69
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Mon Sep 8 13:24:16 2025 +0200
WIP DatasetAccess<T>
commit 353d2ac314c077c5696780c8c7f10b046a6ea12f
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Mon Sep 8 10:28:07 2025 +0200
WIP
commit a9d9500f230cc28bb935508eca1643a6b5fc6e50
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Sun Sep 7 22:12:10 2025 +0200
DefaultShardCodecInfo
commit 524b2e75055d6d3c71a98031a9a7a623fbb9d5bf
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Sun Sep 7 22:02:53 2025 +0200
WIP dummy CodecInfos
commit d3cae93f63732c5dfdfc3e5af653348a8ab3365f
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Sun Sep 7 22:02:35 2025 +0200
WIP index CodecInfo and location
commit 9b501dd383704a140d0d48536a5f0fa00bd086cd
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Sun Sep 7 20:33:12 2025 +0200
refactor
commit 2b1a38d38a9b1306052dea1f7eaba820fd519cad
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Sat Sep 6 22:57:46 2025 +0200
clean up
commit 926348ce13d86b8792582bf6ee2b496eaa80127a
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Sat Sep 6 22:56:48 2025 +0200
WIP RawShard encoding
commit 69f27ed2590b8c1a8f0441f1986a82fff79b455e
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Sat Sep 6 22:52:25 2025 +0200
WIP RawShard encoding
commit 9f56850e25ab0baece538f283a7f731521fd9c9f
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Sat Sep 6 22:21:37 2025 +0200
refactor
commit 8f7e4c301f1268b83dffb6fbc9ecb0796eafd3a7
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Sat Sep 6 21:54:00 2025 +0200
javadoc
commit e0289b7c2f724f823ecf742f87ec2ff4c02a3954
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Sat Sep 6 21:44:12 2025 +0200
WIP RawShard deconding
commit 816924cdc243de60eee6860710714452bf7ac619
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Sat Sep 6 21:43:28 2025 +0200
javadoc
commit 30d9e4069bd6b97dab4b44d7f2b447a92861dc92
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Sat Sep 6 21:43:03 2025 +0200
clean up
commit 55a0962a501634811cf0c27f5b70c643be90f323
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Sat Sep 6 17:14:11 2025 +0200
WIP
commit 7f87a746d96c9eb828e6e59d80d23971fafd7eb1
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Fri Sep 5 13:14:25 2025 +0200
WIP ShardIndex to/from Segments
commit 455afce7be403d9101b0701f9e34070de7cdbdab
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Fri Sep 5 12:54:59 2025 +0200
WIP
commit d29a4f2e9bb219470bd9a811335052b7e72f670a
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Fri Sep 5 12:54:56 2025 +0200
Revise DataCodecInfo to take DataType and blockSize instead of DatasetAttributes
This will make more sense when instantiating from nested ShardCodecs
commit 0b2c658b9de74291439b6af9e8779b73505b4b70
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Fri Sep 5 12:52:54 2025 +0200
Segment.source() is the SegmentedReadData that originally defined it
Idea is that this allows to slice() the Segment from its source(), so we
don't need to keep the sources around explicitly in shard
implementation.
commit c4ea774f623ecfc2200c803249a125e9b650ab05
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Fri Sep 5 10:06:56 2025 +0200
WIP requireLength
commit 44d5a75c70f9501f24e932a05dc4c472d4c2f462
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Wed Sep 3 23:21:18 2025 +0200
Add ReadData.requireLength
commit d719fbbf68d8ae0700a04e1c12ef85e3c698227f
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Thu Sep 4 22:11:43 2025 +0200
Add ReadData.materialize javadoc (implementation note)
commit 9d641f358564ed27ea62ed88d79420ae9fe1fafb
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Thu Sep 4 10:41:03 2025 +0200
WIP handle ReadData.slice with length < 0
commit c6019fdbd2e1e7cd9b0f9be16fedb0e2b2aa4997
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Wed Sep 3 22:58:34 2025 +0200
WIP Concatenate
commit 686da94f0e441015b1fc1a8a6f87f9f3a28992b6
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Tue Sep 2 21:42:26 2025 +0200
WIP clean up
commit f503f55ceac628ce2f03a379604bf59560dcc492
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Tue Sep 2 21:30:17 2025 +0200
WIP slicing
commit 02013f44e7e4d3020d3e2fafd0d6f93db5a18b1b
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Tue Sep 2 12:59:48 2025 +0200
WIP
commit e32e7b07303488520735276a676e4eaa3f2b2c98
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Tue Sep 2 12:49:15 2025 +0200
Revise ReadData implementations to return itself from materialize()
commit ed349e22d6e1940feca022379a64f098985b882c
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Tue Sep 2 11:32:18 2025 +0200
WIP SegmentedReadData
commit 77048145abf9f1ceac8bc975e4119d51f9ba1088
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Mon Sep 1 09:06:13 2025 +0200
wip
commit d041601408be9486b7b26fd8568370f03aaeb4e7
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Sun Aug 31 22:43:58 2025 +0200
WIP SegmentedReadData
commit 8d2232dfda0931cad1f34fca34315133e912e892
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Sat Aug 30 22:09:12 2025 +0200
WIP nested decoding
commit 637cb52bb6b5c8a22f0903dbaed4a4bb11fc14ef
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Fri Aug 29 22:19:52 2025 +0200
WIP nested decoding again
commit 37b51ce51200adc95109a0459372d8d691137afd
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Fri Aug 29 17:24:57 2025 +0200
WIP NestedPosition
commit f255fd8e0bad4f013e5a2b819eed6e4b5c1cc520
Merge: 1dd88cb 4364b82
Author: Caleb Hulbert <cmhulbert@gmail.com>
Date: Fri Aug 29 11:14:14 2025 -0400
Merge branch 'master' into development
commit 1dd88cbddca2555f2a0d7e4af18c6a393768aec8
Author: Caleb Hulbert <cmhulbert@gmail.com>
Date: Fri Aug 29 09:52:03 2025 -0400
refactor: large renaming to align with master before merge
commit 4b65d41bd45812dad2292899a4836005bb91d520
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Fri Aug 29 12:30:02 2025 +0200
WIP NestedGrid
commit 94fdf95350dcee9f938c8cab603aaa772d4acc1f
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Fri Aug 29 08:25:50 2025 +0200
move WIP to separate package
commit d9e2f373c22a4bae9fef34cc0581a405def3fc91
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Thu Aug 28 21:56:47 2025 +0200
WIP
commit a97e604c0fb805bf3513335b8d850fde6f8f49da
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Thu Aug 28 18:28:38 2025 +0200
WIP
commit 72ede5419ff40b43883bedad94b3cd0d0643de73
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Thu Aug 28 17:40:42 2025 +0200
WIP
commit f8abd61922874d32ccd50f9b0f1b664f3949d11e
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Thu Aug 28 16:59:37 2025 +0200
WIP
commit 0f84cb5bb4842c0b5aa53c6cc6611e5f7f85441e
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Thu Aug 28 13:39:36 2025 +0200
WIP
commit 2f2e2fe0a0c46fb56d4e0fd7eeac34d865f112ce
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Thu Aug 28 11:24:29 2025 +0200
WIP BlockCodecInfo
commit 4e3d353c3201bff2aea68a3a0584728fc34331c2
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Thu Aug 28 11:24:02 2025 +0200
Remove superfluous modifiers
commit 609e4f2c0fa8f87fe796ceb9d832f598fdb01d93
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Wed Aug 27 17:35:42 2025 +0200
WIP
commit f1e82a7cb3a5a8fbbe08c40a63d83e3837cae48e
Merge: 7b9dee4 4364b82
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Wed Aug 27 10:37:30 2025 -0400
Merge remote-tracking branch 'origin/master' into feat/attributesKey
# Conflicts:
# src/main/java/org/janelia/saalfeldlab/n5/DatasetAttributes.java
# src/main/java/org/janelia/saalfeldlab/n5/GsonUtils.java
commit d78f161858986d5b30acd4aa08b312da7528b477
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Wed Aug 27 11:58:14 2025 +0200
temp
commit 7b9dee43f54c5941eb2805f00ff5134f3f48fc60
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Tue Aug 26 16:50:44 2025 -0400
feat: make registerGson an instance method
* so that it can be overrided by ZarrV3Reader
* remove static registerGson in GsonUtils
commit bce0138f64cd4fe495d05326b6d5d933acbdb03a
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Tue Aug 26 16:49:57 2025 -0400
RawBytes type should be "bytes"
* so that it can be used for zarr v3
commit 51e510ddf9d77f04d6cedc898fcbf1e9a93a99ae
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Tue Aug 26 16:47:33 2025 -0400
fix: remove attribute should use setAttributes
* not writeAttributes
* this change allows zarr v3 to re-use this method
commit 7915ed364405b4e8db79d4fb58d01ce827d7884b
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Wed Aug 20 15:37:46 2025 -0400
feat: getAttributesKey method
* enables zarr to re-use the implementation here re: attributes
commit 75772b8720a76595dc6f5fdaf39e67b78cf19c78
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Wed Aug 20 15:36:28 2025 -0400
feat: DatasetAttributes.getCodecs
* downstream implementations (zarr) need access to the bytesCodecs
commit 0fa24086bb05ab5ce7c3adb9cdb7803e09cd5934
Merge: a9e9822 45b9d71
Author: Caleb Hulbert <cmhulbert@gmail.com>
Date: Wed Aug 13 18:58:41 2025 -0400
Merge branch 'master' into development
# Conflicts:
# src/main/java/org/janelia/saalfeldlab/n5/DatasetAttributes.java
# src/main/java/org/janelia/saalfeldlab/n5/GsonKeyValueN5Reader.java
# src/main/java/org/janelia/saalfeldlab/n5/GsonUtils.java
# src/main/java/org/janelia/saalfeldlab/n5/HttpKeyValueAccess.java
# src/main/java/org/janelia/saalfeldlab/n5/NameConfigAdapter.java
# src/main/java/org/janelia/saalfeldlab/n5/codec/Codec.java
# src/main/java/org/janelia/saalfeldlab/n5/codec/ConcatenatedBytesCodec.java
# src/main/java/org/janelia/saalfeldlab/n5/codec/N5BlockCodec.java
# src/main/java/org/janelia/saalfeldlab/n5/codec/RawBlockCodecs.java
# src/main/java/org/janelia/saalfeldlab/n5/codec/RawBytes.java
commit a9e982205b3f28ba5648605e0d07e9e714d4f9aa
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Wed Jul 9 16:02:53 2025 -0400
feat: add GridIterator.positionToIndex
* useful in n5-imglib2
commit 6ed67a8a67baee5b1e1a72c4bb410ddc8dae40d3
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Tue Jul 8 13:24:56 2025 -0400
test: TestN5ShardWriter should not register Compression adapter
commit 939cb77e27738b0689634e1e0554cb04a795914f
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Tue Jul 8 13:24:38 2025 -0400
fix: InMemoryShard.fromShard returns null for null input
commit 1f93f685517069f6c189cde58fe181ed09c723c5
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Tue Jul 8 13:24:15 2025 -0400
fix: ShardingCodec.getCodecs
commit 7c5bd7e6a8cacc6785d74aeeac4112bebc6aff05
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Mon Jul 7 19:08:13 2025 -0400
fix/test: serialization of DatasetAttributes
* ensure that n5-format serialization is unchanged
* separate test of sharding functionality
commit 2be0d47d23ac256906658d69aad95df1d3750d51
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Mon Jul 7 19:04:49 2025 -0400
refactor: mark getCompression() as deprecated
* instead of private
* to make updates a little easier
commit d31ce223d63b0955e5567895b57b912dc0ed4f26
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Thu Jul 3 09:34:00 2025 -0400
feat/doc: add ShardIndex.setEmpty
* add documentation
commit 3ea57cc0f825e8ff77246646c639dd1e423e8571
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Wed Jul 2 16:27:36 2025 -0400
feat: add GridIterator.nextInt
* shards index their blocks with int[]
* avoids creating many int[]s
commit e22e50515e5aae9b91d6207bb66d3651cc5002fe
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Wed Jul 2 14:49:46 2025 -0400
refactor!: blockPositions for shard methods are shardRelative
* rename and better document methods taking blockPositions
* refactoring
* update tests
commit 936091defc91ecbd7201192383e3b0e3f56665e2
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Tue Jul 1 13:59:36 2025 -0400
refactor/test: remove ShardProperties
* move methods to DatasetAttributes
* rm ShardPropertiesTests, add DatasetAttributesTest
commit e1468f194b5d0da17ded1fa452b574f76bf96440
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Mon Jun 30 16:10:28 2025 -0400
fix/test: fix N5Codecs.getSize
* split BytesTests to ArrayCodecTests and BytesCodecTests
* better test for CodecSerialization
commit 77e86e42afaeb39dccf311361137cb9e2311a4c9
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Sat Jun 28 18:08:04 2025 -0400
feat!: add N5Writer.deleteShard
* add tests for sharded and unsharded datasets
* change return value behavior for delete methods
commit 9e115342652a14198ce75315e3862295d03d72ac
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Sat Jun 28 18:04:51 2025 -0400
feat: add Shard.blockExists
commit a541c2f03bec381b0cb41bf02f40460cebce0ea5
Author: Caleb Hulbert <cmhulbert@gmail.com>
Date: Fri Jun 27 13:08:02 2025 -0400
chore: cleanup for PR
commit d0158c2011b746a1fb242c61e27682632f40de9d
Author: Caleb Hulbert <cmhulbert@gmail.com>
Date: Fri Jun 27 10:24:05 2025 -0400
chore!: remove AsTypeCodec and related logic
commit a5c44d46f5060093b57e25605e7c8ce91d98ed1c
Merge: b1c785b 3955cdf
Author: Caleb Hulbert <cmhulbert@gmail.com>
Date: Fri Jun 27 10:12:17 2025 -0400
Merge branch 'master' into development
commit b1c785b7ee6c3df62c33843c0dc9367f75b2bfb6
Author: Caleb Hulbert <cmhulbert@gmail.com>
Date: Tue Jun 24 15:26:41 2025 -0400
doc: update README.md
commit 6ed4d8fce687c93d75767a8f00a15a4d78d41c26
Merge: 5c9a4f0 7724f25
Author: Caleb Hulbert <cmhulbert@gmail.com>
Date: Tue Jun 24 15:22:38 2025 -0400
Merge branch 'master' into development
# Conflicts:
# src/main/java/org/janelia/saalfeldlab/n5/KeyValueAccess.java
# src/main/java/org/janelia/saalfeldlab/n5/readdata/KeyValueAccessReadData.java
# src/main/java/org/janelia/saalfeldlab/n5/readdata/ReadData.java
commit 5c9a4f008608084bbc392fb9cd9ed04c17ce5190
Author: Caleb Hulbert <cmhulbert@gmail.com>
Date: Fri Jun 13 17:11:08 2025 -0400
wip: shard merge after staged PR merges
commit fccd7e64440c5d6a6c9e822d5f60becfb3bf254a
Merge: 41d5281 fbae8ac
Author: Caleb Hulbert <cmhulbert@gmail.com>
Date: Fri Jun 13 16:53:33 2025 -0400
Merge branch 'wip/codecsReadData' into development
commit 41d52813fa38a4218552fdc5ce9204d901ffe7d9
Merge: ba7c3e0 725c0b2
Author: Caleb Hulbert <cmhulbert@gmail.com>
Date: Fri Jun 13 15:36:37 2025 -0400
Merge branch 'splittable-readdata' into development
commit ba7c3e079a56a4ee2c280072d68225d30d40a634
Merge: 0f69cfd 322b2b7
Author: Caleb Hulbert <cmhulbert@gmail.com>
Date: Fri Jun 13 15:25:55 2025 -0400
Merge branch 'wip/codecs' into development
commit fbae8ac5e298c94f118fe4965c8a69ed214462b1
Author: Caleb Hulbert <cmhulbert@gmail.com>
Date: Thu Jun 12 11:23:21 2025 -0400
test: BlockAsShard AbstractN5 Test
commit 481f75afa324dd07af1cbaa0760b276a4c034855
Author: Caleb Hulbert <cmhulbert@gmail.com>
Date: Thu Jun 12 11:05:46 2025 -0400
misc: cleanup more blockAsShard stuff
commit bf0920c5626b1562f79cbcf1915e893f5cc1c781
Author: Caleb Hulbert <cmhulbert@gmail.com>
Date: Thu Jun 12 11:05:07 2025 -0400
feat: annotation to indicate a non-serializable NameConfig
commit fff741b38a5ca4c4f7893aa7cb6136080ef78782
Author: Caleb Hulbert <cmhulbert@gmail.com>
Date: Thu Jun 12 10:31:19 2025 -0400
test: write shard for http fs tests
commit 3c20ea017956e123fecf13f636cd32732a8051f9
Author: Caleb Hulbert <cmhulbert@gmail.com>
Date: Thu Jun 12 10:22:08 2025 -0400
refactor: static readFromShard
commit 74e1f700cb1fdf0c4b4bfa3d5da07f991f9be822
Author: Caleb Hulbert <cmhulbert@gmail.com>
Date: Thu Jun 12 10:21:19 2025 -0400
test: make test data smaller
commit 6c4156c1092337b47a626790bf8082615d7b0fa2
Author: Caleb Hulbert <cmhulbert@gmail.com>
Date: Thu Jun 12 09:38:43 2025 -0400
feat: more block as shard logic
commit 214466087b3a735fc1de492798236c9bffea3629
Author: Caleb Hulbert <cmhulbert@gmail.com>
Date: Tue Jun 10 16:17:46 2025 -0400
feat: support writing blocks through shards on non-sharded datasets
commit 2acc2816a88377f6518b20ad24760bd7cde73d6c
Author: Caleb Hulbert <cmhulbert@gmail.com>
Date: Mon Jun 2 14:23:41 2025 -0400
refactor: migrate IOExceptions to N5IOExceptions for ReadData and related logic
commit 5d13af6d8b9f757da34dc3c1fe04cedac38533b2
Author: Caleb Hulbert <cmhulbert@gmail.com>
Date: Mon Jun 2 11:01:12 2025 -0400
refactor: extract Pattern matching to be reused for attribute path normalization
commit d7c9d35e64f44546cbc740eee0fe06c87cbfdfd3
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Tue May 27 13:38:17 2025 -0400
test: writing / reading of invalid blocks
commit ceaf5c30848df5cc5ae225491f9cadadce7b3b53
Author: Caleb Hulbert <cmhulbert@gmail.com>
Date: Tue May 27 13:29:20 2025 -0400
chore: remove duplicate/outdated license header
commit 4f29c338c6bd276b5e7812d796104ff01ac3f729
Author: Caleb Hulbert <cmhulbert@gmail.com>
Date: Tue May 27 11:53:07 2025 -0400
fix: getArrayCodec not ShardingCodec
commit c8c433585c209a76a2e1e187bd5ab30d4e3faa79
Author: Caleb Hulbert <cmhulbert@gmail.com>
Date: Tue May 27 11:51:54 2025 -0400
fix: NameConfig for Bzip2
commit db0e1a3cdfc249dbf6261d8673f4ed0df0c67a3c
Author: Caleb Hulbert <cmhulbert@gmail.com>
Date: Tue May 27 11:51:39 2025 -0400
feat: Shard as a the base case for writing
commit c3a87cbb906f7303f1b18b099c1d3e6a000fa7d8
Author: Caleb Hulbert <cmhulbert@gmail.com>
Date: Tue May 27 11:50:10 2025 -0400
refactor: remove deprecated api methods, some cleanup
commit 19af7cc5411c3a5da1b929e87f49eb4686b9826d
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Fri May 23 17:16:27 2025 -0400
test: add CodecTests
* testing ConcatenatedBytesCodec
commit 2243a4f5277a0c24e2f949fae88de25133fdbf8c
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Fri May 23 17:13:03 2025 -0400
perf: FileSystemKva's ReadData uses lockForReading
commit b9130deb09368268140ad3189f6e0768d10d188e
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Fri May 23 17:11:51 2025 -0400
refactor: hide KeyValueAccessSplittableReadData
commit 65345d9f1e0ae308c10039eb95102081c6d529d7
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Fri May 23 17:10:48 2025 -0400
doc: SplittableReadData.slice
commit d8504eb922b8e8f65e2a00dddf9e13c7d872147b
Author: Caleb Hulbert <cmhulbert@gmail.com>
Date: Fri May 23 16:59:40 2025 -0400
refactor: branch sharding logic on ShardingCodec
commit 15737489dd17dd631801b48240fd45be27159856
Author: Caleb Hulbert <cmhulbert@gmail.com>
Date: Fri May 23 16:59:16 2025 -0400
fix: N5BlockCodec adds header size to encoded size
commit a56c80b1ef930a50f04ef56e623374225a91bd22
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Fri May 23 14:38:53 2025 -0400
wip: refactor KvaSplittableReadData
* add abstract KeyValueAccessSplittableReadData
* ReadData.length does now throw IOException
commit 3242dc716e63f950e657c8ff7f866f524f7f99b8
Author: Caleb Hulbert <cmhulbert@gmail.com>
Date: Fri May 23 10:49:22 2025 -0400
fix(test): index should have RawBytesCodec
commit 521b6aad987ace8866eab06af4074bd5d4318c36
Author: Caleb Hulbert <cmhulbert@gmail.com>
Date: Fri May 23 10:49:05 2025 -0400
feat,BREAKING: wrap IO as N5IO and rethrow; don't throw IOException in KVA for size
commit 6edda5f01d7a9cd060543db3de049fd2e8b6bcac
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Fri May 23 10:35:57 2025 -0400
test: FileSplittableReadData knows its length
commit 11cc2e2901968eb4269741beaf6d5f32d9968068
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Fri May 23 10:21:22 2025 -0400
rm ReadDataBenchmarksKvaReadFully
commit 25b2f5c292f2fa876cb6cb0b2f44eac11a0dcd33
Merge: 3486b0f c274213
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Fri May 23 10:20:33 2025 -0400
Merge branch 'wip/codecsReadData' of github.com:saalfeldlab/n5 into wip/codecsReadData
commit 3486b0f47ee425a70860044c4ce88d9b326ebb26
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Fri May 23 10:20:29 2025 -0400
wip: FileSplittableReadData now wraps a kva
commit c27421382b60b4e4cccc19596acf69019556845e
Author: Caleb Hulbert <cmhulbert@gmail.com>
Date: Fri May 23 10:13:52 2025 -0400
fix: write ShardIndex before closing output stream
fix(test): shardIndex writeRead
commit 1c5f0c1165010b5febac7181c651b91b6a2f5dae
Author: Caleb Hulbert <cmhulbert@gmail.com>
Date: Fri May 23 09:37:48 2025 -0400
chore: feedback
commit 2cc81aab194c64dd9455efc675b5e1bca8da0f14
Author: Caleb Hulbert <cmhulbert@gmail.com>
Date: Fri May 23 09:37:33 2025 -0400
refactor(test): for sharding
commit b56a3945594ebb24e495bf551c521330ed6e41cd
Author: Caleb Hulbert <cmhulbert@gmail.com>
Date: Fri May 23 09:37:13 2025 -0400
refactor: Shards should use ReadData, not previous SplitData implementation
refactor: reduce scope of shard capability. Only support full Shard writes (InMemoryShard) and partial shard reads (VirtualShard)
commit f3949376f6b4f4d7692978edbeb68600caaa8eb6
Author: Caleb Hulbert <cmhulbert@gmail.com>
Date: Fri May 23 09:34:26 2025 -0400
feat: ReadDataSplittableReadData and KVA#createReadData;
commit 3d27db9903b109508ff36e632429227494a58e8e
Author: Caleb Hulbert <cmhulbert@gmail.com>
Date: Fri May 23 09:33:19 2025 -0400
refactor: rename to ArrayCodec#initialize
commit 967df11f8ee859eb1b76b4865d55354fa7d7ebe6
Merge: d8aedbd 02e0488
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Thu May 22 11:09:05 2025 -0400
Merge branch 'wip/codecsReadData' of github.com:saalfeldlab/n5 into wip/codecsReadData
# Conflicts:
# src/main/java/org/janelia/saalfeldlab/n5/HttpKeyValueAccess.java
commit d8aedbdf1277fd87232f1580a85dc707726d80cc
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Thu May 22 10:22:28 2025 -0400
perf/style: http kva, implement range request
* remove duplicate license header
* add constants
commit 02e0488f7e51f1fd802d54cb11d175da6ee2f5ac
Merge: 0023d4e 424c101
Author: Caleb Hulbert <cmhulbert@gmail.com>
Date: Thu May 22 10:05:56 2025 -0400
Merge remote-tracking branch 'origin/wip/codecsReadData-splittable' into wip/codecsReadData
commit 0023d4e5ade62cf7e64f63cec75b6628ae89a28d
Author: Caleb Hulbert <cmhulbert@gmail.com>
Date: Thu May 22 09:49:33 2025 -0400
fix(test): add N5BlockCodec to shard test
commit 424c1018550f6b4ea3f5ef748fd97986f160f005
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Wed May 21 21:04:21 2025 -0400
perf: use range request for http KeyValueAccess
commit 24817915bc14d4159628521bda1378037097c708
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Wed May 21 16:27:04 2025 -0400
test: more read data benchmarks
commit fecd95db597f84dadfc7ae9dbca326753a8fd18e
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Wed May 21 16:26:26 2025 -0400
test: more ReadDataTests
commit 1564aa572ba4a45721aab1205c63b970a2aabd34
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Wed May 21 16:25:55 2025 -0400
feat: add FileSplittableReadData
commit c7a119ec632360db9a82954d120aa297a8a3fefb
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Wed May 21 13:42:39 2025 -0400
test: fix ShardProperties tests
commit 20b5c003e92df59aab50cfdbe49f1777e67714bd
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Tue May 20 16:55:55 2025 -0400
feat: add splittable read data
* add a test
commit 38017fff277c9d11abfb9ec2ceb4773562df34d4
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Tue May 20 16:34:23 2025 -0400
fix: AbstractInputStreamReadData close stream
commit 31e0a9a3c92448731a5ed14a16864ea39f6d0707
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Tue May 20 16:30:27 2025 -0400
test: add ReadData benchmark
commit 1ba662d72b29c688c4c57cb45d10946c11ecd6a6
Author: Caleb Hulbert <cmhulbert@gmail.com>
Date: Tue May 20 14:34:50 2025 -0400
chore: remove duplicate license headers
commit 95e5aff2a020d6de752f87f1a2072f3f783a5749
Merge: c1485a9 9502d93
Author: Caleb Hulbert <cmhulbert@gmail.com>
Date: Tue May 20 14:23:12 2025 -0400
Merge branch 'master' into wip/codecsReadData
commit c1485a929f4cb5d6ffbb2e1576cc81d6fc50e6b3
Merge: 0dcade4 b4ca260
Author: Caleb Hulbert <cmhulbert@gmail.com>
Date: Mon May 12 14:24:35 2025 -0400
Merge branch 'codecsReadData' into zarr3-readdata
commit b4ca260c4df3c405620ca994cdee161122a9bc99
Author: Caleb Hulbert <cmhulbert@gmail.com>
Date: Mon May 12 13:56:23 2025 -0400
tmp
commit 0dcade45bf3a53466aca68c8a1850c1881171e9d
Author: Caleb Hulbert <cmhulbert@gmail.com>
Date: Tue Apr 8 14:58:13 2025 -0400
feat: add ZarrStringDataCodec support
commit d4ebfefe2be06d87e92efdd4739f5d04c14498b2
Author: Caleb Hulbert <cmhulbert@gmail.com>
Date: Tue Apr 8 14:57:50 2025 -0400
refactor: rename encodeBlockHeader -> createBlockHeader
commit 2e056286a27668056a485d058727eb1bacbf68b8
Author: Caleb Hulbert <cmhulbert@gmail.com>
Date: Tue Apr 8 14:57:30 2025 -0400
refactor: dont expose N5Codecs internals
commit ab8b83b3e41512dce7a41bee0340dbf7b4169da4
Author: Caleb Hulbert <cmhulbert@gmail.com>
Date: Tue Apr 8 14:56:34 2025 -0400
refactor: remove currently unused N5BlockCodec. Something like this may be needed when multiple codecs are supported
commit 70ec77710cc1ec9453efa5c98611ae9a64060948
Author: Caleb Hulbert <cmhulbert@gmail.com>
Date: Tue Apr 8 14:55:32 2025 -0400
revert: keep protected constructor with DataBlockCodec parameter
refactor: inline createDataBlockCodec from constructor params
commit 0f8b2c59e2dcd60f65593f380b61813e0f9ae151
Author: Caleb Hulbert <cmhulbert@gmail.com>
Date: Tue Apr 8 14:53:32 2025 -0400
doc: retain javadoc from before refactor
commit 0db21be4fc6b4f325cf43d9cd93cc1b4ce36daec
Author: Caleb Hulbert <cmhulbert@gmail.com>
Date: Tue Apr 8 14:52:52 2025 -0400
revert: add back createDataBlock logic in DataType
commit 7b713cd7f93a76a9536799ae44852433b5655d0c
Author: Caleb Hulbert <cmhulbert@gmail.com>
Date: Wed Mar 5 16:59:15 2025 -0500
refactor: DatasetAttributes responsible for DataBlockCodec creation
N5BlockCodec uses dataType (and potentially other DatasetAttributes to wrap the desired DataBlockCodec
commit ae85a55844d8090ce0e17b26fc0f65d22169ef4b
Author: Caleb Hulbert <cmhulbert@gmail.com>
Date: Wed Mar 5 16:55:21 2025 -0500
refactor: add AbstractDataBlock to extract shared logic between Default/String/Object blocks
commit f948f578479501e0e8a45e91904427428a7dc864
Author: Caleb Hulbert <cmhulbert@gmail.com>
Date: Wed Mar 5 16:54:56 2025 -0500
feat: Add StringDataCodec, ObjectDataCodec, StringDataBlockCodec, ObjectDataBlockCodec
DataCodecs now creat the access object and return it during `deserialize`
commit b03e897db8d2d89bc480c8595eaef93225f5b2cc
Author: Caleb Hulbert <cmhulbert@gmail.com>
Date: Wed Mar 5 16:48:34 2025 -0500
refactor: move DataBlockFactory/DataBlockCodecFactory to N5Codecs
commit 46c7eab42fc70a475fc9bc2880aa6f2d00b22995
Author: Caleb Hulbert <cmhulbert@gmail.com>
Date: Wed Mar 5 16:40:52 2025 -0500
refactor: don't pass `decodedLength` to ReadData
commit 2648d380f070320cff8f3083565d5ccd4b0e9076
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Wed Feb 26 23:01:50 2025 +0100
Remove unnecessary flush()s, instead close OutputStream where it is constructed
commit 4db22cfd276944c6b0003110e9b82961a2f6e9b8
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Wed Feb 26 22:13:31 2025 +0100
rename ChunkHeader to BlockHeader
commit 31f351e14274209157815e80b7dfed2a747b71f7
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Wed Feb 19 10:47:19 2025 +0100
fix javadoc error
commit 1154bf9f5510ecce82e89509d1fe2fb837df1de2
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Wed Feb 19 10:35:29 2025 +0100
Remove SplittableReadData interface
commit f191b7d62d4759ccd8ab83b118594dde30db1bb5
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Wed Feb 19 10:27:12 2025 +0100
refactor, add ReadData.materialize()
This is in preparation for moving SplittableReadData into a separate PR
commit d8b7c1f4596c80fbe225ea7a9cb5aa35f8f85d49
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Sun Feb 16 16:29:02 2025 +0100
Let DatasetAttributes provide the DataBlockCodec
avoids the Compression argument to encode/decode methods
commit ffea7a8842442050404b4b3a558d514e3077462e
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Sun Feb 16 16:04:33 2025 +0100
refactor
commit 4290e0b414df26ae694cf82448d68c9f1c48e9eb
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Sun Feb 16 16:03:54 2025 +0100
refactor
commit fa88b72515272a146d4c897fa5282a5069a808de
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Sun Feb 16 12:02:19 2025 +0100
typo
commit 72986216b5e699c0956e27b38c37af1d770d62c6
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Sun Feb 16 11:35:34 2025 +0100
convenience DataCodec methods to get codec with approprioate endianness
commit 2a0cd24854eba5552163bf7fe9b9e22c8426f6a7
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Sat Feb 15 13:09:05 2025 +0100
refactor
commit fedfbc7f4977099a883e7246eb85018c0883b019
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Sat Feb 15 00:27:09 2025 +0100
refactor
commit a4fb38e54d75f7270f00865b78f085cdd9822e66
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Sat Feb 15 00:15:03 2025 +0100
use only array type in DataBlockCodec generics
commit d8d07195b88948c1e8114574020885c7e736910f
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Fri Feb 14 23:17:26 2025 +0100
Use ProxyOutputStream. FilterOutputStream is slow
commit 1be51a5d2321b26bbd6187ce6b5c76571a1b0b35
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Fri Feb 14 22:55:43 2025 +0100
WIP use Codecs, remove serialization methods from DataBlock
commit 6cd52d0771b1bc5cd25919cc969781eb73c75eea
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Fri Feb 14 22:12:29 2025 +0100
WIP Codecs
commit e52d0fc743e516106fbbedb5127d1ec3c62c53ba
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Fri Feb 14 17:46:49 2025 +0100
WIP Codecs
commit 8683dfa3e775e119149813347e70ab2646ddf0c9
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Fri Feb 14 17:03:51 2025 +0100
WIP Codecs
commit 0d66ee69dd7866e379ff3eef1ab0df1953d60cde
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Fri Feb 14 17:03:15 2025 +0100
Add LazyReadData and OutputStreamWriter
When data is requested from the LazyReadData, the LazyReadData will ask
its OutputStreamWriter to write the data to a ByteArrayOutputStream.
When the LazyReadData itself is written to an OutputStream, it will pass
that OutputStream to its OutputStreamWriter (without loading the data
into a byte[] array first).
commit 2bcdab883ed583d9c5ba67474184e218427c0ccf
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Thu Feb 13 09:37:44 2025 +0100
idea
commit 018d31186f269f1d7efc0d5701e3ef96d1e65928
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Thu Feb 13 13:32:22 2025 +0100
remove BytesCodec interface and put encode/decode into Compression for now
commit a2e9596706265abf2a40d73337f1539ef2409427
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Thu Feb 13 13:14:17 2025 +0100
ReadData.encode/decode methods forwarding to BytesCodec
commit b70e6b5ba1b2a91e857c61ee07811f45777b12f4
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Thu Feb 13 13:11:33 2025 +0100
Use OutputStream wrapper to intercept close() in EncodedReadData
We still need a custom interface "OutputStreamOperator" because we want
to throw IOException and UnaryOperator::apply doesn't.
commit d9f42220f98462440829ee6eb318744de6f78fa7
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Thu Feb 13 10:18:26 2025 +0100
clean up
commit 8b097b5e7dda6db10992bef2daa32d8e87c84c77
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Mon Feb 3 17:46:20 2025 +0100
Add ReadData method toByteBuffer()
commit 4fd4723318f78195d10689ff35d9180aa1ce6fd9
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Mon Feb 3 17:53:31 2025 +0100
fix javadoc error
commit 24dc39398fdcb218f3f68d25b9ca1cfc302092d9
Author: Caleb Hulbert <cmhulbert@gmail.com>
Date: Wed Feb 5 10:11:33 2025 -0500
test: don't override with zarr (oops)
commit 231aacdffd6e9335734cca7fe8cbfed688297b0b
Author: Caleb Hulbert <cmhulbert@gmail.com>
Date: Wed Feb 5 10:10:42 2025 -0500
test: easier to local debug
commit 5b9c4a371ff83921f7f3ef48977cac00cf4dbd49
Author: Caleb Hulbert <cmhulbert@gmail.com>
Date: Wed Feb 5 10:10:22 2025 -0500
fix: readblock with split data
commit f854ac64f3c53e1a767e3b87dc306d1fa397cf1f
Author: Caleb Hulbert <cmhulbert@gmail.com>
Date: Tue Feb 4 16:53:01 2025 -0500
chore: rebase cleanup
commit 4c0e0fe8171c9a8285202a6dff528f5302f69667
Author: Caleb Hulbert <cmhulbert@gmail.com>
Date: Mon Feb 3 14:20:32 2025 -0500
fix: revert some changes that broke split data for ShardTest
commit 7970281a6de4237f88cfca05d15ac193dca76b0e
Author: Caleb Hulbert <cmhulbert@gmail.com>
Date: Fri Jan 24 16:28:53 2025 -0500
refactor: more SplitData implementation
commit 765a7b428502a992c32a98e38ad28d94f5390be4
Author: Caleb Hulbert <cmhulbert@gmail.com>
Date: Fri Jan 24 15:27:27 2025 -0500
feat(wip): initial SplitableData implementation
commit 0d1eb525c8065f77fa73280f25629e2ff73a0d25
Author: Caleb Hulbert <cmhulbert@gmail.com>
Date: Tue Feb 4 17:10:40 2025 -0500
refactor: more from refactorShard branch
commit 3bf8fe830747aa4f96e53ae50de374b25649133d
Author: Caleb Hulbert <cmhulbert@gmail.com>
Date: Tue Feb 4 16:02:20 2025 -0500
refactor: large codecs/shards implementation refactor
commit 3b54467a253f2ec255ea74248bbc10fc5cdb1570
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Mon Feb 3 13:42:06 2025 +0100
Remove DataBlock de/serialize() methods
Maybe we'll rename readData()/writeData() later, the point is to remove
the ByteBuffer methods from the API
commit decdafdada750047452e65027da9fa2ccb1219bc
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Mon Feb 3 12:32:09 2025 +0100
Remove old Compression methods. Everything goes through ReadData
commit 5ff62a98e7f93d31306715ee675e5067e862ab88
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Sun Feb 2 21:36:12 2025 +0100
javacod
commit 89a6bfd805be826718a898f7fbdad3269c789cbd
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Sun Feb 2 20:55:50 2025 +0100
Clean up
commit a43bf40a8378526bfa7bad3921cc5d5cdd1ca1cd
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Sun Feb 2 20:31:13 2025 +0100
Remove deprecated BlockWriter/BlockReader interfaces
commit 80fa6a87827381ec59f007701eb3e26715557cff
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Sun Feb 2 20:21:20 2025 +0100
Hide ReadData implementations, use static ReadData factory methods instead
commit 47578e3ddd2c70566f20dfec4b910093daea7183
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Sat Feb 1 22:20:51 2025 +0100
Add decode(ReadData readData) variant that knows the length of the decoded data
commit 4b6ee4ff12962a78d22b7fc4a073b498c1808d94
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Sat Feb 1 22:08:46 2025 +0100
WIP ReadData.decode(Codec)
commit 4c348baae207f7b91ab3357ad52f9801bed3b69b
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Fri Jan 31 22:38:22 2025 +0100
Lean more on ReadData
* Move ReadData etc to separate classes
* Add ReadData.writeTo(OutputStream)
* Add EncodedReadData that wraps a ReadData and an OutputStreamEncoder
* Compression (BytesCodec) can encode ReadData. (This might happen
immediately or later when the ReadData is written to OutputStream).
commit fbee9db8091ad4fdf08bdcfa387509feb864234b
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Thu Jan 30 08:44:33 2025 +0100
Add explicit commons-io dependency
commit 5c43f5bc1897729f1a74fbb327fb230beb112457
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Thu Jan 30 08:44:01 2025 +0100
switch from byte[] to ByteBuffer for DataBlock.de/serialize()
commit 705ffb329e1644198948bfde75d95d1ae070d5ad
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Wed Jan 29 13:58:09 2025 -0500
fix javadoc error
commit 3df2b0b4f6c650a82da3aba78898abb1452752ec
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Mon Jan 27 21:23:59 2025 -0500
Clean up
commit 190a8ce38805dff0a084395be693355afd35a28f
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Mon Jan 27 21:19:11 2025 -0500
Clean up
commit 8732a0b5a31189f11f47736120fffeb93785e1fe
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Mon Jan 27 21:10:05 2025 -0500
Add ByteOrder to DataBlock.writeData()
commit e47ba4c50d1614b33e9eab39fb6f63875be9a903
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Mon Jan 27 16:10:03 2025 -0500
WIP revise StringDataBlock
revert to holding serialized and actual data. otherwise we can't be
compatible with existing N5 datasets.
commit 8cffeed489cd75c8d1bd5a6f59eb1b5d4c2df07d
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Mon Jan 27 15:21:48 2025 -0500
WIP revise StringDataBlock (doesn't work yet)
commit 701d4218cdeb1d30f0474466dc4460d3a191ebbf
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Mon Jan 27 14:55:50 2025 -0500
WIP use Splittable.ReadData in DefaultBlockReader
commit 4fca725c2a81ec04a51e0778663e8e3e1f028d62
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Sun Jan 26 19:52:16 2025 -0500
WIP DataBlock.writeData(OutputStream)
commit 069f3e2755c1adad561b61223452a5143d85482f
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Sat Jan 25 10:59:29 2025 -0500
WIP speed up DataBlock.readData(InputStream), and clean up
commit 8811f1d570817fbd2b1e35ae81b0e065bbece606
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Sat Jan 25 10:58:37 2025 -0500
WIP clean up Compression interface
commit a18d137e179674e22d542d038bde571389d64b92
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Fri Jan 24 21:22:58 2025 -0500
WIP SplittableReadData
commit 22ece34ecb5cdd98dc2f4fb5ca0fb2c1796e49e2
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Fri Jan 24 20:23:17 2025 -0500
WIP DataBlock readData variants
commit 953715bcf55ef376dcc8995ce9b9bdd57937324d
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Fri Jan 24 20:22:33 2025 -0500
WIP: SplittableReadData
commit b94ba8b10b7c8024380987043ac5c6d1780d01ae
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Tue Sep 3 16:48:17 2024 -0400
feat: DataBlock methods to read/write directly from DataInput/Output
commit eba1fd750322e1d8b0072e6b2a5297dfbe9cb00b
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Fri Jan 24 10:11:00 2025 -0500
wip
commit 63f51ad6c08461fa0912896e18c3871493671688
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Wed Jan 22 18:29:53 2025 -0500
cleanup
commit e8dde834dcd6234069df70951aeda5f64c19b8d2
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Wed Jan 22 18:25:57 2025 -0500
bugfix
commit 17f197612afb58b1fc89aefbab63f4bd4308f2f5
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Wed Jan 22 17:17:15 2025 -0500
WIP encode/decode implementations
commit ad30b381c74ddefa9fcfd33206ca1d658961c97c
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Wed Jan 22 15:19:15 2025 -0500
WIP Compression / Codec API
commit 08940ee6668863a906f72a8a403262e547bde912
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Wed Jan 22 15:17:14 2025 -0500
Add byte[] DataType.createSerializeArray(numElements)
commit 27b6057b51bba7b1ee1830931d669e1e030d13cc
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Wed Jan 22 10:07:41 2025 -0500
Fix benchmark image URL
commit 9151207e2604339650e09c82e2c10e7a17327244
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Wed Jan 22 10:07:03 2025 -0500
WIP: remove @Override annotations for ByteBuffer methods
to be able to turn those methods on/off in the DataBlock interface
without causing compile errors in the implementations.
commit 3401fcf7cb78874ff37149342a35b93e8cb5fe59
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Wed Jan 22 09:40:30 2025 -0500
remove redundant modifiers
commit 9518d00b8a54bf1bc014f96137d991901c908be3
Author: tpietzsch <tobias.pietzsch@gmail.com>
Date: Wed Jan 22 18:11:47 2025 -0500
Add N5ReadBenchmark
commit ce50fa9a746179e4f741ef0c62939586f44fcc82
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Fri Jan 24 13:12:19 2025 -0500
test: add a test for nested sharding codecs
* but ignore it for now
commit a74d3437d0b5520076e4e2629de4dc50a11db787
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Tue Jan 21 10:08:02 2025 -0500
feat: add ShardIndex.isEmpty
* use it to return early for getBlocks
commit 9224215e811bf9f0f637291d86d68ace92a1353a
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Tue Jan 21 09:31:28 2025 -0500
wip/feat: N5Reader.readShard
commit f67943dcbb804227ca2d1d2ae441fa03dc7e1063
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Fri Jan 17 13:59:16 2025 -0500
refactor: InMemoryShard, read/writeBlocks
* Using Position class
* using ShardParameters.groupBlocks helper method
commit 709730868111ffcdc584efaffe5379836c5d49a0
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Fri Jan 17 13:57:17 2025 -0500
wip: rm unused flatIndex in Shard
* methods in GridIterator replaces this
commit 0e353e42fc2c6175561ead61258197580fd875c0
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Fri Jan 17 13:54:18 2025 -0500
feat: ShardParameters methods
* shardsPerImage, blocksPerImage
* grouping DataBlocks by shard postion
* stream of block positions ordered by shard
commit 43bc1e04eaa6ff8253439032322c18718da6267f
Author: John Bogovic <bogovicj@janelia.hhmi.org>
Date: Fri Jan 17 13:51:04 2025 -0500
feat: add positionToIndex static methods in GridIterator
commit 1a44168191b161def0f6a73d262608b9dab97c0f
Author: John Bogovic …
Closed
…for HTTP KVA Signed-off-by: Caleb Hulbert <cmhulbert@gmail.com>
Signed-off-by: Caleb Hulbert <cmhulbert@gmail.com>
… clauses, the normal calls handle this when it is cached Signed-off-by: Caleb Hulbert <cmhulbert@gmail.com>
* logs number of backend reads when reading blocks from shards
… interface as a static method Signed-off-by: Caleb Hulbert <cmhulbert@gmail.com>
…dev/sharding-squash
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Note: we'll squash or rebase the commits below if / when we decide to merge.
motivation
This PR aims to support sharding through readBlocks and writeBlocks methods. One priority was to enable re-use of the code here in n5-zarr, because the n5-format will not support sharding.
It does NOT seek to expose any shard-specific API methods (e.g. readShard, writeShard, deleteShard), nor does it make a decision about whether / how to introduce parallelism into the n5 "core" API
as discussed here.
The API here does expose the information needed for developers to write parallel code.
For example this method in n5-imglib2, parallelizes over shards or blocks as appropriate.
We should consider extending this in the future, but again, this factor was not a priority for this PR in particular.
outline of changes
N5KeyValueReader.getAttributesKeyenables n5-zarr to better re-use code herereadBlocks,writeBlocksRawShardstores the raw (compressed) shard data into segments that represent the blocks and indexRawShardCodecencodes / decodesRawShards to and fromReadDataSegmentedReadDatatracks which part of shard data should be "grouped"ShardIndextracks which byte ranges correspond to particular blocksDatasetAccessabstracts reading / writing blocks from shards / files (theDefaultDatasetAccess)PositionValueAccessis the layer between block coordinates and the KeyValueAccessDeterministicSizeDataCodecs enable compile-time validation ofDataCodecs for the shard index.behavior
Note: when referring to partial reads below, they are partial only if allowed by the backing KeyValueAccess.
Behavior is unchanged for un-sharded datasets, for sharded datasets:
readBlockPartially read the shard index, partially read the encoded block, decode and return.
readBlocksHigh-level behavior is identical to calling
readBlockmultiple times and returning the collection but aggregates operations per shard.At a lower level, it performs one partial read for the shard index and one partial read for each requested block.
writeBlockIf no shard exists, create a shard index containing the one block. Encode the block, write the one block and the index.
Otherwise:
Read the data for the entire shard and decode to a
RawShard, and add the encoded block data to the rawwrite all the data.
This does not decode / encode blocks that are not touched.
writeBlocksHigh-level behavior is identical to calling
writeBlockmultiple times and returning the collection but aggregates operations per shard, i.e. Calls writeBlock once per unique shard - i.e. has one read and one write operation per unique shard.extensibility
The use of codecs in this and previous PRs made the implementations in n5-zarr simpler. For example, the padding of "incomplete" blocks needed for zarr is now handled by a codec inserted by the ZarrWriter. As a result, it can directly reuse the writeBlock implementation here.
Example: ZarrKeyValueReader does not have readBlock(s) methods
details:
readBlocksDefaultDatasetAccess)ReadDataproduced should read lazily and partially if possiblereadBlockRecursivehandles the codec chain: ShardCodecs containing BlockCodecsReadDataRawShardis decoded from theReadDatashard.getElementDataslices theReadDataappropriately, which is passed to the lower leveldetails:
writeBlocksCreates a PositionValueAccess (PVA)
gets the writer's DatasetAccess (always a
DefaultDatasetAccess)Calls DatasetAccess.writeBlocks with the PVA and the grid positions for blocks to write