Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
86 commits
Select commit Hold shift + click to select a range
2cf31dd
StorageDevice introduced - work in progress
nenada Mar 29, 2024
09cc8c9
go2scope device introduced
nenada Apr 3, 2024
67d503b
Storage instance added and MMCore plumbing
nenada Apr 4, 2024
c7fb810
storage instance: further work
nenada Apr 5, 2024
68b53f8
Storage API cleanup
nenada Apr 6, 2024
fdd7dc9
Minimal MMCore interface sketched out
nenada Apr 9, 2024
cc6a4c3
loadDataset added
nenada Apr 23, 2024
8b0b3a3
vector<int> arguments replaced with vector<long> to help with Swig
nenada Apr 30, 2024
9e744a0
implementation of data read functions
nenada Aug 24, 2024
58f105d
storage instance methods populated
nenada Aug 25, 2024
3d95a2f
nlohmann json library added
nenada Aug 28, 2024
8cbb354
StroageMnager copied from go2scope. Requres extensive refactoring
nenada Aug 28, 2024
ccbfbe1
cleaned up API signatures in MMCore
nenada Apr 30, 2024
7b33e5b
storage manager refactored
nenada Sep 16, 2024
8cfa575
acquire zarr linked into the device adapter, other dependencies still…
nenada Aug 9, 2024
b2b3a6f
static runtime selected
nenada Aug 16, 2024
b3b8f89
temporarily commented out zar library
nenada Sep 26, 2024
d9f2c25
Merge branch 'main' of https://github.com/go2scope/mmCoreAndDevicesSD
nenada Aug 16, 2024
de52c7f
zarr storage device created and separated from the upcoming tiff4 sto…
nenada Sep 27, 2024
7f0f9e8
Merge branch 'main' of https://github.com/go2scope/mmCoreAndDevicesSD
nenada Oct 3, 2024
a38091c
API modified to accomodate forwared declaration of pixel type
nenada Sep 28, 2024
bc2a51f
further integration of zarr
nenada Oct 1, 2024
280e1f1
BigTIFF storage added (branch merged manually)
razrock Oct 10, 2024
3273386
G2STIFF parser added to BigTIFF storage driver
razrock Oct 10, 2024
5abc468
BigTIFF storage - Add image, set dataset info
razrock Oct 11, 2024
4148ad0
G2STiff format: Fixes for read & write access on the same file stream
razrock Oct 11, 2024
6595d47
image number initialized in constructor
nenada Oct 14, 2024
cdc8ad0
Set device interface version to 71. This will have to be updated on t…
nenada Oct 14, 2024
0ce7061
bug fix: MMCore requires explicit declaration of any new device on mu…
nenada Oct 14, 2024
1a5ccab
Storage instance bug fix
nenada Oct 14, 2024
821ec13
bug fixes in zarr storage
nenada Oct 15, 2024
7be4a38
MMCoreJ wrapper fix for storage API
razrock Oct 15, 2024
735abf7
MMCore and MMDevice storage API refactored
nenada Oct 15, 2024
f921976
bug fixes and error messages
nenada Oct 16, 2024
e87917a
comments and TODO items
nenada Oct 16, 2024
68358c0
BigTIFF storage bug fixes, improved error reporting, file naming fixed
razrock Oct 16, 2024
27a181e
bug fix in zarr driver, shape
nenada Oct 16, 2024
1bb3fd3
refactoring at various points in the storage pipeline
nenada Oct 17, 2024
0e28e8c
redundant name removed from the MMCore::load API
nenada Oct 17, 2024
c93f624
G2SBigTiff format reader fixes
razrock Oct 17, 2024
a39ada8
Random access support for G2SBigTiff format
razrock Oct 18, 2024
e7156c3
Go2Scope storage driver - DirectIO device property
razrock Oct 21, 2024
78f2da4
G2S storage driver: Write stream flush cycle property
razrock Oct 23, 2024
6a20801
C++ G2S Storage tests
razrock Oct 24, 2024
10313f1
C++ storage tests: Improved measurement and logging
razrock Oct 24, 2024
fc805c7
MMCore java wrapper: Native support for 16-bit (short[]) addImage
razrock Oct 25, 2024
f3f177d
Storage driver / BigTIFF: Axis order inverted (slowest chaning first)
razrock Oct 29, 2024
ba76bde
MMCore java wrapper fix (storage driver getImage)
razrock Oct 29, 2024
ff15d6f
Merge branch 'main' into develop/zarr
nenada Oct 31, 2024
56c2b62
buf fixes for zarr writer
nenada Nov 1, 2024
a6863a6
zarr dimension order corrected
nenada Nov 1, 2024
5ab02c7
update from lum development - support for chunking
nenada Dec 7, 2024
2831421
MMCore storage api extended to accomodate format discovery
nenada Nov 1, 2024
f38005a
more updates from lum: chunking
nenada Dec 7, 2024
748aee4
Merge branch 'develop/format' into develop/zarr
nenada Dec 7, 2024
ca7da23
reduntant files cleanup
nenada Dec 7, 2024
8a22919
API for storage extended with new functions
nenada Dec 8, 2024
1aa7a11
cleaned up unused files
nenada Dec 9, 2024
1d5a9e5
appendImage() added to device api
nenada Dec 11, 2024
0f360e1
bug fixes, missing API implemented
nenada Dec 18, 2024
a814671
isReadOnly added
nenada Dec 18, 2024
73071a7
device adapter bug fixes and update to the latest API changes
nenada Dec 18, 2024
5410231
custom (mutable) metadata API added, non-restricted slowest dimension…
nenada Dec 31, 2024
af67cfa
MMDevice API bug fixes, documentation update
nenada Feb 7, 2025
6e8ef0d
changes for the MMDevice API fix, added saveAndGet to MMCore to get i…
nenada Feb 7, 2025
d14d2c4
Set PlatformToolset to v142 for new projects
marktsuchida Feb 21, 2025
865b11e
changed API naming convention to include "dataset". Added freeze. Del…
nenada Feb 25, 2025
3fa7f05
metadata length parameter added to all functions accepting metadata s…
nenada Apr 4, 2025
d677379
updated storage tests in C++
nenada Apr 4, 2025
3145826
dataset handle type changed from string to int
nenada Apr 5, 2025
020d376
updated storage tests to reflect the new API
nenada Apr 5, 2025
ec66d4f
custom metadata disk layout format changed. Now in separate subdir.
nenada Apr 6, 2025
289a78c
bug fix: storage device included in core properties
nenada Apr 18, 2025
8726eec
handle lookup mechanism added to MMCore to enable mutliple open datas…
nenada Apr 18, 2025
3cdf591
changed using to typedef to avoid swig compiler error
nenada Jul 4, 2025
adffae8
device label bug fix in handle map in MMCore
nenada Jul 4, 2025
d286fae
Use globally unique handle assigned by Core
marktsuchida Oct 29, 2025
c0ae7c2
Compatibility with older SWIG
marktsuchida Oct 30, 2025
617e3a0
Don't provide default impl for ReleaseStringBuffer
marktsuchida Oct 30, 2025
83b1a96
Remove GetProgress (never used, never implemented)
marktsuchida Oct 30, 2025
65efeac
Remove placeholders for "attached storage" API
marktsuchida Oct 30, 2025
be10e57
Remove solution filter file
marktsuchida Oct 30, 2025
0a66d05
Split AcquireZarr out of go2scope adapter
marktsuchida Oct 30, 2025
1109a04
Rename Go2Scope for consistent case, step 1/2
marktsuchida Oct 31, 2025
aba2d0a
Rename Go2Scope for consistent case, step 2/2
marktsuchida Oct 31, 2025
788bf68
Remove nlohmann-json, it's not actually used
marktsuchida Oct 31, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ tags
ipch/
.vs/
.vscode/
# Solution filters are sometimes handy but don't belong in official repo
*.slnf

