caom2


Namecaom2 JSON
Version 2.6.1 PyPI version JSON
download
home_pagehttp://www.cadc-ccda.hia-iha.nrc-cnrc.gc.ca/caom2
SummaryCAOM-2.4 library
upload_time2024-05-17 00:27:57
maintainerNone
docs_urlNone
authorCanadian Astronomy Data Centre
requires_python<4,>=3.8
licenseAGPLv3
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            caom2
=====

.. image:: https://img.shields.io/pypi/v/caom2.svg   
    :target: https://pypi.python.org/pypi/caom2

Common Archive Observation Model - data engineering tools

caom2 module

The caom2 module is a library implementing the Common Archive
Observation Model (CAOM-2.3) for manipulating CAOM observations and
reading and writing XML documents.

http://www.opencadc.org/caom2/

To create a minimal Simple Observation
--------------------------------------

.. code:: python

        import sys
        from caom2 import SimpleObservation, TypedOrderedDict, Plane, Artifact,\
                          Part, Chunk, ObservationWriter, ProductType,\
                          ReleaseType, TypedList

        observation = SimpleObservation('collection', 'observationID')

        observation.planes = TypedOrderedDict(Plane)
        plane = Plane('productID')
        observation.planes['productID'] = plane

        plane.artifacts = TypedOrderedDict(Artifact)
        artifact = Artifact('uri:foo/bar', ProductType.SCIENCE, ReleaseType.META)
        plane.artifacts['uri:foo/bar'] = artifact

        artifact.parts = TypedOrderedDict(Part)
        part = Part('name')
        artifact.parts['name'] = part

        part.chunks = TypedList(Chunk)
        chunk = Chunk()
        part.chunks.append(chunk)

        writer = ObservationWriter()
        writer.write(observation, sys.stdout)

The output:

.. code:: xml

    <?xml version='1.0' encoding='UTF-8'?>
    <caom2:Observation xmlns:caom2="http://www.opencadc.org/caom2/xml/v2.3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="caom2:SimpleObservation" caom2:id="00000000-0000-0000-3d6a-420eab45bf2e" caom2:lastModified="2016-11-24T08:40:54.003">
      <caom2:collection>collection</caom2:collection>
      <caom2:observationID>observationID</caom2:observationID>
      <caom2:algorithm>
        <caom2:name>exposure</caom2:name>
      </caom2:algorithm>
      <caom2:planes>
        <caom2:plane caom2:id="00000000-0000-0000-1fe6-420eab45c0bc" caom2:lastModified="2016-11-24T08:40:54.003">
          <caom2:productID>productID</caom2:productID>
          <caom2:artifacts>
            <caom2:artifact caom2:id="00000000-0000-0000-7adf-420eab45c170" caom2:lastModified="2016-11-24T08:40:54.004">
              <caom2:uri>uri:foo/bar</caom2:uri>
              <caom2:productType>science</caom2:productType>
              <caom2:releaseType>meta</caom2:releaseType>
              <caom2:parts>
                <caom2:part caom2:id="00000000-0000-0000-16f0-420eab45c246" caom2:lastModified="2016-11-24T08:40:54.004">
                  <caom2:name>name</caom2:name>
                  <caom2:chunks>
                    <caom2:chunk caom2:id="00000000-0000-0000-0c8f-420eab45c2a1" caom2:lastModified="2016-11-24T08:40:54.004"/>
                  </caom2:chunks>
                </caom2:part>
              </caom2:parts>
            </caom2:artifact>
          </caom2:artifacts>
        </caom2:plane>
      </caom2:planes>
    </caom2:Observation>

To create a complete Observation
--------------------------------------

