.svslide
sakura
OpenSlide will detect a file as Sakura if:
DataManagerSQLiteConfigXPO
table contains exactly one row, and its TableName
field refers to a unique table.id = "++MagicBytes"
and data = "SVGigaPixelImage"
.Sakura slides are SQLite 3 database files written by the eXpress Persistent
Objects ORM. Tables contain slide metadata, associated images, and JPEG
tiles. Tiles are addressed as (focal plane, downsample, level-0 X
coordinate, level-0 Y coordinate, color channel)
, with separate grayscale
JPEGs for each color channel. Despite the generality of the address format,
tiles appear to be organized in a regular grid, with power-of-two level
downsamples and without overlapping tiles. The structure of the file allows
scans to be sparse, but it is not clear if this is actually done.
Some irrelevant tables and columns have been omitted from the summary below.
DataManagerSQLiteConfigXPO
Useful only to get a reference to the unique table. OpenSlide requires this table to contain exactly one row.
Column | Type | Description |
---|---|---|
TableName |
text | Name of the unique table, described below |
SVSlideDataXPO
High-level metadata about a slide. OpenSlide assumes this table will contain exactly one row.
Column | Type | Description |
---|---|---|
OID |
integer | Primary key |
m_labelScan |
integer | Foreign key to label associated image in SVScannedImageDataXPO |
m_overviewScan |
integer | Foreign key to macro associated image in SVScannedImageDataXPO |
SlideId |
text | UUID |
Date |
text | File creation date? |
Description |
text | Descriptive text? |
Creator |
text | Author? |
DiagnosisCode |
text | Unknown, have seen “0” |
HRScanCount |
integer | Presumably the number of corresponding rows in SVHRScanDataXPO |
Keywords |
text | Descriptive text? |
TotalDataSizeBytes |
integer | Presumably the sum of TotalDataSizeBytes in corresponding SVHRScanDataXPO rows |
SVHRScanDataXPO
A single high-resolution scan of a slide from SVSlideDataXPO
. OpenSlide
assumes this table will contain exactly one row.
Column | Type | Description |
---|---|---|
OID |
integer | Primary key |
ParentSlide |
integer | Foreign key to SVSlideDataXPO |
ScanId |
text | UUID |
Date |
text | Scan date? |
Description |
text | Descriptive text? |
Name |
text | Scan name? |
PosOnSlideMm |
blob | 16 bytes of binary |
ResolutionMmPerPix |
real | Millimeters per pixel |
NominalLensMagnification |
real | Objective power |
ThumbnailImage |
blob | thumbnail associated image data |
TotalDataSizeBytes |
integer | Same as TOTAL_SIZE blob in unique table |
FocussingMethod |
integer | Unknown; have seen “1” |
FocusStack |
blob | 8 bytes of binary per focal plane; the center focal plane apparently has all zeroes |
SVScannedImageDataXPO
Contains associated images other than the thumbnail
.
Column | Type | Description |
---|---|---|
OID |
integer | Primary key |
Id |
text | UUID |
PosOnSlideMm |
blob | 16 bytes of binary |
ScanCenterPosMm |
blob | 16 bytes of binary |
ResolutionMmPerPix |
real | Millimeters per pixel |
Image |
blob | JPEG image data |
ThumbnailImage |
blob | Low-resolution JPEG thumbnail |
tile
This table is most naturally used to map tile coordinates to tile IDs, but is not suitable for individual lookups because it has no useful indexes. In addition, some Sakura slides don’t have it. OpenSlide ignores the table and constructs tile IDs directly from tile coordinates.
Column | Type | Description |
---|---|---|
TILEID |
text | Foreign key to unique table |
PYRAMIDLEVEL |
integer | Downsample of the pyramid level |
COLUMNINDEX |
integer | Level-0 X coordinate of the top-left corner of the tile |
ROWINDEX |
integer | Level-0 Y coordinate of the top-left corner of the tile |
COLORINDEX |
integer | 0 for red, 1 for green, 2 for blue |
This is the table named by DataManagerSQLiteConfigXPO.TableName
. It
contains named blobs including the JPEG tile data.
Column | Type | Description |
---|---|---|
id |
text | Primary key |
size |
integer | Length of data field |
data |
blob | Data item |
This table stores a variety of blob types.
id |
Description |
---|---|
++MagicBytes |
SVGigaPixelImage |
++VersionBytes |
Format version, e.g. 1.0.0 |
Header |
See below |
TOTAL_SIZE |
The data field is empty. The size field is the sum of all other size fields except ++MagicBytes and ++VersionBytes . |
T;2048|4096;4;2;0 | Image tile with downsample 4, X coordinate 2048, Y coordinate 4096, channel 2 (blue), focal plane 0 |
T;2048|4096;4;2;0# | MD5 hash of the T;2048|4096;4;2;0 image tile |
Header
blobThe Header
blob is a small binary structure containing little-endian
integers as follows:
Offset | Size | Description |
---|---|---|
0 | 4 | Tile size in pixels |
4 | 4 | Image width in pixels |
8 | 4 | Image height in pixels |
12 | 4 | Unknown; have seen “8” (bits per channel?) |
16 | 4 | Number of focal planes |
20 | 4 | Unknown; have seen “3” (number of channels?) |
24 | 4 | Unknown; have seen “1” |
28 | 2 | Unknown; have seen “256” |
30 | 4 | Unknown; have seen “1” |
34 | 4 | Unknown; have seen “2” |
38 | 4 | Unknown; have seen “3” |
42 | 4 | Unknown; have seen “4” |
46 | 4 | Unknown; have seen “5” |
50 | 4 | Unknown; have seen “6” |
label
SVScannedImageDataXPO.Image
corresponding to SVSlideDataXPO.m_labelScan
macro
SVScannedImageDataXPO.Image
corresponding to SVSlideDataXPO.m_overviewScan
thumbnail
SVHRScanDataXPO.ThumbnailImage
sakura.Creator
SVSlideDataXPO.Creator
sakura.Date
SVSlideDataXPO.Date
sakura.Description
SVSlideDataXPO.Description
sakura.DiagnosisCode
SVSlideDataXPO.DiagnosisCode
sakura.FocussingMethod
SVHRScanDataXPO.FocussingMethod
sakura.Keywords
SVSlideDataXPO.Keywords
sakura.NominalLensMagnification
SVHRScanDataXPO.NominalLensMagnification
sakura.ResolutionMmPerPix
SVHRScanDataXPO.ResolutionMmPerPix
sakura.ScanId
SVHRScanDataXPO.ScanId
sakura.SlideId
SVSlideDataXPO.SlideId
openslide.mpp-x
1000 * sakura.ResolutionMmPerPix
openslide.mpp-y
1000 * sakura.ResolutionMmPerPix
openslide.objective-power
sakura.NominalLensMagnification
No public data available. Contact the mailing list if you have some.