# GNU build system
*.cache
Expand Down
55 changes: 55 additions & 0 deletions DeviceAdapters/AcquireZarr/AcqZarrAdapter.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
///////////////////////////////////////////////////////////////////////////////
// FILE: AcqZarrAdapter.cpp
// PROJECT: Micro-Manager
// SUBSYSTEM: DeviceAdapters
//-----------------------------------------------------------------------------
// DESCRIPTION: Go2Scope devices. Includes the experimental StorageDevice
//
// AUTHOR: Nenad Amodaj <[email protected]>
// Milos Jovanovic <[email protected]>
//
// COPYRIGHT: Nenad Amodaj, Chan Zuckerberg Initiative, 2024
//
// LICENSE: This file is distributed under the BSD license.
// License text is included with the source distribution.
//
// This file is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
//
// IN NO EVENT SHALL THE COPYRIGHT OWNER OR
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES.
//
// NOTE: Storage Device development is supported in part by
// Chan Zuckerberg Initiative (CZI)
//
///////////////////////////////////////////////////////////////////////////////
#include "AcqZarrAdapter.h"
#include "ModuleInterface.h"
#include "AcqZarrStorage.h"


///////////////////////////////////////////////////////////////////////////////
// Exported MMDevice API
///////////////////////////////////////////////////////////////////////////////
MODULE_API void InitializeModuleData()
{
RegisterDevice(g_AcqZarrStorage, MM::StorageDevice, "Zarr storage based on Acquire");
}