.. code:: python

    # make it compatible with Python 2 and 3
    from __future__ import (absolute_import, division, print_function,
                        unicode_literals)
    from datetime import datetime
    import sys
    from caom2 import SimpleObservation, Plane, Artifact, Part, Chunk,\
                      TypedOrderedDict, ObservationWriter, ProductType, \
                      ReleaseType, TypedList, Target, TargetPosition, \
                      TargetType, ObservationIntentType, Instrument, \
                      Telescope, Environment, DataProductType, Provenance, \
                      CalibrationLevel, Metrics, Proposal, Point, Slice, Axis,\
                      ObservableAxis, CoordAxis1D, CoordAxis2D, SpatialWCS,\
                      SpectralWCS, EnergyTransition, TemporalWCS, CoordFunction1D,\
                      RefCoord, PolarizationWCS

    observation = SimpleObservation('collection', 'observationID')
    observation.obs_type = 'flat'
    observation.intent = ObservationIntentType.SCIENCE
    observation.meta_release = datetime(2016, 11, 22, 11, 53, 44, 0)

    observation.proposal = Proposal('proposal id')
    observation.proposal.pi_name = 'pi name'
    observation.proposal.project = 'proposal project'
    observation.proposal.title = 'proposal title'
    observation.proposal.keywords.update({'proposal', 'key', 'words'})

    observation.target = Target('target name')
    observation.target.target_type = TargetType.OBJECT
    observation.target.standard = False
    observation.target.redshift = 1.5
    observation.target.keywords.update({'target', 'key', 'words'})

    point = Point(1.0, 2.0)
    observation.target_position = TargetPosition(point, 'coordsys')
    observation.target_position.equinox = 3.0

    observation.telescope = Telescope('telescope name')
    observation.telescope.geo_location_x = 1.0
    observation.telescope.geo_location_y = 2.0
    observation.telescope.geo_location_z = 3.0
    observation.telescope.keywords.update({'telescope', 'key', 'words'})

    observation.instrument = Instrument('instrument name')
    observation.instrument.keywords.update({'instrument', 'key', 'words'})

    observation.env = Environment()
    observation.env.seeing = 0.08
    observation.env.humidity = 0.35
    observation.env.elevation = 2.7
    observation.env.tau = 0.7
    observation.env.wavelength_tau = 450e-6
    observation.env.ambient_temp = 20.0
    observation.env.photometric = True

    observation.planes = TypedOrderedDict(Plane)
    plane = Plane('productID')
    observation.planes['productID'] = plane

    plane.meta_release = datetime(2016, 11, 22, 12, 26, 21, 0)
    plane.data_release = datetime(2018, 01, 01, 00, 00, 00, 0)
    plane.data_product_type = DataProductType.IMAGE
    plane.calibration_level = CalibrationLevel.PRODUCT

    plane.provenance = provenance = Provenance('name')
    plane.provenance.version = 'version'
    plane.provenance.product = 'product'
    plane.provenance.producer = 'producer'
    plane.provenance.run_id = 'run_id'
    plane.provenance.reference = 'http://foo/bar'
    plane.provenance.last_executed = datetime(2016, 11, 22, 12, 28, 16, 0)
    plane.provenance.keywords.update({'provenance', 'key', 'words'})

    plane.metrics = Metrics()
    plane.metrics.source_number_density = 1.0
    plane.metrics.background = 2.0
    plane.metrics.background_std_dev = 3.0
    plane.metrics.flux_density_limit = 4.0
    plane.metrics.mag_limit = 5.0

    plane.artifacts = TypedOrderedDict(Artifact)
    artifact = Artifact('uri:foo/bar', ProductType.SCIENCE, ReleaseType.META)
    plane.artifacts['uri:foo/bar'] = artifact

    artifact.content_type = 'application/fits'
    artifact.content_length = 12345L

    artifact.parts = TypedOrderedDict(Part)
    part = Part('name')
    artifact.parts['name'] = part
    part.product_type = ProductType.SCIENCE

    part.chunks = TypedList(Chunk)
    chunk = Chunk()
    part.chunks.append(chunk)

    chunk.product_type = ProductType.SCIENCE
    chunk.naxis = 5
    chunk.observable_axis = 1
    chunk.position_axis_1 = 1
    chunk.position_axis_2 = 2
    chunk.energy_axis = 3
    chunk.time_axis = 4
    chunk.polarization_axis = 5

    observable_axis = Slice(Axis('observable_ctype', 'observable_cunit'), 1L)
    chunk.observable = ObservableAxis(observable_axis)

    position_axis = CoordAxis2D(Axis('position_ctype_1', 'position_cunit_1'),
                                Axis('position_ctype_2', 'position_cunit_2'))
    chunk.position = SpatialWCS(position_axis)
    chunk.position.coordsys = 'position coordsys'
    chunk.position.equinox = 2000.0
    chunk.position.resolution = 0.5

    energy_axis = CoordAxis1D(Axis('energy_ctype', 'energy_cunit'))
    chunk.energy = SpectralWCS(energy_axis, 'specsys')
    chunk.energy.ssysobs = 'ssysobs'
    chunk.energy.ssyssrc = 'ssyssrc'
    chunk.energy.restfrq = 1.0
    chunk.energy.restwav = 2.0
    chunk.energy.velosys = 3.0
    chunk.energy.zsource = 4.0
    chunk.energy.velang = 5.0
    chunk.energy.bandpassName = 'bandpass name'
    chunk.energy.resolvingPower = 6.0
    chunk.energy.transition = EnergyTransition('H', '21cm')

    time_axis = CoordAxis1D(Axis('time_ctype', 'time_cunit'))
    chunk.time = TemporalWCS(time_axis)
    chunk.time.exposure = 1.0
    chunk.time.resolution = 2.0
    chunk.time.timesys = 'UTC'
    chunk.time.trefpos = 'TOPOCENTER'
    chunk.time.mjdref = 3.0

    polarization_axis = CoordAxis1D(Axis('STOKES'))
    polarization_axis.function = CoordFunction1D(4L, 1.0, RefCoord(1.0, 1.0))
    chunk.polarization = PolarizationWCS(polarization_axis)

    writer = ObservationWriter()
    writer.write(observation, sys.stdout)

The output:

