Changeset 6230


Ignore:
Timestamp:
05/04/10 20:26:05 (10 years ago)
Author:
melissa
Message:

Updated to new MetadataStore/MetadataRetrieve APIs. This may temporarily cause some problems, in particular:

  • Several classes in loci.formats.meta have been temporarily removed, and affected code has been commented out
  • OME-XML export through OMEXMLServiceImpl does not yet work.
  • Pre-2010-04 OME-XML/OME-TIFF files will not open, as the necessary transforms are not yet implemented.
  • The bf-ice component does not compile.
Location:
trunk/components
Files:
7 deleted
136 edited

Legend:

Unmodified
Added
Removed
  • trunk/components/autogen/src/entities.txt

    r5798 r6230  
    2626# index parameter to allow differentiation between them. 
    2727 
    28 ## Project ## 
    29  
    30 [Project] 
    31 countable = true 
    32 path = Project+ 
    33 description = a project in the metadata store 
    34  
    35 [Project ID] 
    36 type = String 
    37 getter = getNodeID 
    38 setter = setNodeID 
    39 description = unique label identifying the project 
    40  
    41 [Project Description] 
    42 type = String 
    43 description = description of the project 
    44  
    45 [Project ExperimenterRef] 
    46 type = String 
    47 description = reference to the experimenter who owns the project 
    48  
    49 [Project GroupRef] 
    50 type = String 
    51 description = reference to the group that owns the project 
    52  
    53 [Project Name] 
    54 type = String 
    55 description = name of the project 
    56  
    57 ## ProjectRef ## 
    58  
    59 [ProjectRef] 
     28# Root/UUID 
     29 
     30[Arc] 
     31countable = true 
     32path = Instrument+/Arc+ 
     33 
     34[Arc ID] 
     35type = String 
     36 
     37[Arc LotNumber] 
     38type = String 
     39 
     40[Arc Manufacturer] 
     41type = String 
     42 
     43[Arc Model] 
     44type = String 
     45 
     46[Arc Power] 
     47type = Double 
     48 
     49[Arc SerialNumber] 
     50type = String 
     51 
     52[Arc Type] 
     53type = ArcType 
     54 
     55[FileAnnotationBinaryFile] 
     56countable = true 
     57path = FileAnnotationBinaryFile+ 
     58 
     59[FileAnnotationBinaryFile FileName] 
     60type = String 
     61 
     62[FileAnnotationBinaryFile MIMEType] 
     63type = String 
     64 
     65[FileAnnotationBinaryFile FileSize] 
     66type = Integer 
     67 
     68[OTFBinaryFile] 
     69countable = true 
     70path = OTFBinaryFile+ 
     71 
     72[OTFBinaryFile FileName] 
     73type = String 
     74 
     75[OTFBinaryFile MIMEType] 
     76type = String 
     77 
     78[OTFBinaryFile FileSize] 
     79type = Integer 
     80 
     81[BooleanAnnotation] 
     82countable = true 
     83path = BooleanAnnotation+ 
     84 
     85[BooleanAnnotation ID] 
     86type = String 
     87 
     88[BooleanAnnotation Namespace] 
     89type = String 
     90 
     91[BooleanAnnotation Value] 
     92type = Boolean 
     93 
     94[Channel] 
     95countable = true 
     96path = Image+/Channel+ 
     97 
     98[Channel AcquisitionMode] 
     99type = AcquisitionMode 
     100 
     101[Channel AnnotationRef] 
     102type = String 
     103countable = true 
     104path = Image+/Channel+/AnnotationRef+ 
     105 
     106[Channel Color] 
     107type = Integer 
     108 
     109[Channel ContrastMethod] 
     110type = ContrastMethod 
     111 
     112[Channel EmissionWavelength] 
     113type = PositiveInteger 
     114 
     115[Channel ExcitationWavelength] 
     116type = PositiveInteger 
     117 
     118[Channel FilterSetRef] 
     119type = String 
     120 
     121[Channel Fluor] 
     122type = String 
     123 
     124[Channel ID] 
     125type = String 
     126 
     127[Channel IlluminationType] 
     128type = IlluminationType 
     129 
     130[Channel NDFilter] 
     131type = Double 
     132 
     133[Channel Name] 
     134type = String 
     135 
     136[Channel OTFRef] 
     137type = String 
     138 
     139[Channel PinholeSize] 
     140type = Double 
     141 
     142[Channel PockelCellSetting] 
     143type = Integer 
     144 
     145[Channel SamplesPerPixel] 
     146type = Integer 
     147 
     148[Dataset] 
     149countable = true 
     150path = Dataset+ 
     151 
     152[Dataset AnnotationRef] 
     153countable = true 
     154type = String 
     155path = Dataset+/AnnotationRef+ 
     156 
     157[Dataset Description] 
     158type = String 
     159 
     160[Dataset ExperimenterRef] 
     161type = String 
     162 
     163[Dataset GroupRef] 
     164type = String 
     165 
     166[Dataset ID] 
     167type = String 
     168 
     169[Dataset Name] 
     170type = String 
     171 
     172[Dataset ProjectRef] 
    60173countable = true 
    61174path = Dataset+/ProjectRef+ 
    62 description = reference to a project 
    63  
    64 [ProjectRef ID] 
    65 type = String 
    66 getter = getNodeID 
    67 setter = setNodeID 
    68 description = unique label identifying the project 
    69  
    70 ## Dataset ## 
    71  
    72 [Dataset] 
    73 countable = true 
    74 path = Dataset+ 
    75 description = a dataset in the metadata store 
    76  
    77 [Dataset ID] 
    78 type = String 
    79 getter = getNodeID 
    80 setter = setNodeID 
    81 description = unique label identifying the dataset 
    82  
    83 [Dataset Locked] 
     175type = String 
     176 
     177[Detector] 
     178countable = true 
     179path = Instrument+/Detector+ 
     180 
     181[Detector AmplificationGain] 
     182type = Double 
     183 
     184[Detector Gain] 
     185type = Double 
     186 
     187[Detector ID] 
     188type = String 
     189 
     190[Detector LotNumber] 
     191type = String 
     192 
     193[Detector Manufacturer] 
     194type = String 
     195 
     196[Detector Model] 
     197type = String 
     198 
     199[Detector Offset] 
     200type = Double 
     201 
     202[Detector SerialNumber] 
     203type = String 
     204 
     205[Detector Type] 
     206type = DetectorType 
     207 
     208[Detector Voltage] 
     209type = Double 
     210 
     211[Detector Zoom] 
     212type = Double 
     213 
     214[DetectorSettings] 
     215countable = false 
     216path = Image+/Channel+/DetectorSettings 
     217 
     218[DetectorSettings Binning] 
     219type = Binning 
     220 
     221[DetectorSettings Gain] 
     222type = Double 
     223 
     224[DetectorSettings ID] 
     225type = String 
     226 
     227[DetectorSettings Offset] 
     228type = Double 
     229 
     230[DetectorSettings ReadOutRate] 
     231type = Double 
     232 
     233[DetectorSettings Voltage] 
     234type = Double 
     235 
     236[Dichroic] 
     237countable = true 
     238path = Instrument+/Dichroic+ 
     239 
     240[Dichroic ID] 
     241type = String 
     242 
     243[Dichroic LotNumber] 
     244type = String 
     245 
     246[Dichroic Manufacturer] 
     247type = String 
     248 
     249[Dichroic Model] 
     250type = String 
     251 
     252[Dichroic SerialNumber] 
     253type = String 
     254 
     255[DoubleAnnotation] 
     256countable = true 
     257path = DoubleAnnotation+ 
     258 
     259[DoubleAnnotation ID] 
     260type = String 
     261 
     262[DoubleAnnotation Namespace] 
     263type = String 
     264 
     265[DoubleAnnotation Value] 
     266type = Double 
     267 
     268[Ellipse] 
     269countable = false 
     270path = ROI+/Shape+/Ellipse 
     271 
     272[Ellipse Description] 
     273type = String 
     274 
     275[Ellipse Fill] 
     276type = Integer 
     277 
     278[Ellipse FontSize] 
     279type = Integer 
     280 
     281[Ellipse ID] 
     282type = String 
     283 
     284[Ellipse Label] 
     285type = String 
     286 
     287[Ellipse Name] 
     288type = String 
     289 
     290[Ellipse Stroke] 
     291type = Integer 
     292 
     293[Ellipse StrokeDashArray] 
     294type = String 
     295 
     296[Ellipse StrokeWidth] 
     297type = Double 
     298 
     299[Ellipse TheC] 
     300type = Integer 
     301 
     302[Ellipse TheT] 
     303type = Integer 
     304 
     305[Ellipse TheZ] 
     306type = Integer 
     307 
     308[Ellipse Transform] 
     309type = String 
     310 
     311[Ellipse RadiusX] 
     312type = Double 
     313 
     314[Ellipse RadiusY] 
     315type = Double 
     316 
     317[Ellipse X] 
     318type = Double 
     319 
     320[Ellipse Y] 
     321type = Double 
     322 
     323[Experiment] 
     324countable = true 
     325path = Experiment+ 
     326 
     327[Experiment Description] 
     328type = String 
     329 
     330[Experiment ExperimenterRef] 
     331type = String 
     332 
     333[Experiment ID] 
     334type = String 
     335 
     336[Experiment Type] 
     337type = ExperimentType 
     338 
     339[Experimenter] 
     340countable = true 
     341path = Experimenter+ 
     342 
     343[Experimenter AnnotationRef] 
     344countable = true 
     345path = Experimenter+/AnnotationRef+ 
     346type = String 
     347 
     348[Experimenter DisplayName] 
     349type = String 
     350 
     351[Experimenter Email] 
     352type = String 
     353 
     354[Experimenter FirstName] 
     355type = String 
     356 
     357[Experimenter GroupRef] 
     358countable = true 
     359type = String 
     360path = Experimenter+/GroupRef+ 
     361 
     362[Experimenter ID] 
     363type = String 
     364 
     365[Experimenter Institution] 
     366type = String 
     367 
     368[Experimenter LastName] 
     369type = String 
     370 
     371[Experimenter MiddleName] 
     372type = String 
     373 
     374[Experimenter UserName] 
     375type = String 
     376 
     377[Filament] 
     378countable = true 
     379path = Instrument+/Filament+ 
     380 
     381[Filament ID] 
     382type = String 
     383 
     384[Filament LotNumber] 
     385type = String 
     386 
     387[Filament Manufacturer] 
     388type = String 
     389 
     390[Filament Model] 
     391type = String 
     392 
     393[Filament Power] 
     394type = Double 
     395 
     396[Filament SerialNumber] 
     397type = String 
     398 
     399[Filament Type] 
     400type = FilamentType 
     401 
     402[FileAnnotation] 
     403countable = true 
     404path = FileAnnotation+ 
     405 
     406[FileAnnotation ID] 
     407type = String 
     408 
     409[FileAnnotation Namespace] 
     410type = String 
     411 
     412[Filter] 
     413countable = true 
     414path = Instrument+/Filter+ 
     415 
     416[Filter FilterWheel] 
     417type = String 
     418 
     419[Filter ID] 
     420type = String 
     421 
     422[Filter LotNumber] 
     423type = String 
     424 
     425[Filter Manufacturer] 
     426type = String 
     427 
     428[Filter Model] 
     429type = String 
     430 
     431[Filter SerialNumber] 
     432type = String 
     433 
     434[Filter Type] 
     435type = FilterType 
     436 
     437[FilterSet] 
     438countable= true 
     439path = Instrument+/FilterSet+ 
     440 
     441[FilterSet DichroicRef] 
     442type = String 
     443 
     444[FilterSet EmissionFilterRef] 
     445countable = true 
     446path = Instrument+/FilterSet+/EmissionFilterRef+ 
     447type = String 
     448 
     449[FilterSet ExcitationFilterRef] 
     450countable = true 
     451path = Instrument+/FilterSet+/ExcitationFilterRef+ 
     452type = String 
     453 
     454[FilterSet ID] 
     455type = String 
     456 
     457[FilterSet LotNumber] 
     458type = String 
     459 
     460[FilterSet Manufacturer] 
     461type = String 
     462 
     463[FilterSet Model] 
     464type = String 
     465 
     466[FilterSet SerialNumber] 
     467type = String 
     468 
     469[Group] 
     470countable = true 
     471path = Group+ 
     472 
     473[Group Contact] 
     474type = String 
     475 
     476[Group Description] 
     477type = String 
     478 
     479[Group ID] 
     480type = String 
     481 
     482[Group Leader] 
     483type = String 
     484 
     485[Group Name] 
     486type = String 
     487 
     488[Image] 
     489countable = true 
     490path = Image+ 
     491 
     492[Image AcquiredDate] 
     493type = String 
     494 
     495[Image AnnotationRef] 
     496countable = true 
     497path = Image+/AnnotationRef+ 
     498type = String 
     499 
     500[Image DatasetRef] 
     501countable = true 
     502path = Image+/DatasetRef+ 
     503type = String 
     504 
     505[Image Description] 
     506type = String 
     507 
     508[Image ExperimentRef] 
     509type = String 
     510 
     511[Image ExperimenterRef] 
     512type = String 
     513 
     514[Image GroupRef] 
     515type = String 
     516 
     517[Image ID] 
     518type = String 
     519 
     520[Image InstrumentRef] 
     521type = String 
     522 
     523[Image MicrobeamManipulationRef] 
     524countable = true 
     525path = Image+/MicrobeamManipulationRef+ 
     526type = String 
     527 
     528[Image Name] 
     529type = String 
     530 
     531[Image ROIRef] 
     532countable = true 
     533path = Image+/ROIRef+ 
     534type = String 
     535 
     536[ImagingEnvironment] 
     537countable = false 
     538path = Image+/ImagingEnvironment 
     539 
     540[ImagingEnvironment AirPressure] 
     541type = Double 
     542 
     543[ImagingEnvironment CO2Percent] 
     544type = PercentFraction 
     545 
     546[ImagingEnvironment Humidity] 
     547type = PercentFraction 
     548 
     549[ImagingEnvironment Temperature] 
     550type = Double 
     551 
     552[Instrument] 
     553countable = true 
     554path = Instrument+ 
     555 
     556[Instrument ID] 
     557type = String 
     558 
     559[Laser] 
     560countable = true 
     561path = Instrument+/Laser+ 
     562 
     563[Laser ID] 
     564type = String 
     565 
     566[Laser LotNumber] 
     567type = String 
     568 
     569[Laser Manufacturer] 
     570type = String 
     571 
     572[Laser Model] 
     573type = String 
     574 
     575[Laser Power] 
     576type = Double 
     577 
     578[Laser SerialNumber] 
     579type = String 
     580 
     581[Laser FrequencyMultiplication] 
     582type = PositiveInteger 
     583 
     584[Laser LaserMedium] 
     585type = LaserMedium 
     586 
     587[Laser PockelCell] 
    84588type = Boolean 
    85 description = indicates whether the images in the dataset can be altered 
    86  
    87 [Dataset Description] 
    88 type = String 
    89 description = description of the dataset 
    90  
    91 [Dataset ExperimenterRef] 
    92 type = String 
    93 description = reference to the experimenter who owns the dataset 
    94  
    95 [Dataset GroupRef] 
    96 type = String 
    97 description = reference to the group that owns the dataset 
    98  
    99 [Dataset Name] 
    100 type = String 
    101 description = name of the dataset 
    102  
    103 ## DatasetRef ## 
    104  
    105 [DatasetRef] 
    106 countable = true 
    107 path = Image+/DatasetRef+ 
    108 description = TODO 
    109  
    110 [DatasetRef 2003FC] 
    111 path = - 
    112  
    113 [DatasetRef ID] 
    114 type = String 
    115 getter = getNodeID 
    116 setter = setNodeID 
    117 description = TODO 
    118  
    119 ### Entities for 5D Image information ### 
    120  
    121 ## Image ## 
    122  
    123 [Image] 
    124 countable = true 
    125 path = Image+ 
    126 description = an image in the metadata store 
    127  
    128 [Image ID] 
    129 type = String 
    130 getter = getNodeID 
    131 setter = setNodeID 
    132 description = unique label identifying the image 
    133  
    134 [Image Name] 
    135 type = String 
    136 description = the full name of the image 
    137  
    138 [Image CreationDate] 
    139 type = String 
    140 description = the creation date of the image 
    141  
    142 [Image Description] 
    143 type = String 
    144 description = the full description of the image 
    145  
    146 [Image ExperimenterRef] 
    147 type = String 
    148 description = reference to the experimenter who created this image 
    149  
    150 [Image InstrumentRef] 
    151 type = String 
    152 description = label reference for the associated instrument 
    153  
    154 [Image GroupRef] 
    155 type = String 
    156 description = reference to the group that owns this image 
    157  
    158 [Image ExperimentRef] 
    159 type = String 
    160 description = reference to the experiment to which this image belongs 
    161  
    162 [Image DefaultPixels] 
    163 type = String 
    164 description = default pixels set for the image 
    165  
    166 [Image AcquiredPixels] 
    167 type = String 
    168 description = acquired pixels set for the image 
    169  
    170 [Image AcquiredPixels 200706] 
    171 path = - 
    172  
    173 [Image AcquiredPixels 2003FC] 
    174 path = - 
    175  
    176 ## Pixels ## 
    177  
    178 [Pixels] 
    179 countable = true 
    180 path = Image+/Pixels+ 
    181 description = a pixels set in the metadata store 
    182  
    183 [Pixels ID] 
    184 type = String 
    185 getter = getNodeID 
    186 setter = setNodeID 
    187 description = unique label identifying the pixels set 
    188  
    189 [Pixels SizeX] 
    190 type = Integer 
    191 description = The size of an individual plane or section's X axis (width). 
    192  
    193 [Pixels SizeY] 
    194 type = Integer 
    195 description = The size of an individual plane or section's Y axis (height). 
    196  
    197 [Pixels SizeZ] 
    198 type = Integer 
    199 description = number of optical sections per stack 
    200  
    201 [Pixels SizeC] 
    202 type = Integer 
    203 description = number of channels per timepoint 
    204  
    205 [Pixels SizeT] 
    206 type = Integer 
    207 description = number of timepoints 
    208  
    209 [Pixels PixelType] 
    210 type = String 
    211 description = the pixel type 
    212 enumeration = {"int8", "uint8", "int16", "uint16", "int32", "uint32", "float", "double"} 
    213  
    214 [Pixels PixelType 2003FC] 
    215 enumeration = {"int8", "int16", "int32", "Uint8", "Uint16", "Uint32", "float"} 
    216  
    217 [Pixels BigEndian] 
    218 type = Boolean 
    219 description = endianness of the pixels set 
    220  
    221 [Pixels DimensionOrder] 
    222 type = String 
    223 description = the dimension order of the pixels set 
    224 enumeration = {"XYZCT", "XYZTC", "XYCTZ", "XYCZT", "XYTCZ", "XYTZC"} 
    225  
    226 ## Thumbnail ## 
    227  
    228 [Thumbnail] 
    229 path = Image+/Thumbnail 
    230 description = an embedded or external thumbnail for an image 
    231  
    232 [Thumbnail ID] 
    233 type = String 
    234 getter = getNodeID 
    235 setter = setNodeID 
    236 description = unique label identifying the thumbnail 
    237  
    238 [Thumbnail MIMEtype] 
    239 type = String 
    240 description = MIME-type of the thumbnail; must be set to 'SVG' if thumbnail \ 
    241               data is embedded 
    242  
    243 [Thumbnail Href] 
    244 type = String 
    245 description = external URI referring to the thumbnail 
    246 getter = gethref 
    247 setter = sethref 
    248  
    249 ## TiffData ## 
    250  
    251 [TiffData] 
    252 countable = true 
    253 path = Image+/Pixels+/TiffData+ 
    254 description = describes the location and organization of pixel data within a \ 
    255               TIFF file 
    256  
    257 [TiffData FirstZ] 
    258 type = Integer 
    259 description = Z position of the image plane at the specified IFD, indexed from 0 
    260  
    261 [TiffData FirstT] 
    262 type = Integer 
    263 description = T position of the image plane at the specified IFD, indexed from 0 
    264  
    265 [TiffData FirstC] 
    266 type = Integer 
    267 description = C position of the image plane at the specified IFD, indexed from 0 
    268  
    269 [TiffData IFD] 
    270 type = Integer 
    271 description = first IFD for which this element is applicable, indexed from 0 
    272  
    273 [TiffData NumPlanes] 
    274 type = Integer 
    275 description = Number of IFDs for which this element is applicable; default is \ 
    276               the number of planes (if no IFD is specified), or 1 (if an IFD \ 
    277               is specified). 
    278  
    279 [TiffData UUID] 
    280 path = Image+/Pixels+/TiffData+/UUID 
    281 type = String 
    282 getter = getCData 
    283 setter = setCData 
    284 description = unique identifier indicating which file contains these IFDs 
    285  
    286 [TiffData UUID 200706] 
    287 path = - 
    288  
    289 [TiffData UUID 2003FC] 
    290 path = - 
    291  
    292 [TiffData FileName] 
    293 path = Image+/Pixels+/TiffData+/UUID 
    294 type = String 
    295 description = the name of the file containing these IFDs 
    296  
    297 [TiffData FileName 200706] 
    298 path = - 
    299  
    300 [TiffData FileName 2003FC] 
    301 path = - 
    302  
    303 ## Dimensions ## 
    304  
    305 [Dimensions] 
    306 path = Image+/Pixels+ 
    307 description = a set of pixel dimensions in the metadata store \ 
    308               with a particular index 
    309  
    310 [Dimensions 2003FC] 
    311 path = Image+ 
    312  
    313 [Dimensions PhysicalSizeX] 
    314 type = Double 
    315 description = the size of an individual pixel's X axis in microns 
    316  
    317 [Dimensions PhysicalSizeX 2003FC] 
    318 getter = getPixelSizeX 
    319 setter = setPixelSizeX 
    320  
    321 [Dimensions PhysicalSizeY] 
    322 type = Double 
    323 description = the size of an individual pixel's Y axis in microns 
    324  
    325 [Dimensions PhysicalSizeY 2003FC] 
    326 getter = getPixelSizeY 
    327 setter = setPixelSizeY 
    328  
    329 [Dimensions PhysicalSizeZ] 
    330 type = Double 
    331 description = the size of an individual pixel's Z axis in microns 
    332  
    333 [Dimensions PhysicalSizeZ 2003FC] 
    334 getter = getPixelSizeZ 
    335 setter = setPixelSizeZ 
    336  
    337 [Dimensions TimeIncrement] 
    338 type = Double 
    339 description = the distance between adjacent time points in seconds 
    340  
    341 [Dimensions WaveStart] 
    342 type = Integer 
    343 description = the starting wavelength in nanometers 
    344  
    345 [Dimensions WaveIncrement] 
    346 type = Integer 
    347 description = the distance between adjacent wavelengths in nanometers 
    348  
    349 ## Region ## 
    350  
    351 [Region] 
    352 countable = true 
    353 path = Image+/Region+ 
    354 description = TODO 
    355  
    356 [Region ID] 
    357 type = String 
    358 getter = getNodeID 
    359 setter = setNodeID 
    360 description = TODO 
    361  
    362 [Region 2003FC] 
    363 path = - 
    364  
    365 [Region Tag] 
    366 type = String 
    367 description = TODO 
    368  
    369 [Region Name] 
    370 type = String 
    371 description = TODO 
    372  
    373 ## ImagingEnvironment ## 
    374  
    375 [ImagingEnvironment] 
    376 path = Image+/ImagingEnvironment 
    377 description = the imaging environment for a particular image 
    378  
    379 [ImagingEnvironment Temperature] 
    380 type = Double 
    381 description = temperature of the imaging environment, in Celsius 
    382  
    383 [ImagingEnvironment AirPressure] 
    384 type = Double 
    385 description = air pressure, in millibars 
    386  
    387 [ImagingEnvironment Humidity] 
    388 type = Double 
    389 description = humidity, in percent fractions from 0.0 to 1.0 
    390  
    391 [ImagingEnvironment CO2Percent] 
    392 type = Double 
    393 description = CO2 level, in percent fractions from 0.0 to 1.0 
    394  
    395 ## Plane ## 
    396  
    397 [Plane] 
    398 countable = true 
    399 path = Image+/Pixels+/Plane+ 
    400 description = the plane information for a specific X-Y plane (section) \ 
    401               within a particular pixels set 
    402  
    403 [Plane 2003FC] 
    404 path = - 
    405  
    406 [Plane ID] 
    407 type = String 
    408 getter = getNodeID 
    409 setter = setNodeID 
    410 description = unique label identifying this plane 
    411  
    412 [Plane TheZ] 
    413 type = Integer 
    414 description = the optical section index 
    415  
    416 [Plane TheC] 
    417 type = Integer 
    418 description = the channel index 
    419  
    420 [Plane TheT] 
    421 type = Integer 
    422 description = the timepoint 
    423  
    424 [Plane HashSHA1] 
    425 type = String 
    426 description = the SHA1 hash of this plane's pixels 
    427  
    428 [Plane HashSHA1 200706] 
    429 path = - 
    430  
    431 ## PlaneTiming ## 
    432  
    433 [PlaneTiming] 
    434 path = Image+/Pixels+/Plane+/PlaneTiming 
    435 description = the timing information for a specific X-Y plane (section) \ 
    436               within a particular pixels set 
    437  
    438 [PlaneTiming 2003FC] 
    439 path = - 
    440  
    441 [PlaneTiming DeltaT] 
    442 type = Double 
    443 description = the time in seconds since the beginning of the experiment 
    444  
    445 [PlaneTiming ExposureTime] 
    446 type = Double 
    447 description = the exposure time in seconds 
    448  
    449 ## StagePosition ## 
    450  
    451 [StagePosition] 
    452 path = Image+/Pixels+/Plane+/StagePosition 
    453 description = the stage position for a specific X-Y plane (section) \ 
    454               within a particular pixels set 
    455  
    456 [StagePosition 2003FC] 
    457 path = - 
    458  
    459 [StagePosition PositionX] 
    460 type = Double 
    461 description = the X coordinate of the stage position 
    462  
    463 [StagePosition PositionY] 
    464 type = Double 
    465 description = the Y coordinate of the stage position 
    466  
    467 [StagePosition PositionZ] 
    468 type = Double 
    469 description = the Z coordinate of the stage position 
    470  
    471 ## MicrobeamManipulation ## 
    472  
    473 [MicrobeamManipulation] 
    474 countable = true 
    475 path = Image+/MicrobeamManipulation+ 
    476 description = defines a microbeam operation and the region of the image to \ 
    477               which it was applied 
    478  
    479 [MicrobeamManipulation 2003FC] 
    480 path = - 
    481  
    482 [MicrobeamManipulation ID] 
    483 type = String 
    484 getter = getNodeID 
    485 setter = setNodeID 
    486 description = unique label identifying the microbeam manipulation 
    487  
    488 [MicrobeamManipulation Type] 
    489 type = String 
    490 description = type of operation - FRAP, Photoablation, Photoactivation, \ 
    491               Uncaging, OpticalTrapping, or Other 
    492 enumeration = {"FRAP", "Photoablation", "Photoactivation", "Uncaging", "OpticalTrapping", "Other"} 
    493 defaultValue = "Other" 
    494  
    495 [MicrobeamManipulation ExperimenterRef] 
    496 type = String 
    497 description = reference to the experimenter who applied this manipulation 
    498  
    499 ## MicrobeamManipulationRef ## 
    500  
    501 [MicrobeamManipulationRef] 
    502 countable = true 
    503 path = Experiment+/MicrobeamManipulationRef+ 
    504 description = TODO 
    505  
    506 [MicrobeamManipulationRef 2003FC] 
    507 path = - 
    508  
    509 [MicrobeamManipulationRef ID] 
    510 getter = getNodeID 
    511 setter = setNodeID 
    512 type = String 
    513 description = TODO 
    514  
    515 ### Entities for channel information for a particular Image ### 
    516  
    517 ## LogicalChannel ## 
    518  
    519 [LogicalChannel] 
    520 countable = true 
    521 path = Image+/LogicalChannel+ 
    522 description = a logical channel and physical channel in the metadata store \ 
    523               for a particular pixels set 
    524  
    525 [LogicalChannel 2003FC] 
    526 path = Image+/ChannelInfo+ 
    527  
    528 [LogicalChannel ID] 
    529 type = String 
    530 getter = getNodeID 
    531 setter = setNodeID 
    532 description = unique label identifying the logical channel 
    533  
    534 [LogicalChannel Name] 
    535 type = String 
    536 description = the logical channel's name 
    537  
    538 [LogicalChannel SamplesPerPixel] 
    539 type = Integer 
    540 description = number of channel components in the logical channel 
    541  
    542 [LogicalChannel IlluminationType] 
    543 type = String 
    544 description = the illumination type 
    545 enumeration = {"Transmitted", "Epifluorescence", "Oblique", "NonLinear"} 
    546  
    547 [LogicalChannel IlluminationType 2003FC] 
    548 enumeration = {"Transmitted", "Epifluorescence", "Oblique"} 
    549  
    550 [LogicalChannel PinholeSize] 
    551 type = Double 
    552 description = the size of the pinhole 
    553  
    554 [LogicalChannel PinholeSize 200802] 
    555 type = Integer 
    556  
    557 [LogicalChannel PinholeSize 200706] 
    558 type = Integer 
    559  
    560 [LogicalChannel PinholeSize 2003FC] 
    561 type = Integer 
    562  
    563 [LogicalChannel PhotometricInterpretation] 
    564 type = String 
    565 description = the photometric interpretation type 
    566 enumeration = {"Monochrome", "RGB", "ARGB", "CMYK", "HSV", "ColorMap"} 
    567  
    568 [LogicalChannel PhotometricInterpretation 2003FC] 
    569 enumeration = {"monochrome", "RGB", "ARGB", "CMYK", "HSV"} 
    570  
    571 [LogicalChannel Mode] 
    572 type = String 
    573 description = the acquisition mode 
    574 enumeration = {"WideField", "LaserScanningMicroscopy", "LaserScanningConfocal", "SpinningDiskConfocal", "SlitScanConfocal", "MultiPhotonMicroscopy", "StructuredIllumination", "SingleMoleculeImaging", "TotalInternalReflection", "FluorescenceLifetime", "SpectralImaging", "FluorescenceCorrelationSpectroscopy", "NearFieldScanningOpticalMicroscopy", "SecondHarmonicGenerationImaging", "Other"} 
    575 defaultValue = "Other" 
    576  
    577 [LogicalChannel Mode 2003FC] 
    578 enumeration = {"Wide-field", "Laser Scanning Microscopy", "Laser Scanning Confocal", "Slit Scan Confocal", "Multi-Photon Microscopy", "Structured Illumination", "Single Molecule Imaging", "Total Internal Reflection", "Fluorescence-Lifetime", "Spectral Imaging", "Fluorescence Correlation Spectroscopy", "Near Field Scanning Optical Microscopy", "Second Harmonic Generation Imaging"} 
    579  
    580 [LogicalChannel ContrastMethod] 
    581 type = String 
    582 description = the constrast method name 
    583 enumeration = {"Brightfield", "Phase", "DIC", "HoffmanModulation", "ObliqueIllumination", "PolarizedLight", "Darkfield", "Fluorescence"} 
    584  
    585 [LogicalChannel ContrastMethod 2003FC] 
    586 enumeration = {"Brightfield", "Phase", "DIC", "Hoffman Modultion", "Oblique Illumination", "Polarized Light", "Darkfield", "Fluorescence"} 
    587  
    588 [LogicalChannel ExWave] 
    589 type = Integer 
    590 description = the excitation wavelength 
    591  
    592 [LogicalChannel EmWave] 
    593 type = Integer 
    594 description = the emission wavelength 
    595  
    596 [LogicalChannel Fluor] 
    597 type = String 
    598 description = the fluorescence type 
    599  
    600 [LogicalChannel NdFilter] 
    601 type = Double 
    602 description = the neutral-density filter value 
    603  
    604 [LogicalChannel NdFilter 2003FC] 
    605 getter = getNDfilter 
    606 setter = setNDfilter 
    607  
    608 [LogicalChannel PockelCellSetting] 
    609 type = Integer 
    610 description = TODO 
    611  
    612 [LogicalChannel PockelCellSetting 2003FC] 
    613 path = - 
    614  
    615 [LogicalChannel OTF] 
    616 path = Image+/LogicalChannel+/OTFRef 
    617 type = String 
    618 getter = getNodeID 
    619 setter = setNodeID 
    620 description = the OTF associated with the logical channel 
    621  
    622 [LogicalChannel OTF 2003FC] 
    623 path = Image+/ChannelInfo+/OTFRef 
    624  
    625 [LogicalChannel Detector] 
    626 type = String 
    627 path = Image+/LogicalChannel+/DetectorRef 
    628 getter = getNodeID 
    629 setter = setNodeID 
    630 description = reference to the detector used to acquire this logical channel 
    631  
    632 [LogicalChannel Detector 2003FC] 
    633 path = Image+/ChannelInfo+/DetectorRef 
    634  
    635 [LogicalChannel LightSource] 
    636 type = String 
    637 path = Image+/LogicalChannel+/LightSourceRef 
    638 getter = getNodeID 
    639 setter = setNodeID 
    640 description = reference to the light source used to acquire this logical channel 
    641  
    642 [LogicalChannel LightSource 2003FC] 
    643 path = Image+/ChannelInfo+/LightSourceRef 
    644  
    645 [LogicalChannel SecondaryExcitationFilter] 
    646 type = String 
    647 description = TODO 
    648  
    649 [LogicalChannel SecondaryExcitationFilter 2003FC] 
    650 path = - 
    651  
    652 [LogicalChannel SecondaryEmissionFilter] 
    653 type = String 
    654 description = TODO 
    655  
    656 [LogicalChannel SecondaryEmissionFilter 2003FC] 
    657 path = - 
    658  
    659 [LogicalChannel FilterSet] 
    660 type = String 
    661 path = Image+/LogicalChannel+/FilterSetRef 
    662 getter = getNodeID 
    663 setter = setNodeID 
    664 description = reference to the filter set associated with this channel 
    665  
    666 [LogicalChannel FilterSet 2003FC] 
    667 path = - 
    668  
    669 ## ChannelComponent ## 
    670  
    671 [ChannelComponent] 
    672 countable = true 
    673 path = Image+/LogicalChannel+/ChannelComponent+ 
    674 description = a channel component describes how each channel \ 
    675               in the pixel array relates to the logical channels 
    676  
    677 [ChannelComponent 2003FC] 
    678 path = Image+/ChannelInfo+/ChannelComponent+ 
    679  
    680 [ChannelComponent Index] 
    681 type = Integer 
    682 description = the index into the channel dimension of the 5-D pixel array 
    683  
    684 [ChannelComponent ColorDomain] 
    685 type = String 
    686 description = which color channel this ChannelComponent belongs to \ 
    687               (for example, 'R' for an 'RGB' PhotometricInterpretation) 
    688  
    689 [ChannelComponent Pixels] 
    690 type = String 
    691 description = the pixels to which this channel component corresponds 
    692  
    693 ## DisplayOptions ## 
    694  
    695 [DisplayOptions] 
    696 path = Image+/DisplayOptions 
    697 description = various display options for a particular pixels set 
    698  
    699 [DisplayOptions ID] 
    700 type = String 
    701 getter = getNodeID 
    702 setter = setNodeID 
    703 description = unique label identifying the display options 
    704  
    705 [DisplayOptions Zoom] 
    706 type = Double 
    707 description = zoom factor for use in the display (NOT THE LENS ZOOM) 
    708  
    709 [DisplayOptions Display] 
    710 type = String 
    711 description = specifies to display the image as grayscale or RGB 
    712 enumeration = {"RGB", "Grey"} 
    713  
    714 ## ROI ## 
    715  
    716 [ROI] 
    717 countable = true 
    718 path = Image+/ROI+ 
    719 description = a 5D region of interest in the metadata store \ 
    720               with a particular index 
    721  
    722 [ROI 2003FC] 
    723 path = Image+/DisplayOptions/ROI+ 
    724  
    725 [ROI ID] 
    726 type = String 
    727 getter = getNodeID 
    728 setter = setNodeID 
    729 description = unique label identifying the 5D bounding box ROI 
    730  
    731 [ROI X0] 
    732 type = Integer 
    733 description = the starting X coordinate 
    734  
    735 [ROI X0 200809] 
    736 path = - 
    737  
    738 [ROI Y0] 
    739 type = Integer 
    740 description = the starting Y coordinate 
    741  
    742 [ROI Y0 200809] 
    743 path = - 
    744  
    745 [ROI X1] 
    746 type = Integer 
    747 description = the ending X coordinate 
    748  
    749 [ROI X1 200809] 
    750 path = - 
    751  
    752 [ROI Y1] 
    753 type = Integer 
    754 description = the ending Y coordinate 
    755  
    756 [ROI Y1 200809] 
    757 path = - 
    758  
    759 [ROI Z0] 
    760 type = Integer 
    761 description = the starting Z coordinate 
    762  
    763 [ROI Z0 200809] 
    764 path = - 
    765  
    766 [ROI Z1] 
    767 type = Integer 
    768 description = the ending Z coordinate 
    769  
    770 [ROI Z1 200809] 
    771 path = - 
    772  
    773 [ROI T0] 
    774 type = Integer 
    775 description = the starting timepoint 
    776  
    777 [ROI T0 200809] 
    778 path = - 
    779  
    780 [ROI T1] 
    781 type = Integer 
    782 description = the ending timepoint 
    783  
    784 [ROI T1 200809] 
    785 path = - 
    786  
    787 ## RoiLink ## 
    788  
    789 # This entity is not present in any existing OME-XML schema version. 
    790 # It will be added in a future version of the schema. 
    791  
    792 [RoiLink] 
    793 countable = true 
    794 path = Image+/ROI+/RoiLink+ 
    795 description = TODO 
    796  
    797 [RoiLink 2003FC] 
    798 path = - 
    799  
    800 [RoiLink 200706] 
    801 path = - 
    802  
    803 [RoiLink 200802] 
    804 path = - 
    805  
    806 [RoiLink 200809] 
    807 path = - 
    808  
    809 [RoiLink Name] 
    810 type = String 
    811 description = TODO 
    812  
    813 [RoiLink Ref] 
    814 type = String 
    815 description = TODO 
    816  
    817 [RoiLink Direction] 
    818 type = String 
    819 description = TODO 
    820  
    821 ## ROIRef ## 
    822  
    823 [ROIRef] 
    824 countable = true 
    825 path = Image+/MicrobeamManipulation+/ROIRef+ 
    826 description = reference to an ROI 
    827  
    828 [ROIRef 2003FC] 
    829 path = - 
    830  
    831 [ROIRef ID] 
    832 getter = getNodeID 
    833 setter = setNodeID 
    834 type = String 
    835 description = reference to an ROI associated with the microbeam manipulation 
    836  
    837 ## Shape ## 
    838  
    839 [Shape] 
    840 countable = true 
    841 path = Image+/ROI+/Union/Shape+ 
    842 description = arbitrary shape in an ROI 
    843  
    844 [Shape 2003FC] 
    845 path = - 
    846  
    847 [Shape 200706] 
    848 path = - 
    849  
    850 [Shape 200802] 
    851 path = - 
    852  
    853 [Shape ID] 
    854 type = String 
    855 getter = getNodeID 
    856 setter = setNodeID 
    857 description = unique label identifying the shape 
    858  
    859 [Shape TheZ] 
    860 type = Integer 
    861 description = Z position of the shape 
    862 getter = gettheZ 
    863 setter = settheZ 
    864  
    865 [Shape TheT] 
    866 type = Integer 
    867 description = T position of the shape 
    868 getter = gettheT 
    869 setter = settheT 
    870  
    871 # None of these Shape attributes are present in the OME-XML schemas. 
    872 # They will be added to the next schema release, but may undergo some changes 
    873 # before then. 
    874  
    875 [Shape Locked] 
    876 type = Boolean 
    877 description = whether or not the ROI can be modified. This attribute is experimental, and not present in the existing OME-XML schemas. 
    878  
    879 [Shape Locked 200809] 
    880 path = - 
    881  
    882 [Shape Locked 200802] 
    883 path = - 
    884  
    885 [Shape Locked 200706] 
    886 path = - 
    887  
    888 [Shape Locked 2003FC] 
    889 path = - 
    890  
    891 [Shape Visibility] 
    892 type = Boolean 
    893 description = whether or not the ROI should be displayed. This attribute is experimental, and not present in the existing OME-XML schemas. 
    894  
    895 [Shape Visibility 200809] 
    896 path = - 
    897  
    898 [Shape Visibility 200802] 
    899 path = - 
    900  
    901 [Shape Visibility 200706] 
    902 path = - 
    903  
    904 [Shape Visibility 2003FC] 
    905 path = - 
    906  
    907 [Shape FontFamily] 
    908 type = String 
    909 description = the name of the font (e.g. "Arial"). This attribute is experimental, and not present in the existing OME-XML schemas. 
    910  
    911 [Shape FontFamily 200809] 
    912 path = - 
    913  
    914 [Shape FontFamily 200802] 
    915 path = - 
    916  
    917 [Shape FontFamily 200706] 
    918 path = - 
    919  
    920 [Shape FontFamily 2003FC] 
    921 path = - 
    922  
    923 [Shape FontSize] 
    924 type = Integer 
    925 description = size of the font. This attribute is experimental, and not present in the existing OME-XML schemas. 
    926  
    927 [Shape FontSize 200809] 
    928 path = - 
    929  
    930 [Shape FontSize 200802] 
    931 path = - 
    932  
    933 [Shape FontSize 200706] 
    934 path = - 
    935  
    936 [Shape FontSize 2003FC] 
    937 path = - 
    938  
    939 [Shape FontStretch] 
    940 type = String 
    941 description = how the font should be stretched, e.g. normal, wider -  EXPERIMENTAL 
    942  
    943 [Shape FontStretch 200809] 
    944 path = - 
    945  
    946 [Shape FontStretch 200802] 
    947 path = - 
    948  
    949 [Shape FontStretch 200702] 
    950 path = - 
    951  
    952 [Shape FontStretch 2003FC] 
    953 path = - 
    954  
    955 [Shape FontStyle] 
    956 type = String 
    957 description = font style, e.g. normal, italic. This attribute is experimental, and not present in the existing OME-XML schemas. 
    958  
    959 [Shape FontStyle 200809] 
    960 path = - 
    961  
    962 [Shape FontStyle 200802] 
    963 path = - 
    964  
    965 [Shape FontStyle 200706] 
    966 path = - 
    967  
    968 [Shape FontStyle 2003FC] 
    969 path = - 
    970  
    971 [Shape FontVariant] 
    972 type = String 
    973 description = font variant, e.g. normal, small-caps. This attribute is experimental, and not present in the existing OME-XML schemas. 
    974  
    975 [Shape FontVariant 200809] 
    976 path = - 
    977  
    978 [Shape FontVariant 200802] 
    979 path = - 
    980  
    981 [Shape FontVariant 200706] 
    982 path = - 
    983  
    984 [Shape FontVariant 2003FC] 
    985 path = - 
    986  
    987 [Shape FontWeight] 
    988 type = String 
    989 description = font weight, e.g. normal, bold. This attribute is experimental, and not present in the existing OME-XML schemas. 
    990  
    991 [Shape FontWeight 200809] 
    992 path = - 
    993  
    994 [Shape FontWeight 200802] 
    995 path = - 
    996  
    997 [Shape FontWeight 200706] 
    998 path = - 
    999  
    1000 [Shape FontWeight 2003FC] 
    1001 path = - 
    1002  
    1003 [Shape FillColor] 
    1004 type = String 
    1005 description = name of the color with which to fill this ROI. This attribute is experimental, and not present in the existing OME-XML schemas. 
    1006  
    1007 [Shape FillColor 200809] 
    1008 path = - 
    1009  
    1010 [Shape FillColor 200802] 
    1011 path = - 
    1012  
    1013 [Shape FillColor 200706] 
    1014 path = - 
    1015  
    1016 [Shape FillColor 2003FC] 
    1017 path = - 
    1018  
    1019 [Shape FillOpacity] 
    1020 type = String 
    1021 description = opacity (0-100) of the fill color. This attribute is experimental, and not present in the existing OME-XML schemas. 
    1022  
    1023 [Shape FillOpacity 200809] 
    1024 path = - 
    1025  
    1026 [Shape FillOpacity 200802] 
    1027 path = - 
    1028  
    1029 [Shape FillOpacity 200706] 
    1030 path = - 
    1031  
    1032 [Shape FillOpacity 2003FC] 
    1033 path = - 
    1034  
    1035 [Shape FillRule] 
    1036 type = String 
    1037 description = rule for filling the ROI, e.g. even-odd, non-zero. This attribute is experimental, and not present in the existing OME-XML schemas. 
    1038  
    1039 [Shape FillRule 200809] 
    1040 path = - 
    1041  
    1042 [Shape FillRule 200802] 
    1043 path = - 
    1044  
    1045 [Shape FillRule 200706] 
    1046 path = - 
    1047  
    1048 [Shape FillRule 2003FC] 
    1049 path = - 
    1050  
    1051 [Shape StrokeAttribute] 
    1052 type = String 
    1053 description = additional stroke information. This attribute is experimental, and not present in the existing OME-XML schemas. 
    1054  
    1055 [Shape StrokeAttribute 200809] 
    1056 path = - 
    1057  
    1058 [Shape StrokeAttribute 200802] 
    1059 path = - 
    1060  
    1061 [Shape StrokeAttribute 200706] 
    1062 path = - 
    1063  
    1064 [Shape StrokeAttribute 2003FC] 
    1065 path = - 
    1066  
    1067 [Shape StrokeColor] 
    1068 type = String 
    1069 description = name of the stroke color. This attribute is experimental, and not present in the existing OME-XML schemas. 
    1070  
    1071 [Shape StrokeColor 200809] 
    1072 path = - 
    1073  
    1074 [Shape StrokeColor 200802] 
    1075 path = - 
    1076  
    1077 [Shape StrokeColor 200706] 
    1078 path = - 
    1079  
    1080 [Shape StrokeColor 2003FC] 
    1081 path = - 
    1082  
    1083 [Shape StrokeDashArray] 
    1084 type = String 
    1085 description = EXPERIMENTAL 
    1086  
    1087 [Shape StrokeDashArray 200809] 
    1088 path = - 
    1089  
    1090 [Shape StrokeDashArray 200802] 
    1091 path = - 
    1092  
    1093 [Shape StrokeDashArray 200706] 
    1094 path = - 
    1095  
    1096 [Shape StrokeDashArray 2003FC] 
    1097 path = - 
    1098  
    1099 [Shape StrokeLineCap] 
    1100 type = String 
    1101 description = EXPERIMENTAL 
    1102  
    1103 [Shape StrokeLineCap 200809] 
    1104 path = - 
    1105  
    1106 [Shape StrokeLineCap 200802] 
    1107 path = - 
    1108  
    1109 [Shape StrokeLineCap 200706] 
    1110 path = - 
    1111  
    1112 [Shape StrokeLineCap 2003FC] 
    1113 path = - 
    1114  
    1115 [Shape StrokeLineJoin] 
    1116 type = String 
    1117 description = EXPERIMENTAL 
    1118  
    1119 [Shape StrokeLineJoin 200809] 
    1120 path = - 
    1121  
    1122 [Shape StrokeLineJoin 200802] 
    1123 path = - 
    1124  
    1125 [Shape StrokeLineJoin 200706] 
    1126 path = - 
    1127  
    1128 [Shape StrokeLineJoin 2003FC] 
    1129 path = - 
    1130  
    1131 [Shape StrokeMiterLimit] 
    1132 type = Integer 
    1133 description = EXPERIMENTAL 
    1134  
    1135 [Shape StrokeMiterLimit 200809] 
    1136 path = - 
    1137  
    1138 [Shape StrokeMiterLimit 200802] 
    1139 path = - 
    1140  
    1141 [Shape StrokeMiterLimit 200706] 
    1142 path = - 
    1143  
    1144 [Shape StrokeMiterLimit 2003FC] 
    1145 path = - 
    1146  
    1147 [Shape StrokeOpacity] 
    1148 type = Double 
    1149 description = opacity (0-100) of the stroke color. This attribute is experimental, and not present in the existing OME-XML schemas. 
    1150  
    1151 [Shape StrokeOpacity 200809] 
    1152 path = - 
    1153  
    1154 [Shape StrokeOpacity 200802] 
    1155 path = - 
    1156  
    1157 [Shape StrokeOpacity 200706] 
    1158 path = - 
    1159  
    1160 [Shape StrokeOpacity 2003FC] 
    1161 path = - 
    1162  
    1163 [Shape G] 
    1164 type = String 
    1165 description = group identifier. This attribute is experimental, and not present in the existing OME-XML schemas. 
    1166  
    1167 [Shape G 200809] 
    1168 path = - 
    1169  
    1170 [Shape G 200802] 
    1171 path = - 
    1172  
    1173 [Shape G 200706] 
    1174 path = - 
    1175  
    1176 [Shape G 2003FC] 
    1177 path = - 
    1178  
    1179 [Shape StrokeWidth] 
    1180 type = Integer 
    1181 description = width (in pixels) of the stroke. This attribute is experimental, and not present in the existing OME-XML schemas. 
    1182  
    1183 [Shape StrokeWidth 200809] 
    1184 path = - 
    1185  
    1186 [Shape StrokeWidth 200802] 
    1187 path = - 
    1188  
    1189 [Shape StrokeWidth 200706] 
    1190 path = - 
    1191  
    1192 [Shape StrokeWidth 2003FC] 
    1193 path = - 
    1194  
    1195 [Shape Text] 
    1196 type = String 
    1197 description = text label associated with this shape. This attribute is experimental, and not present in the existing OME-XML schemas. 
    1198  
    1199 [Shape Text 200809] 
    1200 path = - 
    1201  
    1202 [Shape Text 200802] 
    1203 path = - 
    1204  
    1205 [Shape Text 200706] 
    1206 path = - 
    1207  
    1208 [Shape Text 2003FC] 
    1209 path = - 
    1210  
    1211 [Shape TextAnchor] 
    1212 type = String 
    1213 description = relative position of the text, e.g. start, middle. This attribute is experimental, and not present in the existing OME-XML schemas. 
    1214  
    1215 [Shape TextAnchor 200809] 
    1216 path = - 
    1217  
    1218 [Shape TextAnchor 200802] 
    1219 path = - 
    1220  
    1221 [Shape TextAnchor 200706] 
    1222 path = - 
    1223  
    1224 [Shape TextAnchor 2003FC] 
    1225 path = - 
    1226  
    1227 [Shape TextDecoration] 
    1228 type = String 
    1229 description = text decoration, e.g. underline, line-through. This attribute is experimental, and not present in the existing OME-XML schemas. 
    1230  
    1231 [Shape TextDecoration 200809] 
    1232 path = - 
    1233  
    1234 [Shape TextDecoration 200802] 
    1235 path = - 
    1236  
    1237 [Shape TextDecoration 200706] 
    1238 path = - 
    1239  
    1240 [Shape TextDecoration 2003FC] 
    1241 path = - 
    1242  
    1243 [Shape TextFill] 
    1244 type = String 
    1245 description = text color. This attribute is experimental, and not present in the existing OME-XML schemas. 
    1246  
    1247 [Shape TextFill 200809] 
    1248 path = - 
    1249  
    1250 [Shape TextFill 200802] 
    1251 path = - 
    1252  
    1253 [Shape TextFill 200706] 
    1254 path = - 
    1255  
    1256 [Shape TextFill 2003FC] 
    1257 path = - 
    1258  
    1259 [Shape TextStroke] 
    1260 type = String 
    1261 description = EXPERIMENTAL 
    1262  
    1263 [Shape TextStroke 200809] 
    1264 path = - 
    1265  
    1266 [Shape TextStroke 200802] 
    1267 path = - 
    1268  
    1269 [Shape TextStroke 200706] 
    1270 path = - 
    1271  
    1272 [Shape TextStroke 2003FC] 
    1273 path = - 
    1274  
    1275 [Shape BaselineShift] 
    1276 type = String 
    1277 description = vertical text shift, e.g. sup, sub, normal, -70%. This attribute is experimental, and not present in the existing OME-XML schemas. 
    1278  
    1279 [Shape BaselineShift 200809] 
    1280 path = - 
    1281  
    1282 [Shape BaselineShift 200802] 
    1283 path = - 
    1284  
    1285 [Shape BaselineShift 200706] 
    1286 path = - 
    1287  
    1288 [Shape BaselineShift 2003FC] 
    1289 path = - 
    1290  
    1291 [Shape GlyphOrientationVertical] 
    1292 type = Integer 
    1293 description = EXPERIMENTAL 
    1294  
    1295 [Shape GlyphOrientationVertical 200809] 
    1296 path = - 
    1297  
    1298 [Shape GlyphOrientationVertical 200802] 
    1299 path = - 
    1300  
    1301 [Shape GlyphOrientationVertical 200706] 
    1302 path = - 
    1303  
    1304 [Shape GlyphOrientationVertical 2003FC] 
    1305 path = - 
    1306  
    1307 [Shape Direction] 
    1308 type = String 
    1309 description = text direction, e.g. ltr. This attribute is experimental, and not present in the existing OME-XML schemas. 
    1310  
    1311 [Shape Direction 200809] 
    1312 path = - 
    1313  
    1314 [Shape Direction 200802] 
    1315 path = - 
    1316  
    1317 [Shape Direction 200706] 
    1318 path = - 
    1319  
    1320 [Shape Direction 2003FC] 
    1321 path = - 
    1322  
    1323 [Shape WritingMode] 
    1324 type = String 
    1325 description = EXPERIMENTAL 
    1326  
    1327 [Shape WritingMode 200809] 
    1328 path = - 
    1329  
    1330 [Shape WritingMode 200802] 
    1331 path = - 
    1332  
    1333 [Shape WritingMode 200706] 
    1334 path = - 
    1335  
    1336 [Shape WritingMode 2003FC] 
    1337 path = - 
    1338  
    1339 [Shape VectorEffect] 
    1340 type = String 
    1341 description = EXPERIMENTAL 
    1342  
    1343 [Shape VectorEffect 200809] 
    1344 path = - 
    1345  
    1346 [Shape VectorEffect 200802] 
    1347 path = - 
    1348  
    1349 [Shape VectorEffect 200706] 
    1350 path = - 
    1351  
    1352 [Shape VectorEffect 2003FC] 
    1353 path = - 
    1354  
    1355 ## Path ## 
    1356  
    1357 # The Path entity is not present in the OME-XML schemas. 
    1358 # They will be added to the next schema release, but may undergo some changes 
    1359 # before then. 
    1360  
    1361 [Path] 
    1362 path = Image+/ROI+/Union/Shape+/Path 
    1363 description = describes a path 
    1364  
    1365 [Path 200809] 
    1366 path = - 
    1367  
    1368 [Path 200802] 
    1369 path = - 
    1370  
    1371 [Path 200706] 
    1372 path = - 
    1373  
    1374 [Path 2003FC] 
    1375 path = - 
    1376  
    1377 [Path ID] 
    1378 type = String 
    1379 getter = getNodeID 
    1380 setter = setNodeID 
    1381 description = unique label identifying the path 
    1382  
    1383 [Path D] 
    1384 type = String 
    1385 description = EXPERIMENTAL 
    1386  
    1387 ## Rect ## 
    1388  
    1389 [Rect] 
    1390 path = Image+/ROI+/Union/Shape+/Rect 
    1391 description = describes a rectangle 
    1392  
    1393 [Rect 2003FC] 
    1394 path = - 
    1395  
    1396 [Rect 200706] 
    1397 path = - 
    1398  
    1399 [Rect 200802] 
    1400 path = - 
    1401  
    1402 [Rect ID] 
    1403 type = String 
    1404 getter = getNodeID 
    1405 setter = setNodeID 
    1406 description = unique label identifying the rectangle 
    1407  
    1408 [Rect Y] 
    1409 type = String 
    1410 description = Y coordinate of the upper left corner of the rectangle 
    1411 getter = gety 
    1412 setter = sety 
    1413  
    1414 [Rect X] 
    1415 type = String 
    1416 description = X coordinate of the upper left corner of the rectangle 
    1417 getter = getx 
    1418 setter = setx 
    1419  
    1420 [Rect Width] 
    1421 type = String 
    1422 description = width of the rectangle, in pixels 
    1423 getter = getwidth 
    1424 setter = setwidth 
    1425  
    1426 [Rect Height] 
    1427 type = String 
    1428 description = height of the rectangle, in pixels 
    1429 getter = getheight 
    1430 setter = setheight 
    1431  
    1432 [Rect Transform] 
    1433 type = String 
    1434 description = TODO 
    1435 getter = gettransform 
    1436 setter = settransform 
    1437  
    1438 ## Circle ## 
    1439  
    1440 [Circle] 
    1441 path = Image+/ROI+/Union/Shape+/Circle 
    1442 description = describes a circle 
    1443  
    1444 [Circle 2003FC] 
    1445 path = - 
    1446  
    1447 [Circle 200706] 
    1448 path = - 
    1449  
    1450 [Circle 200802] 
    1451 path = - 
    1452  
    1453 [Circle ID] 
    1454 type = String 
    1455 getter = getNodeID 
    1456 setter = setNodeID 
    1457 description = unique label identifying the circle 
    1458  
    1459 [Circle Cy] 
    1460 type = String 
    1461 description = Y coordinate of the center of the circle 
    1462 getter = getcy 
    1463 setter = setcy 
    1464  
    1465 [Circle Cx] 
    1466 type = String 
    1467 description = X coordinate of the center of the circle 
    1468 getter = getcx 
    1469 setter = setcx 
    1470  
    1471 [Circle R] 
    1472 type = String 
    1473 description = radius of the circle, in pixels 
    1474 getter = getr 
    1475 setter = setr 
    1476  
    1477 [Circle Transform] 
    1478 type = String 
    1479 description = TODO 
    1480 getter = gettransform 
    1481 setter = settransform 
    1482  
    1483 ## Ellipse ## 
    1484  
    1485 [Ellipse] 
    1486 path = Image+/ROI+/Union/Shape+/Ellipse 
    1487 description = describes an ellipse 
    1488  
    1489 [Ellipse 2003FC] 
    1490 path = - 
    1491  
    1492 [Ellipse 200706] 
    1493 path = - 
    1494  
    1495 [Ellipse 200802] 
    1496 path = - 
    1497  
    1498 [Ellipse ID] 
    1499 type = String 
    1500 getter = getNodeID 
    1501 setter = setNodeID 
    1502 description = unique label identifying the ellipse 
    1503  
    1504 [Ellipse Cy] 
    1505 type = String 
    1506 description = Y coordinate of the center of the ellipse 
    1507 getter = getcy 
    1508 setter = setcy 
    1509  
    1510 [Ellipse Cx] 
    1511 type = String 
    1512 description = X coordinate of the center of the ellipse 
    1513 getter = getcx 
    1514 setter = setcx 
    1515  
    1516 [Ellipse Rx] 
    1517 type = String 
    1518 description = horizontal radius of the ellipse 
    1519 getter = getrx 
    1520 setter = setrx 
    1521  
    1522 [Ellipse Ry] 
    1523 type = String 
    1524 description = vertical radius of the ellipse 
    1525 getter = getry 
    1526 setter = setry 
    1527  
    1528 [Ellipse Transform] 
    1529 type = String 
    1530 description = TODO 
    1531 getter = gettransform 
    1532 setter = settransform 
    1533  
    1534 ## Line ## 
    1535  
    1536 [Line] 
    1537 path = Image+/ROI+/Union/Shape+/Line 
    1538 description = describes a line 
    1539  
    1540 [Line 2003FC] 
    1541 path = - 
    1542  
    1543 [Line 200706] 
    1544 path = - 
    1545  
    1546 [Line 200802] 
    1547 path = - 
    1548  
    1549 [Line ID] 
    1550 type = String 
    1551 getter = getNodeID 
    1552 setter = setNodeID 
    1553 description = unique label identifying the line 
    1554  
    1555 [Line Y1] 
    1556 type = String 
    1557 description = Y coordinate of the first endpoint of the line 
    1558 getter = gety1 
    1559 setter = sety1 
    1560  
    1561 [Line Y2] 
    1562 type = String 
    1563 description = Y coordinate of the second endpoint of the line 
    1564 getter = gety2 
    1565 setter = sety2 
    1566  
    1567 [Line X1] 
    1568 type = String 
    1569 description = X coordinate of the first endpoint of the line 
    1570 getter = getx1 
    1571 setter = setx1 
    1572  
    1573 [Line X2] 
    1574 type = String 
    1575 description = X coordinate of the second endpoint of the line 
    1576 getter = getx2 
    1577 setter = setx2 
    1578  
    1579 [Line Transform] 
    1580 type = String 
    1581 description = TODO 
    1582 getter = gettransform 
    1583 setter = settransform 
    1584  
    1585 ## Point ## 
    1586  
    1587 [Point] 
    1588 path = Image+/ROI+/Union/Shape+/Point 
    1589 description = describes a point (filled circle) 
    1590  
    1591 [Point 2003FC] 
    1592 path = - 
    1593  
    1594 [Point 200706] 
    1595 path = - 
    1596  
    1597 [Point 200802] 
    1598 path = - 
    1599  
    1600 [Point ID] 
    1601 type = String 
    1602 getter = getNodeID 
    1603 setter = setNodeID 
    1604 description = unique label identifying the point 
    1605  
    1606 [Point Cy] 
    1607 type = String 
    1608 description = Y coordinate of the center of the point 
    1609 getter = getcy 
    1610 setter = setcy 
    1611  
    1612 [Point Cx] 
    1613 type = String 
    1614 description = X coordinate of the center of the point 
    1615 getter = getcx 
    1616 setter = setcx 
    1617  
    1618 [Point R] 
    1619 type = String 
    1620 description = radius of the point, in pixels 
    1621 getter = getr 
    1622 setter = setr 
    1623  
    1624 [Point Transform] 
    1625 type = String 
    1626 description = TODO 
    1627 getter = gettransform 
    1628 setter = settransform 
    1629  
    1630 ## Polygon ## 
    1631  
    1632 [Polygon] 
    1633 path = Image+/ROI+/Union/Shape+/Polygon 
    1634 description = describes a polygon 
    1635  
    1636 [Polygon 2003FC] 
    1637 path = - 
    1638  
    1639 [Polygon 200706] 
    1640 path = - 
    1641  
    1642 [Polygon 200802] 
    1643 path = - 
    1644  
    1645 [Polygon ID] 
    1646 type = String 
    1647 getter = getNodeID 
    1648 setter = setNodeID 
    1649 description = unique label identifying the polygon 
    1650  
    1651 [Polygon Points] 
    1652 type = String 
    1653 description = TODO 
    1654 getter = getpoints 
    1655 setter = setpoints 
    1656  
    1657 [Polygon Transform] 
    1658 type = String 
    1659 description = TODO 
    1660 getter = gettransform 
    1661 setter = settransform 
    1662  
    1663 ## Polyline ## 
    1664  
    1665 [Polyline] 
    1666 path = Image+/ROI+/Union/Shape+/Polyline 
    1667 description = describes a set of lines 
    1668  
    1669 [Polyline 2003FC] 
    1670 path = - 
    1671  
    1672 [Polyline 200706] 
    1673 path = - 
    1674  
    1675 [Polyline 200802] 
    1676 path = - 
    1677  
    1678 [Polyline ID] 
    1679 type = String 
    1680 getter = getNodeID 
    1681 setter = setNodeID 
    1682 description = unique label identifying the polyline 
    1683  
    1684 [Polyline Points] 
    1685 type = String 
    1686 description = TODO 
    1687 getter = getpoints 
    1688 setter = setpoints 
    1689  
    1690 [Polyline Transform] 
    1691 type = String 
    1692 description = TODO 
    1693 getter = gettransform 
    1694 setter = settransform 
    1695  
    1696 ## Mask ## 
    1697  
    1698 [Mask] 
    1699 path = Image+/ROI+/Union/Shape+/Mask 
    1700 description = TODO 
    1701  
    1702 [Mask 2003FC] 
    1703 path = - 
    1704  
    1705 [Mask 200706] 
    1706 path = - 
    1707  
    1708 [Mask 200802] 
    1709 path = - 
    1710  
    1711 [Mask ID] 
    1712 type = String 
    1713 getter = getNodeID 
    1714 setter = setNodeID 
    1715 description = unique label identifying the mask 
    1716  
    1717 [Mask Y] 
    1718 type = String 
    1719 description = TODO 
    1720 getter = gety 
    1721 setter = sety 
    1722  
    1723 [Mask X] 
    1724 type = String 
    1725 description = TODO 
    1726 getter = getx 
    1727 setter = setx 
    1728  
    1729 [Mask Width] 
    1730 type = String 
    1731 description = TODO 
    1732 getter = getwidth 
    1733 setter = setwidth 
    1734  
    1735 [Mask Height] 
    1736 type = String 
    1737 description = TODO 
    1738 getter = getheight 
    1739 setter = setheight 
    1740  
    1741 [Mask Transform] 
    1742 type = String 
    1743 description = TODO 
    1744 getter = gettransform 
    1745 setter = settransform 
    1746  
    1747 ## MaskPixels ## 
    1748  
    1749 [MaskPixels] 
    1750 path = Image+/ROI+/Union/Shape+/Mask/MaskPixels 
    1751 description = TODO 
    1752  
    1753 [MaskPixels 2003FC] 
    1754 path = - 
    1755  
    1756 [MaskPixels 200706] 
    1757 path = - 
    1758  
    1759 [MaskPixels 200802] 
    1760 path = - 
    1761  
    1762 [MaskPixels ID] 
    1763 type = String 
    1764 getter = getNodeID 
    1765 setter = setNodeID 
    1766 description = unique label identifying the mask's pixels 
    1767  
    1768 [MaskPixels ExtendedPixelType] 
    1769 type = String 
    1770 description = TODO 
    1771 enumeration = {"bit", "double", "complex", "double-complex"} 
    1772  
    1773 [MaskPixels SizeX] 
    1774 type = Integer 
    1775 description = TODO 
    1776  
    1777 [MaskPixels SizeY] 
    1778 type = Integer 
    1779 description = TODO 
    1780  
    1781 [MaskPixels BigEndian] 
    1782 type = Boolean 
    1783 description = TODO 
    1784  
    1785 [MaskPixels BinData] 
    1786 type = byte[] 
    1787 description = TODO 
    1788  
    1789 ### Entities for Instrument settings for a particular Image ### 
    1790  
    1791 ## ObjectiveSettings ## 
    1792  
    1793 [ObjectiveSettings] 
    1794 path = Image+/ObjectiveRef 
    1795 description = the objective associated with a particular image 
    1796  
    1797 [ObjectiveSettings 200706] 
    1798 path = Image+/ObjectiveSettings 
    1799  
    1800 [ObjectiveSettings Objective] 
    1801 type = String 
    1802 getter = getNodeID 
    1803 setter = setNodeID 
    1804 description = the objective associated with this image 
    1805  
    1806 [ObjectiveSettings RefractiveIndex] 
    1807 type = Double 
    1808 description = unit-less refractive index of the immersion medium 
    1809  
    1810 [ObjectiveSettings RefractiveIndex 2003FC] 
    1811 path = - 
    1812  
    1813 [ObjectiveSettings CorrectionCollar] 
    1814 type = Double 
    1815 description = unit-less setting of the adjustable correction collar 
    1816  
    1817 [ObjectiveSettings CorrectionCollar 2003FC] 
    1818 path = - 
    1819  
    1820 [ObjectiveSettings Medium] 
    1821 type = String 
    1822 description = immersion medium for the lens 
    1823 enumeration = {"Air", "Oil", "Water", "Glycerol"} 
    1824  
    1825 [ObjectiveSettings Medium 2003FC] 
    1826 path = - 
    1827  
    1828 ## DetectorSettings ## 
    1829  
    1830 [DetectorSettings] 
    1831 path = Image+/LogicalChannel+/DetectorRef 
    1832 description = the detector associated with a particular logical channel 
    1833  
    1834 [DetectorSettings 2003FC] 
    1835 path = Image+/ChannelInfo+/DetectorRef 
    1836  
    1837 [DetectorSettings Detector] 
    1838 type = String 
    1839 getter = getNodeID 
    1840 setter = setNodeID 
    1841 description = the detector associated with this channel 
    1842  
    1843 [DetectorSettings Offset] 
    1844 type = Double 
    1845 description = the detector offset 
    1846  
    1847 [DetectorSettings Gain] 
    1848 type = Double 
    1849 description = the detector gain 
    1850  
    1851 [DetectorSettings Binning] 
    1852 type = String 
    1853 description = the detector binning 
    1854 enumeration = {"1x1", "2x2", "4x4", "8x8"} 
    1855  
    1856 [DetectorSettings Binning 2003FC] 
    1857 path = - 
    1858  
    1859 [DetectorSettings Voltage] 
    1860 type = Double 
    1861 description = the detector voltage 
    1862  
    1863 [DetectorSettings Voltage 2003FC] 
    1864 path = - 
    1865  
    1866 [DetectorSettings ReadOutRate] 
    1867 type = Double 
    1868 description = the speed at which the detector can count pixels, in MHz 
    1869  
    1870 [DetectorSettings ReadOutRate 2003FC] 
    1871 path = - 
    1872  
    1873 ## LightSourceSettings ## 
    1874  
    1875 [LightSourceSettings] 
    1876 path = Image+/LogicalChannel+/LightSourceRef 
    1877 description = the light source associated with a particular logical channel 
    1878  
    1879 [LightSourceSettings 2003FC] 
    1880 path = Image+/ChannelInfo+/LightSourceRef 
    1881  
    1882 [LightSourceSettings LightSource] 
    1883 type = String 
    1884 getter = getNodeID 
    1885 setter = setNodeID 
    1886 description = the primary light source 
    1887  
    1888 [LightSourceSettings Attenuation] 
    1889 type = Double 
    1890 description = the primary light source attenuation 
    1891  
    1892 [LightSourceSettings Wavelength] 
    1893 type = Integer 
    1894 description = the primary light source wavelength 
    1895  
    1896 ## LightSourceRef ## 
    1897  
    1898 [LightSourceRef] 
    1899 countable = true 
    1900 path = Image+/MicrobeamManipulation+/LightSourceRef+ 
    1901 description = TODO 
    1902  
    1903 [LightSourceRef 2003FC] 
    1904 path = - 
    1905  
    1906 [LightSourceRef LightSource] 
    1907 getter = getNodeID 
    1908 setter = setNodeID 
    1909 type = String 
    1910 description = TODO 
    1911  
    1912 [LightSourceRef Attenuation] 
    1913 type = Double 
    1914 description = the primary light source attenuation 
    1915  
    1916 [LightSourceRef Wavelength] 
    1917 type = Integer 
    1918 description = the primary light source wavelength 
    1919  
    1920 ### Entities for other Image-specific information ### 
    1921  
    1922 ## StageLabel ## 
    1923  
    1924 [StageLabel] 
    1925 path = Image+/StageLabel 
    1926 description = a stage label in the metadata store with a particular index 
    1927  
    1928 [StageLabel Name] 
    1929 type = String 
    1930 description = a name for the stage label 
    1931  
    1932 [StageLabel X] 
    1933 type = Double 
    1934 description = the x coordinate of the stage 
    1935  
    1936 [StageLabel Y] 
    1937 type = Double 
    1938 description = the y coordinate of the stage 
    1939  
    1940 [StageLabel Z] 
    1941 type = Double 
    1942 description = the z coordinate of the stage 
    1943  
    1944 ### Entities for Instrument hardware -- these DO NOT vary by Image ### 
    1945  
    1946 ## Instrument ## 
    1947  
    1948 [Instrument] 
    1949 countable = true 
    1950 path = Instrument+ 
    1951 description = information about a microscope or other instrument 
    1952  
    1953 [Instrument ID] 
    1954 type = String 
    1955 getter = getNodeID 
    1956 setter = setNodeID 
    1957 description = unique label identifying the instrument 
    1958  
    1959 ## Microscope ## 
    1960  
    1961 [Microscope] 
    1962 path = Instrument+/Microscope 
    1963 description = information about a microscope 
    1964  
    1965 [Microscope ID] 
    1966 type = String 
    1967 getter = getNodeID 
    1968 setter = setNodeID 
    1969 description = unique label identifying the microscope 
    1970  
    1971 [Microscope Type] 
    1972 type = String 
    1973 description = microscope type - Upright, Inverted, Dissection, \ 
    1974                                 Electrophysiology, or Unknown 
    1975 enumeration = {"Upright", "Inverted", "Dissection", "Electrophysiology"} 
    1976  
    1977 [Microscope Type 200809] 
    1978 enumeration = {"Upright", "Inverted", "Dissection", "Electrophysiology", "Unknown"} 
    1979 defaultValue = "Unknown" 
    1980  
    1981 [Microscope Model] 
    1982 type = String 
    1983 description = model number of the microscope 
    1984  
    1985 [Microscope SerialNumber] 
    1986 type = String 
    1987 description = serial number of the microscope 
    1988  
    1989 [Microscope Manufacturer] 
    1990 type = String 
    1991 description = manufacturer of the microscope 
    1992  
    1993 ## LightSource ## 
    1994  
    1995 [LightSource] 
    1996 countable = true 
    1997 path = Instrument+/LightSource+ 
    1998 description = a light source for a particular instrument 
    1999  
    2000 [LightSource ID] 
    2001 type = String 
    2002 getter = getNodeID 
    2003 setter = setNodeID 
    2004 description = unique label identifying the light source 
    2005  
    2006 [LightSource Manufacturer] 
    2007 type = String 
    2008 description = manufacturer of the light source 
    2009  
    2010 [LightSource Model] 
    2011 type = String 
    2012 description = model number of the light source 
    2013  
    2014 [LightSource SerialNumber] 
    2015 type = String 
    2016 description = serial number of the light source 
    2017  
    2018 [LightSource Power] 
    2019 type = Double 
    2020 description = the light source power, in watts 
    2021  
    2022 [LightSource Power 200706] 
    2023 path = - 
    2024  
    2025 [LightSource Power 2003FC] 
    2026 path = - 
    2027  
    2028 ## Laser ## 
    2029  
    2030 [Laser] 
    2031 path = Instrument+/LightSource+/Laser 
    2032 description = a laser for a particular instrument 
    2033  
    2034 [Laser Type] 
    2035 type = String 
    2036 description = type of laser - Excimer, Gas, MetalVapor, SolidState, Dye, \ 
    2037               SemiConductor, FreeElectron, or Unknown 
    2038 enumeration = {"Excimer", "Gas", "MetalVapor", "SolidState", "Dye", "Semiconductor", "FreeElectron"} 
    2039  
    2040 [Laser Type 200809] 
    2041 enumeration = {"Excimer", "Gas", "MetalVapor", "SolidState", "Dye", "Semiconductor", "FreeElectron", "Unknown"} 
    2042 defaultValue = "Unknown" 
    2043  
    2044 [Laser Type 2003FC] 
    2045 enumeration = {"Excimer", "Gas", "Metal Vapor", "Solid State", "Dye", "Semiconductor", "Free Electron"} 
    2046  
    2047 [Laser LaserMedium] 
    2048 type = String 
    2049 description = lasing medium for the laser 
    2050 enumeration = {"Cu", "Ag", "ArFl", "ArCl", "KrFl", "KrCl", "XeFl", "XeCl", "XeBr", "N", "Ar", "Kr", "Xe", "HeNe", "HeCd", "CO", "CO2", "H2O", "HFl", "NdGlass", "NdYAG", "ErGlass", "ErYAG", "HoYLF", "HoYAG", "Ruby", "TiSapphire", "Alexandrite", "Rhodamine6G", "CoumarinC30", "GaAs", "GaAlAs", "EMinus"} 
    2051  
    2052 [Laser LaserMedium 200809] 
    2053 enumeration = {"Cu", "Ag", "ArFl", "ArCl", "KrFl", "KrCl", "XeFl", "XeCl", "XeBr", "N", "Ar", "Kr", "Xe", "HeNe", "HeCd", "CO", "CO2", "H2O", "HFl", "NdGlass", "NdYAG", "ErGlass", "ErYAG", "HoYLF", "HoYAG", "Ruby", "TiSapphire", "Alexandrite", "Rhodamine6G", "CoumarinC30", "GaAs", "GaAlAs", "EMinus", "Unknown"} 
    2054 defaultValue = "Unknown" 
    2055  
    2056 [Laser LaserMedium 2003FC] 
    2057 getter = getMedium 
    2058 setter = setMedium 
    2059 enumeration = {"Cu", "Ag", "ArFl", "ArCl", "KrFl", "KrCl", "XeFl", "XeCl", "XeBr", "Nitrogen", "Argon", "Krypton", "Xenon", "HeNe", "HeCd", "CO", "CO2", "H2O", "HFl", "Nd-Glass", "Nd-YAG", "Er-Glass", "Er-YAG", "Ho-YLF", "Ho-YAG", "Ruby", "Ti-Sapphire", "Alexandrite", "Rhodamine-6G", "Coumarin-C30", "GaAs", "GaAlAs", "e-"} 
    2060  
    2061 [Laser Wavelength] 
    2062 type = Integer 
    2063 description = wavelength of the laser, in nm 
    2064  
    2065 [Laser FrequencyMultiplication] 
    2066 type = Integer 
    2067 description = value by which frequency is multiplied 
    2068  
    2069 [Laser FrequencyMultiplication 2003FC] 
    2070 type = Boolean 
    2071 getter = getFrequencyDoubled 
    2072 setter = setFrequencyDoubled 
     589 
     590[Laser Pulse] 
     591type = Pulse 
     592 
     593[Laser Pump] 
     594type = String 
     595 
     596[Laser RepetitionRate] 
     597type = Double 
    2073598 
    2074599[Laser Tuneable] 
    2075600type = Boolean 
    2076 description = indicates whether or not the laser can be tuned 
    2077  
    2078 [Laser Tuneable 2003FC] 
    2079 getter = getTunable 
    2080 setter = setTunable 
    2081  
    2082 [Laser Pulse] 
    2083 type = String 
    2084 description = TODO 
    2085 enumeration = {"CW", "Single", "QSwitched", "Repetitive", "ModeLocked"} 
    2086  
    2087 [Laser Pulse 2003FC] 
    2088 enumeration = {"CW", "Single", "Q-Switched", "Repetitive", "Mode-Locked"} 
    2089  
    2090 [Laser PockelCell] 
     601 
     602[Laser Type] 
     603type = LaserType 
     604 
     605[Laser Wavelength] 
     606type = PositiveInteger 
     607 
     608[LightEmittingDiode] 
     609countable = true 
     610path = Instrument+/LightEmittingDiode+ 
     611 
     612[LightEmittingDiode ID] 
     613type = String 
     614 
     615[LightEmittingDiode LotNumber] 
     616type = String 
     617 
     618[LightEmittingDiode Manufacturer] 
     619type = String 
     620 
     621[LightEmittingDiode Model] 
     622type = String 
     623 
     624[LightEmittingDiode Power] 
     625type = Double 
     626 
     627[LightEmittingDiode SerialNumber] 
     628type = String 
     629 
     630[LightPath] 
     631countable = false 
     632path = Image+/Channel+/LightPath 
     633 
     634[LightPath DichroicRef] 
     635type = String 
     636 
     637[LightPath EmissionFilterRef] 
     638type = String 
     639countable = true 
     640path = Image+/Channel+/LightPath/EmissionFilterRef+ 
     641 
     642[LightPath ExcitationFilterRef] 
     643type = String 
     644countable = true 
     645path = Image+/Channel+/LightPath/ExcitationFilterRef+ 
     646 
     647[ChannelLightSourceSettings] 
     648countable = false 
     649path = Image+/Channel+/LightSourceSettings 
     650 
     651[ChannelLightSourceSettings ID] 
     652type = String 
     653 
     654[ChannelLightSourceSettings Wavelength] 
     655type = PositiveInteger 
     656 
     657[MicrobeamManipulationLightSourceSettings] 
     658countable = true 
     659path = Experiment+/MicrobeamManipulation+/LightSourceSettings+ 
     660 
     661[MicrobeamManipulationLightSourceSettings ID] 
     662type = String 
     663 
     664[MicrobeamManipulationLightSourceSettings Wavelength] 
     665type = PositiveInteger 
     666 
     667[Line] 
     668countable = false 
     669path = ROI+/Shape+/Line 
     670 
     671[Line Description] 
     672type = String 
     673 
     674[Line Fill] 
     675type = Integer 
     676 
     677[Line FontSize] 
     678type = Integer 
     679 
     680[Line ID] 
     681type = String 
     682 
     683[Line Label] 
     684type = String 
     685 
     686[Line Name] 
     687type = String 
     688 
     689[Line Stroke] 
     690type = Integer 
     691 
     692[Line StrokeDashArray] 
     693type = String 
     694 
     695[Line StrokeWidth] 
     696type = Double 
     697 
     698[Line TheC] 
     699type = Integer 
     700 
     701[Line TheT] 
     702type = Integer 
     703 
     704[Line TheZ] 
     705type = Integer 
     706 
     707[Line Transform] 
     708type = String 
     709 
     710[Line X1] 
     711type = Double 
     712 
     713[Line X2] 
     714type = Double 
     715 
     716[Line Y1] 
     717type = Double 
     718 
     719[Line Y2] 
     720type = Double 
     721 
     722[ListAnnotation] 
     723countable = true 
     724path = ListAnnotation+ 
     725 
     726[ListAnnotation AnnotationRef] 
     727countable = true 
     728path = ListAnnotation+/AnnotationRef+ 
     729type = String 
     730 
     731[ListAnnotation ID] 
     732type = String 
     733 
     734[ListAnnotation Namespace] 
     735type = String 
     736 
     737[LongAnnotation] 
     738countable = true 
     739path = LongAnnotation+ 
     740 
     741[LongAnnotation ID] 
     742type = String 
     743 
     744[LongAnnotation Namespace] 
     745type = String 
     746 
     747[LongAnnotation Value] 
     748type = Long 
     749 
     750[Mask] 
     751countable = false 
     752path = ROI+/Shape+/Mask 
     753 
     754[Mask Description] 
     755type = String 
     756 
     757[Mask Fill] 
     758type = Integer 
     759 
     760[Mask FontSize] 
     761type = Integer 
     762 
     763[Mask ID] 
     764type = String 
     765 
     766[Mask Label] 
     767type = String 
     768 
     769[Mask Name] 
     770type = String 
     771 
     772[Mask Stroke] 
     773type = Integer 
     774 
     775[Mask StrokeDashArray] 
     776type = String 
     777 
     778[Mask StrokeWidth] 
     779type = Double 
     780 
     781[Mask TheC] 
     782type = Integer 
     783 
     784[Mask TheT] 
     785type = Integer 
     786 
     787[Mask TheZ] 
     788type = Integer 
     789 
     790[Mask Transform] 
     791type = String 
     792 
     793[Mask X] 
     794type = Double 
     795 
     796[Mask Y] 
     797type = Double 
     798 
     799[MicrobeamManipulation] 
     800countable = true 
     801path = Experiment+/MicrobeamManipulation+ 
     802 
     803[MicrobeamManipulation ExperimenterRef] 
     804type = String 
     805 
     806[MicrobeamManipulation ID] 
     807type = String 
     808 
     809[MicrobeamManipulation ROIRef] 
     810countable = true 
     811path = Experiment+/MicrobeamManipulation+/ROIRef+ 
     812type = String 
     813 
     814[MicrobeamManipulation Type] 
     815type = MicrobeamManipulationType 
     816 
     817[Microscope] 
     818countable = false 
     819path = Instrument+/Microscope 
     820 
     821[Microscope LotNumber] 
     822type = String 
     823 
     824[Microscope Manufacturer] 
     825type = String 
     826 
     827[Microscope Model] 
     828type = String 
     829 
     830[Microscope SerialNumber] 
     831type = String 
     832 
     833[Microscope Type] 
     834type = MicroscopeType 
     835 
     836[OTF] 
     837countable = true 
     838path = Instrument+/OTF+ 
     839 
     840[OTF FilterSetRef] 
     841type = String 
     842 
     843[OTF ID] 
     844type = String 
     845 
     846[OTF OpticalAxisAveraged] 
    2091847type = Boolean 
    2092 description = TODO 
    2093  
    2094 [Laser PockelCell 2003FC] 
    2095 path = - 
    2096  
    2097 [Laser RepetitionRate] 
    2098 type = Double 
    2099 description = rate in Hz at which the laser pulses 
    2100  
    2101 [Laser RepetitionRate 2003FC] 
    2102 path = - 
    2103  
    2104 ## Pump ## 
    2105  
    2106 [Pump] 
    2107 path = Instrument+/LightSource+/Laser/Pump 
    2108 description = the pump for a particular laser 
    2109  
    2110 [Pump LightSource] 
    2111 getter = getNodeID 
    2112 setter = setNodeID 
    2113 type = String 
    2114 description = unique label identifying the light source to be used as a pump 
    2115  
    2116 ## Filament ## 
    2117  
    2118 [Filament] 
    2119 path = Instrument+/LightSource+/Filament 
    2120 description = a filament for a particular instrument 
    2121  
    2122 [Filament Type] 
    2123 type = String 
    2124 description = the type of filament 
    2125 enumeration = {"Incandescent", "Halogen"} 
    2126  
    2127 [Filament Type 200809] 
    2128 enumeration = {"Incandescent", "Halogen", "Unknown"} 
    2129 defaultVaue = "Unknown" 
    2130  
    2131 ## Arc ## 
    2132  
    2133 [Arc] 
    2134 path = Instrument+/LightSource+/Arc 
    2135 description = an arc for a particular instrument 
    2136  
    2137 [Arc Type] 
    2138 type = String 
    2139 description = the type of arc 
    2140 enumeration = {"Hg", "Xe", "HgXe"} 
    2141  
    2142 [Arc Type 200809] 
    2143 enumeration = {"Hg", "Xe", "HgXe", "Unknown"} 
    2144 defaultValue = "Unknown" 
    2145  
    2146 [Arc Type 2003FC] 
    2147 enumeration = {"Hg", "Xe", "Hg-Xe"} 
    2148  
    2149 ## Detector ## 
    2150  
    2151 [Detector] 
    2152 countable = true 
    2153 path = Instrument+/Detector+ 
    2154 description = a detector for a particular instrument 
    2155  
    2156 [Detector ID] 
    2157 type = String 
    2158 getter = getNodeID 
    2159 setter = setNodeID 
    2160 description = unique label identifying the detector 
    2161  
    2162 [Detector Manufacturer] 
    2163 type = String 
    2164 description = name of the detector manufacturer 
    2165  
    2166 [Detector Model] 
    2167 type = String 
    2168 description = model name/number of the detector 
    2169  
    2170 [Detector SerialNumber] 
    2171 type = String 
    2172 description = serial number of the detector 
    2173  
    2174 [Detector Type] 
    2175 type = String 
    2176 description = the detector type, e.g. CCD, PMT 
    2177 enumeration = {"CCD", "IntensifiedCCD", "AnalogVideo", "PMT", "Photodiode", "Spectroscopy", "LifetimeImaging", "CorrelationSpectroscopy", "FTIR", "EM-CCD", "APD", "CMOS"} 
    2178  
    2179 [Detector Type 200809] 
    2180 enumeration = {"CCD", "IntensifiedCCD", "AnalogVideo", "PMT", "Photodiode", "Spectroscopy", "LifetimeImaging", "CorrelationSpectroscopy", "FTIR", "EM-CCD", "APD", "CMOS", "Unknown"} 
    2181 defaultValue = "Unknown" 
    2182  
    2183 [Detector Type 2003FC] 
    2184 enumeration = {"CCD", "Intensified-CCD", "Analog-Video", "PMT", "Photodiode", "Spectroscopy", "Life-time-Imaging", "Correlation-Spectroscopy", "FTIR"} 
    2185  
    2186 [Detector Gain] 
    2187 type = Double 
    2188 description = the gain of the detector 
    2189  
    2190 [Detector Voltage] 
    2191 type = Double 
    2192 description = the voltage of the detector 
    2193  
    2194 [Detector Offset] 
    2195 type = Double 
    2196 description = the offset of the detector 
    2197  
    2198 [Detector Zoom] 
    2199 type = Double 
    2200 description = optional zoom value of the detector 
    2201  
    2202 [Detector Zoom 2003FC] 
    2203 path = - 
    2204  
    2205 [Detector AmplificationGain] 
    2206 type = Double 
    2207 description = amplification gain of the detector 
    2208  
    2209 [Detector AmplificationGain 2003FC] 
    2210 path = - 
    2211  
    2212 ## Objective ## 
     848 
     849[OTF SizeX] 
     850type = PositiveInteger 
     851 
     852[OTF SizeY] 
     853type = PositiveInteger 
     854 
     855[OTF Type] 
     856type = PixelType 
    2213857 
    2214858[Objective] 
    2215859countable = true 
    2216860path = Instrument+/Objective+ 
    2217 description = an objective for a particular instrument 
     861 
     862[Objective CalibratedMagnification] 
     863type = Double 
     864 
     865[Objective Correction] 
     866type = Correction 
    2218867 
    2219868[Objective ID] 
    2220869type = String 
    2221 getter = getNodeID 
    2222 setter = setNodeID 
    2223 description = unique label identifying the objective 
    2224  
    2225 [Objective Manufacturer] 
    2226 type = String 
    2227 description = the name of the objective's manufacturer 
    2228  
    2229 [Objective Model] 
    2230 type = String 
    2231 description = model name/number of the objective 
    2232  
    2233 [Objective SerialNumber] 
    2234 type = String 
    2235 description = serial number of the objective 
    2236  
    2237 [Objective Correction] 
    2238 type = String 
    2239 description = type of correction coating applied to the objective lens 
    2240 enumeration = {"UV", "PlanApo", "PlanFluor", "SuperFluor", "VioletCorrected"} 
    2241  
    2242 [Objective Correction 200809] 
    2243 enumeration = {"UV", "PlanApo", "PlanFluor", "SuperFluor", "VioletCorrected", "Unknown"} 
    2244 defaultValue = "Unknown" 
    2245  
    2246 [Objective Correction 2003FC] 
    2247 path = - 
    2248870 
    2249871[Objective Immersion] 
    2250 type = String 
    2251 description = immersion medium used with the objective lens 
    2252 enumeration = {"Oil", "Water", "WaterDipping", "Air", "Multi", "Glycerol", "Other"} 
    2253 defaultValue = "Other" 
    2254  
    2255 [Objective Immersion 200809] 
    2256 enumeration = {"Oil", "Water", "WaterDipping", "Air", "Multi", "Glycerol", "Other", "Unknown"} 
    2257  
    2258 [Objective Immersion 2003FC] 
    2259 path = - 
    2260  
    2261 [Objective LensNA] 
    2262 type = Double 
    2263 description = numerical aperture of the lens 
    2264  
    2265 [Objective NominalMagnification] 
    2266 type = Integer 
    2267 description = the specified magnification of the objective 
    2268  
    2269 [Objective NominalMagnification 2003FC] 
    2270 path = - 
    2271  
    2272 [Objective CalibratedMagnification] 
    2273 type = Double 
    2274 description = the measured magnification of the objective 
    2275  
    2276 [Objective CalibratedMagnification 2003FC] 
    2277 getter = getMagnification 
    2278 setter = setMagnification 
    2279  
    2280 [Objective WorkingDistance] 
    2281 type = Double 
    2282 description = working distance of the objective, in um 
    2283  
    2284 [Objective WorkingDistance 2003FC] 
    2285 path = - 
    2286  
    2287 # NB: This will be added in the next OME-XML release. 
     872type = Immersion 
     873 
    2288874[Objective Iris] 
    2289875type = Boolean 
    2290 description = TODO 
    2291  
    2292 [Objective Iris 200809] 
    2293 path = - 
    2294  
    2295 [Objective Iris 200802] 
    2296 path = - 
    2297  
    2298 [Objective Iris 200706] 
    2299 path = - 
    2300  
    2301 [Objective Iris 2003FC] 
    2302 path = - 
    2303  
    2304 #TODO figure out how to reconcile the two filter models 
    2305  
    2306 #http://www.openmicroscopy.org/Schemas/OME/2007-06/ome.xsd 
    2307 #http://ome-xml.org/wiki/FilterAndFilterSet 
    2308  
    2309 #http://www.openmicroscopy.org/XMLschemas/OME/FC/ome.xsd 
    2310 #http://openmicroscopy.org/api/xml/OME/ome-instrument.html 
    2311  
    2312 ## Filter ## 
    2313  
    2314 [Filter] 
    2315 countable = true 
    2316 path = Instrument+/Filter+ 
    2317 description = TODO 
    2318  
    2319 [Filter ID] 
    2320 type = String 
    2321 getter = getNodeID 
    2322 setter = setNodeID 
    2323 description = unique label identifying the filter 
    2324  
    2325 [Filter Type] 
    2326 type = String 
    2327 description = TODO 
    2328 enumeration = {"LongPass", "ShortPass", "BandPass", "MultiPass"} 
    2329  
    2330 [Filter Type 2003FC] 
    2331 path = - 
    2332  
    2333 [Filter FilterWheel] 
    2334 type = String 
    2335 description = TODO 
    2336  
    2337 [Filter FilterWheel 2003FC] 
    2338 path = - 
    2339  
    2340 [Filter Manufacturer] 
    2341 type = String 
    2342 description = TODO 
    2343  
    2344 [Filter Manufacturer 2003FC] 
    2345 path = - 
    2346  
    2347 [Filter Model] 
    2348 type = String 
    2349 description = TODO 
    2350  
    2351 [Filter Model 2003FC] 
    2352 path = - 
    2353  
    2354 [Filter LotNumber] 
    2355 type = String 
    2356 description = TODO 
    2357  
    2358 [Filter LotNumber 2003FC] 
    2359 path = - 
    2360  
    2361 ## ExFilter ## 
    2362  
    2363 [ExFilter] 
    2364 path = Instrument+/Filter+/ExFilter 
    2365 description = an excitation filter for a particular instrument 
    2366  
    2367 [ExFilter 200706] 
    2368 path = - 
    2369  
    2370 [ExFilter 200802] 
    2371 path = - 
    2372  
    2373 [ExFilter 200809] 
    2374 path = - 
    2375  
    2376 [ExFilter Manufacturer] 
    2377 type = String 
    2378 description = TODO 
    2379  
    2380 [ExFilter Model] 
    2381 type = String 
    2382 description = TODO 
    2383  
    2384 [ExFilter LotNumber] 
    2385 type = String 
    2386 description = TODO 
    2387  
    2388 [ExFilter Type] 
    2389 type = String 
    2390 description = TODO 
    2391 enumeration = {"LongPass", "ShortPass", "BandPass", "MultiPass"} 
    2392  
    2393 ## Dichroic ## 
    2394  
    2395 [Dichroic] 
    2396 countable = true 
    2397 path = Instrument+/Dichroic+ 
    2398 description = a dichroic for a particular instrument 
    2399  
    2400 [Dichroic 2003FC] 
    2401 path = Instrument+/Filter+/Dichroic 
    2402  
    2403 [Dichroic ID] 
    2404 type = String 
    2405 getter = getNodeID 
    2406 setter = setNodeID 
    2407 description = unique label identifying the dichroic 
    2408  
    2409 [Dichroic Manufacturer] 
    2410 type = String 
    2411 description = TODO 
    2412  
    2413 [Dichroic Model] 
    2414 type = String 
    2415 description = TODO 
    2416  
    2417 [Dichroic LotNumber] 
    2418 type = String 
    2419 description = TODO 
    2420  
    2421 ## EmFilter ## 
    2422  
    2423 [EmFilter] 
    2424 path = Instrument+/Filter+/EmFilter 
    2425 description = an emission filter for a particular instrument 
    2426  
    2427 [EmFilter 200706] 
    2428 path = - 
    2429  
    2430 [EmFilter 200802] 
    2431 path = - 
    2432  
    2433 [EmFilter 200809] 
    2434 path = - 
    2435  
    2436 [EmFilter Manufacturer] 
    2437 type = String 
    2438 description = TODO 
    2439  
    2440 [EmFilter Model] 
    2441 type = String 
    2442 description = TODO 
    2443  
    2444 [EmFilter LotNumber] 
    2445 type = String 
    2446 description = TODO 
    2447  
    2448 [EmFilter Type] 
    2449 type = String 
    2450 description = TODO 
    2451 enumeration = {"LongPass", "ShortPass", "BandPass", "MultiPass"} 
    2452  
    2453 ## FilterSet ## 
    2454  
    2455 [FilterSet] 
    2456 countable = true 
    2457 path = Instrument+/FilterSet+ 
    2458 description = a filter set for a particular instrument 
    2459  
    2460 [FilterSet 2003FC] 
    2461 path = Instrument+/Filter+/FilterSet 
    2462  
    2463 [FilterSet ID] 
    2464 type = String 
    2465 getter = getNodeID 
    2466 setter = setNodeID 
    2467 description = unique label identifying the filter set 
    2468  
    2469 [FilterSet Manufacturer] 
    2470 type = String 
    2471 description = TODO 
    2472  
    2473 [FilterSet Model] 
    2474 type = String 
    2475 description = TODO 
    2476  
    2477 [FilterSet LotNumber] 
    2478 type = String 
    2479 description = TODO 
    2480  
    2481 [FilterSet ExFilter] 
    2482 type = String 
    2483 getter = getExFilterRef 
    2484 setter = setExFilterRef 
    2485 description = TODO 
    2486  
    2487 [FilterSet ExFilter 2003FC] 
    2488 path = - 
    2489  
    2490 [FilterSet EmFilter] 
    2491 type = String 
    2492 getter = getEmFilterRef 
    2493 setter = setEmFilterRef 
    2494 description = TODO 
    2495  
    2496 [FilterSet EmFilter 2003FC] 
    2497 path = - 
    2498  
    2499 [FilterSet Dichroic] 
    2500 type = String 
    2501 getter = getDichroicRef 
    2502 setter = setDichroicRef 
    2503 description = TODO 
    2504  
    2505 [FilterSet Dichroic 2003FC] 
    2506 path = - 
    2507  
    2508 ## TransmittanceRange ## 
     876 
     877[Objective LensNA] 
     878type = Double 
     879 
     880[Objective LotNumber] 
     881type = String 
     882 
     883[Objective Manufacturer] 
     884type = String 
     885 
     886[Objective Model] 
     887type = String 
     888 
     889[Objective NominalMagnification] 
     890type = Integer 
     891 
     892[Objective SerialNumber] 
     893type = String 
     894 
     895[Objective WorkingDistance] 
     896type = Double 
     897 
     898[ImageObjectiveSettings] 
     899countable = false 
     900path = Image+/ObjectiveSettings 
     901 
     902[ImageObjectiveSettings CorrectionCollar] 
     903type = Double 
     904 
     905[ImageObjectiveSettings ID] 
     906type = String 
     907 
     908[ImageObjectiveSettings Medium] 
     909type = Medium 
     910 
     911[ImageObjectiveSettings RefractiveIndex] 
     912type = Double 
     913 
     914[OTFObjectiveSettings] 
     915countable = false 
     916path = Instrument+/OTF+/ObjectiveSettings 
     917 
     918[OTFObjectiveSettings CorrectionCollar] 
     919type = Double 
     920 
     921[OTFObjectiveSettings ID] 
     922type = String 
     923 
     924[OTFObjectiveSettings Medium] 
     925type = Medium 
     926 
     927[OTFObjectiveSettings RefractiveIndex] 
     928type = Double 
     929 
     930[Path] 
     931countable = false 
     932path = ROI+/Shape+/Path 
     933 
     934[Path Description] 
     935type = String 
     936 
     937[Path Fill] 
     938type = Integer 
     939 
     940[Path FontSize] 
     941type = Integer 
     942 
     943[Path ID] 
     944type = String 
     945 
     946[Path Label] 
     947type = String 
     948 
     949[Path Name] 
     950type = String 
     951 
     952[Path Stroke] 
     953type = Integer 
     954 
     955[Path StrokeDashArray] 
     956type = String 
     957 
     958[Path StrokeWidth] 
     959type = Double 
     960 
     961[Path TheC] 
     962type = Integer 
     963 
     964[Path TheT] 
     965type = Integer 
     966 
     967[Path TheZ] 
     968type = Integer 
     969 
     970[Path Transform] 
     971type = Strin 
     972 
     973[Path Definition] 
     974type = String 
     975 
     976[PixelsBinData] 
     977countable = true 
     978path = Image+/Pixels/BinData+ 
     979 
     980[PixelsBinData BigEndian] 
     981type = Boolean 
     982 
     983[Pixels] 
     984countable = false 
     985path = Image+/Pixels 
     986 
     987[Pixels AnnotationRef] 
     988countable = true 
     989path = Image+/Pixels/AnnotationRef+ 
     990type = String 
     991 
     992[Pixels DimensionOrder] 
     993type = DimensionOrder 
     994 
     995[Pixels ID] 
     996type = String 
     997 
     998[Pixels PhysicalSizeX] 
     999type = Double 
     1000 
     1001[Pixels PhysicalSizeY] 
     1002type = Double 
     1003 
     1004[Pixels PhysicalSizeZ] 
     1005type = Double 
     1006 
     1007[Pixels SizeC] 
     1008type = PositiveInteger 
     1009 
     1010[Pixels SizeT] 
     1011type = PositiveInteger 
     1012 
     1013[Pixels SizeX] 
     1014type = PositiveInteger 
     1015 
     1016[Pixels SizeY] 
     1017type = PositiveInteger 
     1018 
     1019[Pixels SizeZ] 
     1020type = PositiveInteger 
     1021 
     1022[Pixels TimeIncrement] 
     1023type = Double 
     1024 
     1025[Pixels Type] 
     1026type = PixelType 
     1027 
     1028[Plane] 
     1029countable = true 
     1030path = Image+/Plane+ 
     1031 
     1032[Plane AnnotationRef] 
     1033countable = true 
     1034path = Image+/Plane+/AnnotationRef+ 
     1035type = String 
     1036 
     1037[Plane DeltaT] 
     1038type = Double 
     1039 
     1040[Plane ExposureTime] 
     1041type = Double 
     1042 
     1043[Plane HashSHA1] 
     1044type = String 
     1045 
     1046[Plane PositionX] 
     1047type = Double 
     1048 
     1049[Plane PositionY] 
     1050type = Double 
     1051 
     1052[Plane PositionZ] 
     1053type = Double 
     1054 
     1055[Plane TheC] 
     1056type = Integer 
     1057 
     1058[Plane TheT] 
     1059type = Integer 
     1060 
     1061[Plane TheZ] 
     1062type = Integer 
     1063 
     1064[Plate] 
     1065countable = true 
     1066path = Plate+ 
     1067 
     1068[Plate AnnotationRef] 
     1069countable = true 
     1070path = Plate+/AnnotationRef+ 
     1071type = String 
     1072 
     1073[Plate ColumnNamingConvention] 
     1074type = NamingConvention 
     1075 
     1076[Plate Columns] 
     1077type = Integer 
     1078 
     1079[Plate Description] 
     1080type = String 
     1081 
     1082[Plate ExternalIdentifier] 
     1083type = String 
     1084 
     1085[Plate ID] 
     1086type = String 
     1087 
     1088[Plate Name] 
     1089type = String 
     1090 
     1091[Plate RowNamingConvention] 
     1092type = NamingConvention 
     1093 
     1094[Plate Rows] 
     1095type = Integer 
     1096 
     1097[Plate ScreenRef] 
     1098countable = true 
     1099path = Plate+/ScreenRef+ 
     1100type = String 
     1101 
     1102[Plate Status] 
     1103type = String 
     1104 
     1105[Plate WellOriginX] 
     1106type = Double 
     1107 
     1108[Plate WellOriginY] 
     1109type = Double 
     1110 
     1111[PlateAcquisition] 
     1112countable = true 
     1113path = Plate+/PlateAcquisition+ 
     1114 
     1115[PlateAcquisition AnnotationRef] 
     1116countable = true 
     1117path = Plate+/PlateAcquistion+/AnnotationRef+ 
     1118type = String 
     1119 
     1120[PlateAcquisition Description] 
     1121type = String 
     1122 
     1123[PlateAcquisition EndTime] 
     1124type = String 
     1125 
     1126[PlateAcquisition ID] 
     1127type = String 
     1128 
     1129[PlateAcquisition MaximumFieldCount] 
     1130type = Integer 
     1131 
     1132[PlateAcquisition Name] 
     1133type = String 
     1134 
     1135[PlateAcquisition StartTime] 
     1136type = String 
     1137 
     1138[PlateAcquisition WellSampleRef] 
     1139type = String 
     1140 
     1141[Point] 
     1142countable = false 
     1143path = ROI+/Shape+/Point 
     1144 
     1145[Point Description] 
     1146type = String 
     1147 
     1148[Point Fill] 
     1149type = Integer 
     1150 
     1151[Point FontSize] 
     1152type = Integer 
     1153 
     1154[Point ID] 
     1155type = String 
     1156 
     1157[Point Label] 
     1158type = String 
     1159 
     1160[Point Name] 
     1161type = String 
     1162 
     1163[Point Stroke] 
     1164type = Integer 
     1165 
     1166[Point StrokeDashArray] 
     1167type = String 
     1168 
     1169[Point StrokeWidth] 
     1170type = Double 
     1171 
     1172[Point TheC] 
     1173type = Integer 
     1174 
     1175[Point TheT] 
     1176type = Integer 
     1177 
     1178[Point TheZ] 
     1179type = Integer 
     1180 
     1181[Point Transform] 
     1182type = String 
     1183 
     1184[Point X] 
     1185type = Double 
     1186 
     1187[Point Y] 
     1188type = Double 
     1189 
     1190[Polyline] 
     1191countable = false 
     1192path = ROI+/Shape+/Polyline 
     1193 
     1194[Polyline Description] 
     1195type = String 
     1196 
     1197[Polyline Fill] 
     1198type = Integer 
     1199 
     1200[Polyline FontSize] 
     1201type = Integer 
     1202 
     1203[Polyline ID] 
     1204type = String 
     1205 
     1206[Polyline Label] 
     1207type = String 
     1208 
     1209[Polyline Name] 
     1210type = String 
     1211 
     1212[Polyline Stroke] 
     1213type = Integer 
     1214 
     1215[Polyline StrokeDashArray] 
     1216type = String 
     1217 
     1218[Polyline StrokeWidth] 
     1219type = Double 
     1220 
     1221[Polyline TheC] 
     1222type = Integer 
     1223 
     1224[Polyline TheT] 
     1225type = Integer 
     1226 
     1227[Polyline TheZ] 
     1228type = Integer 
     1229 
     1230[Polyline Transform] 
     1231type = String 
     1232 
     1233[Polyline Closed] 
     1234type = Boolean 
     1235 
     1236[Polyline Points] 
     1237type = String 
     1238 
     1239[Project] 
     1240countable = true 
     1241path = Project+ 
     1242 
     1243[Project AnnotationRef] 
     1244countable = true 
     1245path = Project+/AnnotationRef+ 
     1246type = String 
     1247 
     1248[Project Description] 
     1249type = String 
     1250 
     1251[Project ExperimenterRef] 
     1252type = String 
     1253 
     1254[Project GroupRef] 
     1255type = String 
     1256 
     1257[Project ID] 
     1258type = String 
     1259 
     1260[Project Name] 
     1261type = String 
     1262 
     1263[ROI] 
     1264countable = true 
     1265path = ROI+ 
     1266 
     1267[ROI AnnotationRef] 
     1268countable = true 
     1269path = ROI+/AnnotationRef+ 
     1270type = String 
     1271 
     1272[ROI Description] 
     1273type = String 
     1274 
     1275[ROI ID] 
     1276type = String 
     1277 
     1278[ROI Name] 
     1279type = String 
     1280 
     1281[ROI Namespace] 
     1282type = String 
     1283 
     1284[Reagent] 
     1285countable = true 
     1286path = Screen+/Reagent+ 
     1287 
     1288[Reagent AnnotationRef] 
     1289countable = true 
     1290path = Screen+/Reagent+/AnnotationRef+ 
     1291type = String 
     1292 
     1293[Reagent Description] 
     1294type = String 
     1295 
     1296[Reagent ID] 
     1297type = String 
     1298 
     1299[Reagent Name] 
     1300type = String 
     1301 
     1302[Reagent ReagentIdentifier] 
     1303type = String 
     1304 
     1305[Rectangle] 
     1306countable = false 
     1307path = ROI+/Shape+/Rectangle 
     1308 
     1309[Rectangle Description] 
     1310type = String 
     1311 
     1312[Rectangle Fill] 
     1313type = Integer 
     1314 
     1315[Rectangle FontSize] 
     1316type = Integer 
     1317 
     1318[Rectangle ID] 
     1319type = String 
     1320 
     1321[Rectangle Label] 
     1322type = String 
     1323 
     1324[Rectangle Name] 
     1325type = String 
     1326 
     1327[Rectangle Stroke] 
     1328type = Integer 
     1329 
     1330[Rectangle StrokeDashArray] 
     1331type = String 
     1332 
     1333[Rectangle StrokeWidth] 
     1334type = Double 
     1335 
     1336[Rectangle TheC] 
     1337type = Integer 
     1338 
     1339[Rectangle TheT] 
     1340type = Integer 
     1341 
     1342[Rectangle TheZ] 
     1343type = Integer 
     1344 
     1345[Rectangle Transform] 
     1346type = String 
     1347 
     1348[Rectangle Height] 
     1349type = Double 
     1350 
     1351[Rectangle Width] 
     1352type = Double 
     1353 
     1354[Rectangle X] 
     1355type = Double 
     1356 
     1357[Rectangle Y] 
     1358type = Double 
     1359 
     1360[Screen] 
     1361countable = true 
     1362path = Screen+ 
     1363 
     1364[Screen AnnotationRef] 
     1365countable = true 
     1366path = Screen+/AnnotationRef+ 
     1367type = String 
     1368 
     1369[Screen Description] 
     1370type = String 
     1371 
     1372[Screen ID] 
     1373type = String 
     1374 
     1375[Screen Name] 
     1376type = String 
     1377 
     1378[Screen PlateRef] 
     1379countable = true 
     1380path = Screen+/PlateRef+ 
     1381type = String 
     1382 
     1383[Screen ProtocolDescription] 
     1384type = String 
     1385 
     1386[Screen ProtocolIdentifier] 
     1387type = String 
     1388 
     1389[Screen ReagentSetDescription] 
     1390type = String 
     1391 
     1392[Screen ReagentSetIdentifier] 
     1393type = String 
     1394 
     1395[Screen Type] 
     1396type = String 
     1397 
     1398[StageLabel] 
     1399countable = false 
     1400path = Image+/StageLabel 
     1401 
     1402[StageLabel Name] 
     1403type = String 
     1404 
     1405[StageLabel X] 
     1406type = Double 
     1407 
     1408[StageLabel Y] 
     1409type = Double 
     1410 
     1411[StageLabel Z] 
     1412type = Double 
     1413 
     1414[StringAnnotation] 
     1415countable = true 
     1416path = StringAnnotation+ 
     1417 
     1418[StringAnnotation ID] 
     1419type = String 
     1420 
     1421[StringAnnotation Namespace] 
     1422type = String 
     1423 
     1424[StringAnnotation Value] 
     1425type = String 
     1426 
     1427[Text] 
     1428countable = false 
     1429path = ROI+/Shape+/Text 
     1430 
     1431[Text Description] 
     1432type = String 
     1433 
     1434[Text Fill] 
     1435type = Integer 
     1436 
     1437[Text FontSize] 
     1438type = Integer 
     1439 
     1440[Text ID] 
     1441type = String 
     1442 
     1443[Text Label] 
     1444type = String 
     1445 
     1446[Text Name] 
     1447type = String 
     1448 
     1449[Text Stroke] 
     1450type = Integer 
     1451 
     1452[Text StrokeDashArray] 
     1453type = String 
     1454 
     1455[Text StrokeWidth] 
     1456type = Double 
     1457 
     1458[Text TheC] 
     1459type = Integer 
     1460 
     1461[Text TheT] 
     1462type = Integer 
     1463 
     1464[Text TheZ] 
     1465type = Integer 
     1466 
     1467[Text Transform] 
     1468type = String 
     1469 
     1470[Text Value] 
     1471type = String 
     1472 
     1473[Text X] 
     1474type = Double 
     1475 
     1476[Text Y] 
     1477type = Double 
     1478 
     1479[TiffData] 
     1480countable = true 
     1481path = Image+/TiffData+ 
     1482 
     1483[TiffData FirstC] 
     1484type = Integer 
     1485 
     1486[TiffData FirstT] 
     1487type = Integer 
     1488 
     1489[TiffData FirstZ] 
     1490type = Integer 
     1491 
     1492[TiffData IFD] 
     1493type = Integer 
     1494 
     1495[TiffData PlaneCount] 
     1496type = Integer 
     1497 
     1498[TimestampAnnotation] 
     1499countable = true 
     1500path = TimestampAnnotation+ 
     1501 
     1502[TimestampAnnotation ID] 
     1503type = String 
     1504 
     1505[TimestampAnnotation Namespace] 
     1506type = String 
     1507 
     1508[TimestampAnnotation Value] 
     1509type = String 
    25091510 
    25101511[TransmittanceRange] 
     1512countable = false 
    25111513path = Instrument+/Filter+/TransmittanceRange 
    2512 description = TODO 
    2513  
    2514 [TransmittanceRange 2003FC] 
    2515 path = - 
    25161514 
    25171515[TransmittanceRange CutIn] 
    25181516type = Integer 
    2519 description = TODO 
     1517 
     1518[TransmittanceRange CutInTolerance] 
     1519type = Integer 
     1520 
     1521[TransmittanceRange CutOut] 
     1522type = Integer 
     1523 
     1524[TransmittanceRange CutOutTolerance] 
     1525type = Integer 
    25201526 
    25211527[TransmittanceRange Transmittance] 
    2522 type = Integer 
    2523 description = TODO 
    2524  
    2525 [TransmittanceRange CutOut] 
    2526 type = Integer 
    2527 description = TODO 
    2528  
    2529 [TransmittanceRange CutInTolerance] 
    2530 type = Integer 
    2531 description = TODO 
    2532  
    2533 [TransmittanceRange CutOutTolerance] 
    2534 type = Integer 
    2535 description = TODO 
    2536  
    2537 ## OTF ## 
    2538  
    2539 [OTF] 
    2540 countable = true 
    2541 path = Instrument+/OTF+ 
    2542 description = an optical transfer function for a particular instrument 
    2543  
    2544 [OTF ID] 
    2545 type = String 
    2546 getter = getNodeID 
    2547 setter = setNodeID 
    2548 description = unique label identifying the optical transfer function 
    2549  
    2550 [OTF SizeX] 
    2551 type = Integer 
    2552 description = width of the optical transfer function 
    2553  
    2554 [OTF SizeY] 
    2555 type = Integer 
    2556 description = height of the optical transfer function 
    2557  
    2558 [OTF PixelType] 
    2559 type = String 
    2560 description = the pixel type of the optical transfer function 
    2561 enumeration = {"int8", "uint8", "int16", "uint16", "int32", "uint32", "float"} 
    2562  
    2563 [OTF PixelType 200706] 
    2564 enumeration = {"bit", "int8", "int16", "int32", "uint8", "uint16", "uint32", "float", "double", "complex", "double-complex"} 
    2565  
    2566 [OTF PixelType 2003FC] 
    2567 enumeration = {"bit", "int8", "int16", "int32", "Uint8", "Uint16", "Uint32", "float", "double", "complex", "double-complex"} 
    2568  
    2569 [OTF OpticalAxisAveraged] 
    2570 type = Boolean 
    2571 description = indicates whether or not optical axis averaging was performed 
    2572  
    2573 [OTF OpticalAxisAveraged 2003FC] 
    2574 getter = getOpticalAxisAvrg 
    2575 setter = setOpticalAxisAvrg 
    2576  
    2577 [OTF Objective] 
    2578 type = String 
    2579 path = Instrument+/OTF+/ObjectiveRef 
    2580 getter = getNodeID 
    2581 setter = setNodeID 
    2582 description = objective described by the optical transfer function 
    2583  
    2584 #[OTF FilterSet] 
    2585 #type = String 
    2586 #path = Instrument+/OTF+/FilterSetRef 
    2587 #getter = getNodeID 
    2588 #setter = setNodeID 
    2589 #description = filter set associated with the optical transfer function 
    2590  
    2591 #[OTF FilterSet 2003FC] 
    2592 #path = - 
    2593  
    2594 [OTF BinaryFile] 
    2595 type = String 
    2596 description = the Base64-encoded optical transfer function, or the path to a \ 
    2597               file containing it 
    2598  
    2599 ### Entities for Experiment & Experimenter details ### 
    2600  
    2601 ## Experiment ## 
    2602  
    2603 [Experiment] 
    2604 countable = true 
    2605 path = Experiment+ 
    2606 description = information about a particular experiment 
    2607  
    2608 [Experiment ID] 
    2609 type = String 
    2610 getter = getNodeID 
    2611 setter = setNodeID 
    2612 description = unique label identifying the experiment 
    2613  
    2614 [Experiment Description] 
    2615 type = String 
    2616 description = description of the experiment 
    2617  
    2618 [Experiment Type] 
    2619 type = String 
    2620 description = type of experiment, e.g. FRET, TimeLapse 
    2621 enumeration = {"FP", "FRET", "TimeLapse", "FourDPlus", "Screen", "Immunocytochemistry", "Immunofluorescence", "FISH", "Electrophysiology", "IonImaging", "Colocalization", "PGIDocumentation", "FluorescenceLifetime", "SpectralImaging", "Photobleaching", "Other"} 
    2622 defaultValue = "Other" 
    2623  
    2624 [Experiment Type 2003FC] 
    2625 enumeration = {"FP", "FRET", "Time-lapse", "4-D+", "Screen", "Immunocytochemistry", "Immunofluorescence", "FISH", "Electrophysiology", "Ion-Imaging", "Colocalization", "PGI/Documentation", "FRAP", "Photoablation", "Photoactivation", "Uncaging", "Optical-Trapping", "Fluorescence-Lifetime", "Spectral-Imaging", "Other"} 
    2626  
    2627 [Experiment ExperimenterRef] 
    2628 type = String 
    2629 description = ID of the experimenter who conducted the experiment 
    2630  
    2631 ## Experimenter ## 
    2632  
    2633 [Experimenter] 
    2634 countable = true 
    2635 path = Experimenter+ 
    2636 description = information about someone performing an experiment 
    2637  
    2638 [Experimenter ID] 
    2639 type = String 
    2640 getter = getNodeID 
    2641 setter = setNodeID 
    2642 description = unique label identifying the experimenter 
    2643  
    2644 [Experimenter FirstName] 
    2645 type = String 
    2646 description = the first name of the experimenter 
    2647  
    2648 [Experimenter FirstName 2003FC] 
    2649 path = - 
    2650  
    2651 [Experimenter LastName] 
    2652 type = String 
    2653 description = the last name of the experimenter 
    2654  
    2655 [Experimenter LastName 2003FC] 
    2656 path = - 
    2657  
    2658 [Experimenter Email] 
    2659 type = String 
    2660 description = the e-mail address of the experimenter 
    2661  
    2662 [Experimenter Email 2003FC] 
    2663 path = - 
    2664  
    2665 [Experimenter Institution] 
    2666 type = String 
    2667 description = the institution to which the experimenter belongs 
    2668  
    2669 [Experimenter Institution 2003FC] 
    2670 path = - 
    2671  
    2672 [Experimenter OMEName] 
    2673 type = String 
    2674 description = OME user name of the experimenter 
    2675  
    2676 [Experimenter OMEName 2003FC] 
    2677 path = - 
    2678  
    2679 ## Group ## 
    2680  
    2681 [Group] 
    2682 countable = true 
    2683 path = Group+ 
    2684 description = a group of experimenters 
    2685  
    2686 [Group ID] 
    2687 type = String 
    2688 getter = getNodeID 
    2689 setter = setNodeID 
    2690 description = unique label identifying the group 
    2691  
    2692 [Group Name] 
    2693 type = String 
    2694 description = the name of the group 
    2695  
    2696 ## GroupRef ## 
    2697  
    2698 [GroupRef] 
    2699 countable = true 
    2700 path = Experimenter+/GroupRef+ 
    2701 description = HACK - force creation of MetadataRetrieve.getGroupRefCount(int) 
    2702  
    2703 ## Contact ## 
    2704  
    2705 [Contact] 
    2706 path = Group+/Contact 
    2707 description = a group contact 
    2708  
    2709 [Contact Experimenter] 
    2710 getter = getNodeID 
    2711 setter = setNodeID 
    2712 type = String 
    2713 description = unique label identifying the experimenter who is the group contact 
    2714  
    2715 ## Leader ## 
    2716  
    2717 # TODO: xsd-fu needs to return a LeaderNode when Group.getLeader() is called 
    2718 #[Leader] 
    2719 #path = Group+/Leader 
    2720 #description = TODO 
    2721  
    2722 #[Leader Experimenter] 
    2723 #getter = getNodeID 
    2724 #setter = setNodeID 
    2725 #type = String 
    2726 #description = TODO 
    2727  
    2728 ## ExperimenterMembership ## 
    2729  
    2730 [ExperimenterMembership] 
    2731 countable = true 
    2732 path = Experimenter+/GroupRef+ 
    2733 description = a linkage between a particular experimenter and a group 
    2734  
    2735 [ExperimenterMembership Group] 
    2736 type = String 
    2737 getter = getNodeID 
    2738 setter = setNodeID 
    2739 description = the group associated with this membership 
    2740  
    2741 ### Entities for high-content screening ### 
    2742  
    2743 ## Plate ## 
    2744  
    2745 [Plate] 
    2746 countable = true 
    2747 path = Plate+ 
    2748 description = identifies a plate within a screen 
    2749  
    2750 [Plate ID] 
    2751 type = String 
    2752 getter = getNodeID 
    2753 setter = setNodeID 
    2754 description = unique label identifying the plate 
    2755  
    2756 [Plate Name] 
    2757 type = String 
    2758 description = the plate's name 
    2759  
    2760 [Plate Description] 
    2761 type = String 
    2762 description = description of the plate 
    2763  
    2764 [Plate Description 2003FC] 
    2765 path = - 
    2766  
    2767 [Plate Status] 
    2768 type = String 
    2769 description = current state of the plate with respect to the experiment \ 
    2770               work-flow 
    2771  
    2772 [Plate Status 2003FC] 
    2773 path = - 
    2774  
    2775 [Plate ExternalIdentifier] 
    2776 type = String 
    2777 description = reference to the plate in an external database 
    2778  
    2779 [Plate ExternalIdentifier 2003FC] 
    2780 getter = getExternRef 
    2781 setter = setExternRef 
    2782  
    2783 # These entities are not currently present in the OME-XML schemas, but 
    2784 # they are likely to be added in future versions. 
    2785  
    2786 [Plate ColumnNamingConvention] 
    2787 type = String 
    2788 description = name of the first column in the plate 
    2789  
    2790 [Plate ColumnNamingConvention 200809] 
    2791 path = - 
    2792  
    2793 [Plate ColumnNamingConvention 200802] 
    2794 path = - 
    2795  
    2796 [Plate ColumnNamingConvention 200706] 
    2797 path = - 
    2798  
    2799 [Plate ColumnNamingConvention 2003FC] 
    2800 path = - 
    2801  
    2802 [Plate RowNamingConvention] 
    2803 type = String 
    2804 description = name of the first row in the plate 
    2805  
    2806 [Plate RowNamingConvention 200809] 
    2807 path = - 
    2808  
    2809 [Plate RowNamingConvention 200802] 
    2810 path = - 
    2811  
    2812 [Plate RowNamingConvention 200706] 
    2813 path = - 
    2814  
    2815 [Plate RowNamingConvention 2003FC] 
    2816 path = - 
    2817  
    2818 [Plate WellOriginX] 
    2819 type = Double 
    2820 description = percent width offset from top left corner 
    2821  
    2822 [Plate WellOriginX 200809] 
    2823 path = - 
    2824  
    2825 [Plate WellOriginX 200802] 
    2826 path = - 
    2827  
    2828 [Plate WellOriginX 200706] 
    2829 path = - 
    2830  
    2831 [Plate WellOriginX 2003FC] 
    2832 path = - 
    2833  
    2834 [Plate WellOriginY] 
    2835 type = Double 
    2836 description = percent height offset from top left corner 
    2837  
    2838 [Plate WellOriginY 200809] 
    2839 path = - 
    2840  
    2841 [Plate WellOriginY 200802] 
    2842 path = - 
    2843  
    2844 [Plate WellOriginY 200706] 
    2845 path = - 
    2846  
    2847 [Plate WellOriginY 2003FC] 
    2848 path = - 
    2849  
    2850 ## PlateRef ## 
    2851  
    2852 [PlateRef] 
    2853 countable = true 
    2854 path = Screen+/PlateRef+ 
    2855 description = TODO 
    2856  
    2857 [PlateRef 2003FC] 
    2858 path = Image+/PlateRef 
    2859  
    2860 [PlateRef ID] 
    2861 getter = getNodeID 
    2862 setter = setNodeID 
    2863 type = String 
    2864 description = TODO 
    2865  
    2866 [PlateRef Sample] 
    2867 type = Integer 
    2868 description = TODO 
    2869  
    2870 [PlateRef Sample 200706] 
    2871 path = - 
    2872  
    2873 [PlateRef Sample 200802] 
    2874 path = - 
    2875  
    2876 [PlateRef Sample 200809] 
    2877 path = - 
    2878  
    2879 [PlateRef Well] 
    2880 type = String 
    2881 description = TODO 
    2882  
    2883 [PlateRef Well 200706] 
    2884 path = - 
    2885  
    2886 [PlateRef Well 200802] 
    2887 path = - 
    2888  
    2889 [PlateRef Well 200809] 
    2890 path = - 
    2891  
    2892 ## Reagent ## 
    2893  
    2894 [Reagent] 
    2895 countable = true 
    2896 path = Screen+/Reagent+ 
    2897 description = describes a chemical or other physical experimental parameter 
    2898  
    2899 [Reagent 2003FC] 
    2900 path = - 
    2901  
    2902 [Reagent ID] 
    2903 type = String 
    2904 getter = getNodeID 
    2905 setter = setNodeID 
    2906 description = unique label identifying the reagent 
    2907  
    2908 [Reagent Description] 
    2909 type = String 
    2910 description = the reagent's description 
    2911  
    2912 [Reagent Name] 
    2913 type = String 
    2914 description = the reagent's name 
    2915  
    2916 [Reagent ReagentIdentifier] 
    2917 type = String 
    2918 description = reference to the reagent in an external database 
    2919  
    2920 ## Screen ## 
    2921  
    2922 [Screen] 
    2923 countable = true 
    2924 path = Screen+ 
    2925 description = description of a screen (grouping of plates) 
    2926  
    2927 [Screen ID] 
    2928 type = String 
    2929 getter = getNodeID 
    2930 setter = setNodeID 
    2931 description = unique label identifying the screen 
    2932  
    2933 [Screen Name] 
    2934 type = String 
    2935 description = the screen's name 
    2936  
    2937 [Screen ProtocolIdentifier] 
    2938 type = String 
    2939 description = reference to an externally defined protocol 
    2940  
    2941 [Screen ProtocolIdentifier 2003FC] 
    2942 path = - 
    2943  
    2944 [Screen ProtocolDescription] 
    2945 type = String 
    2946 description = description of the screen's protocol 
    2947  
    2948 [Screen ProtocolDescription 2003FC] 
    2949 path = - 
    2950  
    2951 [Screen ReagentSetDescription] 
    2952 type = String 
    2953 description = description of a set of reagents 
    2954  
    2955 [Screen ReagentSetDescription 2003FC] 
    2956 path = - 
    2957  
    2958 [Screen ReagentSetIdentifier] 
    2959 type = String 
    2960 description = reference to an externally defined set of reagents 
    2961  
    2962 [Screen ReagentSetIdentifier 2003FC] 
    2963 path = - 
    2964  
    2965 [Screen Type] 
    2966 type = String 
    2967 description = human-readable screen type, e.g. RNAi, cDNA 
    2968  
    2969 [Screen Type 2003FC] 
    2970 path = - 
    2971  
    2972 [Screen Description] 
    2973 type = String 
    2974 description = description of the screen 
    2975  
    2976 [Screen Extern] 
    2977 type = String 
    2978 getter = getExternRef 
    2979 setter = setExternRef 
    2980 description = TODO 
    2981  
    2982 [Screen Extern 200706] 
    2983 path = - 
    2984  
    2985 [Screen Extern 200802] 
    2986 path = - 
    2987  
    2988 [Screen Extern 200809] 
    2989 path = - 
    2990  
    2991 ## ScreenRef ## 
    2992  
    2993 [ScreenRef] 
    2994 countable = true 
    2995 path = Plate+/ScreenRef+ 
    2996 description = TODO 
    2997  
    2998 [ScreenRef ID] 
    2999 getter = getNodeID 
    3000 setter = setNodeID 
    3001 type = String 
    3002 description = label reference to a screen 
    3003  
    3004 ## ScreenAcquisition ## 
    3005  
    3006 [ScreenAcquisition] 
    3007 countable = true 
    3008 path = Screen+/ScreenAcquisition+ 
    3009 description = describes an acquisition run for a screen 
    3010  
    3011 [ScreenAcquisition 2003FC] 
    3012 path = - 
    3013  
    3014 [ScreenAcquisition ID] 
    3015 type = String 
    3016 getter = getNodeID 
    3017 setter = setNodeID 
    3018 description = unique label identifying the screen's acquisition run 
    3019  
    3020 [ScreenAcquisition EndTime] 
    3021 type = String 
    3022 description = time when the last image was acquired 
    3023  
    3024 [ScreenAcquisition StartTime] 
    3025 type = String 
    3026 description = time when the first image was acquired 
    3027  
    3028 ## Well ## 
     1528type = PercentFraction 
     1529 
     1530[UUID] 
     1531countable = false 
     1532path = Image+/TiffData+/UUID 
     1533 
     1534[UUID FileName] 
     1535type = String 
    30291536 
    30301537[Well] 
    30311538countable = true 
    30321539path = Plate+/Well+ 
    3033 description = describes a Well (part of a plate) 
    3034  
    3035 [Well 2003FC] 
    3036 path = - 
    3037  
    3038 [Well Reagent] 
    3039 type = String 
    3040 path = Plate+/Well+/ReagentRef 
    3041 getter = getNodeID 
    3042 setter = setNodeID 
    3043 description = label reference for the associated reagent 
    3044  
    3045 [Well Reagent 2003FC] 
    3046 path = - 
     1540 
     1541[Well AnnotationRef] 
     1542countable = true 
     1543path = Plate+/Well+/AnnotationRef+ 
     1544type = String 
     1545 
     1546[Well Color] 
     1547type = Integer 
     1548 
     1549[Well Column] 
     1550type = NonNegativeInteger 
     1551 
     1552[Well ExternalDescription] 
     1553type = String 
     1554 
     1555[Well ExternalIdentifier] 
     1556type = String 
    30471557 
    30481558[Well ID] 
    30491559type = String 
    3050 getter = getNodeID 
    3051 setter = setNodeID 
    3052 description = unique label identifying the well 
    3053  
    3054 [Well Column] 
    3055 type = Integer 
    3056 description = column index of the well, where top-left is 0 
    3057  
    3058 [Well ExternalDescription] 
    3059 type = String 
    3060 description = description of the externally defined ID for the well 
    3061  
    3062 [Well ExternalIdentifier] 
    3063 type = String 
    3064 description = reference to the well in an external database 
     1560 
     1561[Well ReagentRef] 
     1562type = String 
    30651563 
    30661564[Well Row] 
    3067 type = Integer 
    3068 description = row index of the well, where top-left is 0 
    3069  
    3070 [Well Type] 
    3071 type = String 
    3072 description = human-readable identifier of the screen status, e.g. empty, \ 
    3073               control 
    3074  
    3075 ## WellSample ## 
     1565type = NonNegativeInteger 
     1566 
     1567[Well Status] 
     1568type = String 
    30761569 
    30771570[WellSample] 
    30781571countable = true 
    30791572path = Plate+/Well+/WellSample+ 
    3080 description = individual image within a Well 
    3081  
    3082 [WellSample 2003FC] 
    3083 path = - 
     1573 
     1574[WellSample AnnotationRef] 
     1575countable = true 
     1576path = Plate+/Well+/WellSample+/AnnotationRef+ 
     1577type = String 
     1578 
     1579[WellSample ID] 
     1580type = String 
    30841581 
    30851582[WellSample ImageRef] 
    30861583type = String 
    3087 description = label reference for the associated image 
    3088  
    3089 [WellSample ID] 
    3090 type = String 
    3091 getter = getNodeID 
    3092 setter = setNodeID 
    3093 description = unique label identifying the individual well image 
    30941584 
    30951585[WellSample Index] 
    3096 type = Integer 
    3097 description = link to the Image element 
    3098  
    3099 [WellSample PosX] 
    3100 type = Double 
    3101 description = X position of the image within the well 
    3102  
    3103 [WellSample PosY] 
    3104 type = Double 
    3105 description = Y position of the image within the well 
    3106  
    3107 [WellSample Timepoint] 
    3108 type = Integer 
    3109 description = time-point at which the image started to be collected 
    3110  
    3111 ## WellSampleRef ## 
    3112  
    3113 [WellSampleRef] 
    3114 countable = true 
    3115 path = Screen+/ScreenAcquisition+/WellSampleRef+ 
    3116 description = TODO 
    3117  
    3118 [WellSampleRef 2003FC] 
    3119 path = - 
    3120  
    3121 [WellSampleRef ID] 
    3122 getter = getNodeID 
    3123 setter = setNodeID 
    3124 type = String 
    3125 description = TODO 
     1586type = NonNegativeInteger 
     1587 
     1588[WellSample PositionX] 
     1589type = Double 
     1590 
     1591[WellSample PositionY] 
     1592type = Double 
     1593 
     1594[WellSample PositionZ] 
     1595type = Double 
     1596 
     1597[XMLAnnotation] 
     1598countable = true 
     1599path = XMLAnnotation+ 
     1600 
     1601[XMLAnnotation ID] 
     1602type = String 
     1603 
     1604[XMLAnnotation Namespace] 
     1605type = String 
     1606 
     1607[XMLAnnotation Value] 
     1608type = String 
  • trunk/components/autogen/src/meta/AggregateMetadata.vm

    r4953 r6230  
    3535import java.util.List; 
    3636 
     37import ome.xml.r201004.enums.*; 
     38import ome.xml.r201004.primitives.*; 
     39 
    3740/** 
    3841 * A metadata store which delegates the actual storage to one or more <i>sub</i> 
  • trunk/components/autogen/src/meta/DummyMetadata.vm

    r4953 r6230  
    3131 
    3232package loci.formats.meta; 
     33 
     34import ome.xml.r201004.enums.*; 
     35import ome.xml.r201004.primitives.*; 
    3336 
    3437/** 
  • trunk/components/autogen/src/meta/FilterMetadata.vm

    r4953 r6230  
    3333 
    3434import loci.common.DataTools; 
     35 
     36import ome.xml.r201004.enums.*; 
     37import ome.xml.r201004.primitives.*; 
    3538 
    3639/** 
  • trunk/components/autogen/src/meta/MetadataConverter.vm

    r4953 r6230  
    3232package loci.formats.meta; 
    3333 
     34import ome.xml.r201004.enums.*; 
     35import ome.xml.r201004.primitives.*; 
     36 
    3437/** 
    3538 * A utility class containing a method for piping a source 
  • trunk/components/bio-formats/src/loci/formats/FileStitcher.java

    r6141 r6230  
    546546      for (int i=0; i<readers.length; i++) { 
    547547        for (int j=0; j<readers[i].length; j++) { 
    548           readers[i][j].close(fileOnly); 
     548          if (readers[i][j] != null) readers[i][j].close(fileOnly); 
    549549        } 
    550550      } 
  • trunk/components/bio-formats/src/loci/formats/FormatReader.java

    r6141 r6230  
    3838import loci.formats.in.MetadataLevel; 
    3939import loci.formats.in.MetadataOptions; 
    40 import loci.formats.meta.DummyMetadata; 
     40//import loci.formats.meta.DummyMetadata; 
    4141import loci.formats.meta.IMetadata; 
    4242import loci.formats.meta.MetadataStore; 
     
    108108   * semantics of {@link #getMetadataStore()} prevent "null" access. 
    109109   */ 
    110   protected MetadataStore metadataStore = new DummyMetadata(); 
     110  protected MetadataStore metadataStore = /*new DummyMetadata()*/null; 
    111111 
    112112  /** Metadata parsing options. */ 
    113   protected MetadataOptions metadataOptions; 
     113  protected MetadataOptions metadataOptions = new DefaultMetadataOptions(); 
    114114 
    115115  private ServiceFactory factory; 
     
    150150    core[0] = new CoreMetadata(); 
    151151    core[0].orderCertain = true; 
    152  
    153     if (metadataOptions == null) { 
    154       metadataOptions = new DefaultMetadataOptions(); 
    155     } 
    156152 
    157153    // reinitialize the MetadataStore 
     
    413409  } 
    414410 
     411  /** Return a properly configured loci.formats.meta.FilterMetadata. */ 
     412  protected MetadataStore makeFilterMetadata() { 
     413    // TODO : uncomment once FilterMetadata is updated 
     414    //return new FilterMetadata(getMetadataStore(), isMetadataFiltered()); 
     415    return getMetadataStore(); 
     416  } 
     417 
    415418  // -- IMetadataConfigurable API methods -- 
    416419 
  • trunk/components/bio-formats/src/loci/formats/FormatTools.java

    r6141 r6230  
    3030import loci.common.ReflectException; 
    3131import loci.common.ReflectedUniverse; 
    32 import loci.formats.meta.DummyMetadata; 
     32//import loci.formats.meta.DummyMetadata; 
    3333import loci.formats.meta.MetadataRetrieve; 
    3434import loci.formats.meta.MetadataStore; 
     
    743743    MetadataStore store = r.getMetadataStore(); 
    744744    MetadataRetrieve retrieve = store instanceof MetadataRetrieve ? 
    745       (MetadataRetrieve) store : new DummyMetadata(); 
     745      (MetadataRetrieve) store : /*new DummyMetadata()*/ null; 
    746746 
    747747    String filename = pattern.replaceAll(SERIES_NUM, String.valueOf(series)); 
     
    761761    filename = filename.replaceAll(CHANNEL_NUM, String.valueOf(coordinates[1])); 
    762762 
    763     String channelName = retrieve.getLogicalChannelName(series, coordinates[1]); 
     763    String channelName = retrieve.getChannelName(series, coordinates[1]); 
    764764    if (channelName == null) channelName = String.valueOf(coordinates[1]); 
    765765    channelName = channelName.replaceAll("/", "_"); 
  • trunk/components/bio-formats/src/loci/formats/FormatWriter.java

    r5605 r6230  
    2727import java.io.IOException; 
    2828 
    29 import loci.formats.meta.DummyMetadata; 
     29//import loci.formats.meta.DummyMetadata; 
    3030import loci.formats.meta.MetadataRetrieve; 
    3131 
     
    6666   * prevent "null" access. 
    6767   */ 
    68   protected MetadataRetrieve metadataRetrieve = new DummyMetadata(); 
     68  protected MetadataRetrieve metadataRetrieve = /*new DummyMetadata()*/ null; 
    6969 
    7070  // -- Constructors -- 
  • trunk/components/bio-formats/src/loci/formats/MetadataTools.java

    r6071 r6230  
    3737import loci.formats.meta.MetadataStore; 
    3838import loci.formats.services.OMEXMLService; 
     39 
     40import ome.xml.r201004.enums.DimensionOrder; 
     41import ome.xml.r201004.enums.EnumerationException; 
     42import ome.xml.r201004.enums.PixelType; 
     43import ome.xml.r201004.primitives.PositiveInteger; 
    3944 
    4045import org.slf4j.Logger; 
     
    103108      if (doImageName) store.setImageName(r.getCurrentFile(), i); 
    104109      String pixelsID = createLSID("Pixels", i, 0); 
    105       store.setPixelsID(pixelsID, i, 0); 
    106       store.setImageDefaultPixels(pixelsID, i); 
    107       store.setPixelsSizeX(new Integer(r.getSizeX()), i, 0); 
    108       store.setPixelsSizeY(new Integer(r.getSizeY()), i, 0); 
    109       store.setPixelsSizeZ(new Integer(r.getSizeZ()), i, 0); 
    110       store.setPixelsSizeC(new Integer(r.getSizeC()), i, 0); 
    111       store.setPixelsSizeT(new Integer(r.getSizeT()), i, 0); 
    112       store.setPixelsPixelType( 
    113         FormatTools.getPixelTypeString(r.getPixelType()), i, 0); 
    114       store.setPixelsBigEndian(new Boolean(!r.isLittleEndian()), i, 0); 
    115       store.setPixelsDimensionOrder(r.getDimensionOrder(), i, 0); 
     110      store.setPixelsID(pixelsID, i); 
     111      store.setPixelsSizeX(new PositiveInteger(r.getSizeX()), i); 
     112      store.setPixelsSizeY(new PositiveInteger(r.getSizeY()), i); 
     113      store.setPixelsSizeZ(new PositiveInteger(r.getSizeZ()), i); 
     114      store.setPixelsSizeC(new PositiveInteger(r.getSizeC()), i); 
     115      store.setPixelsSizeT(new PositiveInteger(r.getSizeT()), i); 
     116      store.setPixelsBinDataBigEndian(new Boolean(!r.isLittleEndian()), i, 0); 
     117      try { 
     118        store.setPixelsType(PixelType.fromString( 
     119          FormatTools.getPixelTypeString(r.getPixelType())), i); 
     120        store.setPixelsDimensionOrder( 
     121          DimensionOrder.fromString(r.getDimensionOrder()), i); 
     122      } 
     123      catch (EnumerationException e) { 
     124        LOGGER.debug("Failed to create enumeration", e); 
     125      } 
    116126      if (r.getSizeC() > 0) { 
    117127        Integer sampleCount = new Integer(r.getRGBChannelCount()); 
    118128        for (int c=0; c<r.getEffectiveSizeC(); c++) { 
    119           store.setLogicalChannelSamplesPerPixel(sampleCount, i, c); 
    120           for (int rgb=0; rgb<r.getRGBChannelCount(); rgb++) { 
    121             store.setChannelComponentIndex( 
    122               new Integer(c * r.getRGBChannelCount() + rgb), i, c, rgb); 
    123             store.setChannelComponentPixels(pixelsID, i, c, rgb); 
    124           } 
     129          store.setChannelSamplesPerPixel(sampleCount, i, c); 
    125130        } 
    126131      } 
     
    128133        for (int q=0; q<r.getImageCount(); q++) { 
    129134          int[] coords = r.getZCTCoords(q); 
    130           store.setPlaneTheZ(new Integer(coords[0]), i, 0, q); 
    131           store.setPlaneTheC(new Integer(coords[1]), i, 0, q); 
    132           store.setPlaneTheT(new Integer(coords[2]), i, 0, q); 
     135          store.setPlaneTheZ(new Integer(coords[0]), i, q); 
     136          store.setPlaneTheC(new Integer(coords[1]), i, q); 
     137          store.setPlaneTheT(new Integer(coords[2]), i, q); 
    133138        } 
    134139      } 
     
    183188        "call IMetadata.createRoot() first"); 
    184189    } 
    185     if (src.getPixelsBigEndian(n, 0) == null) { 
     190    if (src.getPixelsBinDataBigEndian(n, 0) == null) { 
    186191      throw new FormatException("BigEndian #" + n + " is null"); 
    187192    } 
    188     if (src.getPixelsDimensionOrder(n, 0) == null) { 
     193    if (src.getPixelsDimensionOrder(n) == null) { 
    189194      throw new FormatException("DimensionOrder #" + n + " is null"); 
    190195    } 
    191     if (src.getPixelsPixelType(n, 0) == null) { 
     196    if (src.getPixelsType(n) == null) { 
    192197      throw new FormatException("PixelType #" + n + " is null"); 
    193198    } 
    194     if (src.getPixelsSizeC(n, 0) == null) { 
     199    if (src.getPixelsSizeC(n) == null) { 
    195200      throw new FormatException("SizeC #" + n + " is null"); 
    196201    } 
    197     if (src.getPixelsSizeT(n, 0) == null) { 
     202    if (src.getPixelsSizeT(n) == null) { 
    198203      throw new FormatException("SizeT #" + n + " is null"); 
    199204    } 
    200     if (src.getPixelsSizeX(n, 0) == null) { 
     205    if (src.getPixelsSizeX(n) == null) { 
    201206      throw new FormatException("SizeX #" + n + " is null"); 
    202207    } 
    203     if (src.getPixelsSizeY(n, 0) == null) { 
     208    if (src.getPixelsSizeY(n) == null) { 
    204209      throw new FormatException("SizeY #" + n + " is null"); 
    205210    } 
    206     if (src.getPixelsSizeZ(n, 0) == null) { 
     211    if (src.getPixelsSizeZ(n) == null) { 
    207212      throw new FormatException("SizeZ #" + n + " is null"); 
    208213    } 
     
    220225    long time = System.currentTimeMillis(); 
    221226    if (file.exists()) time = file.lastModified(); 
    222     store.setImageCreationDate(DateTools.convertDate(time, DateTools.UNIX), 
     227    store.setImageAcquiredDate(DateTools.convertDate(time, DateTools.UNIX), 
    223228      series); 
    224229  } 
  • trunk/components/bio-formats/src/loci/formats/gui/AWTImageTools.java

    r6026 r6230  
    434434  { 
    435435    MetadataTools.verifyMinimumPopulated(meta, series); 
    436     int width = meta.getPixelsSizeX(series, 0).intValue(); 
    437     int height = meta.getPixelsSizeY(series, 0).intValue(); 
    438     String pixelType = meta.getPixelsPixelType(series, 0); 
     436    int width = meta.getPixelsSizeX(series).getValue().intValue(); 
     437    int height = meta.getPixelsSizeY(series).getValue().intValue(); 
     438    String pixelType = meta.getPixelsType(series).toString(); 
    439439    int type = FormatTools.pixelTypeFromString(pixelType); 
    440     Integer nChannels = meta.getLogicalChannelSamplesPerPixel(series, 0); 
     440    Integer nChannels = meta.getChannelSamplesPerPixel(series, 0); 
    441441    if (nChannels == null) { 
    442442      LOGGER.warn("SamplesPerPixel is null; it is assumed to be 1."); 
    443443    } 
    444444    int channels = nChannels == null ? 1 : nChannels.intValue(); 
    445     boolean littleEndian = !meta.getPixelsBigEndian(series, 0).booleanValue(); 
     445    boolean littleEndian = 
     446      !meta.getPixelsBinDataBigEndian(series, 0).booleanValue(); 
    446447    return makeImage(data, width, height, channels, 
    447448      interleaved, FormatTools.getBytesPerPixel(type), 
  • trunk/components/bio-formats/src/loci/formats/gui/BufferedImageWriter.java

    r5590 r6230  
    9898      MetadataRetrieve r = getMetadataRetrieve(); 
    9999      if (r != null) { 
    100         Boolean bigEndian = r.getPixelsBigEndian(series, 0); 
     100        Boolean bigEndian = r.getPixelsBinDataBigEndian(series, 0); 
    101101        if (bigEndian != null) littleEndian = !bigEndian.booleanValue(); 
    102102      } 
  • trunk/components/bio-formats/src/loci/formats/in/APLReader.java

    r6190 r6230  
    3737import loci.formats.FormatTools; 
    3838import loci.formats.MetadataTools; 
    39 import loci.formats.meta.FilterMetadata; 
    4039import loci.formats.meta.MetadataStore; 
    4140import loci.formats.services.MDBService; 
     
    264263    } 
    265264 
    266     MetadataStore store = 
    267       new FilterMetadata(getMetadataStore(), isMetadataFiltered()); 
     265    MetadataStore store = makeFilterMetadata(); 
    268266    MetadataTools.populatePixels(store, this); 
    269267 
     
    294292        // TODO : add cases for other units 
    295293 
    296         store.setDimensionsPhysicalSizeX(px, i, 0); 
    297         store.setDimensionsPhysicalSizeY(py, i, 0); 
     294        store.setPixelsPhysicalSizeX(px, i); 
     295        store.setPixelsPhysicalSizeY(py, i); 
    298296      } 
    299297    } 
  • trunk/components/bio-formats/src/loci/formats/in/APNGReader.java

    r6112 r6230  
    4242import loci.formats.MetadataTools; 
    4343import loci.formats.gui.AWTImageTools; 
    44 import loci.formats.meta.FilterMetadata; 
    4544import loci.formats.meta.MetadataStore; 
    4645 
     
    260259    } 
    261260 
    262     MetadataStore store = 
    263       new FilterMetadata(getMetadataStore(), isMetadataFiltered()); 
     261    MetadataStore store = makeFilterMetadata(); 
    264262    MetadataTools.populatePixels(store, this); 
    265263    MetadataTools.setDefaultCreationDate(store, id, 0); 
  • trunk/components/bio-formats/src/loci/formats/in/ARFReader.java

    r6118 r6230  
    3131import loci.formats.FormatTools; 
    3232import loci.formats.MetadataTools; 
    33 import loci.formats.meta.FilterMetadata; 
    3433import loci.formats.meta.MetadataStore; 
    3534 
     
    149148    // populate OME metadata 
    150149 
    151     MetadataStore store = 
    152       new FilterMetadata(getMetadataStore(), isMetadataFiltered()); 
     150    MetadataStore store = makeFilterMetadata(); 
    153151    MetadataTools.populatePixels(store, this); 
    154152    MetadataTools.setDefaultCreationDate(store, id, 0); 
  • trunk/components/bio-formats/src/loci/formats/in/AVIReader.java

    r6190 r6230  
    3737import loci.formats.codec.MSRLECodec; 
    3838import loci.formats.codec.MSVideoCodec; 
    39 import loci.formats.meta.FilterMetadata; 
    4039import loci.formats.meta.MetadataStore; 
    4140 
     
    529528    if (bmpCompression != 0) core[0].pixelType = FormatTools.UINT8; 
    530529 
    531     MetadataStore store = 
    532       new FilterMetadata(getMetadataStore(), isMetadataFiltered()); 
     530    MetadataStore store = makeFilterMetadata(); 
    533531    MetadataTools.populatePixels(store, this); 
    534532    MetadataTools.setDefaultCreationDate(store, id, 0); 
  • trunk/components/bio-formats/src/loci/formats/in/AliconaReader.java

    r6118 r6230  
    3131import loci.formats.FormatTools; 
    3232import loci.formats.MetadataTools; 
    33 import loci.formats.meta.FilterMetadata; 
    3433import loci.formats.meta.MetadataStore; 
     34 
     35import ome.xml.r201004.enums.Correction; 
     36import ome.xml.r201004.enums.DetectorType; 
     37import ome.xml.r201004.enums.Immersion; 
    3538 
    3639/** 
     
    191194    core[0].falseColor = false; 
    192195 
    193     MetadataStore store = 
    194       new FilterMetadata(getMetadataStore(), isMetadataFiltered()); 
     196    MetadataStore store = makeFilterMetadata(); 
    195197    MetadataTools.populatePixels(store, this); 
    196198 
     
    215217        String detectorID = MetadataTools.createLSID("Detector", 0, 0); 
    216218        store.setDetectorID(detectorID, 0, 0); 
    217         store.setDetectorSettingsDetector(detectorID, 0, 0); 
     219        store.setDetectorSettingsID(detectorID, 0, 0); 
    218220 
    219221        // set required Detector type 
    220         store.setDetectorType("Unknown", 0, 0); 
     222        store.setDetectorType(DetectorType.OTHER, 0, 0); 
    221223      } 
    222224 
     
    232234      } 
    233235 
    234       store.setObjectiveCorrection("Unknown", 0, 0); 
    235       store.setObjectiveImmersion("Unknown", 0, 0); 
     236      store.setObjectiveCorrection(Correction.OTHER, 0, 0); 
     237      store.setObjectiveImmersion(Immersion.OTHER, 0, 0); 
    236238 
    237239      // link Objective to an Image using ObjectiveSettings 
    238240      String objectiveID = MetadataTools.createLSID("Objective", 0, 0); 
    239241      store.setObjectiveID(objectiveID, 0, 0); 
    240       store.setObjectiveSettingsObjective(objectiveID, 0); 
     242      store.setImageObjectiveSettingsID(objectiveID, 0); 
    241243 
    242244      // populate Dimensions data 
     
    246248        double pixelSizeY = Double.parseDouble(pntY) * 1000000; 
    247249 
    248         store.setDimensionsPhysicalSizeX(pixelSizeX, 0, 0); 
    249         store.setDimensionsPhysicalSizeY(pixelSizeY, 0, 0); 
     250        store.setPixelsPhysicalSizeX(pixelSizeX, 0); 
     251        store.setPixelsPhysicalSizeY(pixelSizeY, 0); 
    250252      } 
    251253    } 
  • trunk/components/bio-formats/src/loci/formats/in/AmiraReader.java

    r6113 r6230  
    3838import loci.formats.FormatTools; 
    3939import loci.formats.MetadataTools; 
    40 import loci.formats.meta.FilterMetadata; 
    4140import loci.formats.meta.MetadataStore; 
    4241import loci.formats.tools.AmiraParameters; 
     
    161160    LOGGER.info("Populating metadata store"); 
    162161 
    163     MetadataStore store = 
    164       new FilterMetadata(getMetadataStore(), isMetadataFiltered()); 
     162    MetadataStore store = makeFilterMetadata(); 
    165163    MetadataTools.populatePixels(store, this); 
    166164    MetadataTools.setDefaultCreationDate(store, id, 0); 
     
    183181      addGlobalMeta("Pixels per meter (Z)", 1e6 / pixelDepth); 
    184182 
    185       store.setDimensionsPhysicalSizeX(new Double(pixelWidth), 0, 0); 
    186       store.setDimensionsPhysicalSizeY(new Double(pixelHeight), 0, 0); 
    187       store.setDimensionsPhysicalSizeZ(new Double(pixelDepth), 0, 0); 
     183      store.setPixelsPhysicalSizeX(new Double(pixelWidth), 0); 
     184      store.setPixelsPhysicalSizeY(new Double(pixelHeight), 0); 
     185      store.setPixelsPhysicalSizeZ(new Double(pixelDepth), 0); 
    188186    } 
    189187 
     
    397395    long compressedSize; 
    398396    long[] offsets; 
     397    int[] internalOffsets; 
    399398    int currentNo, maxOffsetIndex, planeSize; 
    400399 
     
    402401      this.compressedSize = compressedSize; 
    403402      offsets = new long[sliceCount + 1]; 
     403      internalOffsets = new int[sliceCount + 1]; 
    404404      offsets[0] = offsetOfFirstStream; 
     405      internalOffsets[0] = 0; 
    405406      planeSize = FormatTools.getPlaneSize(AmiraReader.this); 
    406407      maxOffsetIndex = currentNo = 0; 
     
    409410    void read(byte[] buf, int len) throws FormatException, IOException { 
    410411      int off = 0; 
    411       while (len > 0) { 
     412      while (len > 0 && in.getFilePointer() < in.length()) { 
    412413        int insn = in.readByte(); 
    413414        if (insn < 0) { 
     
    426427        else { 
    427428          if (insn > len) { 
    428             throw new FormatException("Slice " + currentNo + " is unaligned!"); 
     429            internalOffsets[currentNo] = insn - len; 
     430            insn = len; 
     431          } 
     432          if (off == 0 && internalOffsets[currentNo - 1] > 0) { 
     433            insn = internalOffsets[currentNo - 1]; 
    429434          } 
    430435          Arrays.fill(buf, off, off + insn, in.readByte()); 
     
    440445          in.seek(offsets[maxOffsetIndex]); 
    441446        } 
     447        currentNo = no + 1; 
    442448        while (maxOffsetIndex < no) { 
    443449          read(buf, planeSize); 
     
    449455          in.seek(offsets[no]); 
    450456        } 
     457        currentNo = no + 1; 
    451458        read(buf, planeSize); 
    452459        if (maxOffsetIndex == no) { 
     
    454461        } 
    455462      } 
    456       currentNo = no + 1; 
    457463      return buf; 
    458464    } 
  • trunk/components/bio-formats/src/loci/formats/in/AnalyzeReader.java

    r6112 r6230  
    3232import loci.formats.FormatTools; 
    3333import loci.formats.MetadataTools; 
    34 import loci.formats.meta.FilterMetadata; 
    3534import loci.formats.meta.MetadataStore; 
    3635 
     
    285284    LOGGER.info("Populating MetadataStore"); 
    286285 
    287     MetadataStore store = 
    288       new FilterMetadata(getMetadataStore(), isMetadataFiltered()); 
     286    MetadataStore store = makeFilterMetadata(); 
    289287    MetadataTools.populatePixels(store, this); 
    290288 
     
    293291    if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
    294292      store.setImageDescription(description, 0); 
    295       store.setDimensionsPhysicalSizeX(voxelWidth * 0.001, 0, 0); 
    296       store.setDimensionsPhysicalSizeY(voxelHeight * 0.001, 0, 0); 
    297       store.setDimensionsPhysicalSizeZ(sliceThickness * 0.001, 0, 0); 
    298       store.setDimensionsTimeIncrement(new Double(deltaT * 1000), 0, 0); 
     293      store.setPixelsPhysicalSizeX(voxelWidth * 0.001, 0); 
     294      store.setPixelsPhysicalSizeY(voxelHeight * 0.001, 0); 
     295      store.setPixelsPhysicalSizeZ(sliceThickness * 0.001, 0); 
     296      store.setPixelsTimeIncrement(new Double(deltaT * 1000), 0); 
    299297    } 
    300298  } 
  • trunk/components/bio-formats/src/loci/formats/in/BDReader.java

    r6205 r6230  
    4343import loci.formats.FormatTools; 
    4444import loci.formats.MetadataTools; 
    45 import loci.formats.meta.FilterMetadata; 
    4645import loci.formats.meta.MetadataStore; 
    4746import loci.formats.tiff.IFD; 
    4847import loci.formats.tiff.TiffParser; 
     48 
     49import ome.xml.r201004.enums.Binning; 
     50import ome.xml.r201004.enums.EnumerationException; 
     51import ome.xml.r201004.enums.NamingConvention; 
     52import ome.xml.r201004.primitives.NonNegativeInteger; 
     53import ome.xml.r201004.primitives.PositiveInteger; 
    4954 
    5055/** 
     
    256261    } 
    257262 
    258     MetadataStore store = 
    259       new FilterMetadata(getMetadataStore(), isMetadataFiltered()); 
     263    MetadataStore store = makeFilterMetadata(); 
    260264    boolean populatePlanes = 
    261265      getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL; 
     
    269273      Integer col = Integer.parseInt(name.substring(1)); 
    270274 
    271       store.setWellColumn(col - 1, 0, i); 
    272       store.setWellRow(row.charAt(0)-'A', 0, i); 
    273  
    274       store.setWellSampleIndex(i, 0, i, 0); 
     275      store.setWellColumn(new NonNegativeInteger(col - 1), 0, i); 
     276      store.setWellRow(new NonNegativeInteger(row.charAt(0) - 'A'), 0, i); 
     277 
     278      store.setWellSampleIndex(new NonNegativeInteger(i), 0, i, 0); 
    275279 
    276280      String imageID = MetadataTools.createLSID("Image", i); 
     
    312316      for (int i=0; i<getSeriesCount(); i++) { 
    313317        store.setImageInstrumentRef(instrumentID, i); 
    314         store.setObjectiveSettingsObjective(objectiveID, i); 
     318        store.setImageObjectiveSettingsID(objectiveID, i); 
    315319 
    316320        for (int c=0; c<getSizeC(); c++) { 
    317           store.setLogicalChannelName(channelNames.get(c), i, c); 
    318           store.setLogicalChannelEmWave(emWave[c], i, c); 
    319           store.setLogicalChannelExWave(exWave[c], i, c); 
     321          store.setChannelName(channelNames.get(c), i, c); 
     322          store.setChannelEmissionWavelength( 
     323            new PositiveInteger(emWave[c]), i, c); 
     324          store.setChannelExcitationWavelength( 
     325            new PositiveInteger(exWave[c]), i, c); 
    320326 
    321327          String detectorID = MetadataTools.createLSID("Detector", 0, c); 
    322328          store.setDetectorID(detectorID, 0, c); 
    323           store.setDetectorSettingsDetector(detectorID, i, c); 
     329          store.setDetectorSettingsID(detectorID, i, c); 
    324330          store.setDetectorSettingsGain(gain[c], i, c); 
    325331          store.setDetectorSettingsOffset(offset[c], i, c); 
    326           store.setDetectorSettingsBinning(binning, i, c); 
     332          try { 
     333            store.setDetectorSettingsBinning(Binning.fromString(binning), i, c); 
     334          } 
     335          catch (EnumerationException e) { } 
    327336        } 
    328337 
    329338        for (int p=0; p<getImageCount(); p++) { 
    330339          int[] zct = getZCTCoords(p); 
    331           store.setPlaneTimingExposureTime(exposure[zct[1]], i, 0, p); 
    332         } 
    333       } 
    334  
    335       store.setPlateRowNamingConvention("A", 0); 
    336       store.setPlateColumnNamingConvention("01", 0); 
     340          store.setPlaneExposureTime(exposure[zct[1]], i, p); 
     341        } 
     342      } 
     343 
     344      store.setPlateRowNamingConvention(NamingConvention.LETTER, 0); 
     345      store.setPlateColumnNamingConvention(NamingConvention.NUMBER, 0); 
    337346      store.setPlateName(plateName, 0); 
    338347      store.setPlateDescription(plateDescription, 0); 
     
    508517 
    509518      if (cols[2].trim().length() > 0) { 
    510         store.setRectX(cols[2], 0, i - firstRow, 0); 
    511         store.setRectY(cols[3], 0, i - firstRow, 0); 
    512         store.setRectWidth(cols[4], 0, i - firstRow, 0); 
    513         store.setRectHeight(cols[5], 0, i - firstRow, 0); 
     519        store.setRectangleX(new Double(cols[2]), i - firstRow, 0); 
     520        store.setRectangleY(new Double(cols[3]), i - firstRow, 0); 
     521        store.setRectangleWidth(new Double(cols[4]), i - firstRow, 0); 
     522        store.setRectangleHeight(new Double(cols[5]), i - firstRow, 0); 
     523        String roiID = MetadataTools.createLSID("Rectangle", i - firstRow, 0); 
     524        store.setRectangleID(roiID, i - firstRow, 0); 
     525        store.setImageROIRef(roiID, 0, i - firstRow); 
    514526      } 
    515527    } 
  • trunk/components/bio-formats/src/loci/formats/in/BMPReader.java

    r6112 r6230  
    3333import loci.formats.MetadataTools; 
    3434import loci.formats.codec.BitBuffer; 
    35 import loci.formats.meta.FilterMetadata; 
    3635import loci.formats.meta.MetadataStore; 
    3736 
     
    280279    // Populate metadata store. 
    281280 
    282     MetadataStore store = 
    283       new FilterMetadata(getMetadataStore(), isMetadataFiltered()); 
     281    MetadataStore store = makeFilterMetadata(); 
    284282    MetadataTools.populatePixels(store, this); 
    285283    MetadataTools.setDefaultCreationDate(store, id, 0); 
     
    292290      double correctedY = pixelSizeY == 0 ? 0.0 : 1000000.0 / pixelSizeY; 
    293291 
    294       store.setDimensionsPhysicalSizeX(correctedX, 0, 0); 
    295       store.setDimensionsPhysicalSizeY(correctedY, 0, 0); 
     292      store.setPixelsPhysicalSizeX(correctedX, 0); 
     293      store.setPixelsPhysicalSizeY(correctedY, 0); 
    296294    } 
    297295  } 
  • trunk/components/bio-formats/src/loci/formats/in/BaseTiffReader.java

    r6112 r6230  
    2929import loci.formats.FormatException; 
    3030import loci.formats.MetadataTools; 
    31 import loci.formats.meta.FilterMetadata; 
    3231import loci.formats.meta.MetadataStore; 
    3332import loci.formats.tiff.IFD; 
     
    373372 
    374373    // the metadata store we're working with 
    375     MetadataStore store = 
    376       new FilterMetadata(getMetadataStore(), isMetadataFiltered()); 
     374    MetadataStore store = makeFilterMetadata(); 
    377375    MetadataTools.populatePixels(store, this); 
    378376 
     
    391389 
    392390    if (creationDate != null) { 
    393       store.setImageCreationDate(creationDate, 0); 
     391      store.setImageAcquiredDate(creationDate, 0); 
    394392    } 
    395393    else { 
     
    438436      } 
    439437 
    440       store.setDimensionsPhysicalSizeX(pixX, 0, 0); 
    441       store.setDimensionsPhysicalSizeY(pixY, 0, 0); 
    442       store.setDimensionsPhysicalSizeZ(0.0, 0, 0); 
     438      store.setPixelsPhysicalSizeX(pixX, 0); 
     439      store.setPixelsPhysicalSizeY(pixY, 0); 
     440      store.setPixelsPhysicalSizeZ(0.0, 0); 
    443441    } 
    444442  } 
  • trunk/components/bio-formats/src/loci/formats/in/BioRadGelReader.java

    r6118 r6230  
    3232import loci.formats.FormatTools; 
    3333import loci.formats.MetadataTools; 
    34 import loci.formats.meta.FilterMetadata; 
    3534import loci.formats.meta.MetadataStore; 
    3635 
     
    161160    core[0].littleEndian = in.isLittleEndian(); 
    162161 
    163     MetadataStore store = 
    164       new FilterMetadata(getMetadataStore(), isMetadataFiltered()); 
     162    MetadataStore store = makeFilterMetadata(); 
    165163    MetadataTools.populatePixels(store, this); 
    166164 
    167     store.setImageCreationDate(date, 0); 
     165    store.setImageAcquiredDate(date, 0); 
    168166    if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
    169       store.setDimensionsPhysicalSizeX(physicalWidth / getSizeX(), 0, 0); 
    170       store.setDimensionsPhysicalSizeY(physicalHeight / getSizeY(), 0, 0); 
     167      store.setPixelsPhysicalSizeX(physicalWidth / getSizeX(), 0); 
     168      store.setPixelsPhysicalSizeY(physicalHeight / getSizeY(), 0); 
    171169    } 
    172170  } 
  • trunk/components/bio-formats/src/loci/formats/in/BioRadReader.java

    r6128 r6230  
    3838import loci.formats.FormatTools; 
    3939import loci.formats.MetadataTools; 
    40 import loci.formats.meta.FilterMetadata; 
    4140import loci.formats.meta.IMinMaxStore; 
    4241import loci.formats.meta.MetadataStore; 
     42 
     43import ome.xml.r201004.enums.Correction; 
     44import ome.xml.r201004.enums.DetectorType; 
     45import ome.xml.r201004.enums.EnumerationException; 
     46import ome.xml.r201004.enums.ExperimentType; 
     47import ome.xml.r201004.enums.Immersion; 
    4348 
    4449import org.xml.sax.Attributes; 
     
    372377    String em1 = null, em2 = null, em3 = null; 
    373378 
    374     MetadataStore store = 
    375       new FilterMetadata(getMetadataStore(), isMetadataFiltered()); 
     379    MetadataStore store = makeFilterMetadata(); 
    376380 
    377381    // read notes 
     
    484488      String objectiveID = MetadataTools.createLSID("Objective", 0, 0); 
    485489      store.setObjectiveID(objectiveID, 0, 0); 
    486       store.setObjectiveSettingsObjective(objectiveID, 0); 
     490      store.setImageObjectiveSettingsID(objectiveID, 0); 
    487491 
    488492      store.setObjectiveLensNA(new Double(lens), 0, 0); 
    489493      store.setObjectiveNominalMagnification((int) magFactor, 0, 0); 
    490       store.setObjectiveCorrection("Unknown", 0, 0); 
    491       store.setObjectiveImmersion("Unknown", 0, 0); 
     494      store.setObjectiveCorrection(Correction.OTHER, 0, 0); 
     495      store.setObjectiveImmersion(Immersion.OTHER, 0, 0); 
    492496 
    493497      // link Detector to Image 
     
    498502        if (detectorOffset != null || detectorGain != null) { 
    499503          String detectorID = MetadataTools.createLSID("Detector", 0, i); 
    500           store.setDetectorSettingsDetector(detectorID, 0, i); 
     504          store.setDetectorSettingsID(detectorID, 0, i); 
    501505          store.setDetectorID(detectorID, 0, i); 
    502           store.setDetectorType("Unknown", 0, i); 
     506          store.setDetectorType(DetectorType.OTHER, 0, i); 
    503507        } 
    504508        if (detectorOffset != null) { 
     
    646650                      MetadataTools.createLSID("Detector", 0, nextDetector); 
    647651                    store.setDetectorID(detectorID, 0, nextDetector); 
    648                     store.setDetectorType("Unknown", 0, nextDetector); 
     652                    store.setDetectorType(DetectorType.OTHER, 0, nextDetector); 
    649653 
    650654                    if (key.endsWith("OFFSET")) { 
     
    683687                      Double pixelSize = new Double(values[2]); 
    684688                      if (key.equals("AXIS_2")) { 
    685                         store.setDimensionsPhysicalSizeX(pixelSize, 0, 0); 
     689                        store.setPixelsPhysicalSizeX(pixelSize, 0); 
    686690                      } 
    687691                      else if (key.equals("AXIS_3")) { 
    688                         store.setDimensionsPhysicalSizeY(pixelSize, 0, 0); 
     692                        store.setPixelsPhysicalSizeY(pixelSize, 0); 
    689693                      } 
    690694                    } 
     
    697701              String[] values = n.p.split(" "); 
    698702              Double pixelSize = new Double(values[3]); 
    699               store.setDimensionsPhysicalSizeX(pixelSize, 0, 0); 
     703              store.setPixelsPhysicalSizeX(pixelSize, 0); 
    700704            } 
    701705            else if (n.p.startsWith("AXIS_3")) { 
    702706              String[] values = n.p.split(" "); 
    703707              Double pixelSize = new Double(values[3]); 
    704               store.setDimensionsPhysicalSizeY(pixelSize, 0, 0); 
     708              store.setPixelsPhysicalSizeY(pixelSize, 0); 
    705709            } 
    706710            else { 
     
    721725                  store.setObjectiveNominalMagnification( 
    722726                    (int) Float.parseFloat(values[11]), 0, 0); 
    723                   store.setDimensionsPhysicalSizeZ( 
    724                     new Double(values[14]), 0, 0); 
     727                  store.setPixelsPhysicalSizeZ(new Double(values[14]), 0); 
    725728                  break; 
    726729                case 2: 
     
    739742                  height /= getSizeY(); 
    740743 
    741                   store.setDimensionsPhysicalSizeX(width, 0, 0); 
    742                   store.setDimensionsPhysicalSizeY(height, 0, 0); 
     744                  store.setPixelsPhysicalSizeX(width, 0); 
     745                  store.setPixelsPhysicalSizeY(height, 0); 
    743746 
    744747                  break; 
     
    812815                    store.setDetectorOffset(new Double(values[i * 3]), 0, i); 
    813816                    store.setDetectorGain(new Double(values[i * 3 + 1]), 0, i); 
    814                     store.setDetectorType("Unknown", 0, i); 
     817                    store.setDetectorType(DetectorType.OTHER, 0, i); 
    815818                  } 
    816819                  break; 
     
    859862                    values[2] + ":" + values[1] + ":" + values[0]; 
    860863                  addGlobalMeta("Acquisition date", date); 
    861                   store.setImageCreationDate(date, 0); 
     864                  store.setImageAcquiredDate(date, 0); 
    862865                  break; 
    863866                case 18: 
     
    889892                  addGlobalMeta("Time Course - experiment type", values[2]); 
    890893                  addGlobalMeta("Time Course - kd factor", values[3]); 
    891                   store.setExperimentType(values[2], 0); 
     894                  try { 
     895                    store.setExperimentType( 
     896                      ExperimentType.fromString(values[2]), 0); 
     897                  } 
     898                  catch (EnumerationException e) { } 
    892899                  break; 
    893900                case 21: 
  • trunk/components/bio-formats/src/loci/formats/in/BurleighReader.java

    r6112 r6230  
    3131import loci.formats.FormatTools; 
    3232import loci.formats.MetadataTools; 
    33 import loci.formats.meta.FilterMetadata; 
    3433import loci.formats.meta.MetadataStore; 
    3534 
     
    173172    core[0].dimensionOrder = "XYZCT"; 
    174173 
    175     MetadataStore store = 
    176       new FilterMetadata(getMetadataStore(), isMetadataFiltered()); 
     174    MetadataStore store = makeFilterMetadata(); 
    177175    MetadataTools.populatePixels(store, this); 
    178176    MetadataTools.setDefaultCreationDate(store, id, 0); 
    179177 
    180178    if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
    181       store.setDimensionsPhysicalSizeX(xSize / getSizeX(), 0, 0); 
    182       store.setDimensionsPhysicalSizeY(ySize / getSizeY(), 0, 0); 
    183       store.setDimensionsPhysicalSizeZ(zSize / getSizeZ(), 0, 0); 
     179      store.setPixelsPhysicalSizeX(xSize / getSizeX(), 0); 
     180      store.setPixelsPhysicalSizeY(ySize / getSizeY(), 0); 
     181      store.setPixelsPhysicalSizeZ(zSize / getSizeZ(), 0); 
    184182    } 
    185183  } 
  • trunk/components/bio-formats/src/loci/formats/in/CellomicsReader.java

    r6118 r6230  
    3232import loci.formats.MetadataTools; 
    3333import loci.formats.codec.ZlibCodec; 
    34 import loci.formats.meta.FilterMetadata; 
    3534import loci.formats.meta.MetadataStore; 
    3635 
     
    154153    LOGGER.info("Populating metadata store"); 
    155154 
    156     MetadataStore store = 
    157       new FilterMetadata(getMetadataStore(), isMetadataFiltered()); 
     155    MetadataStore store = makeFilterMetadata(); 
    158156    MetadataTools.populatePixels(store, this); 
    159157    MetadataTools.setDefaultCreationDate(store, id, 0); 
     
    165163      double height = pixelHeight == 0 ? 0.0 : 1000000.0 / pixelHeight; 
    166164 
    167       store.setDimensionsPhysicalSizeX(width, 0, 0); 
    168       store.setDimensionsPhysicalSizeY(height, 0, 0); 
     165      store.setPixelsPhysicalSizeX(width, 0); 
     166      store.setPixelsPhysicalSizeY(height, 0); 
    169167    } 
    170168  } 
  • trunk/components/bio-formats/src/loci/formats/in/DeltavisionReader.java

    r6207 r6230  
    3535import loci.formats.FormatTools; 
    3636import loci.formats.MetadataTools; 
    37 import loci.formats.meta.FilterMetadata; 
    3837import loci.formats.meta.IMinMaxStore; 
    3938import loci.formats.meta.MetadataStore; 
     39 
     40import ome.xml.r201004.enums.Binning; 
     41import ome.xml.r201004.enums.Correction; 
     42import ome.xml.r201004.enums.DetectorType; 
     43import ome.xml.r201004.enums.EnumerationException; 
     44import ome.xml.r201004.enums.Immersion; 
     45import ome.xml.r201004.primitives.PositiveInteger; 
    4046 
    4147/** 
     
    198204    LOGGER.info("Reading header"); 
    199205 
    200     MetadataStore store = 
    201       new FilterMetadata(getMetadataStore(), isMetadataFiltered()); 
     206    MetadataStore store = makeFilterMetadata(); 
    202207 
    203208    in = new RandomAccessInputStream(id); 
     
    345350    super.initFile(id); 
    346351 
    347     MetadataStore store = 
    348       new FilterMetadata(getMetadataStore(), isMetadataFiltered()); 
     352    MetadataStore store = makeFilterMetadata(); 
    349353 
    350354    // --- read in the image header data --- 
     
    607611    } 
    608612 
    609     store.setDimensionsPhysicalSizeX(new Double(pixX), 0, 0); 
    610     store.setDimensionsPhysicalSizeY(new Double(pixY), 0, 0); 
    611     store.setDimensionsPhysicalSizeZ(new Double(pixZ), 0, 0); 
     613    store.setPixelsPhysicalSizeX(new Double(pixX), 0); 
     614    store.setPixelsPhysicalSizeY(new Double(pixY), 0); 
     615    store.setPixelsPhysicalSizeZ(new Double(pixZ), 0); 
    612616 
    613617    store.setImageDescription(imageDesc, 0); 
     
    658662      // plane timing 
    659663      if (!logFound) { 
    660         store.setPlaneTimingDeltaT(new Double(hdr.timeStampSeconds), 0, 0, i); 
    661       } 
    662       store.setPlaneTimingExposureTime(new Double(hdr.expTime), 0, 0, i); 
     664        store.setPlaneDeltaT(new Double(hdr.timeStampSeconds), 0, i); 
     665      } 
     666      store.setPlaneExposureTime(new Double(hdr.expTime), 0, i); 
    663667 
    664668      // stage position 
    665669      if (!logFound) { 
    666         store.setStagePositionPositionX(new Double(hdr.stageXCoord), 0, 0, i); 
    667         store.setStagePositionPositionY(new Double(hdr.stageYCoord), 0, 0, i); 
    668         store.setStagePositionPositionZ(new Double(hdr.stageZCoord), 0, 0, i); 
     670        store.setPlanePositionX(new Double(hdr.stageXCoord), 0, i); 
     671        store.setPlanePositionY(new Double(hdr.stageYCoord), 0, i); 
     672        store.setPlanePositionZ(new Double(hdr.stageZCoord), 0, i); 
    669673      } 
    670674    } 
     
    672676    for (int w=0; w<sizeC; w++) { 
    673677      DVExtHdrFields hdrC = extHdrFields[0][w][0]; 
    674       store.setLogicalChannelEmWave(new Integer(waves[w]), 0, w); 
     678      store.setChannelEmissionWavelength( 
     679        new PositiveInteger((int) waves[w]), 0, w); 
    675680      if ((int) hdrC.exWavelen > 0) { 
    676         store.setLogicalChannelExWave((int) hdrC.exWavelen, 0, w); 
     681        store.setChannelExcitationWavelength( 
     682          new PositiveInteger((int) hdrC.exWavelen), 0, w); 
    677683      } 
    678684      if (ndFilters[w] == null) ndFilters[w] = new Double(hdrC.ndFilter); 
    679       store.setLogicalChannelNdFilter(ndFilters[w], 0, w); 
     685      store.setChannelNDFilter(ndFilters[w], 0, w); 
    680686    } 
    681687  } 
     
    811817            } 
    812818            if (tokens.length >= 2) { 
    813               store.setObjectiveCorrection(tokens[1], 0, 0); 
     819              try { 
     820                store.setObjectiveCorrection( 
     821                  Correction.fromString(tokens[1]), 0, 0); 
     822              } 
     823              catch (EnumerationException e) { } 
    814824            } 
    815825            // TODO:  Token #2 is the microscope model name. 
     
    823833          String objectiveID = "Objective:" + value; 
    824834          store.setObjectiveID(objectiveID, 0, 0); 
    825           store.setObjectiveSettingsObjective(objectiveID, 0); 
    826           store.setObjectiveCorrection("Unknown", 0, 0); 
    827           store.setObjectiveImmersion("Unknown", 0, 0); 
     835          store.setImageObjectiveSettingsID(objectiveID, 0); 
     836          store.setObjectiveCorrection(Correction.OTHER, 0, 0); 
     837          store.setObjectiveImmersion(Immersion.OTHER, 0, 0); 
    828838        } 
    829839        // Image properties 
     
    840850                pixelSizes[q].trim()); 
    841851            } 
    842             if (q == 0) store.setDimensionsPhysicalSizeX(size, 0, 0); 
    843             if (q == 1) store.setDimensionsPhysicalSizeY(size, 0, 0); 
    844             if (q == 2) store.setDimensionsPhysicalSizeZ(size, 0, 0); 
     852            if (q == 0) store.setPixelsPhysicalSizeX(size, 0); 
     853            if (q == 1) store.setPixelsPhysicalSizeY(size, 0); 
     854            if (q == 2) store.setPixelsPhysicalSizeZ(size, 0); 
    845855          } 
    846856        } 
    847857        else if (key.equals("Binning")) { 
    848           store.setDetectorType("Unknown", 0, 0); 
     858          store.setDetectorType(DetectorType.OTHER, 0, 0); 
    849859          String detectorID = MetadataTools.createLSID("Detector", 0, 0); 
    850860          store.setDetectorID(detectorID, 0, 0); 
    851861          for (int c=0; c<getSizeC(); c++) { 
    852             store.setDetectorSettingsBinning(value, 0, c); 
     862            try { 
     863              store.setDetectorSettingsBinning(Binning.fromString(value), 0, c); 
     864            } 
     865            catch (EnumerationException e) { } 
    853866            // link DetectorSettings to an actual Detector 
    854             store.setDetectorSettingsDetector(detectorID, 0, c); 
     867            store.setDetectorSettingsID(detectorID, 0, c); 
    855868          } 
    856869        } 
     
    898911          try { 
    899912            if (currentImage < getImageCount()) { 
    900               store.setPlaneTimingDeltaT(new Double(value), 0, 0, currentImage); 
     913              store.setPlaneDeltaT(new Double(value), 0, currentImage); 
    901914            } 
    902915          } 
     
    913926            LOGGER.debug("", e); 
    914927          } 
    915           store.setLogicalChannelName(value, 0, cIndex); 
     928          store.setChannelName(value, 0, cIndex); 
    916929        } 
    917930        else if (key.equals("ND filter")) { 
     
    945958            if (currentImage < getImageCount()) { 
    946959              if (i == 0) { 
    947                 store.setStagePositionPositionX(p, 0, 0, currentImage); 
     960                store.setPlanePositionX(p, 0, currentImage); 
    948961              } 
    949962              if (i == 1) { 
    950                 store.setStagePositionPositionY(p, 0, 0, currentImage); 
     963                store.setPlanePositionY(p, 0, currentImage); 
    951964              } 
    952965              if (i == 2) { 
    953                 store.setStagePositionPositionZ(p, 0, 0, currentImage); 
     966                store.setPlanePositionZ(p, 0, currentImage); 
    954967              } 
    955968            } 
     
    964977        String date = DateTools.formatDate(line, DATE_FORMAT); 
    965978        if (date != null) { 
    966           store.setImageCreationDate(date, 0); 
     979          store.setImageAcquiredDate(date, 0); 
    967980        } 
    968981        else { 
  • trunk/components/bio-formats/src/loci/formats/in/DicomReader.java

    r6188 r6230  
    4444import loci.formats.codec.JPEGCodec; 
    4545import loci.formats.codec.PackbitsCodec; 
    46 import loci.formats.meta.FilterMetadata; 
    4746import loci.formats.meta.MetadataStore; 
    4847 
     
    673672 
    674673    // The metadata store we're working with. 
    675     MetadataStore store = 
    676       new FilterMetadata(getMetadataStore(), isMetadataFiltered()); 
     674    MetadataStore store = makeFilterMetadata(); 
    677675    MetadataTools.populatePixels(store, this); 
    678676 
     
    687685 
    688686    for (int i=0; i<core.length; i++) { 
    689       if (stamp != null) store.setImageCreationDate(stamp, i); 
     687      if (stamp != null) store.setImageAcquiredDate(stamp, i); 
    690688      else MetadataTools.setDefaultCreationDate(store, id, i); 
    691689      store.setImageName("Series " + i, i); 
     
    697695 
    698696        if (pixelSizeX != null) { 
    699           store.setDimensionsPhysicalSizeX(new Double(pixelSizeX), i, 0); 
     697          store.setPixelsPhysicalSizeX(new Double(pixelSizeX), i); 
    700698        } 
    701699        if (pixelSizeY != null) { 
    702           store.setDimensionsPhysicalSizeY(new Double(pixelSizeY), i, 0); 
     700          store.setPixelsPhysicalSizeY(new Double(pixelSizeY), i); 
    703701        } 
    704702      } 
  • trunk/components/bio-formats/src/loci/formats/in/EPSReader.java

    r6116 r6230  
    3131import loci.formats.FormatTools; 
    3232import loci.formats.MetadataTools; 
    33 import loci.formats.meta.FilterMetadata; 
    3433import loci.formats.meta.MetadataStore; 
    3534import loci.formats.tiff.IFD; 
     
    200199      core[0].falseColor = false; 
    201200 
    202       MetadataStore store = 
    203         new FilterMetadata(getMetadataStore(), isMetadataFiltered()); 
     201      MetadataStore store = makeFilterMetadata(); 
    204202      MetadataTools.populatePixels(store, this); 
    205203      MetadataTools.setDefaultCreationDate(store, id, 0); 
  • trunk/components/bio-formats/src/loci/formats/in/FEIReader.java

    r6116 r6230  
    3131import loci.formats.FormatTools; 
    3232import loci.formats.MetadataTools; 
    33 import loci.formats.meta.FilterMetadata; 
    3433import loci.formats.meta.MetadataStore; 
    3534 
     
    150149    core[0].dimensionOrder = "XYCZT"; 
    151150 
    152     MetadataStore store = 
    153       new FilterMetadata(getMetadataStore(), isMetadataFiltered()); 
     151    MetadataStore store = makeFilterMetadata(); 
    154152    MetadataTools.populatePixels(store, this); 
    155153    MetadataTools.setDefaultCreationDate(store, id, 0); 
  • trunk/components/bio-formats/src/loci/formats/in/FV1000Reader.java

    r6118 r6230  
    4747import loci.formats.FormatTools; 
    4848import loci.formats.MetadataTools; 
    49 import loci.formats.meta.FilterMetadata; 
    5049import loci.formats.meta.MetadataStore; 
    5150import loci.formats.services.POIService; 
     
    5352import loci.formats.tiff.IFDList; 
    5453import loci.formats.tiff.TiffParser; 
     54 
     55import ome.xml.r201004.enums.Correction; 
     56import ome.xml.r201004.enums.DetectorType; 
     57import ome.xml.r201004.enums.EnumerationException; 
     58import ome.xml.r201004.enums.IlluminationType; 
     59import ome.xml.r201004.enums.Immersion; 
     60import ome.xml.r201004.enums.LaserMedium; 
     61import ome.xml.r201004.enums.LaserType; 
     62import ome.xml.r201004.primitives.PositiveInteger; 
    5563 
    5664/** 
     
    789797    // populate MetadataStore 
    790798 
    791     MetadataStore store = 
    792       new FilterMetadata(getMetadataStore(), isMetadataFiltered()); 
     799    MetadataStore store = makeFilterMetadata(); 
    793800 
    794801    MetadataTools.populatePixels(store, this); 
     
    802809      // populate Image data 
    803810      store.setImageName("Series " + (i + 1), i); 
    804       if (creationDate != null) store.setImageCreationDate(creationDate, i); 
     811      if (creationDate != null) store.setImageAcquiredDate(creationDate, i); 
    805812      else MetadataTools.setDefaultCreationDate(store, id, i); 
    806813    } 
     
    824831 
    825832      if (pixelSizeX != null) { 
    826         store.setDimensionsPhysicalSizeX(new Double(pixelSizeX), i, 0); 
     833        store.setPixelsPhysicalSizeX(new Double(pixelSizeX), i); 
    827834      } 
    828835      if (pixelSizeY != null) { 
    829         store.setDimensionsPhysicalSizeY(new Double(pixelSizeY), i, 0); 
     836        store.setPixelsPhysicalSizeY(new Double(pixelSizeY), i); 
    830837      } 
    831838      if (pixelSizeZ == Double.NEGATIVE_INFINITY || 
     
    840847      } 
    841848 
    842       store.setDimensionsPhysicalSizeZ(pixelSizeZ, i, 0); 
    843       store.setDimensionsTimeIncrement(pixelSizeT, i, 0); 
     849      store.setPixelsPhysicalSizeZ(pixelSizeZ, i); 
     850      store.setPixelsTimeIncrement(pixelSizeT, i); 
    844851 
    845852      // populate LogicalChannel data 
     
    847854      for (int c=0; c<core[i].sizeC; c++) { 
    848855        if (c < illuminations.size()) { 
    849           store.setLogicalChannelIlluminationType(illuminations.get(c), i, c); 
     856          try { 
     857            store.setChannelIlluminationType( 
     858              IlluminationType.fromString(illuminations.get(c)), i, c); 
     859          } 
     860          catch (EnumerationException e) { } 
    850861        } 
    851862      } 
     
    860871      String detectorID = MetadataTools.createLSID("Detector", 0, channelIndex); 
    861872      store.setDetectorID(detectorID, 0, channelIndex); 
    862       store.setDetectorSettingsDetector(detectorID, 0, channelIndex); 
     873      store.setDetectorSettingsID(detectorID, 0, channelIndex); 
    863874 
    864875      store.setDetectorGain(channel.gain, 0, channelIndex); 
    865876      store.setDetectorVoltage(channel.voltage, 0, channelIndex); 
    866       store.setDetectorType("PMT", 0, channelIndex); 
     877      store.setDetectorType(DetectorType.PMT, 0, channelIndex); 
    867878 
    868879      // populate LogicalChannel data 
    869880      String filterSet = MetadataTools.createLSID("FilterSet", 0, channelIndex); 
    870881 
    871       store.setLogicalChannelName(channel.name, 0, channelIndex); 
     882      store.setChannelName(channel.name, 0, channelIndex); 
    872883      String lightSourceID = 
    873884        MetadataTools.createLSID("LightSource", 0, channelIndex); 
    874       store.setLightSourceSettingsLightSource(lightSourceID, 0, channelIndex); 
     885      store.setChannelLightSourceSettingsID(lightSourceID, 0, channelIndex); 
    875886 
    876887      if (channel.emWave.intValue() > 0) { 
    877         store.setLogicalChannelEmWave(channel.emWave, 0, channelIndex); 
     888        store.setChannelEmissionWavelength( 
     889          new PositiveInteger(channel.emWave), 0, channelIndex); 
    878890      } 
    879891      if (channel.exWave.intValue() > 0) { 
    880         store.setLogicalChannelExWave(channel.exWave, 0, channelIndex); 
    881         store.setLightSourceSettingsWavelength(channel.exWave, 0, channelIndex); 
    882       } 
    883       store.setLogicalChannelFilterSet(filterSet, 0, channelIndex); 
     892        store.setChannelExcitationWavelength( 
     893          new PositiveInteger(channel.exWave), 0, channelIndex); 
     894        store.setChannelLightSourceSettingsWavelength( 
     895          new PositiveInteger(channel.exWave), 0, channelIndex); 
     896      } 
     897      store.setChannelFilterSetRef(filterSet, 0, channelIndex); 
    884898 
    885899      // populate Filter data 
     
    902916          catch (NumberFormatException e) { } 
    903917        } 
    904         store.setLogicalChannelSecondaryEmissionFilter( 
    905           filterID, 0, channelIndex); 
     918        // TODO 
     919        //store.setLogicalChannelSecondaryEmissionFilter( 
     920        //  filterID, 0, channelIndex); 
    906921      } 
    907922 
     
    913928 
    914929      store.setFilterSetID(filterSet, 0, channelIndex); 
    915       store.setFilterSetDichroic(exFilter, 0, channelIndex); 
     930      store.setFilterSetDichroicRef(exFilter, 0, channelIndex); 
    916931 
    917932      // populate Dichroic data 
     
    923938 
    924939      // populate Laser data 
    925       store.setLightSourceID(lightSourceID, 0, channelIndex); 
    926       store.setLaserLaserMedium(channel.dyeName, 0, channelIndex); 
     940      store.setLaserID(lightSourceID, 0, channelIndex); 
     941      try { 
     942        store.setLaserLaserMedium(LaserMedium.fromString(channel.dyeName), 
     943          0, channelIndex); 
     944      } 
     945      catch (EnumerationException e) { } 
    927946      if (channelIndex < wavelengths.size()) { 
    928947        store.setLaserWavelength( 
    929           wavelengths.get(channelIndex), 0, channelIndex); 
    930       } 
    931       store.setLaserType("Unknown", 0, channelIndex); 
     948          new PositiveInteger(wavelengths.get(channelIndex)), 0, channelIndex); 
     949      } 
     950      store.setLaserType(LaserType.OTHER, 0, channelIndex); 
    932951 
    933952      channelIndex++; 
     
    945964      store.setObjectiveWorkingDistance(new Double(workingDistance), 0, 0); 
    946965    } 
    947     store.setObjectiveCorrection("Unknown", 0, 0); 
    948     store.setObjectiveImmersion("Unknown", 0, 0); 
     966    store.setObjectiveCorrection(Correction.OTHER, 0, 0); 
     967    store.setObjectiveImmersion(Immersion.OTHER, 0, 0); 
    949968 
    950969    // link Objective to Image using ObjectiveSettings 
    951970    String objectiveID = MetadataTools.createLSID("Objective", 0, 0); 
    952971    store.setObjectiveID(objectiveID, 0, 0); 
    953     store.setObjectiveSettingsObjective(objectiveID, 0); 
     972    store.setImageObjectiveSettingsID(objectiveID, 0); 
    954973 
    955974    int nextROI = -1; 
     
    9831002    String[] xc = null, yc = null; 
    9841003    int divide = 0; 
    985     int color = 0, fontSize = 0, lineWidth = 0, angle = 0; 
     1004    int fontSize = 0, lineWidth = 0, angle = 0; 
    9861005    String fontName = null, name = null; 
    9871006 
     
    10041023 
    10051024        lineWidth = Integer.parseInt(table.get("LINEWIDTH")); 
    1006         color = Integer.parseInt(table.get("FORECOLOR")); 
    10071025        name = table.get("NAME"); 
    10081026        angle = Integer.parseInt(table.get("ANGLE")); 
     
    10231041          if (shape == 0) { 
    10241042            nextROI++; 
    1025             store.setROIZ0(zIndex, 0, nextROI); 
    1026             store.setROIZ1(zIndex, 0, nextROI); 
    1027             store.setROIT0(tIndex, 0, nextROI); 
    1028             store.setROIT1(tIndex, 0, nextROI); 
    1029           } 
    1030  
    1031           store.setShapeTheZ(zIndex, 0, nextROI, shape); 
    1032           store.setShapeTheT(tIndex, 0, nextROI, shape); 
    1033  
    1034           store.setShapeFontSize(fontSize, 0, nextROI, shape); 
    1035           store.setShapeFontFamily(fontName, 0, nextROI, shape); 
    1036           store.setShapeText(name, 0, nextROI, shape); 
    1037           store.setShapeStrokeWidth(lineWidth, 0, nextROI, shape); 
    1038           store.setShapeStrokeColor(String.valueOf(color), 0, nextROI, shape); 
     1043          } 
    10391044 
    10401045          if (shapeType == POINT) { 
    1041             store.setPointCx(xc[0], 0, nextROI, shape); 
    1042             store.setPointCy(yc[0], 0, nextROI, shape); 
     1046            store.setPointTheZ(zIndex, nextROI, shape); 
     1047            store.setPointTheT(tIndex, nextROI, shape); 
     1048            store.setPointFontSize(fontSize, nextROI, shape); 
     1049            store.setPointStrokeWidth(new Double(lineWidth), nextROI, shape); 
     1050 
     1051            store.setPointX(new Double(xc[0]), nextROI, shape); 
     1052            store.setPointY(new Double(yc[0]), nextROI, shape); 
    10431053          } 
    10441054          else if (shapeType == GRID || shapeType == RECTANGLE) { 
     
    10481058            for (int row=0; row<divide; row++) { 
    10491059              for (int col=0; col<divide; col++) { 
    1050                 int realX = x + col * width; 
    1051                 int realY = y + row * height; 
    1052  
    1053                 store.setRectX(String.valueOf(realX), 0, nextROI, shape); 
    1054                 store.setRectY(String.valueOf(realY), 0, nextROI, shape); 
    1055                 store.setRectWidth(String.valueOf(width), 0, nextROI, shape); 
    1056                 store.setRectHeight(String.valueOf(height), 0, nextROI, shape); 
    1057  
    1058                 int centerX = realX + (width / 2); 
    1059                 int centerY = realY + (height / 2); 
    1060  
    1061                 store.setRectTransform(String.format("rotate(%d %d %d)", 
    1062                   angle, centerX, centerY), 0, nextROI, shape); 
     1060                double realX = x + col * width; 
     1061                double realY = y + row * height; 
     1062 
     1063                store.setRectangleX(realX, nextROI, shape); 
     1064                store.setRectangleY(realY, nextROI, shape); 
     1065                store.setRectangleWidth(new Double(width), nextROI, shape); 
     1066                store.setRectangleHeight(new Double(height), nextROI, shape); 
     1067 
     1068                store.setRectangleTheZ(zIndex, nextROI, shape); 
     1069                store.setRectangleTheT(tIndex, nextROI, shape); 
     1070                store.setRectangleFontSize(fontSize, nextROI, shape); 
     1071                store.setRectangleStrokeWidth( 
     1072                  new Double(lineWidth), nextROI, shape); 
     1073 
     1074                double centerX = realX + (width / 2); 
     1075                double centerY = realY + (height / 2); 
     1076 
     1077                store.setRectangleTransform(String.format("rotate(%d %d %d)", 
     1078                  angle, centerX, centerY), nextROI, shape); 
    10631079 
    10641080                if (row < divide - 1 || col < divide - 1) shape++; 
     
    10671083          } 
    10681084          else if (shapeType == LINE) { 
    1069             store.setLineX1(String.valueOf(x), 0, nextROI, shape); 
    1070             store.setLineY1(String.valueOf(y), 0, nextROI, shape); 
    1071             store.setLineX2(String.valueOf(x + width), 0, nextROI, shape); 
    1072             store.setLineY2(String.valueOf(y + height), 0, nextROI, shape); 
     1085            store.setLineX1(new Double(x), nextROI, shape); 
     1086            store.setLineY1(new Double(y), nextROI, shape); 
     1087            store.setLineX2(new Double(x + width), nextROI, shape); 
     1088            store.setLineY2(new Double(y + height), nextROI, shape); 
     1089 
     1090            store.setLineTheZ(zIndex, nextROI, shape); 
     1091            store.setLineTheT(tIndex, nextROI, shape); 
     1092            store.setLineFontSize(fontSize, nextROI, shape); 
     1093            store.setLineStrokeWidth(new Double(lineWidth), nextROI, shape); 
    10731094 
    10741095            int centerX = x + (width / 2); 
     
    10761097 
    10771098            store.setLineTransform(String.format("rotate(%d %d %d)", 
    1078               angle, centerX, centerY), 0, nextROI, shape); 
    1079           } 
    1080           else if (shapeType == CIRCLE) { 
    1081             int r = width / 2; 
    1082             store.setCircleCx(String.valueOf(x + r), 0, nextROI, shape); 
    1083             store.setCircleCy(String.valueOf(y + r), 0, nextROI, shape); 
    1084             store.setCircleR(String.valueOf(r), 0, nextROI, shape); 
    1085           } 
    1086           else if (shapeType == ELLIPSE) { 
    1087             int rx = width / 2; 
    1088             int ry = height / 2; 
    1089             store.setEllipseCx(String.valueOf(x + rx), 0, nextROI, shape); 
    1090             store.setEllipseCy(String.valueOf(y + ry), 0, nextROI, shape); 
    1091             store.setEllipseRx(String.valueOf(rx), 0, nextROI, shape); 
    1092             store.setEllipseRy(String.valueOf(ry), 0, nextROI, shape); 
     1099              angle, centerX, centerY), nextROI, shape); 
     1100          } 
     1101          else if (shapeType == CIRCLE || shapeType == ELLIPSE) { 
     1102            double rx = width / 2; 
     1103            double ry = shapeType == CIRCLE ? rx : height / 2; 
     1104            store.setEllipseX(x + rx, nextROI, shape); 
     1105            store.setEllipseY(y + ry, nextROI, shape); 
     1106            store.setEllipseRadiusX(rx, nextROI, shape); 
     1107            store.setEllipseRadiusY(ry, nextROI, shape); 
     1108 
     1109            store.setEllipseTheZ(zIndex, nextROI, shape); 
     1110            store.setEllipseTheT(tIndex, nextROI, shape); 
     1111            store.setEllipseFontSize(fontSize, nextROI, shape); 
     1112            store.setEllipseStrokeWidth(new Double(lineWidth), nextROI, shape); 
    10931113            store.setEllipseTransform(String.format("rotate(%d %d %d)", 
    1094               angle, x + rx, y + ry), 0, nextROI, shape); 
     1114              angle, x + rx, y + ry), nextROI, shape); 
    10951115          } 
    10961116          else if (shapeType == POLYGON || shapeType == FREE_SHAPE || 
     
    11041124              if (point < xc.length - 1) points.append(" "); 
    11051125            } 
    1106             if (shapeType == POLYGON || shapeType == FREE_SHAPE) { 
    1107               store.setPolygonPoints(points.toString(), 0, nextROI, shape); 
    1108               store.setPolygonTransform("rotate(" + angle + ")", 0, nextROI, 
    1109                 shape); 
    1110             } 
    1111             else { 
    1112               store.setPolylinePoints(points.toString(), 0, nextROI, shape); 
    1113               store.setPolylineTransform("rotate(" + angle + ")", 0, nextROI, 
    1114                 shape); 
    1115             } 
     1126            store.setPolylinePoints(points.toString(), nextROI, shape); 
     1127            store.setPolylineTransform("rotate(" + angle + ")", nextROI, shape); 
     1128            store.setPolylineClosed( 
     1129              shapeType == POLYGON || shapeType == FREE_SHAPE, nextROI, shape); 
     1130            store.setPolylineTheZ(zIndex, nextROI, shape); 
     1131            store.setPolylineTheT(tIndex, nextROI, shape); 
     1132            store.setPolylineFontSize(fontSize, nextROI, shape); 
     1133            store.setPolylineStrokeWidth(new Double(lineWidth), nextROI, shape); 
    11161134          } 
    11171135        } 
  • trunk/components/bio-formats/src/loci/formats/in/FakeReader.java

    r6026 r6230  
    3232import loci.formats.FormatTools; 
    3333import loci.formats.MetadataTools; 
    34 import loci.formats.meta.FilterMetadata; 
    3534import loci.formats.meta.MetadataStore; 
    3635 
     
    229228    } 
    230229 
    231     MetadataStore store = 
    232       new FilterMetadata(getMetadataStore(), isMetadataFiltered()); 
     230    MetadataStore store = makeFilterMetadata(); 
    233231    MetadataTools.populatePixels(store, this); 
    234232    for (int s=0; s<seriesCount; s++) { 
  • trunk/components/bio-formats/src/loci/formats/in/FitsReader.java

    r6118 r6230  
    3131import loci.formats.FormatTools; 
    3232import loci.formats.MetadataTools; 
    33 import loci.formats.meta.FilterMetadata; 
    3433import loci.formats.meta.MetadataStore; 
    3534 
     
    145144    core[0].metadataComplete = true; 
    146145 
    147     MetadataStore store = 
    148       new FilterMetadata(getMetadataStore(), isMetadataFiltered()); 
     146    MetadataStore store = makeFilterMetadata(); 
    149147    MetadataTools.populatePixels(store, this); 
    150148    MetadataTools.setDefaultCreationDate(store, id, 0); 
  • trunk/components/bio-formats/src/loci/formats/in/FlexReader.java

    r6091 r6230  
    4040import loci.formats.FormatTools; 
    4141import loci.formats.MetadataTools; 
    42 import loci.formats.meta.FilterMetadata; 
    4342import loci.formats.meta.MetadataStore; 
    4443import loci.formats.tiff.IFD; 
     
    4746import loci.formats.tiff.TiffConstants; 
    4847import loci.formats.tiff.TiffParser; 
     48 
     49 
     50import ome.xml.r201004.enums.Binning; 
     51import ome.xml.r201004.enums.Correction; 
     52import ome.xml.r201004.enums.DetectorType; 
     53import ome.xml.r201004.enums.EnumerationException; 
     54import ome.xml.r201004.enums.Immersion; 
     55import ome.xml.r201004.enums.LaserMedium; 
     56import ome.xml.r201004.enums.LaserType; 
     57import ome.xml.r201004.enums.NamingConvention; 
     58import ome.xml.r201004.primitives.NonNegativeInteger; 
     59import ome.xml.r201004.primitives.PositiveInteger; 
    4960 
    5061import org.xml.sax.Attributes; 
     
    346357    } 
    347358 
    348     MetadataStore store = 
    349       new FilterMetadata(getMetadataStore(), isMetadataFiltered()); 
     359    MetadataStore store = makeFilterMetadata(); 
    350360 
    351361    groupFiles(flex.toArray(new String[flex.size()]), store); 
     
    390400    } 
    391401 
    392     MetadataStore store = 
    393       new FilterMetadata(getMetadataStore(), isMetadataFiltered()); 
     402    MetadataStore store = makeFilterMetadata(); 
    394403 
    395404    LOGGER.info("Making sure that all .flex files are valid"); 
     
    447456      store.setImageName("Well " + wellRow + "-" + (wellNumber[pos[1]][1] + 1) + 
    448457        "; Field #" + (pos[0] + 1), i); 
    449       store.setWellSampleIndex(i, pos[2], well, pos[0]); 
     458      store.setWellSampleIndex(new NonNegativeInteger(i), pos[2], well, pos[0]); 
    450459      store.setWellSampleImageRef(imageID, pos[2], well, pos[0]); 
    451       store.setWellRow(wellNumber[pos[1]][0], 0, i); 
    452       store.setWellColumn(wellNumber[pos[1]][1], 0, i); 
     460      store.setWellRow(new NonNegativeInteger(wellNumber[pos[1]][0]), 0, i); 
     461      store.setWellColumn(new NonNegativeInteger(wellNumber[pos[1]][1]), 0, i); 
    453462    } 
    454463 
     
    460469      if (plateBarcode != null) plateName = plateBarcode + " " + plateName; 
    461470      store.setPlateName(plateName, 0); 
    462       store.setPlateRowNamingConvention("A", 0); 
    463       store.setPlateColumnNamingConvention("1", 0); 
     471      store.setPlateRowNamingConvention(NamingConvention.LETTER, 0); 
     472      store.setPlateColumnNamingConvention(NamingConvention.NUMBER, 0); 
    464473 
    465474      for (int i=0; i<getSeriesCount(); i++) { 
     
    470479        int seriesIndex = i * getImageCount(); 
    471480        if (seriesIndex < objectiveRefs.size()) { 
    472           store.setObjectiveSettingsObjective( 
    473             objectiveRefs.get(seriesIndex), i); 
     481          store.setImageObjectiveSettingsID(objectiveRefs.get(seriesIndex), i); 
    474482        } 
    475483 
     
    482490            int index = seriesIndex + c; 
    483491            if (index < cameraRefs.size()) { 
    484               store.setDetectorSettingsDetector(cameraRefs.get(index), i, c); 
     492              store.setDetectorSettingsID(cameraRefs.get(index), i, c); 
    485493            } 
    486494            if (index < binnings.size()) { 
    487               store.setDetectorSettingsBinning(binnings.get(index), i, c); 
     495              try { 
     496                store.setDetectorSettingsBinning( 
     497                  Binning.fromString(binnings.get(index)), i, c); 
     498              } 
     499              catch (EnumerationException e) { } 
    488500            } 
    489501            if (lightSources != null && c < lightSources.size()) { 
    490               store.setLightSourceSettingsLightSource( 
    491                 lightSources.get(c), i, c); 
     502              store.setChannelLightSourceSettingsID(lightSources.get(c), i, c); 
    492503            } 
    493504            else if (c > 0 && lightSources != null && lightSources.size() == 1) 
    494505            { 
    495               store.setLightSourceSettingsLightSource( 
    496                 lightSources.get(0), i, c); 
     506              store.setChannelLightSourceSettingsID(lightSources.get(0), i, c); 
    497507            } 
    498508            if (index < filterSets.size()) { 
    499509              String filterSetID = filterSetMap.get(filterSets.get(index)); 
    500               store.setLogicalChannelFilterSet(filterSetID, i, c); 
     510              store.setChannelFilterSetRef(filterSetID, i, c); 
    501511            } 
    502512          } 
     
    504514 
    505515        if (seriesIndex < xSizes.size()) { 
    506           store.setDimensionsPhysicalSizeX(xSizes.get(seriesIndex), i, 0); 
     516          store.setPixelsPhysicalSizeX(xSizes.get(seriesIndex), i); 
    507517        } 
    508518        if (seriesIndex < ySizes.size()) { 
    509           store.setDimensionsPhysicalSizeY(ySizes.get(seriesIndex), i, 0); 
     519          store.setPixelsPhysicalSizeY(ySizes.get(seriesIndex), i); 
    510520        } 
    511521 
     
    516526 
    517527        if (pos[0] < xPositions.size()) { 
    518           store.setWellSamplePosX(xPositions.get(pos[0]), pos[2], well, pos[0]); 
     528          store.setWellSamplePositionX( 
     529            xPositions.get(pos[0]), pos[2], well, pos[0]); 
    519530        } 
    520531        if (pos[0] < yPositions.size()) { 
    521           store.setWellSamplePosY(yPositions.get(pos[0]), pos[2], well, pos[0]); 
     532          store.setWellSamplePositionY( 
     533            yPositions.get(pos[0]), pos[2], well, pos[0]); 
    522534        } 
    523535      } 
     
    11231135 
    11241136        if (qName.equals("DateTime")) { 
    1125           store.setImageCreationDate(value, currentSeries); 
     1137          store.setImageAcquiredDate(value, currentSeries); 
    11261138        } 
    11271139      } 
     
    11411153      else if (qName.equals("Wavelength")) { 
    11421154        String lsid = MetadataTools.createLSID("LightSource", 0, nextLaser); 
    1143         store.setLightSourceID(lsid, 0, nextLaser); 
    1144         store.setLaserWavelength(new Integer(value), 0, nextLaser); 
    1145         store.setLaserType("Unknown", 0, nextLaser); 
    1146         store.setLaserLaserMedium("Unknown", 0, nextLaser); 
     1155        store.setLaserID(lsid, 0, nextLaser); 
     1156        store.setLaserWavelength( 
     1157          new PositiveInteger(new Integer(value)), 0, nextLaser); 
     1158        store.setLaserType(LaserType.OTHER, 0, nextLaser); 
     1159        store.setLaserLaserMedium(LaserMedium.OTHER, 0, nextLaser); 
    11471160      } 
    11481161      else if (qName.equals("Magnification")) { 
     
    11541167      } 
    11551168      else if (qName.equals("Immersion")) { 
    1156         if (value.equals("1.33")) value = "Water"; 
    1157         else if (value.equals("1.00")) value = "Air"; 
     1169        Immersion immersion = Immersion.OTHER; 
     1170        if (value.equals("1.33")) immersion = Immersion.WATER; 
     1171        else if (value.equals("1.00")) immersion = Immersion.AIR; 
    11581172        else LOGGER.warn("Unknown immersion medium: {}", value); 
    1159         store.setObjectiveImmersion(value, 0, nextObjective); 
     1173        store.setObjectiveImmersion(immersion, 0, nextObjective); 
    11601174      } 
    11611175      else if (qName.equals("OffsetX") || qName.equals("OffsetY")) { 
     
    12041218        else if (qName.equals("PositionX")) { 
    12051219          Double v = new Double(Double.parseDouble(value) * 1000000); 
    1206           store.setStagePositionPositionX(v, currentSeries, 0, currentImage); 
     1220          store.setPlanePositionX(v, currentSeries, currentImage); 
    1207