bioformats  5.1.0
MetadataTools.h
1 /*
2  * #%L
3  * OME-BIOFORMATS C++ library for image IO.
4  * Copyright © 2006 - 2015 Open Microscopy Environment:
5  * - Massachusetts Institute of Technology
6  * - National Institutes of Health
7  * - University of Dundee
8  * - Board of Regents of the University of Wisconsin-Madison
9  * - Glencoe Software, Inc.
10  * %%
11  * Redistribution and use in source and binary forms, with or without
12  * modification, are permitted provided that the following conditions are met:
13  *
14  * 1. Redistributions of source code must retain the above copyright notice,
15  * this list of conditions and the following disclaimer.
16  * 2. Redistributions in binary form must reproduce the above copyright notice,
17  * this list of conditions and the following disclaimer in the documentation
18  * and/or other materials provided with the distribution.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE
24  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30  * POSSIBILITY OF SUCH DAMAGE.
31  *
32  * The views and conclusions contained in the software and documentation are
33  * those of the authors and should not be interpreted as representing official
34  * policies, either expressed or implied, of any organization.
35  * #L%
36  */
37 
38 #include <string>
39 
40 #include <ome/bioformats/FormatReader.h>
41 #include <ome/bioformats/Types.h>
42 
43 #include <ome/common/filesystem.h>
44 
45 #include <ome/xml/meta/Metadata.h>
46 #include <ome/xml/meta/MetadataRoot.h>
47 #include <ome/xml/meta/OMEXMLMetadata.h>
48 
49 #include <ome/xml/model/enums/DimensionOrder.h>
50 
51 #ifndef OME_BIOFORMATS_METADATATOOLS_H
52 #define OME_BIOFORMATS_METADATATOOLS_H
53 
54 namespace ome
55 {
56  namespace bioformats
57  {
58 
59  // Use overloaded functions for creating identifiers since
60  // pre-C++11 compilers don't support the C99 stdarg interface.
61 
69  std::string
70  createID(std::string const& type,
72 
81  std::string
82  createID(std::string const& type,
84  dimension_size_type idx2);
85 
95  std::string
96  createID(std::string const& type,
99  dimension_size_type idx3);
100 
111  std::string
112  createID(std::string const& type,
113  dimension_size_type idx1,
114  dimension_size_type idx2,
115  dimension_size_type idx3,
116  dimension_size_type idx4);
117 
124  ome::compat::shared_ptr< ::ome::xml::meta::OMEXMLMetadata>
126 
133  ome::compat::shared_ptr< ::ome::xml::meta::OMEXMLMetadata>
134  createOMEXMLMetadata(const boost::filesystem::path& file);
135 
142  ome::compat::shared_ptr< ::ome::xml::meta::OMEXMLMetadata>
143  createOMEXMLMetadata(const std::string& text);
144 
151  ome::compat::shared_ptr< ::ome::xml::meta::OMEXMLMetadata>
152  createOMEXMLMetadata(std::istream& stream);
153 
162  ome::compat::shared_ptr< ::ome::xml::meta::OMEXMLMetadata>
163  createOMEXMLMetadata(const FormatReader& reader,
164  bool doPlane = false,
165  bool doImageName = true);
166 
167 
174  ome::compat::shared_ptr< ::ome::xml::meta::MetadataRoot>
175  createOMEXMLRoot(const std::string& document);
176 
185  ome::compat::shared_ptr< ::ome::xml::meta::OMEXMLMetadata>
186  getOMEXMLMetadata(ome::compat::shared_ptr< ::ome::xml::meta::MetadataRetrieve>& retrieve);
187 
199  std::string
201  bool validate = true);
202 
209  bool
210  validateOMEXML(const std::string& document);
211 
222  void
224  const FormatReader& reader,
225  bool doPlane = false,
226  bool doImageName = true);
227 
236  void
238  const FormatReader& reader);
239 
248  void
250  const FormatReader& reader);
251 
261  void
263  dimension_size_type series,
264  bool resolve = true);
265 
273  Modulo
274  getModuloAlongZ(const ::ome::xml::meta::OMEXMLMetadata& omexml,
275  dimension_size_type image);
276 
284  Modulo
285  getModuloAlongT(const ::ome::xml::meta::OMEXMLMetadata& omexml,
286  dimension_size_type image);
287 
295  Modulo
296  getModuloAlongC(const ::ome::xml::meta::OMEXMLMetadata& omexml,
297  dimension_size_type image);
298 
307  Modulo
308  getModulo(const ::ome::xml::meta::OMEXMLMetadata& omexml,
309  const std::string& tag,
310  dimension_size_type image);
311 
319  void
321  dimension_size_type series = 0U);
322 
328  void
330 
339  void
341  dimension_size_type image,
342  dimension_size_type sizeC);
343 
350  MetadataMap
352 
359  void
361  const MetadataMap& metadata);
362 
368  bool
370 
376  std::string
377  getModelVersion();
378 
385  std::string
387 
394  std::string
395  getModelVersion(const std::string& document);
396 
403  std::string
404  transformToLatestModelVersion(const std::string& document);
405 
416  void
417  defaultCreationDateEnabled(bool enabled);
418 
433  void
435  dimension_size_type series,
436  const boost::filesystem::path& id);
437 
452  createDimensionOrder(const std::string& order);
453 
454  }
455 }
456 
457 #endif // OME_BIOFORMATS_METADATATOOLS_H
458 
459 /*
460  * Local Variables:
461  * mode:C++
462  * End:
463  */
Modulo getModuloAlongC(const ::ome::xml::meta::OMEXMLMetadata &omexml, dimension_size_type image)
Get ModuloAlongC annotation from OME-XML metadata.
Definition: MetadataTools.cpp:492
void removeChannels(::ome::xml::meta::OMEXMLMetadata &omexml, dimension_size_type image, dimension_size_type sizeC)
Remove all but the specified number of valid Channel elements from OME-XML metadata.
Definition: MetadataTools.cpp:653
std::string createID(std::string const &type, dimension_size_type idx)
Create an object identifier for a given object type and index.
Definition: MetadataTools.cpp:169
void removeBinData(::ome::xml::meta::OMEXMLMetadata &omexml)
Remove all BinData elements from OME-XML metadata.
Definition: MetadataTools.cpp:622
DOM Document wrapper.
Definition: Document.h:80
ome::compat::shared_ptr< ::ome::xml::meta::OMEXMLMetadata > getOMEXMLMetadata(ome::compat::shared_ptr< ::ome::xml::meta::MetadataRetrieve > &retrieve)
Get OME-XML metadata from metadata.
Definition: MetadataTools.cpp:312
ome::xml::model::enums::DimensionOrder createDimensionOrder(const std::string &order)
Create a valid DimensionOrder from string.
Definition: MetadataTools.cpp:922
Metadata storage interface.
Definition: MetadataStore.h:140
DimensionOrder enumeration.
Definition: DimensionOrder.h:70
Boost.Filesystem compatibility.
MetadataMap getOriginalMetadata(::ome::xml::meta::OMEXMLMetadata &omexml)
Get original metadata from OME-XML metadata StructuredAnnotations.
Definition: MetadataTools.cpp:680
Modulo getModuloAlongZ(const ::ome::xml::meta::OMEXMLMetadata &omexml, dimension_size_type image)
Get ModuloAlongZ annotation from OME-XML metadata.
Definition: MetadataTools.cpp:478
Open Microscopy Environment C++ implementation.
Definition: CoreMetadata.cpp:40
std::string getModelVersion()
Get the currently-supported OME Data Model version.
Definition: MetadataTools.cpp:815
void verifyMinimum(::ome::xml::meta::MetadataRetrieve &retrieve, dimension_size_type series)
Verify correctness of minimal amount of metadata in a series.
Definition: MetadataTools.cpp:574
void addMetadataOnly(::ome::xml::meta::OMEXMLMetadata &omexml, dimension_size_type series, bool resolve)
Add a MetadataOnly element to Pixels for the specified series.
Definition: MetadataTools.cpp:454
void setDefaultCreationDate(::ome::xml::meta::MetadataStore &store, dimension_size_type series, const boost::filesystem::path &id)
Set the creation data for a series.
Definition: MetadataTools.cpp:908
A metadata store implementation for constructing and manipulating OME-XML DOMs for the current versio...
Definition: OMEXMLMetadata.h:67
Modulo getModuloAlongT(const ::ome::xml::meta::OMEXMLMetadata &omexml, dimension_size_type image)
Get ModuloAlongT annotation from OME-XML metadata.
Definition: MetadataTools.cpp:485
void fillPixels(::ome::xml::meta::MetadataStore &store, const FormatReader &reader)
Fill an OME-XML metadata store Pixels element from reader core metadata.
Definition: MetadataTools.cpp:424
std::string transformToLatestModelVersion(const std::string &document)
Transform an OME-XML document to the latest model version.
Definition: MetadataTools.cpp:889
void fillMetadata(::ome::xml::meta::MetadataStore &store, const FormatReader &reader, bool doPlane, bool doImageName)
Fill OME-XML metadata store from reader core metadata.
Definition: MetadataTools.cpp:352
std::string getOMEXML(::ome::xml::meta::OMEXMLMetadata &omexml, bool validate)
Get OME-XML document from OME-XML metadata.
Definition: MetadataTools.cpp:334
bool validateOMEXML(const std::string &document)
Validate an OME-XML document.
Definition: MetadataTools.cpp:346
ome::compat::shared_ptr< ::ome::xml::meta::MetadataRoot > createOMEXMLRoot(const std::string &document)
Create OME-XML metadata root from XML document.
Definition: MetadataTools.cpp:303
Metadata retrieval interface.
Definition: MetadataRetrieve.h:126
bool defaultCreationDateEnabled()
Check if default creation date is enabled.
Definition: MetadataTools.cpp:896
ome::compat::shared_ptr< ::ome::xml::meta::OMEXMLMetadata > createOMEXMLMetadata(ome::common::xml::dom::Document &document)
Create OME-XML metadata from DOM Document.
Definition: MetadataTools.cpp:215
std::size_t dimension_size_type
Size type for image dimensions.
Definition: Types.h:59
void fillOriginalMetadata(::ome::xml::meta::OMEXMLMetadata &omexml, const MetadataMap &metadata)
Create OriginalMetadataAnnotations from MetadataMap.
Definition: MetadataTools.cpp:762
void fillAllPixels(::ome::xml::meta::MetadataStore &store, const FormatReader &reader)
Fill all OME-XML metadata store Pixels elements from reader core metadata.
Definition: MetadataTools.cpp:411
Modulo getModulo(const ::ome::xml::meta::OMEXMLMetadata &omexml, const std::string &tag, dimension_size_type image)
Get Modulo annotation from OME-XML metadata.
Definition: MetadataTools.cpp:499