.. code:: xml

	<?xml version='1.0' encoding='UTF-8'?>
	<caom2:Observation xmlns:caom2="http://www.opencadc.org/caom2/xml/v2.3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="caom2:SimpleObservation" caom2:id="00000000-0000-0000-21ae-41feaaab49f6" caom2:lastModified="2016-11-23T13:35:24.404">
	  <caom2:collection>collection</caom2:collection>
	  <caom2:observationID>observationID</caom2:observationID>
	  <caom2:metaRelease>2016-11-22T11:53:44.000</caom2:metaRelease>
	  <caom2:algorithm>
		<caom2:name>exposure</caom2:name>
	  </caom2:algorithm>
	  <caom2:type>flat</caom2:type>
	  <caom2:intent>science</caom2:intent>
	  <caom2:proposal>
		<caom2:id>proposal id</caom2:id>
		<caom2:pi>pi name</caom2:pi>
		<caom2:project>proposal project</caom2:project>
		<caom2:title>proposal title</caom2:title>
		<caom2:keywords>proposal words key</caom2:keywords>
	  </caom2:proposal>
	  <caom2:target>
		<caom2:name>target name</caom2:name>
		<caom2:type>object</caom2:type>
		<caom2:standard>false</caom2:standard>
		<caom2:redshift>1.5</caom2:redshift>
		<caom2:keywords>words key target</caom2:keywords>
	  </caom2:target>
	  <caom2:targetPosition>
		<caom2:coordsys>coordsys</caom2:coordsys>
		<caom2:equinox>3.0</caom2:equinox>
		<caom2:coordinates>
		  <caom2:cval1>1.0</caom2:cval1>
		  <caom2:cval2>2.0</caom2:cval2>
		</caom2:coordinates>
	  </caom2:targetPosition>
	  <caom2:telescope>
		<caom2:name>telescope name</caom2:name>
		<caom2:geoLocationX>1.0</caom2:geoLocationX>
		<caom2:geoLocationY>2.0</caom2:geoLocationY>
		<caom2:geoLocationZ>3.0</caom2:geoLocationZ>
		<caom2:keywords>words key telescope</caom2:keywords>
	  </caom2:telescope>
	  <caom2:instrument>
		<caom2:name>instrument name</caom2:name>
		<caom2:keywords>instrument words key</caom2:keywords>
	  </caom2:instrument>
	  <caom2:planes>
		<caom2:plane caom2:id="00000000-0000-0000-f768-41feaaab4bbc" caom2:lastModified="2016-11-23T13:35:24.404">
		  <caom2:productID>productID</caom2:productID>
		  <caom2:metaRelease>2016-11-22T12:26:21.000</caom2:metaRelease>
		  <caom2:dataRelease>2018-01-01T00:00:00.000</caom2:dataRelease>
		  <caom2:dataProductType>image</caom2:dataProductType>
		  <caom2:calibrationLevel>3</caom2:calibrationLevel>
		  <caom2:provenance>
			<caom2:name>name</caom2:name>
			<caom2:version>version</caom2:version>
			<caom2:producer>producer</caom2:producer>
			<caom2:runID>run_id</caom2:runID>
			<caom2:reference>http://foo/bar</caom2:reference>
			<caom2:lastExecuted>2016-11-22T12:28:16.000</caom2:lastExecuted>
			<caom2:keywords>provenance words key</caom2:keywords>
		  </caom2:provenance>
		  <caom2:metrics>
			<caom2:sourceNumberDensity>1.0</caom2:sourceNumberDensity>
			<caom2:background>2.0</caom2:background>
			<caom2:backgroundStddev>3.0</caom2:backgroundStddev>
			<caom2:fluxDensityLimit>4.0</caom2:fluxDensityLimit>
			<caom2:magLimit>5.0</caom2:magLimit>
		  </caom2:metrics>
		  <caom2:artifacts>
			<caom2:artifact caom2:id="00000000-0000-0000-d905-41feaaab4ca0" caom2:lastModified="2016-11-23T13:35:24.404">
			  <caom2:uri>uri:foo/bar</caom2:uri>
			  <caom2:productType>science</caom2:productType>
			  <caom2:releaseType>meta</caom2:releaseType>
			  <caom2:contentType>application/fits</caom2:contentType>
			  <caom2:contentLength>12345</caom2:contentLength>
			  <caom2:parts>
				<caom2:part caom2:id="00000000-0000-0000-909d-41feaaab4d2d" caom2:lastModified="2016-11-23T13:35:24.405">
				  <caom2:name>name</caom2:name>
				  <caom2:productType>science</caom2:productType>
				  <caom2:chunks>
					<caom2:chunk caom2:id="00000000-0000-0000-2ef1-41feaaab4d74" caom2:lastModified="2016-11-23T13:35:24.405">
					  <caom2:productType>science</caom2:productType>
					  <caom2:naxis>5</caom2:naxis>
					  <caom2:observableAxis>1</caom2:observableAxis>
					  <caom2:positionAxis1>1</caom2:positionAxis1>
					  <caom2:positionAxis2>2</caom2:positionAxis2>
					  <caom2:energyAxis>3</caom2:energyAxis>
					  <caom2:timeAxis>4</caom2:timeAxis>
					  <caom2:polarizationAxis>5</caom2:polarizationAxis>
					  <caom2:observable>
						<caom2:dependent>
						  <caom2:axis>
							<caom2:ctype>observable_ctype</caom2:ctype>
							<caom2:cunit>observable_cunit</caom2:cunit>
						  </caom2:axis>
						  <caom2:bin>1</caom2:bin>
						</caom2:dependent>
					  </caom2:observable>
					  <caom2:position>
						<caom2:axis>
						  <caom2:axis1>
							<caom2:ctype>position_ctype_1</caom2:ctype>
							<caom2:cunit>position_cunit_1</caom2:cunit>
						  </caom2:axis1>
						  <caom2:axis2>
							<caom2:ctype>position_ctype_2</caom2:ctype>
							<caom2:cunit>position_cunit_2</caom2:cunit>
						  </caom2:axis2>
						</caom2:axis>
						<caom2:coordsys>position coordsys</caom2:coordsys>
						<caom2:equinox>2000.0</caom2:equinox>
						<caom2:resolution>0.5</caom2:resolution>
					  </caom2:position>
					  <caom2:energy>
						<caom2:axis>
						  <caom2:axis>
							<caom2:ctype>energy_ctype</caom2:ctype>
							<caom2:cunit>energy_cunit</caom2:cunit>
						  </caom2:axis>
						</caom2:axis>
						<caom2:specsys>specsys</caom2:specsys>
						<caom2:ssysobs>ssysobs</caom2:ssysobs>
						<caom2:ssyssrc>ssyssrc</caom2:ssyssrc>
						<caom2:restfrq>1.0</caom2:restfrq>
						<caom2:restwav>2.0</caom2:restwav>
						<caom2:velosys>3.0</caom2:velosys>
						<caom2:zsource>4.0</caom2:zsource>
						<caom2:velang>5.0</caom2:velang>
						<caom2:transition>
						  <caom2:species>H</caom2:species>
						  <caom2:transition>21cm</caom2:transition>
						</caom2:transition>
					  </caom2:energy>
					  <caom2:time>
						<caom2:axis>
						  <caom2:axis>
							<caom2:ctype>time_ctype</caom2:ctype>
							<caom2:cunit>time_cunit</caom2:cunit>
						  </caom2:axis>
						</caom2:axis>
						<caom2:timesys>UTC</caom2:timesys>
						<caom2:trefpos>TOPOCENTER</caom2:trefpos>
						<caom2:mjdref>3.0</caom2:mjdref>
						<caom2:exposure>1.0</caom2:exposure>
						<caom2:resolution>2.0</caom2:resolution>
					  </caom2:time>
					  <caom2:polarization>
						<caom2:axis>
						  <caom2:axis>
							<caom2:ctype>STOKES</caom2:ctype>
						  </caom2:axis>
						  <caom2:function>
							<caom2:naxis>4</caom2:naxis>
							<caom2:delta>1.0</caom2:delta>
							<caom2:refCoord>
							  <caom2:pix>1.0</caom2:pix>
							  <caom2:val>1.0</caom2:val>
							</caom2:refCoord>
						  </caom2:function>
						</caom2:axis>
					  </caom2:polarization>
					</caom2:chunk>
				  </caom2:chunks>
				</caom2:part>
			  </caom2:parts>
			</caom2:artifact>
		  </caom2:artifacts>
		</caom2:plane>
	  </caom2:planes>
	</caom2:Observation>

            

