[med-svn] [Git][med-team/openslide][master] 5 commits: d/rules: simplify and complement formats fetching.
Étienne Mollier (@emollier)
gitlab at salsa.debian.org
Sun Sep 6 18:10:02 BST 2026
Étienne Mollier pushed to branch master at Debian Med / openslide
Commits:
20dad4d8 by Étienne Mollier at 2026-09-06T18:52:39+02:00
d/rules: simplify and complement formats fetching.
This change adds support for fetching specifications for argos, dicom,
huron and zeiss formats, and makes the listing a little more readable,
with less duplicates in the d/rules file.
- - - - -
2262dfda by Étienne Mollier at 2026-09-06T18:58:23+02:00
d/openslide-formats.3.xml: add support for new formats.
This change adds support to inject the argos, dicom, huron and zeiss
formats into the xsl template.
- - - - -
240b7d5d by Étienne Mollier at 2026-09-06T19:00:07+02:00
d/openslide-formats.3: refresh to add argos, dicom, huron and zeiss.
- - - - -
291c8b7b by Étienne Mollier at 2026-09-06T19:00:47+02:00
d/rules: provide a clean-man target to clean things up.
This is a useful shortcut to clear artifacts downloaded during a
refresh of openslide-formats(3) manual.
- - - - -
ee6ae26a by Étienne Mollier at 2026-09-06T19:05:56+02:00
d/changelog: update the changelog.
- - - - -
4 changed files:
- debian/changelog
- debian/openslide-formats.3
- debian/openslide-formats.3.xml
- debian/rules
Changes:
=====================================
debian/changelog
=====================================
@@ -1,16 +1,28 @@
openslide (4.0.1+dfsg-2) UNRELEASED; urgency=medium
- * d/openslide-formats.3: refresh the manual page. (Closes: #1146814)
- * d/rules: ensure openslide-format(3) version consistency.
- This change implements a check at an early stage of the package
- construction, in order to make sure that there is no delta between the
- new upstream version and its shipped documentation.
+ * d/rules: simplify and complement formats fetching.
+ This change adds support for fetching specifications for argos, dicom,
+ huron and zeiss formats, and makes the listing a little more readable,
+ with less duplicates in the d/rules file.
+ * d/openslide-formats.3.xml: add support for new formats.
+ This change adds support to inject the argos, dicom, huron and zeiss
+ formats into the xsl template.
+ * d/openslide-formats.3: refresh the manual page to openslide 4.0.1
+ and also document support for argos, dicom, huron and zeiss file
+ formats. (Closes: #1146814)
* d/control: update file formats support list.
The change includes a subtle wording change in order to make the delta
between the package description and the exhaustive list of supported
format less problematic.
+ * d/rules: ensure openslide-format(3) version consistency.
+ This change implements a check at an early stage of the package
+ construction, in order to make sure that there is no delta between the
+ new upstream version and its shipped documentation.
+ * d/rules: provide a clean-man target to clean things up.
+ This is a useful shortcut to clear artifacts downloaded during a
+ refresh of openslide-formats(3) manual.
- -- Étienne Mollier <emollier at debian.org> Sun, 06 Sep 2026 12:32:30 +0200
+ -- Étienne Mollier <emollier at debian.org> Sun, 06 Sep 2026 19:02:24 +0200
openslide (4.0.1+dfsg-1) unstable; urgency=medium
=====================================
debian/openslide-formats.3
=====================================
@@ -329,6 +329,386 @@ aperio\&.AppMag
.SS "Test Data"
.PP
\m[blue]\fBhttps://openslide\&.cs\&.cmu\&.edu/download/openslide\-testdata/Aperio/\fR\m[]\&\s-2\u[3]\d\s+2
+.SH "ARGOS FORMAT"
+.PP
+Format
+.RS 4
+single\-file pyramidal tiled BigTIFF with non\-standard metadata
+.RE
+.PP
+File extensions
+.RS 4
+\&.avs
+.RE
+.PP
+OpenSlide vendor backend
+.RS 4
+argos
+.RE
+.SS "Vendor Documentation"
+.PP
+\m[blue]\fBDocumentation PDF\fR\m[]\&\s-2\u[4]\d\s+2
+.SS "Detection"
+.PP
+ARGOS slides are stored in single\-file BigTIFF format\&. OpenSlide will detect a file as ARGOS if:
+.sp
+.RS 4
+.ie n \{\
+\h'-04' 1.\h'+01'\c
+.\}
+.el \{\
+.sp -1
+.IP " 1." 4.2
+.\}
+The file is TIFF\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04' 2.\h'+01'\c
+.\}
+.el \{\
+.sp -1
+.IP " 2." 4.2
+.\}
+The initial image is tiled\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04' 3.\h'+01'\c
+.\}
+.el \{\
+.sp -1
+.IP " 3." 4.2
+.\}
+Tag 65000 contains valid XML whose root element is
+Argos\&.Scan\&.Metadata\&.
+.RE
+.SS "Relevant TIFF tags"
+.TS
+allbox tab(:);
+lB lB.
+T{
+Tag
+T}:T{
+Description
+T}
+.T&
+l l.
+T{
+65000
+T}:T{
+Metadata XML
+T}
+.TE
+.sp 1
+.SS "Metadata XML"
+.PP
+The first TIFF directory includes metadata XML in TIFF tag 65000\&. The field type is ASCII, but in our samples the value is not NUL\-terminated as required by TIFF, causing libtiff to warn about it\&.
+.TS
+allbox tab(:);
+lB lB.
+T{
+Value
+T}:T{
+Description
+T}
+.T&
+l l
+l l
+l l
+l l.
+T{
+MaxZ
+T}:T{
+Integer identifier for highest focal plane
+T}
+T{
+MinZ
+T}:T{
+Integer identifier for lowest focal plane
+T}
+T{
+ScanArea
+T}:T{
+Coordinates of scanned portion of the slide (cm)
+T}
+T{
+ZRange
+T}:T{
+Distance between outermost focal planes (μm)
+T}
+.TE
+.sp 1
+.SS "TIFF Image Directory Organization"
+.PP
+The TIFF file contains the image pyramid of the lowest focal plane, followed by each higher plane in succession\&. Images are sparse, with missing tiles represented by a zero
+TileOffset
+and a zero
+TileByteCount\&.
+.PP
+The last two TIFF directories are the thumbnail and macro images, which are both stripped\&.
+.SS "Associated Images"
+.PP
+thumbnail
+.RS 4
+second\-to\-last image in the file, non\-tiled
+.RE
+.PP
+macro
+.RS 4
+last image in the file, non\-tiled
+.RE
+.SS "Known Properties"
+.PP
+All simple key\-value data encoded in the metadata XML is represented as properties prefixed with \(lqargos\&.\(rq\&.
+.PP
+openslide\&.barcode
+.RS 4
+argos\&.Barcode
+.RE
+.PP
+openslide\&.mpp\-x
+.RS 4
+calculated as
+10000/tiff\&.XResolution, if
+tiff\&.ResolutionUnit
+is
+centimeter
+.RE
+.PP
+openslide\&.mpp\-y
+.RS 4
+calculated as
+10000/tiff\&.YResolution, if
+tiff\&.ResolutionUnit
+is
+centimeter
+.RE
+.PP
+openslide\&.objective\-power
+.RS 4
+normalized
+argos\&.ObjectiveMagnification
+.RE
+.SS "Test Data"
+.PP
+\m[blue]\fBhttps://openslide\&.cs\&.cmu\&.edu/download/openslide\-testdata/Argos/\fR\m[]\&\s-2\u[5]\d\s+2
+.SH "DICOM FORMAT"
+.PP
+Format
+.RS 4
+international standard multi\-file medical imaging format
+.RE
+.PP
+File extensions
+.RS 4
+\&.dcm
+.RE
+.PP
+OpenSlide vendor backend
+.RS 4
+dicom
+.RE
+.SS "Format Documentation"
+.PP
+\m[blue]\fBDICOM Whole Slide Imaging\fR\m[]\&\s-2\u[6]\d\s+2
+.SS "Detection"
+.PP
+OpenSlide will detect a file as DICOM if:
+.sp
+.RS 4
+.ie n \{\
+\h'-04' 1.\h'+01'\c
+.\}
+.el \{\
+.sp -1
+.IP " 1." 4.2
+.\}
+The file can be parsed as a DICOM Part 10 file\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04' 2.\h'+01'\c
+.\}
+.el \{\
+.sp -1
+.IP " 2." 4.2
+.\}
+The file does not have a
+\&.tif
+or
+\&.tiff
+filename extension or cannot be parsed as a TIFF file\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04' 3.\h'+01'\c
+.\}
+.el \{\
+.sp -1
+.IP " 3." 4.2
+.\}
+The Media Storage SOP Class UID is VL Whole Slide Microscopy Image Storage (1\&.2\&.840\&.10008\&.5\&.1\&.4\&.1\&.1\&.77\&.1\&.6)\&.
+.RE
+.SS "File Organization"
+.PP
+OpenSlide uses
+\m[blue]\fBlibdicom\fR\m[]\&\s-2\u[7]\d\s+2
+to parse and load DICOM files\&.
+.PP
+OpenSlide non\-recursively scans the containing directory for other DICOM files with the same Series Instance UID attribute value as the specified file\&. It uses the Image Flavor (value 3 of the Image Type attribute) of each matching file to determine the file\(cqs role within the whole slide image:
+.TS
+allbox tab(:);
+lB lB.
+T{
+Role
+T}:T{
+Image Flavor values
+T}
+.T&
+l l
+l l
+l l.
+T{
+Slide level
+T}:T{
+VOLUME
+T}
+T{
+Associated image
+T}:T{
+LABEL
+ OVERVIEW
+ THUMBNAIL
+T}
+T{
+Ignored
+T}:T{
+All others
+T}
+.TE
+.sp 1
+.PP
+A slide level can be spread across multiple files that share a Concatenation UID\&.
+.PP
+If multiple files in the directory have the same SOP Instance UID, the extra copies are ignored\&.
+.PP
+A file\(cqs Dimension Organization Type can be
+TILED_FULL,
+TILED_SPARSE, or
+3D\&. These transfer syntaxes and photometric interpretations are supported:
+.TS
+allbox tab(:);
+lB lB lB.
+T{
+Pixel encoding
+T}:T{
+Transfer Syntax UID
+T}:T{
+Allowed Photometric Interpretation values
+T}
+.T&
+l l l
+l l l
+l l l
+l l l.
+T{
+Uncompressed little\-endian
+T}:T{
+1\&.2\&.840\&.10008\&.1\&.2\&.1
+T}:T{
+RGB
+T}
+T{
+JPEG baseline
+T}:T{
+1\&.2\&.840\&.10008\&.1\&.2\&.4\&.50
+T}:T{
+RGB
+ YBR_FULL_422
+T}
+T{
+JPEG 2000
+T}:T{
+1\&.2\&.840\&.10008\&.1\&.2\&.4\&.91
+T}:T{
+RGB
+ YBR_ICT
+ YBR_RCT
+T}
+T{
+JPEG 2000 (lossless only)
+T}:T{
+1\&.2\&.840\&.10008\&.1\&.2\&.4\&.90
+T}:T{
+RGB
+ YBR_RCT
+T}
+.TE
+.sp 1
+.SS "ICC Profiles"
+.PP
+The slide ICC profile is taken from the ICC Profile attribute of the highest\-resolution image\&. Associated image ICC profiles are taken from the ICC Profile of the associated image\&.
+.SS "Associated Images"
+.TS
+allbox tab(:);
+lB lB.
+T{
+Associated image
+T}:T{
+Image Flavor
+T}
+.T&
+l l
+l l
+l l.
+T{
+label
+T}:T{
+LABEL
+T}
+T{
+macro
+T}:T{
+OVERVIEW
+T}
+T{
+thumbnail
+T}:T{
+THUMBNAIL
+T}
+.TE
+.sp 1
+.SS "Known Properties"
+.PP
+Many DICOM attributes are represented hierarchically as properties prefixed with \(lqdicom\&.\(rq\&.
+.PP
+openslide\&.barcode
+.RS 4
+Barcode Value from highest\-resolution level
+.RE
+.PP
+openslide\&.mpp\-x
+.RS 4
+normalized X component of Pixel Spacing from highest\-resolution level
+.RE
+.PP
+openslide\&.mpp\-y
+.RS 4
+normalized Y component of Pixel Spacing from highest\-resolution level
+.RE
+.PP
+openslide\&.objective\-power
+.RS 4
+Objective Lens Power from highest\-resolution level
+.RE
+.SS "Test Data"
+.PP
+\m[blue]\fBhttps://openslide\&.cs\&.cmu\&.edu/download/openslide\-testdata/DICOM/\fR\m[]\&\s-2\u[8]\d\s+2
.SH "HAMAMATSU FORMAT"
.PP
Format
@@ -1163,106 +1543,242 @@ T}:T{
ASCII metadata block, key=value pairs, not always present
T}
T{
-65455
+65455
+T}:T{
+Unknown, have seen 13
+T}
+T{
+65456
+T}:T{
+Unknown, have seen 101
+T}
+T{
+65457
+T}:T{
+Unknown, always 0?
+T}
+T{
+65458
+T}:T{
+Unknown, always 0?
+T}
+T{
+65459
+T}:T{
+Unknown, have seen ASCII \(lqJPEG\(rq, \(lqNative RGB\(rq, and \(lqRGB\(rq
+T}
+.TE
+.sp 1
+.SS "Optimisation File (only for VMS)"
+.PP
+The optimisation file contains a list of 32\- (or 64\- or 320\- ?) bit little endian values, giving the file offset into an MCU row, each offset starts at a 40\-byte alignment, and the last row (of the entire file, not each image) seems to be missing\&. The offsets are all packed into 1 file, even with multiple images\&. The order of images is left\-to\-right, top\-to\-bottom\&.
+.SS "Map File (only for VMS/VMU)"
+.PP
+The VMS map file is a standard JPEG file\&. Its restart markers (if any) are not included in the optimisation file\&. The VMU map file is in NGR format\&. This file can be used to provide a lower\-resolution view of the slide\&.
+.SS "Image Files (only for VMS/VMU)"
+.PP
+These files are given by the VMS/VMU
+ImageFile
+keys\&. They are assumed to have a height which is a multiple of the MCU height\&. They are assumed to have a width which is a multiple of MCUs per row divided by the restart interval\&.
+.PP
+For VMS, these files are in JPEG, for VMU they are in NGR format\&.
+.SS "NGR Format"
+.PP
+The NGR file contains uncompressed 16\-bit RGB data, with a small header\&. The files we have encountered start with
+GN, two more bytes, and then width, height, and column width in little endian 32\-bit format\&. The column width must divide evenly into the width\&. Column width is important, since NGR files are generated in columns, where the first column comes first in the file, followed by subsequent files\&. Columns are painted left\-to\-right\&.
+.PP
+At offset 24 is another 32\-bit integer which gives the offset in the file to the start of the image data\&. The image data we have encountered is in 16\-bit little endian format\&.
+.SS "Associated Images"
+.PP
+macro
+.RS 4
+the image file given by the
+MacroImage
+value in the VMS/VMU file, or
+SourceLens
+of \-1 in NDPI
+.RE
+.SS "Known Properties"
+.PP
+All key\-value data stored in the VMS/VMU file, and known tags from the NDPI file, are encoded as properties prefixed with \(lqhamamatsu\&.\(rq\&.
+.PP
+openslide\&.mpp\-x
+.RS 4
+For VMS, calculated as
+hamamatsu\&.PhysicalWidth/(1000*openslide\&.level[0]\&.width)\&. For NDPI, calculated as
+10000/tiff\&.XResolution, if
+tiff\&.ResolutionUnit
+is
+centimeter\&.
+.RE
+.PP
+openslide\&.mpp\-y
+.RS 4
+For VMS, calculated as
+hamamatsu\&.PhysicalHeight/(1000*openslide\&.level[0]\&.height)\&. For NDPI, calculated as
+10000/tiff\&.YResolution, if
+tiff\&.ResolutionUnit
+is
+centimeter\&.
+.RE
+.PP
+openslide\&.objective\-power
+.RS 4
+normalized
+hamamatsu\&.SourceLens
+.RE
+.SS "Test Data"
+.PP
+NDPI format
+.RS 4
+\m[blue]\fBhttps://openslide\&.cs\&.cmu\&.edu/download/openslide\-testdata/Hamamatsu/\fR\m[]\&\s-2\u[9]\d\s+2
+.RE
+.PP
+VMS format
+.RS 4
+\m[blue]\fBhttps://openslide\&.cs\&.cmu\&.edu/download/openslide\-testdata/Hamamatsu\-vms/\fR\m[]\&\s-2\u[10]\d\s+2
+.RE
+.SS "ImHex Patterns"
+<listitem>\m[blue]\fBVMS optimisation file\fR\m[]\&\s-2\u[11]\d\s+2
+</listitem><listitem>\m[blue]\fBVMU NGR file\fR\m[]\&\s-2\u[12]\d\s+2
+</listitem><listitem>\m[blue]\fBNDPI file\fR\m[]\&\s-2\u[13]\d\s+2
+</listitem>.SH "HURON FORMAT"
+.PP
+Format
+.RS 4
+single\-file pyramidal tiled TIFF with non\-standard metadata
+.RE
+.PP
+File extensions
+.RS 4
+\&.tif
+.RE
+.PP
+OpenSlide vendor backend
+.RS 4
+huron
+.RE
+.SS "Detection"
+.PP
+Huron slides are stored in single\-file TIFF format\&. OpenSlide will detect a file as Huron if:
+.sp
+.RS 4
+.ie n \{\
+\h'-04' 1.\h'+01'\c
+.\}
+.el \{\
+.sp -1
+.IP " 1." 4.2
+.\}
+The file is TIFF\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04' 2.\h'+01'\c
+.\}
+.el \{\
+.sp -1
+.IP " 2." 4.2
+.\}
+The initial image is tiled\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04' 3.\h'+01'\c
+.\}
+.el \{\
+.sp -1
+.IP " 3." 4.2
+.\}
+The
+ImageMake
+tag starts with
+Huron\&.
+.RE
+.SS "Relevant TIFF tags"
+.TS
+allbox tab(:);
+lB lB.
+T{
+Tag
T}:T{
-Unknown, have seen 13
+Description
T}
+.T&
+l l
+l l
+l l
+l l.
T{
-65456
+ImageDescription
T}:T{
-Unknown, have seen 101
+Stores some important key\-value pairs, see below
T}
T{
-65457
+ImageMake
T}:T{
-Unknown, always 0?
+Starts with Huron
T}
T{
-65458
+NewSubfileType
T}:T{
-Unknown, always 0?
+1 for the label associated image, 9 for the macro associated image
T}
T{
-65459
+XResolution, YResolution, ResolutionUnit
T}:T{
-Unknown, have seen ASCII \(lqJPEG\(rq, \(lqNative RGB\(rq, and \(lqRGB\(rq
+The pixel size in pyramid level 0
T}
.TE
.sp 1
-.SS "Optimisation File (only for VMS)"
-.PP
-The optimisation file contains a list of 32\- (or 64\- or 320\- ?) bit little endian values, giving the file offset into an MCU row, each offset starts at a 40\-byte alignment, and the last row (of the entire file, not each image) seems to be missing\&. The offsets are all packed into 1 file, even with multiple images\&. The order of images is left\-to\-right, top\-to\-bottom\&.
-.SS "Map File (only for VMS/VMU)"
-.PP
-The VMS map file is a standard JPEG file\&. Its restart markers (if any) are not included in the optimisation file\&. The VMU map file is in NGR format\&. This file can be used to provide a lower\-resolution view of the slide\&.
-.SS "Image Files (only for VMS/VMU)"
+.SS "Extra data stored in ImageDescription"
.PP
-These files are given by the VMS/VMU
-ImageFile
-keys\&. They are assumed to have a height which is a multiple of the MCU height\&. They are assumed to have a width which is a multiple of MCUs per row divided by the restart interval\&.
+The
+ImageDescription
+tag of the first TIFF directory contains newline\-delimited key\-value pairs\&. A key\-value pair is equals\-delimited with extra padding spaces\&. These key\-values are stored as properties starting with \(lqhuron\&.\(rq\&. Currently, OpenSlide does not use any of the information present in these key\-value fields\&.
+.SS "TIFF Image Directory Organization"
.PP
-For VMS, these files are in JPEG, for VMU they are in NGR format\&.
-.SS "NGR Format"
+The directory organization follows the same pattern as the
+\m[blue]\fBAperio format\fR\m[]\&\s-2\u[14]\d\s+2\&.
+.SS "Associated Images"
.PP
-The NGR file contains uncompressed 16\-bit RGB data, with a small header\&. The files we have encountered start with
-GN, two more bytes, and then width, height, and column width in little endian 32\-bit format\&. The column width must divide evenly into the width\&. Column width is important, since NGR files are generated in columns, where the first column comes first in the file, followed by subsequent files\&. Columns are painted left\-to\-right\&.
+There are up to three stripped images: a thumbnail image, which is always the second image in the file; and label and macro images at the end of the file, with subfile types 1 and 9 respectively\&.
.PP
-At offset 24 is another 32\-bit integer which gives the offset in the file to the start of the image data\&. The image data we have encountered is in 16\-bit little endian format\&.
-.SS "Associated Images"
+label
+.RS 4
+optional, non\-tiled image with subfile type 1
+.RE
.PP
macro
.RS 4
-the image file given by the
-MacroImage
-value in the VMS/VMU file, or
-SourceLens
-of \-1 in NDPI
+optional, non\-tiled image with subfile type 9
+.RE
+.PP
+thumbnail
+.RS 4
+the second image in the file
.RE
.SS "Known Properties"
.PP
-All key\-value data stored in the VMS/VMU file, and known tags from the NDPI file, are encoded as properties prefixed with \(lqhamamatsu\&.\(rq\&.
+All key\-value data encoded in the
+ImageDescription
+TIFF field is represented as properties prefixed with \(lqhuron\&.\(rq\&.
.PP
openslide\&.mpp\-x
.RS 4
-For VMS, calculated as
-hamamatsu\&.PhysicalWidth/(1000*openslide\&.level[0]\&.width)\&. For NDPI, calculated as
-10000/tiff\&.XResolution, if
-tiff\&.ResolutionUnit
-is
-centimeter\&.
+normalized TIFF resolution
.RE
.PP
openslide\&.mpp\-y
.RS 4
-For VMS, calculated as
-hamamatsu\&.PhysicalHeight/(1000*openslide\&.level[0]\&.height)\&. For NDPI, calculated as
-10000/tiff\&.YResolution, if
-tiff\&.ResolutionUnit
-is
-centimeter\&.
-.RE
-.PP
-openslide\&.objective\-power
-.RS 4
-normalized
-hamamatsu\&.SourceLens
+normalized TIFF resolution
.RE
.SS "Test Data"
.PP
-NDPI format
-.RS 4
-\m[blue]\fBhttps://openslide\&.cs\&.cmu\&.edu/download/openslide\-testdata/Hamamatsu/\fR\m[]\&\s-2\u[4]\d\s+2
-.RE
-.PP
-VMS format
-.RS 4
-\m[blue]\fBhttps://openslide\&.cs\&.cmu\&.edu/download/openslide\-testdata/Hamamatsu\-vms/\fR\m[]\&\s-2\u[5]\d\s+2
-.RE
-.SS "ImHex Patterns"
-<listitem>\m[blue]\fBVMS optimisation file\fR\m[]\&\s-2\u[6]\d\s+2
-</listitem><listitem>\m[blue]\fBVMU NGR file\fR\m[]\&\s-2\u[7]\d\s+2
-</listitem><listitem>\m[blue]\fBNDPI file\fR\m[]\&\s-2\u[8]\d\s+2
-</listitem>.SH "LEICA FORMAT"
+\m[blue]\fBhttps://openslide\&.cs\&.cmu\&.edu/download/openslide\-testdata/Huron/\fR\m[]\&\s-2\u[15]\d\s+2
+.SH "LEICA FORMAT"
.PP
Format
.RS 4
@@ -1375,7 +1891,7 @@ namespace, OpenSlide 3\&.4\&.0 and earlier report this property as a Base64\-enc
namespace, OpenSlide reports the barcode as it is stored in the XML, since we do not know whether those barcodes are Base64\-encoded\&. If you have a
2010/03/10
slide with a bar code, please comment in
-\m[blue]\fBthis bug\fR\m[]\&\s-2\u[9]\d\s+2
+\m[blue]\fBthis bug\fR\m[]\&\s-2\u[16]\d\s+2
or contact the OpenSlide mailing list\&.)
.RE
.PP
@@ -1446,7 +1962,7 @@ leica\&.objective
.RE
.SS "Test Data"
.PP
-\m[blue]\fBhttps://openslide\&.cs\&.cmu\&.edu/download/openslide\-testdata/Leica/\fR\m[]\&\s-2\u[10]\d\s+2
+\m[blue]\fBhttps://openslide\&.cs\&.cmu\&.edu/download/openslide\-testdata/Leica/\fR\m[]\&\s-2\u[17]\d\s+2
.SH "MIRAX FORMAT"
.PP
Format
@@ -1621,13 +2137,13 @@ mirax\&.GENERAL\&.OBJECTIVE_MAGNIFICATION
.RE
.SS "See Also"
.PP
-\m[blue]\fBIntroduction to MIRAX/MRXS\fR\m[]\&\s-2\u[11]\d\s+2\&. Note that our terminology has changed since that document was written; where it says \(lqtile\(rq, substitute \(lqimage\(rq, and where it says \(lqsubtile\(rq, substitute \(lqtile\(rq\&.
+\m[blue]\fBIntroduction to MIRAX/MRXS\fR\m[]\&\s-2\u[18]\d\s+2\&. Note that our terminology has changed since that document was written; where it says \(lqtile\(rq, substitute \(lqimage\(rq, and where it says \(lqsubtile\(rq, substitute \(lqtile\(rq\&.
.SS "Test Data"
.PP
-\m[blue]\fBhttps://openslide\&.cs\&.cmu\&.edu/download/openslide\-testdata/Mirax/\fR\m[]\&\s-2\u[12]\d\s+2
+\m[blue]\fBhttps://openslide\&.cs\&.cmu\&.edu/download/openslide\-testdata/Mirax/\fR\m[]\&\s-2\u[19]\d\s+2
.SS "ImHex Patterns"
-<listitem>\m[blue]\fBIndex file\fR\m[]\&\s-2\u[13]\d\s+2
-</listitem><listitem>\m[blue]\fBSlide position file\fR\m[]\&\s-2\u[14]\d\s+2
+<listitem>\m[blue]\fBIndex file\fR\m[]\&\s-2\u[20]\d\s+2
+</listitem><listitem>\m[blue]\fBSlide position file\fR\m[]\&\s-2\u[21]\d\s+2
</listitem>.SH "PHILIPS FORMAT"
.PP
Format
@@ -1813,7 +2329,7 @@ calculated as
.RE
.SS "Test Data"
.PP
-\m[blue]\fBhttps://openslide\&.cs\&.cmu\&.edu/download/openslide\-testdata/Philips\-TIFF/\fR\m[]\&\s-2\u[15]\d\s+2
+\m[blue]\fBhttps://openslide\&.cs\&.cmu\&.edu/download/openslide\-testdata/Philips\-TIFF/\fR\m[]\&\s-2\u[22]\d\s+2
.SH "SAKURA FORMAT"
.PP
Format
@@ -2563,7 +3079,7 @@ sakura\&.NominalLensMagnification
.SS "Test Data"
.PP
No public data available\&. Contact the
-\m[blue]\fBmailing list\fR\m[]\&\s-2\u[16]\d\s+2
+\m[blue]\fBmailing list\fR\m[]\&\s-2\u[23]\d\s+2
if you have some\&.
.SH "TRESTLE FORMAT"
.PP
@@ -2734,7 +3250,7 @@ files adjacent to the
file, where
N
is the level number\&. OpenSlide does not read these files, though they have been partially decoded; see
-\m[blue]\fBissue 21\fR\m[]\&\s-2\u[17]\d\s+2
+\m[blue]\fBissue 21\fR\m[]\&\s-2\u[24]\d\s+2
for details\&.
.SS "Associated Images"
.PP
@@ -2769,7 +3285,7 @@ trestle\&.Objective Power
.RE
.SS "Test Data"
.PP
-\m[blue]\fBhttps://openslide\&.cs\&.cmu\&.edu/download/openslide\-testdata/Trestle/\fR\m[]\&\s-2\u[18]\d\s+2
+\m[blue]\fBhttps://openslide\&.cs\&.cmu\&.edu/download/openslide\-testdata/Trestle/\fR\m[]\&\s-2\u[25]\d\s+2
.SH "VENTANA FORMAT"
.PP
Format
@@ -2878,8 +3394,147 @@ ventana\&.Magnification
.RE
.SS "Test Data"
.PP
-\m[blue]\fBhttps://openslide\&.cs\&.cmu\&.edu/download/openslide\-testdata/Ventana/\fR\m[]\&\s-2\u[19]\d\s+2
-.SH "GENERIC TILED TIFF FORMAT"
+\m[blue]\fBhttps://openslide\&.cs\&.cmu\&.edu/download/openslide\-testdata/Ventana/\fR\m[]\&\s-2\u[26]\d\s+2
+.SH "ZEISS FORMAT"
+.PP
+Format
+.RS 4
+single\-file binary format
+.RE
+.PP
+File extensions
+.RS 4
+\&.czi
+.RE
+.PP
+OpenSlide vendor backend
+.RS 4
+zeiss
+.RE
+.SS "Detection"
+.PP
+OpenSlide will detect a file as Zeiss if:
+.sp
+.RS 4
+.ie n \{\
+\h'-04' 1.\h'+01'\c
+.\}
+.el \{\
+.sp -1
+.IP " 1." 4.2
+.\}
+The file is not a TIFF\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04' 2.\h'+01'\c
+.\}
+.el \{\
+.sp -1
+.IP " 2." 4.2
+.\}
+The file has at least 32 bytes and starts with
+ZISRAWFILE\&.
+.RE
+.SS "CZI format"
+.PP
+CZI slides consist of overlapping image tiles at arbitrary pixel positions\&. Tiles in level 0 are typically large, e\&.g\&. 2056 x 2464 pixels\&. A slide may or may not include downsampled levels\&. Slides may include multiple scenes (scan regions), whose pyramids can have different numbers of downsampled levels\&. Scenes are reflected in the metadata but aren\(cqt very important for rendering the slide, since tile positions are relative to the slide and not the scene\&.
+.PP
+The storage unit for an image tile is the subblock\&. A subblock contains pixel data, a small piece of XML metadata (which is ignored by OpenSlide), and a directory entry containing the subblock\(cqs dimensions, pixel format, and compression type\&. Directory entries are stored alongside individual subblocks, and a second copy of each entry is stored in an array whose location is recorded in the file header\&.
+.PP
+A dimension represents coordinates along an axis; it contains a short string identifying the dimension, an offset, and for some dimensions, a size in level 0 and in the subblock\(cqs level\&. Possible dimensions are \(lqX\(rq and \(lqY\(rq pixel coordinates, a scene identifier \(lqS\(rq, a channel identifier \(lqC\(rq (with value 0 for brightfield), and the tile\(cqs Z\-index \(lqM\(rq\&. Higher Z\-indexes should be rendered after lower Z\-indexes\&. The downsample of a subblock can be computed by dividing its
+X
+or
+Y
+size in level 0 by its size in the subblock\(cqs level\&.
+.PP
+Pixel data may be compressed in any of several formats\&. JPEG XR is common\&. Uncompressed 24 bpp or 48 bpp pixel data is also possible, as well as pixel data compressed with lossless
+\m[blue]\fBZstandard\fR\m[]\&\s-2\u[27]\d\s+2
+compression\&. CZI\(cqs Zstandard support comes in two flavors, zstd0 and zstd1, with the latter prefixed by an uncompressed header typically three bytes long\&. A flag in that header indicates the presence of HiLo packing, in which the low bytes of 16\-bit color samples are packed together in the first half of the uncompressed buffer and the high bytes in the second half\&. CZI also permits JPEG and LZW compression, though these do not appear to be common and OpenSlide does not support them\&.
+.PP
+CZI files can embed arbitrary named attachments, which might be JPEG images, nested CZI files, or other metadata\&. The
+Label
+and
+SlidePreview
+attachments are stored as nested CZIs and the
+Thumbnail
+attachment is stored as a JPEG\&.
+.PP
+CZI also includes a large XML document containing scan parameters for the slide\&.
+Gamma values.PP
+Color images generated by at least Axioscan 7 scanners seem not to be gamma corrected before storage, and appear dark\&. The
+zeiss\&.Information\&.Instrument\&.Detectors\&.$camera_id\&.GammaDefault
+property (where
+$camera_id
+can be read from
+zeiss\&.Information\&.Image\&.Dimensions\&.Channels\&.Channel:0\&.DetectorSettings\&.Detector\&.Id) might be the recommended gamma correction for displaying CZI images\&. Observed values include 0\&.45 for Axiocam705c and AxioCamEL color cameras and 1 for Axiocam712m monochrome cameras\&.
+.SS "Associated Images"
+.PP
+label
+.RS 4
+the
+Label
+attachment (optional)
+.RE
+.PP
+macro
+.RS 4
+the
+SlidePreview
+attachment (optional)
+.RE
+.PP
+thumbnail
+.RS 4
+the
+Thumbnail
+attachment (optional)
+.RE
+.SS "Known Properties"
+.PP
+Certain text nodes and attributes from the XML metadata are represented as properties prefixed with \(lqzeiss\&.\(rq\&. The available properties are those from the
+AttachmentInfos,
+DisplaySetting,
+Information, and
+Scaling
+elements of
+ImageDocument\&.Metadata\&.
+.PP
+openslide\&.barcode
+.RS 4
+the value of the property matching
+zeiss\&.AttachmentInfos\&.*\&.Label\&.Barcodes\&.*\&.Content
+that occurs earliest in the XML metadata
+.RE
+.PP
+openslide\&.mpp\-x
+.RS 4
+calculated as 1000000 times
+zeiss\&.Scaling\&.Items\&.X\&.Value
+.RE
+.PP
+openslide\&.mpp\-y
+.RS 4
+calculated as 1000000 times
+zeiss\&.Scaling\&.Items\&.Y\&.Value
+.RE
+.PP
+openslide\&.objective\-power
+.RS 4
+normalized
+zeiss\&.Information\&.Instrument\&.Objectives\&.$objective\&.NominalMagnification
+where the value of
+$objective
+is obtained from
+zeiss\&.Information\&.Image\&.ObjectiveSettings\&.ObjectiveRef\&.Id
+.RE
+.SS "Test Data"
+.PP
+\m[blue]\fBhttps://openslide\&.cs\&.cmu\&.edu/download/openslide\-testdata/Zeiss/\fR\m[]\&\s-2\u[28]\d\s+2
+.SS "ImHex Patterns"
+<listitem>\m[blue]\fBCZI file\fR\m[]\&\s-2\u[29]\d\s+2
+</listitem>.SH "GENERIC TILED TIFF FORMAT"
.PP
Format
.RS 4
@@ -2949,7 +3604,7 @@ None\&.
Many TIFF tags are encoded as properties starting with \(lqtiff\&.\(rq\&.
.SS "Test Data"
.PP
-\m[blue]\fBhttps://openslide\&.cs\&.cmu\&.edu/download/openslide\-testdata/Generic\-TIFF/\fR\m[]\&\s-2\u[20]\d\s+2
+\m[blue]\fBhttps://openslide\&.cs\&.cmu\&.edu/download/openslide\-testdata/Generic\-TIFF/\fR\m[]\&\s-2\u[30]\d\s+2
.SH "AUTHORS"
.PP
The Carnegie Mellon School of Computer Science\&.
@@ -2972,86 +3627,136 @@ https://openslide.cs.cmu.edu/download/openslide-testdata/Aperio/
\%http://openslide.orghttps://openslide.cs.cmu.edu/download/openslide-testdata/Aperio/
.RE
.IP " 4." 4
+Documentation PDF
+.RS 4
+\%http://openslide.orghttps://github.com/user-attachments/files/15580286/ARGOS.AVS.File.Format.pdf
+.RE
+.IP " 5." 4
+https://openslide.cs.cmu.edu/download/openslide-testdata/Argos/
+.RS 4
+\%http://openslide.orghttps://openslide.cs.cmu.edu/download/openslide-testdata/Argos/
+.RE
+.IP " 6." 4
+DICOM Whole Slide Imaging
+.RS 4
+\%http://openslide.orghttps://dicom.nema.org/dicom/dicomwsi/
+.RE
+.IP " 7." 4
+libdicom
+.RS 4
+\%http://openslide.orghttps://github.com/ImagingDataCommons/libdicom/
+.RE
+.IP " 8." 4
+https://openslide.cs.cmu.edu/download/openslide-testdata/DICOM/
+.RS 4
+\%http://openslide.orghttps://openslide.cs.cmu.edu/download/openslide-testdata/DICOM/
+.RE
+.IP " 9." 4
https://openslide.cs.cmu.edu/download/openslide-testdata/Hamamatsu/
.RS 4
\%http://openslide.orghttps://openslide.cs.cmu.edu/download/openslide-testdata/Hamamatsu/
.RE
-.IP " 5." 4
+.IP "10." 4
https://openslide.cs.cmu.edu/download/openslide-testdata/Hamamatsu-vms/
.RS 4
\%http://openslide.orghttps://openslide.cs.cmu.edu/download/openslide-testdata/Hamamatsu-vms/
.RE
-.IP " 6." 4
+.IP "11." 4
VMS optimisation file
.RS 4
\%http://openslide.orghttps://github.com/openslide/openslide/blob/main/misc/imhex/hamamatsu-vms-opt.hexpat
.RE
-.IP " 7." 4
+.IP "12." 4
VMU NGR file
.RS 4
\%http://openslide.orghttps://github.com/openslide/openslide/blob/main/misc/imhex/hamamatsu-vmu-ngr.hexpat
.RE
-.IP " 8." 4
+.IP "13." 4
NDPI file
.RS 4
\%http://openslide.orghttps://github.com/openslide/openslide/blob/main/misc/imhex/hamamatsu-ndpi.hexpat
.RE
-.IP " 9." 4
+.IP "14." 4
+Aperio format
+.RS 4
+\%http://openslide.org/formats/aperio/
+.RE
+.IP "15." 4
+https://openslide.cs.cmu.edu/download/openslide-testdata/Huron/
+.RS 4
+\%http://openslide.orghttps://openslide.cs.cmu.edu/download/openslide-testdata/Huron/
+.RE
+.IP "16." 4
this bug
.RS 4
\%http://openslide.orghttps://github.com/openslide/openslide/issues/155
.RE
-.IP "10." 4
+.IP "17." 4
https://openslide.cs.cmu.edu/download/openslide-testdata/Leica/
.RS 4
\%http://openslide.orghttps://openslide.cs.cmu.edu/download/openslide-testdata/Leica/
.RE
-.IP "11." 4
+.IP "18." 4
Introduction to MIRAX/MRXS
.RS 4
\%http://openslide.orghttps://lists.andrew.cmu.edu/pipermail/openslide-users/2012-July/000373.html
.RE
-.IP "12." 4
+.IP "19." 4
https://openslide.cs.cmu.edu/download/openslide-testdata/Mirax/
.RS 4
\%http://openslide.orghttps://openslide.cs.cmu.edu/download/openslide-testdata/Mirax/
.RE
-.IP "13." 4
+.IP "20." 4
Index file
.RS 4
\%http://openslide.orghttps://github.com/openslide/openslide/blob/main/misc/imhex/mirax-index.hexpat
.RE
-.IP "14." 4
+.IP "21." 4
Slide position file
.RS 4
\%http://openslide.orghttps://github.com/openslide/openslide/blob/main/misc/imhex/mirax-position.hexpat
.RE
-.IP "15." 4
+.IP "22." 4
https://openslide.cs.cmu.edu/download/openslide-testdata/Philips-TIFF/
.RS 4
\%http://openslide.orghttps://openslide.cs.cmu.edu/download/openslide-testdata/Philips-TIFF/
.RE
-.IP "16." 4
+.IP "23." 4
mailing list
.RS 4
\%http://openslide.orghttps://lists.andrew.cmu.edu/mailman/listinfo/openslide-users/
.RE
-.IP "17." 4
+.IP "24." 4
issue 21
.RS 4
\%http://openslide.orghttps://github.com/openslide/openslide/issues/21#issuecomment-23615583
.RE
-.IP "18." 4
+.IP "25." 4
https://openslide.cs.cmu.edu/download/openslide-testdata/Trestle/
.RS 4
\%http://openslide.orghttps://openslide.cs.cmu.edu/download/openslide-testdata/Trestle/
.RE
-.IP "19." 4
+.IP "26." 4
https://openslide.cs.cmu.edu/download/openslide-testdata/Ventana/
.RS 4
\%http://openslide.orghttps://openslide.cs.cmu.edu/download/openslide-testdata/Ventana/
.RE
-.IP "20." 4
+.IP "27." 4
+Zstandard
+.RS 4
+\%http://openslide.orghttps://facebook.github.io/zstd/
+.RE
+.IP "28." 4
+https://openslide.cs.cmu.edu/download/openslide-testdata/Zeiss/
+.RS 4
+\%http://openslide.orghttps://openslide.cs.cmu.edu/download/openslide-testdata/Zeiss/
+.RE
+.IP "29." 4
+CZI file
+.RS 4
+\%http://openslide.orghttps://github.com/openslide/openslide/blob/main/misc/imhex/zeiss-czi.hexpat
+.RE
+.IP "30." 4
https://openslide.cs.cmu.edu/download/openslide-testdata/Generic-TIFF/
.RS 4
\%http://openslide.orghttps://openslide.cs.cmu.edu/download/openslide-testdata/Generic-TIFF/
=====================================
debian/openslide-formats.3.xml
=====================================
@@ -18,13 +18,17 @@
</refsection>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../properties.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../aperio.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../argos.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../dicom.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../hamamatsu.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../huron.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../leica.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../mirax.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../philips.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../sakura.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../trestle.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../ventana.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../zeiss.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../generic-tiff.xml"/>
<refsect1 id="authors">
<title>AUTHORS</title>
=====================================
debian/rules
=====================================
@@ -9,27 +9,26 @@ export DEB_BUILD_MAINT_OPTIONS = hardening=+all
include /usr/share/dpkg/default.mk
VER_FULL = $(DEB_VERSION_UPSTREAM)
-# it should be possible to simplify the following:
+FORMATS = \
+ aperio \
+ argos \
+ dicom \
+ hamamatsu \
+ huron \
+ leica \
+ mirax \
+ philips \
+ sakura \
+ trestle \
+ ventana \
+ zeiss \
+ generic-tiff
+
+%.html:
+ wget -O $@ https://openslide.org/formats/$(@:%.html=%)/
+
properties.html:
- wget -O $@ http://openslide.org/docs/properties/
-aperio.html:
- wget -O $@ http://openslide.org/formats/aperio/
-hamamatsu.html:
- wget -O $@ http://openslide.org/formats/hamamatsu/
-leica.html:
- wget -O $@ http://openslide.org/formats/leica/
-mirax.html:
- wget -O $@ http://openslide.org/formats/mirax/
-philips.html:
- wget -O $@ http://openslide.org/formats/philips/
-sakura.html:
- wget -O $@ http://openslide.org/formats/sakura/
-trestle.html:
- wget -O $@ http://openslide.org/formats/trestle/
-ventana.html:
- wget -O $@ http://openslide.org/formats/ventana/
-generic-tiff.html:
- wget -O $@ http://openslide.org/formats/generic-tiff/
+ wget -O $@ https://openslide.org/docs/$(@:%.html=%)/
%.xml: %.html
xsltproc --nonet --output $<.dummy.xml --html debian/process.xsl $<
@@ -37,9 +36,15 @@ generic-tiff.html:
xmllint --nonet --output $@ --format $<.dummy.xml
rm $<.dummy.xml
-debian/openslide-formats.3: properties.xml aperio.xml hamamatsu.xml leica.xml mirax.xml philips.xml sakura.xml trestle.xml ventana.xml generic-tiff.xml debian/openslide-formats.3.xml
+debian/openslide-formats.3: properties.xml $(FORMATS:%=%.xml) debian/openslide-formats.3.xml
(cd debian && sed -e 's at VER_FULL@$(VER_FULL)@g' openslide-formats.3.xml > openslide.tmp.xml)
(cd debian && xsltproc --xinclude openslide.tmp.xml)
+ @echo 'I: Run `debian/rules clean-man` to remove downloaded artifacts.'
+
+clean-man:
+ rm -vf $(FORMATS:%=%.xml) $(FORMATS:%=%.html)
+ rm -vf debian/openslide.tmp.xml properties.html properties.xml
+.PHONY: clean-man
# Prevent inconsistencies between the manual page and the current
# openslide version.
View it on GitLab: https://salsa.debian.org/med-team/openslide/-/compare/83fc5f4646ce15fbc461d67b67725af6cd887d19...ee6ae26ac369435293fb3aa3aad316a16ff8703a
--
View it on GitLab: https://salsa.debian.org/med-team/openslide/-/compare/83fc5f4646ce15fbc461d67b67725af6cd887d19...ee6ae26ac369435293fb3aa3aad316a16ff8703a
You're receiving this email because of your account on salsa.debian.org. Manage all notifications: https://salsa.debian.org/-/profile/notifications | Help: https://salsa.debian.org/help
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/debian-med-commit/attachments/20260906/2766dd34/attachment-0001.htm>
More information about the debian-med-commit
mailing list