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"
}