MODULE_API MM::Device* CreateDevice(const char* deviceName)
{
if(deviceName == 0)
return 0;

if(strcmp(deviceName, g_AcqZarrStorage) == 0)
return new AcqZarrStorage();

return 0;
}

MODULE_API void DeleteDevice(MM::Device* pDevice)
{
delete pDevice;
}
48 changes: 48 additions & 0 deletions DeviceAdapters/AcquireZarr/AcqZarrAdapter.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
///////////////////////////////////////////////////////////////////////////////
// FILE: AcqZarrAdapter.h
// PROJECT: Micro-Manager
// SUBSYSTEM: DeviceAdapters
//-----------------------------------------------------------------------------
// DESCRIPTION: Go2Scope devices. Includes the experimental StorageDevice
//
// AUTHORS: Milos Jovanovic <[email protected]>
// Nenad Amodaj <[email protected]>
//
// COPYRIGHT: Nenad Amodaj, Chan Zuckerberg Initiative, 2024
//
// LICENSE: This file is distributed under the BSD license.
// License text is included with the source distribution.
//
// This file is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
//
// IN NO EVENT SHALL THE COPYRIGHT OWNER OR
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES.
//
// NOTE: Storage Device development is supported in part by
// Chan Zuckerberg Initiative (CZI)
//
///////////////////////////////////////////////////////////////////////////////
#pragma once
#include "MMDevice.h"
#include "DeviceBase.h"

//////////////////////////////////////////////////////////////////////////////
// Error codes
//
//////////////////////////////////////////////////////////////////////////////
#define ERR_INTERNAL 144002
#define ERR_FAILED_CREATING_FILE 144003

#define ERR_ZARR 140100
#define ERR_ZARR_SETTINGS 140101
#define ERR_ZARR_NUMDIMS 140102
#define ERR_ZARR_STREAM_CREATE 140103
#define ERR_ZARR_STREAM_CLOSE 140104
#define ERR_ZARR_STREAM_LOAD 140105
#define ERR_ZARR_STREAM_APPEND 140106
#define ERR_ZARR_STREAM_ACCESS 140107

static const char* g_AcqZarrStorage = "AcquireZarrStorage";
Loading