Raw data

            {
    "_id": null,
    "home_page": "http://www.cadc-ccda.hia-iha.nrc-cnrc.gc.ca/caom2",
    "name": "caom2",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<4,>=3.8",
    "maintainer_email": null,
    "keywords": null,
    "author": "Canadian Astronomy Data Centre",
    "author_email": "cadc@nrc-cnrc.gc.ca",
    "download_url": "https://files.pythonhosted.org/packages/5c/9f/504ddb19283c5a915ad2263ebe72a029c1ca7e8a759ddb94e22c2c261931/caom2-2.6.1.tar.gz",
    "platform": null,
    "description": "caom2\n=====\n\n.. image:: https://img.shields.io/pypi/v/caom2.svg   \n    :target: https://pypi.python.org/pypi/caom2\n\nCommon Archive Observation Model - data engineering tools\n\ncaom2 module\n\nThe caom2 module is a library implementing the Common Archive\nObservation Model (CAOM-2.3) for manipulating CAOM observations and\nreading and writing XML documents.\n\nhttp://www.opencadc.org/caom2/\n\nTo create a minimal Simple Observation\n--------------------------------------\n\n.. code:: python\n\n        import sys\n        from caom2 import SimpleObservation, TypedOrderedDict, Plane, Artifact,\\\n                          Part, Chunk, ObservationWriter, ProductType,\\\n                          ReleaseType, TypedList\n\n        observation = SimpleObservation('collection', 'observationID')\n\n        observation.planes = TypedOrderedDict(Plane)\n        plane = Plane('productID')\n        observation.planes['productID'] = plane\n\n        plane.artifacts = TypedOrderedDict(Artifact)\n        artifact = Artifact('uri:foo/bar', ProductType.SCIENCE, ReleaseType.META)\n        plane.artifacts['uri:foo/bar'] = artifact\n\n        artifact.parts = TypedOrderedDict(Part)\n        part = Part('name')\n        artifact.parts['name'] = part\n\n        part.chunks = TypedList(Chunk)\n        chunk = Chunk()\n        part.chunks.append(chunk)\n\n        writer = ObservationWriter()\n        writer.write(observation, sys.stdout)\n\nThe output:\n\n.. code:: xml\n\n    <?xml version='1.0' encoding='UTF-8'?>\n    <caom2:Observation xmlns:caom2=\"http://www.opencadc.org/caom2/xml/v2.3\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"caom2:SimpleObservation\" caom2:id=\"00000000-0000-0000-3d6a-420eab45bf2e\" caom2:lastModified=\"2016-11-24T08:40:54.003\">\n      <caom2:collection>collection</caom2:collection>\n      <caom2:observationID>observationID</caom2:observationID>\n      <caom2:algorithm>\n        <caom2:name>exposure</caom2:name>\n      </caom2:algorithm>\n      <caom2:planes>\n        <caom2:plane caom2:id=\"00000000-0000-0000-1fe6-420eab45c0bc\" caom2:lastModified=\"2016-11-24T08:40:54.003\">\n          <caom2:productID>productID</caom2:productID>\n          <caom2:artifacts>\n            <caom2:artifact caom2:id=\"00000000-0000-0000-7adf-420eab45c170\" caom2:lastModified=\"2016-11-24T08:40:54.004\">\n              <caom2:uri>uri:foo/bar</caom2:uri>\n              <caom2:productType>science</caom2:productType>\n              <caom2:releaseType>meta</caom2:releaseType>\n              <caom2:parts>\n                <caom2:part caom2:id=\"00000000-0000-0000-16f0-420eab45c246\" caom2:lastModified=\"2016-11-24T08:40:54.004\">\n                  <caom2:name>name</caom2:name>\n                  <caom2:chunks>\n                    <caom2:chunk caom2:id=\"00000000-0000-0000-0c8f-420eab45c2a1\" caom2:lastModified=\"2016-11-24T08:40:54.004\"/>\n                  </caom2:chunks>\n                </caom2:part>\n              </caom2:parts>\n            </caom2:artifact>\n          </caom2:artifacts>\n        </caom2:plane>\n      </caom2:planes>\n    </caom2:Observation>\n\nTo create a complete Observation\n--------------------------------------\n\n.. code:: python\n\n    # make it compatible with Python 2 and 3\n    from __future__ import (absolute_import, division, print_function,\n                        unicode_literals)\n    from datetime import datetime\n    import sys\n    from caom2 import SimpleObservation, Plane, Artifact, Part, Chunk,\\\n                      TypedOrderedDict, ObservationWriter, ProductType, \\\n                      ReleaseType, TypedList, Target, TargetPosition, \\\n                      TargetType, ObservationIntentType, Instrument, \\\n                      Telescope, Environment, DataProductType, Provenance, \\\n                      CalibrationLevel, Metrics, Proposal, Point, Slice, Axis,\\\n                      ObservableAxis, CoordAxis1D, CoordAxis2D, SpatialWCS,\\\n                      SpectralWCS, EnergyTransition, TemporalWCS, CoordFunction1D,\\\n                      RefCoord, PolarizationWCS\n\n    observation = SimpleObservation('collection', 'observationID')\n    observation.obs_type = 'flat'\n    observation.intent = ObservationIntentType.SCIENCE\n    observation.meta_release = datetime(2016, 11, 22, 11, 53, 44, 0)\n\n    observation.proposal = Proposal('proposal id')\n    observation.proposal.pi_name = 'pi name'\n    observation.proposal.project = 'proposal project'\n    observation.proposal.title = 'proposal title'\n    observation.proposal.keywords.update({'proposal', 'key', 'words'})\n\n    observation.target = Target('target name')\n    observation.target.target_type = TargetType.OBJECT\n    observation.target.standard = False\n    observation.target.redshift = 1.5\n    observation.target.keywords.update({'target', 'key', 'words'})\n\n    point = Point(1.0, 2.0)\n    observation.target_position = TargetPosition(point, 'coordsys')\n    observation.target_position.equinox = 3.0\n\n    observation.telescope = Telescope('telescope name')\n    observation.telescope.geo_location_x = 1.0\n    observation.telescope.geo_location_y = 2.0\n    observation.telescope.geo_location_z = 3.0\n    observation.telescope.keywords.update({'telescope', 'key', 'words'})\n\n    observation.instrument = Instrument('instrument name')\n    observation.instrument.keywords.update({'instrument', 'key', 'words'})\n\n    observation.env = Environment()\n    observation.env.seeing = 0.08\n    observation.env.humidity = 0.35\n    observation.env.elevation = 2.7\n    observation.env.tau = 0.7\n    observation.env.wavelength_tau = 450e-6\n    observation.env.ambient_temp = 20.0\n    observation.env.photometric = True\n\n    observation.planes = TypedOrderedDict(Plane)\n    plane = Plane('productID')\n    observation.planes['productID'] = plane\n\n    plane.meta_release = datetime(2016, 11, 22, 12, 26, 21, 0)\n    plane.data_release = datetime(2018, 01, 01, 00, 00, 00, 0)\n    plane.data_product_type = DataProductType.IMAGE\n    plane.calibration_level = CalibrationLevel.PRODUCT\n\n    plane.provenance = provenance = Provenance('name')\n    plane.provenance.version = 'version'\n    plane.provenance.product = 'product'\n    plane.provenance.producer = 'producer'\n    plane.provenance.run_id = 'run_id'\n    plane.provenance.reference = 'http://foo/bar'\n    plane.provenance.last_executed = datetime(2016, 11, 22, 12, 28, 16, 0)\n    plane.provenance.keywords.update({'provenance', 'key', 'words'})\n\n    plane.metrics = Metrics()\n    plane.metrics.source_number_density = 1.0\n    plane.metrics.background = 2.0\n    plane.metrics.background_std_dev = 3.0\n    plane.metrics.flux_density_limit = 4.0\n    plane.metrics.mag_limit = 5.0\n\n    plane.artifacts = TypedOrderedDict(Artifact)\n    artifact = Artifact('uri:foo/bar', ProductType.SCIENCE, ReleaseType.META)\n    plane.artifacts['uri:foo/bar'] = artifact\n\n    artifact.content_type = 'application/fits'\n    artifact.content_length = 12345L\n\n    artifact.parts = TypedOrderedDict(Part)\n    part = Part('name')\n    artifact.parts['name'] = part\n    part.product_type = ProductType.SCIENCE\n\n    part.chunks = TypedList(Chunk)\n    chunk = Chunk()\n    part.chunks.append(chunk)\n\n    chunk.product_type = ProductType.SCIENCE\n    chunk.naxis = 5\n    chunk.observable_axis = 1\n    chunk.position_axis_1 = 1\n    chunk.position_axis_2 = 2\n    chunk.energy_axis = 3\n    chunk.time_axis = 4\n    chunk.polarization_axis = 5\n\n    observable_axis = Slice(Axis('observable_ctype', 'observable_cunit'), 1L)\n    chunk.observable = ObservableAxis(observable_axis)\n\n    position_axis = CoordAxis2D(Axis('position_ctype_1', 'position_cunit_1'),\n                                Axis('position_ctype_2', 'position_cunit_2'))\n    chunk.position = SpatialWCS(position_axis)\n    chunk.position.coordsys = 'position coordsys'\n    chunk.position.equinox = 2000.0\n    chunk.position.resolution = 0.5\n\n    energy_axis = CoordAxis1D(Axis('energy_ctype', 'energy_cunit'))\n    chunk.energy = SpectralWCS(energy_axis, 'specsys')\n    chunk.energy.ssysobs = 'ssysobs'\n    chunk.energy.ssyssrc = 'ssyssrc'\n    chunk.energy.restfrq = 1.0\n    chunk.energy.restwav = 2.0\n    chunk.energy.velosys = 3.0\n    chunk.energy.zsource = 4.0\n    chunk.energy.velang = 5.0\n    chunk.energy.bandpassName = 'bandpass name'\n    chunk.energy.resolvingPower = 6.0\n    chunk.energy.transition = EnergyTransition('H', '21cm')\n\n    time_axis = CoordAxis1D(Axis('time_ctype', 'time_cunit'))\n    chunk.time = TemporalWCS(time_axis)\n    chunk.time.exposure = 1.0\n    chunk.time.resolution = 2.0\n    chunk.time.timesys = 'UTC'\n    chunk.time.trefpos = 'TOPOCENTER'\n    chunk.time.mjdref = 3.0\n\n    polarization_axis = CoordAxis1D(Axis('STOKES'))\n    polarization_axis.function = CoordFunction1D(4L, 1.0, RefCoord(1.0, 1.0))\n    chunk.polarization = PolarizationWCS(polarization_axis)\n\n    writer = ObservationWriter()\n    writer.write(observation, sys.stdout)\n\nThe output:\n\n.. code:: xml\n\n\t<?xml version='1.0' encoding='UTF-8'?>\n\t<caom2:Observation xmlns:caom2=\"http://www.opencadc.org/caom2/xml/v2.3\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"caom2:SimpleObservation\" caom2:id=\"00000000-0000-0000-21ae-41feaaab49f6\" caom2:lastModified=\"2016-11-23T13:35:24.404\">\n\t  <caom2:collection>collection</caom2:collection>\n\t  <caom2:observationID>observationID</caom2:observationID>\n\t  <caom2:metaRelease>2016-11-22T11:53:44.000</caom2:metaRelease>\n\t  <caom2:algorithm>\n\t\t<caom2:name>exposure</caom2:name>\n\t  </caom2:algorithm>\n\t  <caom2:type>flat</caom2:type>\n\t  <caom2:intent>science</caom2:intent>\n\t  <caom2:proposal>\n\t\t<caom2:id>proposal id</caom2:id>\n\t\t<caom2:pi>pi name</caom2:pi>\n\t\t<caom2:project>proposal project</caom2:project>\n\t\t<caom2:title>proposal title</caom2:title>\n\t\t<caom2:keywords>proposal words key</caom2:keywords>\n\t  </caom2:proposal>\n\t  <caom2:target>\n\t\t<caom2:name>target name</caom2:name>\n\t\t<caom2:type>object</caom2:type>\n\t\t<caom2:standard>false</caom2:standard>\n\t\t<caom2:redshift>1.5</caom2:redshift>\n\t\t<caom2:keywords>words key target</caom2:keywords>\n\t  </caom2:target>\n\t  <caom2:targetPosition>\n\t\t<caom2:coordsys>coordsys</caom2:coordsys>\n\t\t<caom2:equinox>3.0</caom2:equinox>\n\t\t<caom2:coordinates>\n\t\t  <caom2:cval1>1.0</caom2:cval1>\n\t\t  <caom2:cval2>2.0</caom2:cval2>\n\t\t</caom2:coordinates>\n\t  </caom2:targetPosition>\n\t  <caom2:telescope>\n\t\t<caom2:name>telescope name</caom2:name>\n\t\t<caom2:geoLocationX>1.0</caom2:geoLocationX>\n\t\t<caom2:geoLocationY>2.0</caom2:geoLocationY>\n\t\t<caom2:geoLocationZ>3.0</caom2:geoLocationZ>\n\t\t<caom2:keywords>words key telescope</caom2:keywords>\n\t  </caom2:telescope>\n\t  <caom2:instrument>\n\t\t<caom2:name>instrument name</caom2:name>\n\t\t<caom2:keywords>instrument words key</caom2:keywords>\n\t  </caom2:instrument>\n\t  <caom2:planes>\n\t\t<caom2:plane caom2:id=\"00000000-0000-0000-f768-41feaaab4bbc\" caom2:lastModified=\"2016-11-23T13:35:24.404\">\n\t\t  <caom2:productID>productID</caom2:productID>\n\t\t  <caom2:metaRelease>2016-11-22T12:26:21.000</caom2:metaRelease>\n\t\t  <caom2:dataRelease>2018-01-01T00:00:00.000</caom2:dataRelease>\n\t\t  <caom2:dataProductType>image</caom2:dataProductType>\n\t\t  <caom2:calibrationLevel>3</caom2:calibrationLevel>\n\t\t  <caom2:provenance>\n\t\t\t<caom2:name>name</caom2:name>\n\t\t\t<caom2:version>version</caom2:version>\n\t\t\t<caom2:producer>producer</caom2:producer>\n\t\t\t<caom2:runID>run_id</caom2:runID>\n\t\t\t<caom2:reference>http://foo/bar</caom2:reference>\n\t\t\t<caom2:lastExecuted>2016-11-22T12:28:16.000</caom2:lastExecuted>\n\t\t\t<caom2:keywords>provenance words key</caom2:keywords>\n\t\t  </caom2:provenance>\n\t\t  <caom2:metrics>\n\t\t\t<caom2:sourceNumberDensity>1.0</caom2:sourceNumberDensity>\n\t\t\t<caom2:background>2.0</caom2:background>\n\t\t\t<caom2:backgroundStddev>3.0</caom2:backgroundStddev>\n\t\t\t<caom2:fluxDensityLimit>4.0</caom2:fluxDensityLimit>\n\t\t\t<caom2:magLimit>5.0</caom2:magLimit>\n\t\t  </caom2:metrics>\n\t\t  <caom2:artifacts>\n\t\t\t<caom2:artifact caom2:id=\"00000000-0000-0000-d905-41feaaab4ca0\" caom2:lastModified=\"2016-11-23T13:35:24.404\">\n\t\t\t  <caom2:uri>uri:foo/bar</caom2:uri>\n\t\t\t  <caom2:productType>science</caom2:productType>\n\t\t\t  <caom2:releaseType>meta</caom2:releaseType>\n\t\t\t  <caom2:contentType>application/fits</caom2:contentType>\n\t\t\t  <caom2:contentLength>12345</caom2:contentLength>\n\t\t\t  <caom2:parts>\n\t\t\t\t<caom2:part caom2:id=\"00000000-0000-0000-909d-41feaaab4d2d\" caom2:lastModified=\"2016-11-23T13:35:24.405\">\n\t\t\t\t  <caom2:name>name</caom2:name>\n\t\t\t\t  <caom2:productType>science</caom2:productType>\n\t\t\t\t  <caom2:chunks>\n\t\t\t\t\t<caom2:chunk caom2:id=\"00000000-0000-0000-2ef1-41feaaab4d74\" caom2:lastModified=\"2016-11-23T13:35:24.405\">\n\t\t\t\t\t  <caom2:productType>science</caom2:productType>\n\t\t\t\t\t  <caom2:naxis>5</caom2:naxis>\n\t\t\t\t\t  <caom2:observableAxis>1</caom2:observableAxis>\n\t\t\t\t\t  <caom2:positionAxis1>1</caom2:positionAxis1>\n\t\t\t\t\t  <caom2:positionAxis2>2</caom2:positionAxis2>\n\t\t\t\t\t  <caom2:energyAxis>3</caom2:energyAxis>\n\t\t\t\t\t  <caom2:timeAxis>4</caom2:timeAxis>\n\t\t\t\t\t  <caom2:polarizationAxis>5</caom2:polarizationAxis>\n\t\t\t\t\t  <caom2:observable>\n\t\t\t\t\t\t<caom2:dependent>\n\t\t\t\t\t\t  <caom2:axis>\n\t\t\t\t\t\t\t<caom2:ctype>observable_ctype</caom2:ctype>\n\t\t\t\t\t\t\t<caom2:cunit>observable_cunit</caom2:cunit>\n\t\t\t\t\t\t  </caom2:axis>\n\t\t\t\t\t\t  <caom2:bin>1</caom2:bin>\n\t\t\t\t\t\t</caom2:dependent>\n\t\t\t\t\t  </caom2:observable>\n\t\t\t\t\t  <caom2:position>\n\t\t\t\t\t\t<caom2:axis>\n\t\t\t\t\t\t  <caom2:axis1>\n\t\t\t\t\t\t\t<caom2:ctype>position_ctype_1</caom2:ctype>\n\t\t\t\t\t\t\t<caom2:cunit>position_cunit_1</caom2:cunit>\n\t\t\t\t\t\t  </caom2:axis1>\n\t\t\t\t\t\t  <caom2:axis2>\n\t\t\t\t\t\t\t<caom2:ctype>position_ctype_2</caom2:ctype>\n\t\t\t\t\t\t\t<caom2:cunit>position_cunit_2</caom2:cunit>\n\t\t\t\t\t\t  </caom2:axis2>\n\t\t\t\t\t\t</caom2:axis>\n\t\t\t\t\t\t<caom2:coordsys>position coordsys</caom2:coordsys>\n\t\t\t\t\t\t<caom2:equinox>2000.0</caom2:equinox>\n\t\t\t\t\t\t<caom2:resolution>0.5</caom2:resolution>\n\t\t\t\t\t  </caom2:position>\n\t\t\t\t\t  <caom2:energy>\n\t\t\t\t\t\t<caom2:axis>\n\t\t\t\t\t\t  <caom2:axis>\n\t\t\t\t\t\t\t<caom2:ctype>energy_ctype</caom2:ctype>\n\t\t\t\t\t\t\t<caom2:cunit>energy_cunit</caom2:cunit>\n\t\t\t\t\t\t  </caom2:axis>\n\t\t\t\t\t\t</caom2:axis>\n\t\t\t\t\t\t<caom2:specsys>specsys</caom2:specsys>\n\t\t\t\t\t\t<caom2:ssysobs>ssysobs</caom2:ssysobs>\n\t\t\t\t\t\t<caom2:ssyssrc>ssyssrc</caom2:ssyssrc>\n\t\t\t\t\t\t<caom2:restfrq>1.0</caom2:restfrq>\n\t\t\t\t\t\t<caom2:restwav>2.0</caom2:restwav>\n\t\t\t\t\t\t<caom2:velosys>3.0</caom2:velosys>\n\t\t\t\t\t\t<caom2:zsource>4.0</caom2:zsource>\n\t\t\t\t\t\t<caom2:velang>5.0</caom2:velang>\n\t\t\t\t\t\t<caom2:transition>\n\t\t\t\t\t\t  <caom2:species>H</caom2:species>\n\t\t\t\t\t\t  <caom2:transition>21cm</caom2:transition>\n\t\t\t\t\t\t</caom2:transition>\n\t\t\t\t\t  </caom2:energy>\n\t\t\t\t\t  <caom2:time>\n\t\t\t\t\t\t<caom2:axis>\n\t\t\t\t\t\t  <caom2:axis>\n\t\t\t\t\t\t\t<caom2:ctype>time_ctype</caom2:ctype>\n\t\t\t\t\t\t\t<caom2:cunit>time_cunit</caom2:cunit>\n\t\t\t\t\t\t  </caom2:axis>\n\t\t\t\t\t\t</caom2:axis>\n\t\t\t\t\t\t<caom2:timesys>UTC</caom2:timesys>\n\t\t\t\t\t\t<caom2:trefpos>TOPOCENTER</caom2:trefpos>\n\t\t\t\t\t\t<caom2:mjdref>3.0</caom2:mjdref>\n\t\t\t\t\t\t<caom2:exposure>1.0</caom2:exposure>\n\t\t\t\t\t\t<caom2:resolution>2.0</caom2:resolution>\n\t\t\t\t\t  </caom2:time>\n\t\t\t\t\t  <caom2:polarization>\n\t\t\t\t\t\t<caom2:axis>\n\t\t\t\t\t\t  <caom2:axis>\n\t\t\t\t\t\t\t<caom2:ctype>STOKES</caom2:ctype>\n\t\t\t\t\t\t  </caom2:axis>\n\t\t\t\t\t\t  <caom2:function>\n\t\t\t\t\t\t\t<caom2:naxis>4</caom2:naxis>\n\t\t\t\t\t\t\t<caom2:delta>1.0</caom2:delta>\n\t\t\t\t\t\t\t<caom2:refCoord>\n\t\t\t\t\t\t\t  <caom2:pix>1.0</caom2:pix>\n\t\t\t\t\t\t\t  <caom2:val>1.0</caom2:val>\n\t\t\t\t\t\t\t</caom2:refCoord>\n\t\t\t\t\t\t  </caom2:function>\n\t\t\t\t\t\t</caom2:axis>\n\t\t\t\t\t  </caom2:polarization>\n\t\t\t\t\t</caom2:chunk>\n\t\t\t\t  </caom2:chunks>\n\t\t\t\t</caom2:part>\n\t\t\t  </caom2:parts>\n\t\t\t</caom2:artifact>\n\t\t  </caom2:artifacts>\n\t\t</caom2:plane>\n\t  </caom2:planes>\n\t</caom2:Observation>\n",
    "bugtrack_url": null,
    "license": "AGPLv3",
    "summary": "CAOM-2.4 library",
    "version": "2.6.1",
    "project_urls": {
        "Homepage": "http://www.cadc-ccda.hia-iha.nrc-cnrc.gc.ca/caom2"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "93a22c683f287a4e8454a5799061ee18647e6d2bbb48b9b57651ef941a5038d0",
                "md5": "c03e2eb1923bf00c080b6aa614f286c1",
                "sha256": "de0f274962b614404d56f4e9b851c7f3c4c1dd23f2f3a54d6466bbd63bc971b6"
            },
            "downloads": -1,
            "filename": "caom2-2.6.1-py2.py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "c03e2eb1923bf00c080b6aa614f286c1",
            "packagetype": "bdist_wheel",
            "python_version": "py2.py3",
            "requires_python": "<4,>=3.8",
            "size": 219626,
            "upload_time": "2024-05-17T00:27:54",
            "upload_time_iso_8601": "2024-05-17T00:27:54.601171Z",
            "url": "https://files.pythonhosted.org/packages/93/a2/2c683f287a4e8454a5799061ee18647e6d2bbb48b9b57651ef941a5038d0/caom2-2.6.1-py2.py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "5c9f504ddb19283c5a915ad2263ebe72a029c1ca7e8a759ddb94e22c2c261931",
                "md5": "004b32befbef3a9484e11904fa0b55d6",
                "sha256": "993cabbf1c092b13ab7b28e5786587afbe6e9b6a3f893cc42dffbd6f0233f06c"
            },
            "downloads": -1,
            "filename": "caom2-2.6.1.tar.gz",
            "has_sig": false,
            "md5_digest": "004b32befbef3a9484e11904fa0b55d6",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<4,>=3.8",
            "size": 167361,
            "upload_time": "2024-05-17T00:27:57",
            "upload_time_iso_8601": "2024-05-17T00:27:57.438012Z",
            "url": "https://files.pythonhosted.org/packages/5c/9f/504ddb19283c5a915ad2263ebe72a029c1ca7e8a759ddb94e22c2c261931/caom2-2.6.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-05-17 00:27:57",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "caom2"
}
        
Elapsed time: 0.66781s