From 804eca0f1794964acae09e3fb840fef35ac941c1 Mon Sep 17 00:00:00 2001 From: Somia FLORET Date: Thu, 14 Sep 2023 16:13:24 +0200 Subject: [PATCH 01/15] added mivot_block feature --- astropy/io/votable/exceptions.py | 14 + .../tests/data/mivot_annnotated_table.xml | 439 ++ .../data/mivot_block_custom_datatype.xml | 287 ++ .../io/votable/tests/data/test.order.out.xml | 25 + astropy/io/votable/tests/data/test.order.xml | 25 + astropy/io/votable/tests/test_tree.py | 301 +- astropy/io/votable/tree.py | 196 +- astropy/utils/xml/writer.py | 9 + examples/mivotblock/test.7.ko.xml | 3761 +++++++++++++++++ examples/mivotblock/test.7.out.xml | 13 + examples/mivotblock/test.7.xml | 3761 +++++++++++++++++ examples/mivotblock/test_7_votable_pointer.py | 70 + 12 files changed, 8896 insertions(+), 5 deletions(-) create mode 100644 astropy/io/votable/tests/data/mivot_annnotated_table.xml create mode 100644 astropy/io/votable/tests/data/mivot_block_custom_datatype.xml create mode 100644 astropy/io/votable/tests/data/test.order.out.xml create mode 100644 astropy/io/votable/tests/data/test.order.xml create mode 100644 examples/mivotblock/test.7.ko.xml create mode 100644 examples/mivotblock/test.7.out.xml create mode 100644 examples/mivotblock/test.7.xml create mode 100644 examples/mivotblock/test_7_votable_pointer.py diff --git a/astropy/io/votable/exceptions.py b/astropy/io/votable/exceptions.py index 610c80e6518..169c6fe7ae4 100644 --- a/astropy/io/votable/exceptions.py +++ b/astropy/io/votable/exceptions.py @@ -255,6 +255,12 @@ class VOTableSpecWarning(VOWarning, SyntaxWarning): """ +class ModelMappingSpecWarning(VOWarning, SyntaxWarning): + """ + The input model mapping XML mapping block violates the spec. + """ + + class UnimplementedWarning(VOWarning, SyntaxWarning): """ A feature of the VOTABLE_ spec is not implemented. @@ -1524,6 +1530,14 @@ class E25(VOTableSpecWarning): message_template = "No FIELDs are defined; DATA section will be ignored." +class E26(VOTableSpecError): + """ + The mapping block can only be set in a type=meta RESOURCE. + """ + + message_template = "Mapping block can not be set in a RESOURCE with type=result " + + def _get_warning_and_exception_classes(prefix): classes = [] for key, val in globals().items(): diff --git a/astropy/io/votable/tests/data/mivot_annnotated_table.xml b/astropy/io/votable/tests/data/mivot_annnotated_table.xml new file mode 100644 index 00000000000..901b99848d2 --- /dev/null +++ b/astropy/io/votable/tests/data/mivot_annnotated_table.xml @@ -0,0 +1,439 @@ + + + + This schema contains data re-published from the official + Gaia mirrors (such as ivo://uni-heidelberg.de/gaia/tap) + either to + support combining its data with local tables (the various Xlite tables) + or to make the data more accessible to VO + clients (e.g., epoch fluxes). + + Other Gaia-related data is found in, among others, the gdr3mock, + gdr3spec, gedr3auto, gedr3dist, + gedr3mock, and gedr3spur schemas. + + + + + + + This schema contains data re-published from the official Gaia mirrors +(such as ivo://uni-heidelberg.de/gaia/tap) either to support combining +its data with local tables (the various Xlite tables) or to make the +data more accessible to VO clients (e.g., epoch fluxes). + +Other Gaia-related data is found in, among others, the gdr3mock, +gdr3spec, gedr3auto, gedr3dist, gedr3mock, and gedr3spur schemas. + If you use public Gaia DR3 data in a paper, please take note of +`ESAC's guide`_ on how to acknowledge and cite it. + +.. _ESAC's guide: +https://gea.esac.esa.int/archive/documentation/GDR3/Miscellaneous/sec_credit_and_citation_instructions/ + This is gaia_source from the Gaia Data Release 3, stripped to just +enough columns to enable basic science (but therefore a bit faster and +simpler to deal with than the full gaia_source table). + +Note that on this server, there is also The gedr3dist.main, which +gives distances computed by Bailer-Jones et al. Use these in +preference to working with the raw parallaxes. + +This server also carries the gedr3mock schema containing a simulation +of gaia_source based on a state-of-the-art galaxy model, computed by +Rybizki et al. + +The full DR3 is available from numerous places in the VO (in +particular from the TAP services ivo://uni-heidelberg.de/gaia/tap and +ivo://esavo/gaia/tap). + Query successful + For advice on how to cite the resource(s) that contributed to this result, see http://dc.zah.uni-heidelberg.de/tableinfo/gaia.dr3lite#ti-citing + More information on a resource that contributed to this data is found at http://dc.zah.uni-heidelberg.de/tableinfo/gaia.dr3lite + + + + + + + hand-made mapping + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This is gaia_source from the Gaia Data Release 3, stripped to just + enough columns to enable basic science + (but therefore a bit faster and + simpler to deal with than the full gaia_source table). + + Note that on this server, there + is + also The gedr3dist.main, which + gives distances computed by Bailer-Jones et al. Use these in + preference to working + with the + raw parallaxes. + + This server also carries the gedr3mock schema containing a simulation + of gaia_source based on a + state-of-the-art galaxy model, computed by + Rybizki et al. + + The full DR3 is available from numerous places in the VO (in + particular from the TAP services ivo://uni-heidelberg.de/gaia/tap and + ivo://esavo/gaia/tap). + + + + For the contents of Gaia DR3, + the source ID consists of a 64-bit integer, least + significant bit = 1 and + most + significant bit = 64, comprising: + + * a HEALPix index number (sky pixel) in bits 36 - 63; by definition the + smallest + HEALPix index number is zero. + * a 3-bit Data Processing Centre code in bits 33 - 35; for example + MOD(source_id / + 4294967296, 8) can be used to distinguish between + sources initialised via the Initial Gaia Source + List by the Torino DPC + (code = 0) and sources otherwise detected and assigned by Gaia + observations (code > 0) + * a + 25-bit plus 7 bit sequence + number within the HEALPix pixel in bits 1 + to 32 split into: + + * a 25 bit running number in + bits 8 - 32; the running numbers + are + defined to be positive, i.e. never zero (except in the case of forced + empty + windows) + * a 7-bit component number in + bits 1 - 7 + + This means that the HEALpix index level 12 of a given source is + contained + in the most significant bits. + HEALpix index of 12 and lower levels can + thus be retrieved as follows: + + * + HEALpix level 12 = source_id / 34359738368 + * + HEALpix level 11 = source_id / 137438953472 + * HEALpix level 10 = + source_id / 549755813888 + * HEALpix level n = source_id / + 2^35 * 4^(12 - level). + + + + + Gaia DR3 unique source identifier. Note that this *cannot* be matched against the DR1 or DR2 source_ids. + + + + + + + + Mean magnitude in the G band. This is computed from the G-band mean flux applying the magnitude + zero-point + in the Vega scale. To obtain error estimates, see phot_g_mean_flux_over_error. + + + + + + + + Mean magnitude in the integrated RP band. This is computed from the RP-band mean flux applying the + magnitude zero-point in the Vega scale. To obtain error estimates, see phot_rp_mean_flux_over_error. + + + + + + + + Mean magnitude in the integrated BP band. This is computed from the BP-band mean flux applying the + magnitude zero-point in the Vega scale. To obtain error estimates, see phot_bp_mean_flux_over_error. + + + + + + + + + + + + + + + + + + + + + + +
216509215492473292819.63309718.23066321.65443
216509215922651468820.99798220.10654621.16427
+
+
\ No newline at end of file diff --git a/astropy/io/votable/tests/data/mivot_block_custom_datatype.xml b/astropy/io/votable/tests/data/mivot_block_custom_datatype.xml new file mode 100644 index 00000000000..ee8707806ef --- /dev/null +++ b/astropy/io/votable/tests/data/mivot_block_custom_datatype.xml @@ -0,0 +1,287 @@ + + + hand-made mapping + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/astropy/io/votable/tests/data/test.order.out.xml b/astropy/io/votable/tests/data/test.order.out.xml new file mode 100644 index 00000000000..a4d5bc01042 --- /dev/null +++ b/astropy/io/votable/tests/data/test.order.out.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + +
+ + + + + + +
+ + + diff --git a/astropy/io/votable/tests/data/test.order.xml b/astropy/io/votable/tests/data/test.order.xml new file mode 100644 index 00000000000..a4d5bc01042 --- /dev/null +++ b/astropy/io/votable/tests/data/test.order.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + +
+
+ + + + + + +
+ + + diff --git a/astropy/io/votable/tests/test_tree.py b/astropy/io/votable/tests/test_tree.py index 0d02aad00fd..6eb2930cc54 100644 --- a/astropy/io/votable/tests/test_tree.py +++ b/astropy/io/votable/tests/test_tree.py @@ -1,13 +1,14 @@ # Licensed under a 3-clause BSD style license - see LICENSE.rst import io +import os from contextlib import nullcontext import pytest from astropy.io.votable import tree -from astropy.io.votable.exceptions import W07, W08, W21, W41 +from astropy.io.votable.exceptions import E26, W07, W08, W21, W41 from astropy.io.votable.table import parse -from astropy.io.votable.tree import Resource, VOTableFile +from astropy.io.votable.tree import MivotBlock, Resource, VOTableFile from astropy.tests.helper import PYTEST_LT_8_0 from astropy.utils.data import get_pkg_data_filename from astropy.utils.exceptions import AstropyDeprecationWarning @@ -175,3 +176,299 @@ def test_votable_tag(): assert 'xmlns="http://www.ivoa.net/xml/VOTable/v1.3"' in xml assert 'xsi:schemaLocation="http://www.ivoa.net/xml/VOTable/v1.3 ' in xml assert 'http://www.ivoa.net/xml/VOTable/VOTable-1.4.xsd"' in xml + + +def squash_xml(data): + """ + Utility squashing XML fragment to easier their comparison + """ + return data.replace(" ", "").replace("\n", "").replace('"', "").replace("'", "") + + +def test_mivot_constructor(): + """ + Construct a mivot block with wrong tag to test the expected exception + """ + with pytest.raises(ValueError, match="not well-formed"): + MivotBlock( + """ + + Unit test mivot block1 + + + + """ + ) + + +def test_mivot_readout(): + """ + Test the mivot block extraction from a file against a reference block stored in data + """ + votable = parse(get_pkg_data_filename("data/mivot_annnotated_table.xml")) + + ref_data = "" + for resource in votable.resources: + with open( + get_pkg_data_filename("data/mivot_block_custom_datatype.xml") + ) as reference: + ref_data = reference.read() + assert squash_xml(ref_data) == squash_xml(resource.mivot_block.content) + assert len(resource.tables) == 1 + + +def test_mivot_write(): + """ + Build a VOTable, put a mivot block in the first resource, checks it can be retrieved + as well as the following table + """ + vot = tree + mivot_block = MivotBlock( + """ + + Unit test mivot block1 + + + + """ + ) + vtf = vot.VOTableFile() + mivot_resource = Resource() + mivot_resource.type = "meta" + mivot_resource.mivot_block = mivot_block + # pack the meta resource in a top level resource + r1 = vot.Resource() + r1.type = "results" + r1.resources.append(mivot_resource) + vtf.resources.append(r1) + # Push the VOTable in an IOSTream (emulates a disk saving) + buff = io.BytesIO() + vtf.to_xml(buff) + + # Read the IOStream (emulates a disk readout) + buff.seek(0) + vtf2 = parse(buff) + assert len(vtf2.resources) == 1 + for resource in vtf2.resources: + assert squash_xml(mivot_block.content) == squash_xml( + resource.mivot_block.content + ) + assert len(resource.tables) == 0 + + +def test_mivot_write_after_table(): + """ + Build a VOTable, put a mivot block and a table in the first resource, checks it can be retrieved + as well as the following table + """ + vot = tree + mivot_block = MivotBlock( + """ + + Unit test mivot block1 + + + + """ + ) + vtf = vot.VOTableFile() + mivot_resource = Resource() + mivot_resource.type = "meta" + mivot_resource.mivot_block = mivot_block + # pack the meta resource in a top level resource + r1 = vot.Resource() + r1.type = "results" + i1 = vot.Info(name="test_name", value="test_value") + r1.infos.append(i1) + r1.resources.append(mivot_resource) + t1 = vot.Table(vtf) + t1.name = "t1" + r1.tables.append(t1) + vtf.resources.append(r1) + # Push the VOTable in an IOSTream (emulates a disk saving) + buff = io.BytesIO() + vtf.to_xml(buff) + + # Read the IOStream (emulates a disk readout) + buff.seek(0) + vtf2 = parse(buff) + assert len(vtf2.resources) == 1 + for resource in vtf2.resources: + assert squash_xml(mivot_block.content) == squash_xml( + resource.mivot_block.content + ) + assert len(resource.tables) == 1 + + +def test_write_no_mivot(): + """ + Build a VOTable, put an empty mivot block in the first resource, checks it can be retrieved + as well as the following table + """ + vot = tree + vtf = vot.VOTableFile() + mivot_resource = Resource() + mivot_resource.type = "meta" + # pack the meta resource in a top level resource + r1 = vot.Resource() + r1.type = "results" + r1.resources.append(mivot_resource) + t1 = vot.Table(vtf) + t1.name = "t1" + r1.tables.append(t1) + vtf.resources.append(r1) + # Push the VOTable in an IOSTream (emulates a disk saving) + buff = io.BytesIO() + vtf.to_xml(buff) + + # Read the IOStream (emulates a disk readout) + buff.seek(0) + vtf2 = parse(buff) + assert len(vtf2.resources) == 1 + for resource in vtf2.resources: + assert ( + squash_xml(resource.mivot_block.content) + == "NoMivotblock" + ) + assert len(resource.tables) == 1 + + +def test_mivot_write_after_resource(): + """ + Build a VOTable, put a mivot block in the first resource after another meta resource, + checks it can be retrieved as well as the following table + """ + vot = tree + mivot_block = MivotBlock( + """ + + Unit test mivot block1 + + + + """ + ) + vtf = vot.VOTableFile() + mivot_resource = Resource() + mivot_resource.type = "meta" + mivot_resource.mivot_block = mivot_block + # pack the meta resource in a top level resource + r1 = vot.Resource() + r1.type = "results" + i1 = vot.Info(name="test_name", value="test_value") + r1.infos.append(i1) + meta_resource = Resource() + meta_resource.type = "meta" + r1.resources.append(meta_resource) + r1.resources.append(mivot_resource) + t1 = vot.Table(vtf) + t1.name = "t1" + r1.tables.append(t1) + vtf.resources.append(r1) + # Push the VOTable in an IOSTream (emulates a disk saving) + buff = io.BytesIO() + vtf.to_xml(buff) + + # Read the IOStream (emulates a disk readout) + buff.seek(0) + vtf2 = parse(buff) + assert len(vtf2.resources) == 1 + for resource in vtf2.resources: + assert squash_xml(mivot_block.content) == squash_xml( + resource.mivot_block.content + ) + assert len(resource.tables) == 1 + + +def test_mivot_forbidden_write(): + """ + Build a meta resource containing a mivot block, + build the dummy mivot block first. + """ + vot = tree + vtf = vot.VOTableFile() + mivot_block = MivotBlock( + """ + + Unit test mivot block1 + + + """ + ) + # package the MIVOT block in the resource + mivot_resource = Resource() + mivot_resource.type = "results" + try: + # a mivot block must be with "type=meta" + mivot_resource.mivot_block = mivot_block + raise AssertionError() + except E26: + assert True + + +def test_mivot_order(): + """ + Build a VOTable, put a mivot block and a table in the first resource, checks it can be retrieved + as well as the following table + """ + vot = tree + mivot_block = MivotBlock( + """ + + + """ + ) + vtf = vot.VOTableFile() + mivot_resource = Resource() + mivot_resource.type = "meta" + mivot_resource.mivot_block = mivot_block + + mivot_resource2 = Resource() + mivot_resource2.type = "meta" + mivot_resource2.mivot_block = mivot_block + + # R1 : 2 mivot_block and 2 tables + r1 = vot.Resource() + r1.type = "results" + + t1 = vot.Table(vtf) + t1.name = "t1" + t2 = vot.Table(vtf) + t2.name = "t2" + + r1.tables.append(t1) + r1.tables.append(t2) + + r1.resources.append(mivot_resource) + r1.resources.append(mivot_resource2) + + vtf.resources.append(r1) + + # R2 : 1 resource "results", 1 mivot_block and 1 table + r2 = vot.Resource() + r2.type = "results" + + r3 = vot.Resource() + r3.type = "results" + + t3 = vot.Table(vtf) + t3.name = "t3" + r2.tables.append(t3) + r2.resources.append(mivot_resource) + r2.resources.append(r3) + + vtf.resources.append(r2) + + # Push the VOTable in an IOSTream (emulates a disk saving) + buff = io.BytesIO() + vtf.to_xml(buff) + + # Read the IOStream (emulates a disk readout) + buff.seek(0) + vtf2 = parse(buff) + data_path = os.path.dirname(os.path.realpath(__file__)) + vpath = os.path.join(data_path, "data/test.order.xml") + vtf2.to_xml(vpath) + import filecmp + + assert filecmp.cmp("data/test.order.xml", "data/test.order.out.xml") diff --git a/astropy/io/votable/tree.py b/astropy/io/votable/tree.py index b8ec93f7cfb..fb074425541 100644 --- a/astropy/io/votable/tree.py +++ b/astropy/io/votable/tree.py @@ -19,6 +19,7 @@ from astropy.io import fits from astropy.utils.collections import HomogeneousList from astropy.utils.exceptions import AstropyDeprecationWarning +from astropy.utils.xml import iterparser from astropy.utils.xml.writer import XMLWriter from . import converters, util, xmlutil @@ -41,6 +42,7 @@ E22, E23, E25, + E26, W06, W07, W08, @@ -106,6 +108,7 @@ "Resource", "VOTableFile", "Element", + "MivotBlock", ] @@ -3373,6 +3376,157 @@ def iter_info(self): yield from self.infos +class MivotBlock(Element): + """ + Mivot Block holder + Processing VO model views on data is out of the scope of Astropy. + This is why the only VOmodel-related feature implemented here the + extraction or the writing of a mapping block from/to a VOtable + There is no syntax validation other than the allowed tag names. + The mapping block is handled as a correctly indented XML string + which is meant to be parsed by the calling API (e.g. PyVO) + """ + + def __init__(self, content=None): + if content is not None: + self._content = content.strip() + self.check_content_format() + else: + self._content = "" + self._indent_level = 0 + self._on_error = False + + def __str__(self): + return self._content + + def _add_statement(self, start, tag, data, config, pos): + """ + Convert the tag as a string and append it to the mapping + block string with the correct indentation level. + """ + if self._on_error is True: + return + # The first mapping tag () is consumed by the host RESOURCE + # To check that the content is a mapping block. This cannot be done here + # because that RESOURCE might have another content + if self._content == "": + self._content = '\n' + self._indent_level += 1 + + ele_content = "" + if start: + element = "<" + tag + for k, v in data.items(): + element += f" {k}='{v}'" + element += ">\n" + else: + if data: + ele_content = f"{data}\n" + element = f"\n" + + if start is False: + self._indent_level -= 1 + indent = "".join(" " for _ in range(2 * self._indent_level)) + if ele_content: + self._content += indent + " " + ele_content + self._content += indent + element + if start is True: + self._indent_level += 1 + + def _unknown_mapping_tag(self, start, tag, data, config, pos): + """ + In case of unexpected tag, the parsing stops and the mapping block + is set with a REPORT tag telling what went wrong + """ + self._content = f'\n Unknown mivot block statement: {tag}\n' + self._on_error = True + warn_or_raise(W10, W10, tag, config={"verify": "warn"}, pos=pos) + + @property + def content( + self, + ): + """ + The XML mapping block serialized as string. + """ + if self._content == "": + self._content = '\n No Mivot block\n\n' + return self._content + + def parse(self, votable, iterator, config): + """ + Regular parser similar to others VOTable components + """ + self._votable = votable + model_mapping_mapping = { + "VODML": self._add_statement, + "GLOBALS": self._add_statement, + "REPORT": self._add_statement, + "MODEL": self._add_statement, + "TEMPLATES": self._add_statement, + "COLLECTION": self._add_statement, + "INSTANCE": self._add_statement, + "ATTRIBUTE": self._add_statement, + "REFERENCE": self._add_statement, + "JOIN": self._add_statement, + "WHERE": self._add_statement, + "PRIMARY_KEY": self._add_statement, + "FOREIGN_KEY": self._add_statement, + } + for start, tag, data, pos in iterator: + model_mapping_mapping.get(tag, self._unknown_mapping_tag)( + start, tag, data, config, pos + ) + if start is False and tag == "VODML": + break + + del self._votable + + return self + + def to_xml(self, w): + """ + Tell the writer to insert the mivot block in its output stream + """ + w.string_element(self._content) + + def check_content_format( + self, + ): + """ + Check if the content is on xml format by building a VOTable, + putting a mivot block in the first resource and trying to parse the VOTable. + """ + if self._content.startswith("<") is False: + vo_raise(E26) + + in_memory_votable = VOTableFile() + mivot_resource = Resource() + mivot_resource.type = "meta" + mivot_resource.mivot_block = self + # pack the meta resource in a top level resource + result_resource = Resource() + result_resource.type = "results" + result_resource.resources.append(mivot_resource) + data_table = Table(in_memory_votable) + data_table.name = "t1" + result_resource.tables.append(data_table) + in_memory_votable.resources.append(result_resource) + + # Push the VOTable in an IOSTream (emulates a disk saving) + buff = io.BytesIO() + in_memory_votable.to_xml(buff) + + # Read the IOStream (emulates a disk readout) + buff.seek(0) + config = {} + + with iterparser.get_xml_iterator( + buff, _debug_python_based_parser=None + ) as iterator: + return VOTableFile(config=config, pos=(1, 1)).parse(iterator, config) + + class Resource( Element, _IDProperty, _NameProperty, _UtypeProperty, _DescriptionProperty ): @@ -3416,6 +3570,7 @@ def __init__( self._tables = HomogeneousList(Table) self._resources = HomogeneousList(Resource) + self._mivot_block = MivotBlock() warn_unknown_attrs("RESOURCE", kwargs.keys(), config, pos) def __repr__(self): @@ -3444,6 +3599,25 @@ def type(self, type): vo_raise(E18, type, self._config, self._pos) self._type = type + @property + def mivot_block(self): + """ + The XML mapping block serialized as string. + Take the resource mivot block if type=meta + or the mivot block of the first sub-resource (type=meta) having one + """ + if self.type == "results": + for resource in self.resources: + if str(resource._mivot_block).strip() != "": + return resource._mivot_block + return self._mivot_block + + @mivot_block.setter + def mivot_block(self, mivot_block): + if self.type == "results": + vo_raise(E26) + self._mivot_block = mivot_block + @property def extra_attributes(self): """Dictionary of extra attributes of the RESOURCE_ element. @@ -3575,7 +3749,11 @@ def parse(self, votable, iterator, config): } for start, tag, data, pos in iterator: - if start: + # If the resource content starts with VODML, + # the parsing is delegated to the MIVOT parser + if tag == "VODML": + self._mivot_block.parse(votable, iterator, config) + elif start: tag_mapping.get(tag, self._add_unknown_tag)( iterator, tag, data, config, pos ) @@ -3596,18 +3774,30 @@ def to_xml(self, w, **kwargs): with w.tag("RESOURCE", attrib=attrs): if self.description is not None: w.element("DESCRIPTION", self.description, wrap=True) + if self.mivot_block is not None and self.type == "meta": + self.mivot_block.to_xml(w) for element_set in ( self.coordinate_systems, self.time_systems, self.params, self.infos, self.links, - self.tables, - self.resources, ): for element in element_set: element.to_xml(w, **kwargs) + # The mivot_block should be before the table + for elm in self.resources: + if elm.type == "meta" and elm.mivot_block is not None: + elm.to_xml(w, **kwargs) + + for elm in self.tables: + elm.to_xml(w, **kwargs) + + for elm in self.resources: + if elm.type != "meta": + elm.to_xml(w, **kwargs) + def iter_tables(self): """ Recursively iterates over all tables in the resource and diff --git a/astropy/utils/xml/writer.py b/astropy/utils/xml/writer.py index 657f92c057c..96b518a4f25 100644 --- a/astropy/utils/xml/writer.py +++ b/astropy/utils/xml/writer.py @@ -304,6 +304,15 @@ def element(self, tag, text=None, wrap=False, attrib={}, **extra): self.data(text) self.end(indent=False, wrap=wrap) + def string_element(self, xml_string): + """ + Reformat indentations on the xml in order to insert the mivot block + """ + self._flush() + indent = self.get_indentation_spaces() + str_to_write = indent + xml_string.replace("\n", f"\n{indent}").strip() + "\n" + self.write(str_to_write) + def flush(self): pass # replaced by the constructor diff --git a/examples/mivotblock/test.7.ko.xml b/examples/mivotblock/test.7.ko.xml new file mode 100644 index 00000000000..941a6de24a3 --- /dev/null +++ b/examples/mivotblock/test.7.ko.xml @@ -0,0 +1,3761 @@ + + + + Epoch photometry. This table contains light curve data points. Each entry is a photometric flux-time pair for a given object, band and time. It follows the (evolving) VO convention for time series as much as possible. At the time of writing, a VO recommendation has not yet been released. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Source ID + + + Photometric Band + + + + + + + + + + + + + + + + + +
5813181197970338560G
5813181197970338560BP
5813181197970338560RP
+ + +Source Id. A unique single numerical identifier of the source obtained from GaiaSource. + + +Transit unique identifier. For a given object, a transit comprises the different Gaia observations (SM, AF, BP, RP and RVS) obtained for each focal plane crossing. + + +Photometric band. Values: G (per-transit combined SM-AF flux), BP (blue photometer integrated flux) and RP (red photometer integrated flux). + + +Different times are defined for each band. For G, it is the field-of-view transit averaged observation time. For BP and RP, it is the observation time of the BP CCD transit. The units are Barycentric JD (in TCB) in days -2,455,197.5, computed as follows. First the observation time is converted from On-board Mission Time (OBMT) into Julian date in TCB (Temps Coordonnee Barycentrique). Next a correction is applied for the light-travel time to the Solar system barycentre, resulting in Barycentric Julian Date (BJD). Finally, an offset of 2,455,197.5 days is applied (corresponding to a reference time $T_0$ at 2010-01-01T00:00:00) to have a conveniently small numerical value. Although the centroiding time accuracy of the individual CCD observations is (much) below 1~ms (e.g. in BP and RP), the G band observation time is averaged over typically 9 CCD observations taken in a time range of about 44sec. + + +Vega magnitude, computed from the flux applying the zero-point defined in ExtPhotZeroPoint. + + +Band flux value for the transit. For G band, it is a combination of individual SM-AF CCD fluxes. For BP and RP bands, it is an integrated CCD flux. + + +Flux error. If the flux has been rejected or is unavailable, this error will be set to null. + + +Band flux divided by its error. If the flux has been rejected or is unavailable, this field will be set to null. + + +Rejected by DPAC photometry processing. + + +Rejected by DPAC variability processing (or variability analysis). + + +Additional processing flags. This field contains extra information on the data used to compute the fluxes and their quality. It provides debugging information that may be safely ignored for many general purpose applications. The field is a collection of binary flags, whose values can be recovered applying bit shifting and masking operations. Each band has different binary flags in different positions, as shown below. Bit numbering is as follows: least significant bit = 1 and most significant bit = 64 +G band: + Bit 1: SM transit rejected by photometry processing. + Bit 2: AF1 transit rejected by photometry processing. + Bit 3: AF2 transit rejected by photometry processing. + Bit 4: AF3 transit rejected by photometry processing. + Bit 5: AF4 transit rejected by photometry processing. + Bit 6: AF5 transit rejected by photometry processing. + Bit 7: AF6 transit rejected by photometry processing. + Bit 8: AF7 transit rejected by photometry processing. + Bit 9: AF8 transit rejected by photometry processing. + Bit 10: AF9 transit rejected by photometry processing. + Bit 13: G band flux scatter larger than expected by photometry processing (all CCDs considered). + Bit 14: SM transit unavailable by photometry processing. + Bit 15: AF1 transit unavailable by photometry processing. + Bit 16: AF2 transit unavailable by photometry processing. + Bit 17: AF3 transit unavailable by photometry processing. + Bit 18: AF4 transit unavailable by photometry processing. + Bit 19: AF5 transit unavailable by photometry processing. + Bit 20: AF6 transit unavailable by photometry processing. + Bit 21: AF7 transit unavailable by photometry processing. + Bit 22: AF8 transit unavailable by photometry processing. + Bit 23: AF9 transit unavailable by photometry processing. + +BP band: + Bit 11: BP transit rejected by photometry processing. + Bit 24: BP transit photometry rejected by variability processing. +RP band: + Bit 12: RP transit rejected by photometry processing. + Bit 25: RP transit photometry rejected by variability processing. + + +All Gaia data processed by the Data Processing and Analysis Consortium comes tagged with a solution identifier. This is a numeric field attached to each table row that can be used to unequivocally identify the version of all the subsystems that where used in the generation of the data as well as the input data used. It is mainly for internal DPAC use but is included in the published data releases to enable end users to examine the provenance of processed data products. To decode a given solution ID visit https://gaia.esac.esa.int/decoder/solnDecoder.jsp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
581318119797033856017091923342681275G1705.943736020098415.21657477445216415442.45627327361644.151258712309364349.76254FF4097369295551293819386
581318119797033856017096015648964756G1706.017710021738614.76733669360487723356.7069931982333.53035403015752696.584FF4194817369295551293819386
581318119797033856019103616164443503G1742.321576336688615.27834299913750214588.44795624094115.054069973748831969.07FF1369295551293819386
581318119797033856019107708466271149G1742.395578480121514.79945639536924622675.858166928436.37833986932219623.33405FF1369295551293819386
581318119797033856021399806213666242G1783.844756175495615.00162969715262518823.2413684894176.66828621279929245.51535FF4097369295551293819386
581318119797033856021409547035890563G1784.020907841457815.17313402571078616072.8421575771823.586653704923705681.438FF1369295551293819386
581318119797033856021824485293442156G1791.52459845637515.02049549882648318498.99310489827627.47938441501548673.1953FF4194817369295551293819386
581318119797033856021828577585186179G1791.598603555036315.08943444144808817360.91111083305444.22970422257367392.517FF4198913369295551293819386
581318119797033856024395810684449039G1838.025878524190415.26133987410009914818.707999493628.170464765084663526.03705FF1369295551293819386
581318119797033856024405551469584760G1838.202041271258214.6994481588427124863.7726777521431.69438019797314784.4852FF1369295551293819386
581318119797033856024931096762012370G1847.706615535967814.95021371400311819736.07579884085108.45084262254287181.98177FT4097369295551293819386
581318119797033856024935189040650110G1847.78062547770814.69551745209928824953.950497046231.57293736023059790.3588FF1369295551293819386
581318119797033856027126618356192578G1887.413853545711415.14774685225309616453.0928717041130.577522853022316538.078FF1369295551293819386
581318119797033856027130710644806030G1887.487865760130315.20599201707526415593.71107493394421.87756637979126712.7717FF1369295551293819386
581318119797033856028701930802795025G1915.904644283122514.90379334190622320598.18494770081835.51645082589201579.9618FF1369295551293819386
581318119797033856028706023097026037G1915.978628492924114.9887875613136519047.20541696601521.51019271049616885.49677FF4194817369295551293819386
581318119797033856030212652632036510G1943.227041158292615.28001975936244814565.93562735035821.787971439926846668.53107FF1369295551293819386
581318119797033856033678161908888922G2005.900438587903414.85846275759260321476.38530646301332.77063647752211655.35455FF1369295551293819386
581318119797033856033691995225481810G2006.15060359176915.12773870523066416759.10446054069350.30742792377961333.1338FF4097369295551293819386
581318119797033856033696087577653571G2006.22461066172115.19415792284656215764.60599562406834.629652512204686455.2343FF4097369295551293819386
581318119797033856033705828503676574G2006.400767832857815.29447047930272814373.35321955841831.728764729604734453.00702FF1369295551293819386
581318119797033856033719661749883519G2006.65093141417215.21129303347053815517.76164144798513.6396673584794071137.6936FF1369295551293819386
581318119797033856033723754081345821G2006.72493805635814.73176086343200524134.702215627953138.00028662673847174.88878FT4097369295551293819386
581318119797033856033733494964639153G2006.90109435010314.91932126902495220305.6914383843637.72607337853305538.24023FF4097369295551293819386
581318119797033856033737587288630311G2006.97510083277314.99427122984626818951.24726644503624.519279254369795772.9121FF1369295551293819386
581318119797033856033747328155533428G2007.15122866159915.16855872596250316140.71613395886226.023346121367922620.23987FF4194817369295551293819386
581318119797033856033751420473108127G2007.225263140727515.23045172587261815246.33997196106615.887231267359775959.66FF1369295551293819386
581318119797033856033761161326248578G2007.401390655455515.27881568947362114582.09805516888326.838369872261936543.33026FF4194817369295551293819386
581318119797033856033765253637525668G2007.475424999987815.22795730662149315281.40786786292822.50930538861004678.8929FF1369295551293819386
581318119797033856033774994483069956G2007.651552323342714.8887907741428920884.78363638497522.658701951766577921.71136FF4194817369295551293819386
581318119797033856033779086789366264G2007.725586554187414.70432306174447124752.38579229173825.735621412286502961.79474FF1369295551293819386
581318119797033856033788827626783979G2007.901713687645514.9679491426816519416.30712387496529.64824531572207654.8889FF4194817369295551293819386
581318119797033856033792919933735601G2007.975747898070315.0450087374083118086.01118486939629.49216571897128613.248FF1369295551293819386
581318119797033856033802660766041408G2008.15187489078115.20709453774299315577.88433677983323.605790175539486659.9179FF4194817369295551293819386
581318119797033856033806753071682268G2008.225909058531415.2642517780442914779.01802548656520.915936643705166706.59125FF1369295551293819386
581318119797033856033816493904643329G2008.40203600318615.25645375643399114885.54662830053718.76156053279368793.4066FF4194817369295551293819386
581318119797033856033820586211594870G2008.476070181304515.24695003659471715016.41545933902314.490588596964041036.2875FF1369295551293819386
581318119797033856033830327050847272G2008.65219718582814.71232450476103524570.64109172864543.8608953286856560.1947FF4194817369295551293819386
581318119797033856033834419358454119G2008.726231356473614.77777468809914723133.23740450918226.070674191206134887.32794FF1369295551293819386
581318119797033856033844160203342518G2008.902358416978615.01282549277532618630.13890330070435.762934572614164520.93427FF4194817369295551293819386
581318119797033856033848252514625450G2008.976392628291515.07703553286881317560.305894643230.969243251957153567.02405FF1369295551293819386
581318119797033856033857993370910889G2009.15251983624415.23969037663928815117.15755366130532.838140768582534460.35364FF4194817369295551293819386
581318119797033856033871826559849957G2009.402709687243315.22850509665830515273.69983383756518.203243801487414839.06476FF1369295551293819386
581318119797033856033885659774603939G2009.652871817816714.72096265187636124375.93197782340239.77600611001573612.8301FF1369295551293819386
581318119797033856033889752107382538G2009.726878233493414.84548935870568421734.54468194714438.76651853261073560.65247FF4097369295551293819386
581318119797033856033899493017675421G2009.903034380814515.05699000728264617887.52637512640630.338931239340802589.58984FF1369295551293819386
581318119797033856033903585361064694G2009.977040973850815.12225401972396516843.97864552192239.881341967077454422.35236FF4097369295551293819386
581318119797033856033913326297178645G2010.153197541980715.27059557063736214692.91823520523629.845086964696122492.3061FF1369295551293819386
581318119797033856033927159617058001G2010.403361344314815.26863016904718914719.53946930639931.13585385987356472.75208FF1369295551293819386
581318119797033856036829541303731322G2062.88903805740415.29327816710034314389.14613286105924.734102404603966581.7533FF4194817369295551293819386
581318119797033856036833633584723661G2062.963068099755715.26598289685452814755.47284865279315.172661964968555972.5039FF1369295551293819386
581318119797033856038588450339066479G2094.695782652994715.29273272829264114396.376591233314.869895855882879968.1558FF1369295551293819386
581318119797033856038598191158161925G2094.87192768315614.70029225967111624844.44995939319445.704295328124445543.5911FF4097369295551293819386
581318119797033856039883589192000026G2118.11610581066315.05821931335535917867.28499335439517.587990677753931015.8798FF1369295551293819386
581318119797033856039887681495799669G2118.19010841452815.12507028966121716800.34399427385527.417549220392043612.7588FF1369295551293819386
581318119797033856042345296273249070G2162.63290663967715.22546916548760315316.46785736561817.10519366752424895.4279FF1369295551293819386
581318119797033856042355037236368080G2162.80906366180914.81602592662738622332.42681235417733.2059480810719672.54297FF1369295551293819386
581318119797033856042359129560233007G2162.883069896432514.72728797468493224234.33461879806823.346267697967391038.039FF1369295551293819386
581318119797033856042368870438548923G2163.059225439935314.98512951745512519111.48716348522423.991790652842834796.5844FF1369295551293819386
581318119797033856042382703539536765G2163.309357336572215.21893987491361215408.85399539994620.574937514347496748.91376FF4194817369295551293819386
581318119797033856042396536561095672G2163.559544120948415.24258443920682515076.91597111668930.00318769312344502.51047FF1369295551293819386
581318119797033856042410369526818610G2163.80970186037714.68781985404283225131.49639727623829.42571919641413854.0657FF1369295551293819386
581318119797033856042414461764563946G2163.883706601008714.8048482644965922563.5268561229426.88670476770927839.2076FF1369295551293819386
581318119797033856042424202464224583G2164.059859152315815.02513868205891318420.05053010173340.67166061326495452.89645FF4097369295551293819386
581318119797033856042428294697513676G2164.13386384408515.09968807984079817197.72729767952516.23269528584321059.45FF1369295551293819386
581318119797033856042438035397174804G2164.31003754163515.24748855154002815008.9693052768529.868055788494843502.5091FF32769369295551293819386
581318119797033856042442127632299115G2164.3840211943415.27951499162055714572.7090256831632.88027707401486443.20517FF1369295551293819386
581318119797033856042451868347683256G2164.560174134270715.22775115350533815284.30968594482122.63183511557936675.3456FF1369295551293819386
581318119797033856042455960596046045G2164.63417914459315.30424321729251414244.55882787946440.94632238749036347.88373FF4097369295551293819386
581318119797033856042465701342232597G2164.810304580143614.74876507537859123759.66209443107434.458728119436955689.5107FF4194817369295551293819386
581318119797033856042479534406119719G2165.06049260123715.06714434236801717721.01336429657426.859389991297327659.7698FF1369295551293819386
581318119797033856042483626696032745G2165.13447028833415.13957571703504516577.38421407550426.68606674495071621.2FF4194817369295551293819386
581318119797033856042493367563592932G2165.310654260402815.27411999996966214645.30059670388415.237829147406169961.1146FF1369295551293819386
581318119797033856042497459884308082G2165.3846606611915.28144170445369814546.87169296041816.62794467301937874.84485FF1369295551293819386
581318119797033856042511293194606017G2165.634825195779315.1066799156052617087.33460168610727.746964568495965615.82715FF1369295551293819386
581318119797033856045106332841984754G2212.56543633452615.04969305388436318008.14871473240824.65763247583434730.3276FF4194817369295551293819386
581318119797033856045862765222445241G2226.245799896380514.96561135000272119458.1590981488113.5315848002643511437.9808FF4194817369295551293819386
581318119797033856045866857510384258G2226.31983907041115.04124543278501318148.808449589325.66136277425435707.24255FF1369295551293819386
581318119797033856047920496154523039G2263.461350414974314.77683450121952523153.2781711970524.19597906285328956.906FF16385369295551293819386
581318119797033856047924588444447284G2263.535334705385614.89000144247602420861.50868769842838.14814757861256546.8551FF1369295551293819386
581318119797033856049730597152896387G2296.1983875428615.0103326184739118672.96325763292818.207687500037211025.5538FF1369295551293819386
581318119797033856049734689416455459G2296.27239880668515.07685016358421117563.30424656334826.702458645762615657.7411FF1369295551293819386
581318119797033856051044046398296446G2319.95276281577414.76154785673789323481.57089029460334.65841319423585677.5143FF1369295551293819386
581318119797033856051048138668163543G2320.02674465499514.87562139159795621139.6471185237921.53531994207252981.6268FF4194817369295551293819386
581318119797033856051057879547016346G2320.20293951848915.06795181918896617707.8389046276426.568518712230443666.497FF1369295551293819386
581318119797033856017091923342681275BP1705.944050417511815.645391742003597627.787250948564111.4772659101631868.4246FF0369295551293819386
581318119797033856017096015648964756BP1706.018052709240714.94502614303689814539.343967569965145.0521624616696100.23528FF0369295551293819386
581318119797033856019103616164443503BP1742.321891123632715.5306619231522258477.9431307907791.7457877655633492.40689FF0369295551293819386
581318119797033856019107708466271149BP1742.39589351005314.97003965928506714208.211215337345118.85551091406668119.54188FF0369295551293819386
581318119797033856021399806213666242BP1783.845070981974515.26867654747573210791.570426426428108.6790409957943299.29762FF0369295551293819386
581318119797033856021409547035890563BP1784.021222339712515.4142556662897739437.413884990745113.8109853472460582.92182FF0369295551293819386
581318119797033856021824485293442156BP1791.52494121637915.30677975150273810419.415757986244107.1490373297868497.24227FF0369295551293819386
581318119797033856024395810684449039BP1838.026193270793815.539725433348118407.46552118264107.6688166915587578.08636FF0369295551293819386
581318119797033856024405551469584760BP1838.202355637601814.86157378776450615700.943586958276127.81483910734465122.84132FF0369295551293819386
581318119797033856024931096762012370BP1847.706930050646415.16917848414677511827.252662775876121.3483264949198597.46532FF0369295551293819386
581318119797033856024935189040650110BP1847.780940069570314.87907507245916215449.884579447802148.84256341017726103.80018FF0369295551293819386
581318119797033856027126618356192578BP1887.414168620569615.435246808548629256.707586904287102.7216718675667490.114456FF0369295551293819386
581318119797033856027130710644806030BP1887.488180259353615.4972813831988878742.642404008333104.1303579469343283.95863FF0369295551293819386
581318119797033856028701930802795025BP1915.904958800754515.11821182808222212395.68516209234118.23574321330177104.83873FF0369295551293819386
581318119797033856028706023097026037BP1915.978971325734215.24611559923255511018.15883101566133.2271421539646282.70206FF0369295551293819386
581318119797033856030212652632036510BP1943.227355703941215.5764849511948528127.580652350815113.8594438704013871.382576FF0369295551293819386
581318119797033856033678161908888922BP2005.90075289697915.0591911475597513088.16644188033113.16203384470887115.65864FF0369295551293819386
581318119797033856033691995225481810BP2006.150917971884815.4172795360031579411.16643460758194.8387893808635299.23331FF0369295551293819386
581318119797033856033696087577653571BP2006.22492487933615.4827843234386428860.15947602865393.829026916690594.42877FF0369295551293819386
581318119797033856033705828503676574BP2006.401082275306415.5837763718183888073.18156017740388.8157309176975990.8981FF0369295551293819386
581318119797033856033719661749883519BP2006.651245915612715.460395829012769044.75769282735693.939880136048896.28241FF0369295551293819386
581318119797033856033723754081345821BP2006.725252392165914.91275124403387814978.032571792613117.25497707320805127.73899FF0369295551293819386
581318119797033856033733494964639153BP2006.901408899984515.14504542909688612093.084755029244113.57136145276198106.48006FF0369295551293819386
581318119797033856033737587288630311BP2006.97541521595215.26075817397882210870.56203346659100.49130076391349108.17416FF0369295551293819386
581318119797033856033747328155533428BP2007.1515713711615.458784468174019058.19114809305895.7820409594291794.57087FF0369295551293819386
581318119797033856033751420473108127BP2007.225577561243715.5218018423155048547.40989736997390.383333719521494.56843FF0369295551293819386
581318119797033856033761161326248578BP2007.40173339653615.5676695543537728193.83938240824589.2696251355970791.787544FF0369295551293819386
581318119797033856033765253637525668BP2007.475739453691215.5117564896953878626.85845502618689.9620715923480795.894394FF0369295551293819386
581318119797033856033774994483069956BP2007.651895087769615.07639910142712512882.3658226753111.5307886305456115.50502FF0369295551293819386
581318119797033856033779086789366264BP2007.725901029367814.8667422749504515626.379176284325119.96473373334105130.2581FF0369295551293819386
581318119797033856033788827626783979BP2007.902056465452215.1887234511399111616.248333213516106.93345371180985108.63063FF0369295551293819386
581318119797033856033792919933735601BP2007.976062385428115.32286058394646310266.231062510018100.73471875490418101.91354FF0369295551293819386
581318119797033856033802660766041408BP2008.152217674885815.495048926101138760.63724794685294.2201246250829392.98053FF0369295551293819386
581318119797033856033806753071682268BP2008.226223548616615.5657928948988938208.0144123110889.7326981193442491.47183FF0369295551293819386
581318119797033856033816493904643329BP2008.402378783108615.543837401243978375.68446279349592.2811382290562790.76269FF0369295551293819386
581318119797033856033820586211594870BP2008.476384665500315.5050938669098888679.95995441891391.2618331367288895.11051FF0369295551293819386
581318119797033856033830327050847272BP2008.652539952711814.88111712118071315420.853801536456122.05785078077894126.34053FF0369295551293819386
581318119797033856033834419358454119BP2008.726545822457914.96553156447380914267.327898163978114.68397840130663124.40559FF0369295551293819386
581318119797033856033844160203342518BP2008.90270116069715.26817564974289410796.550199799905102.13417065103614105.70948FF0369295551293819386
581318119797033856033848252514625450BP2008.976707065516415.3468937829563410041.4806362868198.13887683832512102.31909FF0369295551293819386
581318119797033856033871826559849957BP2009.40302423955115.4547911451791269091.568394846332106.8152810170847985.11487FF0369295551293819386
581318119797033856033885659774603939BP2009.653186320429314.89867762751373315173.445785731099120.6645261790738125.74902FF0369295551293819386
581318119797033856033889752107382538BP2009.727192537038515.0634760883302813036.61478760932111.13121281697389117.30831FF0369295551293819386
581318119797033856033899493017675421BP2009.903348822799215.3182375909597810310.03719133605101.04130948504188102.03784FF0369295551293819386
581318119797033856033903585361064694BP2009.977355215977715.3973378092749039585.61859190207496.9049284424171698.91776FF0369295551293819386
581318119797033856033913326297178645BP2010.153511917761815.560875904951158245.2704684987390.1045974507493591.50777FF0369295551293819386
581318119797033856033927159617058001BP2010.403675645679215.5553219661747478287.55611117903493.0954233691126889.02216FF0369295551293819386
581318119797033856036829541303731322BP2062.88938076687115.5650995463832948213.25770447061890.4954434193352990.7588FF0369295551293819386
581318119797033856036833633584723661BP2062.963382956527815.5501824075550868326.87998581177590.5254516711585891.98386FF0369295551293819386
581318119797033856038588450339066479BP2094.69609770435515.570121974781218175.35233053800989.6153475539298591.22714FF0369295551293819386
581318119797033856038598191158161925BP2094.872241871333214.88017686863325515434.214116072937130.0633170264353118.66692FF0369295551293819386
581318119797033856039883589192000026BP2118.116420620395715.31091473327070710379.809308414298100.92807475625692102.84363FF0369295551293819386
581318119797033856039887681495799669BP2118.190423566554315.4092880950208139480.69183505282999.786003116891595.01024FF0369295551293819386
581318119797033856042345296273249070BP2162.63322172986415.4927500381481658779.20627038535597.0144084217737790.493835FF0369295551293819386
581318119797033856042355037236368080BP2162.809378627897314.98766267265317613979.453674064524121.22933713289285115.31412FF0369295551293819386
581318119797033856042359129560233007BP2162.883384724936614.90667824173124815062.046068954714131.3293276369215114.68913FF0369295551293819386
581318119797033856042368870438548923BP2163.05954019061415.24369754348193211042.724846387075105.64814155286828104.52361FF0369295551293819386
581318119797033856042382703539536765BP2163.309700040330415.5288852512091528491.82758479116193.6331687726603790.69251FF0369295551293819386
581318119797033856042396536561095672BP2163.559858589124415.5185712554354168572.880423380348112.4050315193455376.26776FF0369295551293819386
581318119797033856042410369526818610BP2163.810016254206414.8551867025693515793.580097078033125.11986578838156126.2276FF0369295551293819386
581318119797033856042414461764563946BP2163.884020898650314.99200649391058513923.636306456914118.6064796869851117.39355FF0369295551293819386
581318119797033856042424202464224583BP2164.060173517643815.28890834993747410592.340383641988102.96073866882989102.87747FF0369295551293819386
581318119797033856042428294697513676BP2164.134178124342315.3798100431365539741.621489119067102.8103816272280594.75329FF0369295551293819386
581318119797033856042438035397174804BP2164.310330826044315.55786542858558268.16427684207592.000694986420289.870674FF0369295551293819386
581318119797033856042442127632299115BP2164.38433550067215.5990147525499077960.66534674144893.9037348101251484.77475FF0369295551293819386
581318119797033856042451868347683256BP2164.560488567739415.5018416381589028705.99900195913793.2670033247949793.3449FF0369295551293819386
581318119797033856042455960596046045BP2164.63449351938715.4145929884531429434.48227565476797.9414252691935296.327805FF0369295551293819386
581318119797033856042465701342232597BP2164.81064723073214.92164236986546714855.877867793226134.8429850648487110.17168FF0369295551293819386
581318119797033856042479534406119719BP2165.06080727825815.34325883652227410075.154941398088100.47967482866677100.27058FF0369295551293819386
581318119797033856042483626696032745BP2165.13481306434315.4409565342067079208.155710166719102.7054181804107989.65599FF0369295551293819386
581318119797033856042493367563592932BP2165.310969130461715.5751833828556388137.3297469226992.0870200822114588.365654FF0369295551293819386
581318119797033856042497459884308082BP2165.38497553141315.5998004940784967954.906339615874100.8922985904263878.84553FF0369295551293819386
581318119797033856042511293194606017BP2165.635140334571615.3331626896334610169.279698464095105.8902481690842796.03603FF0369295551293819386
581318119797033856045106332841984754BP2212.565779146416415.29609770794242610522.433387581594102.9257107305523102.23328FF0369295551293819386
581318119797033856045862765222445241BP2226.246142584741415.2084770608511111406.816205675634105.32347812612828108.30269FF0369295551293819386
581318119797033856045866857510384258BP2226.320153895306715.3060156594478610426.751052557502101.57019536494636102.65562FF0369295551293819386
581318119797033856047920496154523039BP2263.46163706875914.98365470144809614031.153884738871130.78623243608965107.28311FF0369295551293819386
581318119797033856047924588444447284BP2263.53564900688715.1094870538118312495.695878910252112.34208503961624111.22898FF0369295551293819386
581318119797033856049730597152896387BP2296.19870231963615.271168361803410766.831677074499106.12282911968398101.45632FF0369295551293819386
581318119797033856049734689416455459BP2296.27271381364615.3558287659525329959.184130798601100.2096097526710399.38352FF0369295551293819386
581318119797033856051044046398296446BP2319.95307777533614.95101106432512614459.418994285574139.86374506068003103.38218FF0369295551293819386
581318119797033856051048138668163543BP2320.02708744905715.09264261908635912691.069448102076110.81672439159952114.52305FF0369295551293819386
581318119797033856051057879547016346BP2320.203253786679415.34991428519892210013.584205737614101.7543234039838698.409424FF0369295551293819386
581318119797033856017091923342681275RP1705.944139117757714.7605667066241810012.471954702154101.2587032209564998.88011FF0369295551293819386
581318119797033856017096015648964756RP1706.01814055783914.42257298929178313669.064712119256123.67648827643211110.52274FF0369295551293819386
581318119797033856019103616164443503RP1742.321977849001514.8200814086147949478.40871504911296.6808945366578298.03807FF0369295551293819386
581318119797033856019107708466271149RP1742.395978770546214.45836671475338713225.780458996644112.26436674761854117.80925FF0369295551293819386
581318119797033856021399806213666242RP1783.845157697734514.57014538180429911931.906528382407115.11437632330687103.65262FF0369295551293819386
581318119797033856021409547035890563RP1784.021310588304514.68254707121067410758.436646997845104.85533683500128102.60266FF0369295551293819386
581318119797033856021824485293442156RP1791.525028751344514.58096376874784511813.606144838817109.97987657714488107.41607FF0369295551293819386
581318119797033856021828577585186179RP1791.599033789710314.62756554296913711317.272630848618118.0094308520137695.90143FF0369295551293819386
581318119797033856024395810684449039RP1838.026280433692614.8065009083869239597.710189223955104.455625005853391.88313FF0369295551293819386
581318119797033856024405551469584760RP1838.20244457844614.38270032288841314180.379904184394116.87192439329641121.33265FF0369295551293819386
581318119797033856024931096762012370RP1847.707018341631514.525230656989312435.857373066374112.1184207736701110.91717FF0369295551293819386
581318119797033856024935189040650110RP1847.781028010216214.36656015573637314392.75500916038123.55701551402842116.48675FF0369295551293819386
581318119797033856027126618356192578RP1887.414253791739614.67113386913550810872.125266638457107.85368487957125100.80439FF0369295551293819386
581318119797033856027130710644806030RP1887.488268685799314.72863955039611710311.270382950866104.083175666598199.0676FF0369295551293819386
581318119797033856028701930802795025RP1915.905047146471814.51670865062122812533.85121457129112.74135575754858111.1735FF0369295551293819386
581318119797033856028706023097026037RP1915.97905873061714.56521589411055511986.203246471228118.08091277213153101.50839FF0369295551293819386
581318119797033856030212652632036510RP1943.227443893346614.8117541718468229551.384459952898101.8004797739619193.824554FF0369295551293819386
581318119797033856033678161908888922RP2005.90084207335914.48986070750404312847.650454626517111.20073704743315115.53566FF0369295551293819386
581318119797033856033691995225481810RP2006.1510068478714.66207661773961310963.200283330225102.517615760734106.93967FF0369295551293819386
581318119797033856033696087577653571RP2006.225014323656814.70908187867674110498.693179272668100.77439995998596104.18016FF0369295551293819386
581318119797033856033705828503676574RP2006.401170862959414.8018351046975359639.04379271799696.6058583944645299.77701FF0369295551293819386
581318119797033856033719661749883519RP2006.651334234709314.7683353197702529941.08683504105199.5842648128977699.82588FF0369295551293819386
581318119797033856033723754081345821RP2006.725341371247414.41486752993452413766.418984886443112.63003894784477122.22688FF0369295551293819386
581318119797033856033733494964639153RP2006.901496978401414.47579490026685513015.175695940306113.69291957361392114.47657FF0369295551293819386
581318119797033856033737587288630311RP2006.975503993748114.56155523513354712026.684031639235105.8099481508664113.66308FF0369295551293819386
581318119797033856033747328155533428RP2007.15165924175714.68502746540505110733.886755977666104.52525102184828102.6918FF0369295551293819386
581318119797033856033751420473108127RP2007.225666168057414.74718661926338310136.6242369076397.79879428628712103.64774FF0369295551293819386
581318119797033856033761161326248578RP2007.401821100373414.8019784259710939637.77148656302699.2848603493713797.071915FF0369295551293819386
581318119797033856033765253637525668RP2007.475827924398814.8649608124297989094.60141728666790.30282855992277100.71226FF0369295551293819386
581318119797033856033774994483069956RP2007.651982665975514.54182192720705112247.268085175985109.07026987007656112.28786FF0369295551293819386
581318119797033856033779086789366264RP2007.725989402404814.38505020871007514149.722144568497116.71767825408368121.23032FF0369295551293819386
581318119797033856033788827626783979RP2007.902143967627814.53799568008797412290.50487027157111.9946295298015109.74191FF0369295551293819386
581318119797033856033792919933735601RP2007.976150704477714.60131457861621511594.236738401562106.33765658084764109.03228FF0369295551293819386
581318119797033856033802660766041408RP2008.1523051487414.7213564326590410380.670886830703103.44379499872912100.35083FF0369295551293819386
581318119797033856033806753071682268RP2008.226311855260314.7710994851803729915.81010677507498.48724685279275100.68116FF0369295551293819386
581318119797033856033816493904643329RP2008.402466278140814.58282785242474211793.340948865627109.851258190621107.35736FF0369295551293819386
581318119797033856033820586211594870RP2008.476473002192314.7990669777046399663.65026677882697.3319454437805599.28549FF0369295551293819386
581318119797033856033830327050847272RP2008.652627519378314.39271611344994514050.169057629528118.99344308874657118.07516FF0369295551293819386
581318119797033856033834419358454119RP2008.726634237768814.42816695868531713598.8195770469114.42682527116902118.84293FF0369295551293819386
581318119797033856033844160203342518RP2008.90278884844414.57596273502984411868.146572766896109.82624827539324108.06293FF0369295551293819386
581318119797033856033871826559849957RP2009.403112303342114.7835086225834069803.125132226274100.2549179604756597.78199FF0369295551293819386
581318119797033856033885659774603939RP2009.653274630841514.38936831432280214093.55872827574118.09724779545724119.33858FF0369295551293819386
581318119797033856033889752107382538RP2009.727281640468214.468825686711813098.987285233841111.45319629543341117.52904FF0369295551293819386
581318119797033856033899493017675421RP2009.903437411766614.50011920272079612726.832085528233110.6186765480202115.05138FF0369295551293819386
581318119797033856033903585361064694RP2009.977444564644914.6606291774922510977.825529770187102.26205742028654107.34994FF0369295551293819386
581318119797033856033913326297178645RP2010.153600810602314.786562217709169775.59292028414798.1583275512682499.59005FF0369295551293819386
581318119797033856033927159617058001RP2010.40376485489214.8298618739249329393.40928684061796.9150979604969896.92411FF0369295551293819386
581318119797033856036829541303731322RP2062.88946828794314.8070038243126599593.26553355780698.4740178110498297.41926FF0369295551293819386
581318119797033856036833633584723661RP2062.963469541540214.8044047324596759616.25790122398897.5826000775998998.5448FF0369295551293819386
581318119797033856038588450339066479RP2094.696183146614.8303901362171589388.84005821355194.2468926469844399.61962FF0369295551293819386
581318119797033856038598191158161925RP2094.87233124403214.3692451657552914357.205907350442121.49291061019119118.1732FF0369295551293819386
581318119797033856039883589192000026RP2118.116506904195414.60295134194276811576.771423599424105.10204676358094110.14792FF0369295551293819386
581318119797033856039887681495799669RP2118.190508396368414.66040128959451210980.12993496048103.70959467338132105.87381FF0369295551293819386
581318119797033856042345296273249070RP2162.63330707737814.770532972040119920.98530723283107.8174225556190392.01653FF0369295551293819386
581318119797033856042355037236368080RP2162.809464043612514.46490605660046713146.36156798773114.01242777555767115.30639FF0369295551293819386
581318119797033856042359129560233007RP2162.883471586062614.40772223331317613857.315402793845122.78049883779902112.86251FF0369295551293819386
581318119797033856042368870438548923RP2163.059626913645414.55554054577492512093.493540118538109.4378007323521110.50563FF0369295551293819386
581318119797033856042382703539536765RP2163.309787663911314.73591049816144910242.448666209764102.9626053062643699.47736FF0369295551293819386
581318119797033856042396536561095672RP2163.55994679895114.7798458187583539836.252478858025100.1838846451498698.181984FF0369295551293819386
581318119797033856042410369526818610RP2163.81010480094214.37704825563474214254.391841245499116.64414137070456122.20409FF0369295551293819386
581318119797033856042414461764563946RP2163.88411018930314.46720758968864313118.523553899067113.75999362793084115.31755FF0369295551293819386
581318119797033856042424202464224583RP2164.060262196351714.5692656313219111941.578633285118106.99037344902234111.61358FF0369295551293819386
581318119797033856042428294697513676RP2164.13426747917714.64103514756463711177.738269385889106.24927997465637105.20296FF0369295551293819386
581318119797033856042438035397174804RP2164.310419449089714.7676092081266279947.7373944722898.3480175907792101.14832FF0369295551293819386
581318119797033856042442127632299115RP2164.38442476052914.800278456418929652.87345248946399.4754468193622397.03775FF0369295551293819386
581318119797033856042451868347683256RP2164.56057694206114.7689071181946979935.85278166642399.9665003937702599.39182FF0369295551293819386
581318119797033856042455960596046045RP2164.6345825121114.8508560595860549213.51975648170497.1654460201622194.823006FF0369295551293819386
581318119797033856042465701342232597RP2164.810735129397514.40410758782417113903.526217082652118.33776218677566117.49019FF0369295551293819386
581318119797033856042479534406119719RP2165.060894419257214.60087944682918211598.884305659378106.83759023195317108.56557FF0369295551293819386
581318119797033856042483626696032745RP2165.13490082029814.54915115705616712164.871687560117116.53458514771917104.38851FF0369295551293819386
581318119797033856042493367563592932RP2165.31105515347314.7788155934488389845.5902585672299.528702319155298.92212FF0369295551293819386
581318119797033856042497459884308082RP2165.385062169830714.8027758488258949630.695589459587106.6613473912357690.292274FF0369295551293819386
581318119797033856042511293194606017RP2165.635225382932314.6833788412313110750.19788861519112.8094026743292395.29523FF0369295551293819386
581318119797033856045106332841984754RP2212.565866836317614.64046322707879211183.62778609671113.2630617734151798.740295FF0369295551293819386
581318119797033856045862765222445241RP2226.24623042669214.5523699551298412128.860839876003109.88825185351642110.3745FF0369295551293819386
581318119797033856045866857510384258RP2226.320240900959614.59055891705911511709.663863777645107.61043341699524108.81532FF0369295551293819386
581318119797033856047920496154523039RP2263.461723826429514.44913477931781613338.717770052588123.80334194379326107.74118FF0369295551293819386
581318119797033856047924588444447284RP2263.535738416706414.50356264712854912686.532501506801111.82893053351415113.44589FF0369295551293819386
581318119797033856049730597152896387RP2296.19878905422614.5678308693154211957.369438431078108.79329379155686109.90907FF0369295551293819386
581318119797033856049734689416455459RP2296.272799784497214.62661492002166211327.185877004173105.17702330266505107.69639FF0369295551293819386
581318119797033856051044046398296446RP2319.95316334582214.39953432200670513962.21323735066130.4730097756604107.01228FF0369295551293819386
581318119797033856051048138668163543RP2320.027175227723514.49221805577933312819.785922321407112.55804259874068113.89489FF0369295551293819386
581318119797033856051057879547016346RP2320.20334301935414.61687260656427711429.282111731804107.14697456670892106.6692FF0369295551293819386
+
+
diff --git a/examples/mivotblock/test.7.out.xml b/examples/mivotblock/test.7.out.xml new file mode 100644 index 00000000000..d0604a70c4b --- /dev/null +++ b/examples/mivotblock/test.7.out.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + diff --git a/examples/mivotblock/test.7.xml b/examples/mivotblock/test.7.xml new file mode 100644 index 00000000000..2a78aaeb1c9 --- /dev/null +++ b/examples/mivotblock/test.7.xml @@ -0,0 +1,3761 @@ + + + + Epoch photometry. This table contains light curve data points. Each entry is a photometric flux-time pair for a given object, band and time. It follows the (evolving) VO convention for time series as much as possible. At the time of writing, a VO recommendation has not yet been released. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Source ID + + + Photometric Band + + + + + + + + + + + + + + + + + +
5813181197970338560G
5813181197970338560BP
5813181197970338560RP
+ + +Source Id. A unique single numerical identifier of the source obtained from GaiaSource. + + +Transit unique identifier. For a given object, a transit comprises the different Gaia observations (SM, AF, BP, RP and RVS) obtained for each focal plane crossing. + + +Photometric band. Values: G (per-transit combined SM-AF flux), BP (blue photometer integrated flux) and RP (red photometer integrated flux). + + +Different times are defined for each band. For G, it is the field-of-view transit averaged observation time. For BP and RP, it is the observation time of the BP CCD transit. The units are Barycentric JD (in TCB) in days -2,455,197.5, computed as follows. First the observation time is converted from On-board Mission Time (OBMT) into Julian date in TCB (Temps Coordonnee Barycentrique). Next a correction is applied for the light-travel time to the Solar system barycentre, resulting in Barycentric Julian Date (BJD). Finally, an offset of 2,455,197.5 days is applied (corresponding to a reference time $T_0$ at 2010-01-01T00:00:00) to have a conveniently small numerical value. Although the centroiding time accuracy of the individual CCD observations is (much) below 1~ms (e.g. in BP and RP), the G band observation time is averaged over typically 9 CCD observations taken in a time range of about 44sec. + + +Vega magnitude, computed from the flux applying the zero-point defined in ExtPhotZeroPoint. + + +Band flux value for the transit. For G band, it is a combination of individual SM-AF CCD fluxes. For BP and RP bands, it is an integrated CCD flux. + + +Flux error. If the flux has been rejected or is unavailable, this error will be set to null. + + +Band flux divided by its error. If the flux has been rejected or is unavailable, this field will be set to null. + + +Rejected by DPAC photometry processing. + + +Rejected by DPAC variability processing (or variability analysis). + + +Additional processing flags. This field contains extra information on the data used to compute the fluxes and their quality. It provides debugging information that may be safely ignored for many general purpose applications. The field is a collection of binary flags, whose values can be recovered applying bit shifting and masking operations. Each band has different binary flags in different positions, as shown below. Bit numbering is as follows: least significant bit = 1 and most significant bit = 64 +G band: + Bit 1: SM transit rejected by photometry processing. + Bit 2: AF1 transit rejected by photometry processing. + Bit 3: AF2 transit rejected by photometry processing. + Bit 4: AF3 transit rejected by photometry processing. + Bit 5: AF4 transit rejected by photometry processing. + Bit 6: AF5 transit rejected by photometry processing. + Bit 7: AF6 transit rejected by photometry processing. + Bit 8: AF7 transit rejected by photometry processing. + Bit 9: AF8 transit rejected by photometry processing. + Bit 10: AF9 transit rejected by photometry processing. + Bit 13: G band flux scatter larger than expected by photometry processing (all CCDs considered). + Bit 14: SM transit unavailable by photometry processing. + Bit 15: AF1 transit unavailable by photometry processing. + Bit 16: AF2 transit unavailable by photometry processing. + Bit 17: AF3 transit unavailable by photometry processing. + Bit 18: AF4 transit unavailable by photometry processing. + Bit 19: AF5 transit unavailable by photometry processing. + Bit 20: AF6 transit unavailable by photometry processing. + Bit 21: AF7 transit unavailable by photometry processing. + Bit 22: AF8 transit unavailable by photometry processing. + Bit 23: AF9 transit unavailable by photometry processing. + +BP band: + Bit 11: BP transit rejected by photometry processing. + Bit 24: BP transit photometry rejected by variability processing. +RP band: + Bit 12: RP transit rejected by photometry processing. + Bit 25: RP transit photometry rejected by variability processing. + + +All Gaia data processed by the Data Processing and Analysis Consortium comes tagged with a solution identifier. This is a numeric field attached to each table row that can be used to unequivocally identify the version of all the subsystems that where used in the generation of the data as well as the input data used. It is mainly for internal DPAC use but is included in the published data releases to enable end users to examine the provenance of processed data products. To decode a given solution ID visit https://gaia.esac.esa.int/decoder/solnDecoder.jsp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
581318119797033856017091923342681275G1705.943736020098415.21657477445216415442.45627327361644.151258712309364349.76254FF4097369295551293819386
581318119797033856017096015648964756G1706.017710021738614.76733669360487723356.7069931982333.53035403015752696.584FF4194817369295551293819386
581318119797033856019103616164443503G1742.321576336688615.27834299913750214588.44795624094115.054069973748831969.07FF1369295551293819386
581318119797033856019107708466271149G1742.395578480121514.79945639536924622675.858166928436.37833986932219623.33405FF1369295551293819386
581318119797033856021399806213666242G1783.844756175495615.00162969715262518823.2413684894176.66828621279929245.51535FF4097369295551293819386
581318119797033856021409547035890563G1784.020907841457815.17313402571078616072.8421575771823.586653704923705681.438FF1369295551293819386
581318119797033856021824485293442156G1791.52459845637515.02049549882648318498.99310489827627.47938441501548673.1953FF4194817369295551293819386
581318119797033856021828577585186179G1791.598603555036315.08943444144808817360.91111083305444.22970422257367392.517FF4198913369295551293819386
581318119797033856024395810684449039G1838.025878524190415.26133987410009914818.707999493628.170464765084663526.03705FF1369295551293819386
581318119797033856024405551469584760G1838.202041271258214.6994481588427124863.7726777521431.69438019797314784.4852FF1369295551293819386
581318119797033856024931096762012370G1847.706615535967814.95021371400311819736.07579884085108.45084262254287181.98177FT4097369295551293819386
581318119797033856024935189040650110G1847.78062547770814.69551745209928824953.950497046231.57293736023059790.3588FF1369295551293819386
581318119797033856027126618356192578G1887.413853545711415.14774685225309616453.0928717041130.577522853022316538.078FF1369295551293819386
581318119797033856027130710644806030G1887.487865760130315.20599201707526415593.71107493394421.87756637979126712.7717FF1369295551293819386
581318119797033856028701930802795025G1915.904644283122514.90379334190622320598.18494770081835.51645082589201579.9618FF1369295551293819386
581318119797033856028706023097026037G1915.978628492924114.9887875613136519047.20541696601521.51019271049616885.49677FF4194817369295551293819386
581318119797033856030212652632036510G1943.227041158292615.28001975936244814565.93562735035821.787971439926846668.53107FF1369295551293819386
581318119797033856033678161908888922G2005.900438587903414.85846275759260321476.38530646301332.77063647752211655.35455FF1369295551293819386
581318119797033856033691995225481810G2006.15060359176915.12773870523066416759.10446054069350.30742792377961333.1338FF4097369295551293819386
581318119797033856033696087577653571G2006.22461066172115.19415792284656215764.60599562406834.629652512204686455.2343FF4097369295551293819386
581318119797033856033705828503676574G2006.400767832857815.29447047930272814373.35321955841831.728764729604734453.00702FF1369295551293819386
581318119797033856033719661749883519G2006.65093141417215.21129303347053815517.76164144798513.6396673584794071137.6936FF1369295551293819386
581318119797033856033723754081345821G2006.72493805635814.73176086343200524134.702215627953138.00028662673847174.88878FT4097369295551293819386
581318119797033856033733494964639153G2006.90109435010314.91932126902495220305.6914383843637.72607337853305538.24023FF4097369295551293819386
581318119797033856033737587288630311G2006.97510083277314.99427122984626818951.24726644503624.519279254369795772.9121FF1369295551293819386
581318119797033856033747328155533428G2007.15122866159915.16855872596250316140.71613395886226.023346121367922620.23987FF4194817369295551293819386
581318119797033856033751420473108127G2007.225263140727515.23045172587261815246.33997196106615.887231267359775959.66FF1369295551293819386
581318119797033856033761161326248578G2007.401390655455515.27881568947362114582.09805516888326.838369872261936543.33026FF4194817369295551293819386
581318119797033856033765253637525668G2007.475424999987815.22795730662149315281.40786786292822.50930538861004678.8929FF1369295551293819386
581318119797033856033774994483069956G2007.651552323342714.8887907741428920884.78363638497522.658701951766577921.71136FF4194817369295551293819386
581318119797033856033779086789366264G2007.725586554187414.70432306174447124752.38579229173825.735621412286502961.79474FF1369295551293819386
581318119797033856033788827626783979G2007.901713687645514.9679491426816519416.30712387496529.64824531572207654.8889FF4194817369295551293819386
581318119797033856033792919933735601G2007.975747898070315.0450087374083118086.01118486939629.49216571897128613.248FF1369295551293819386
581318119797033856033802660766041408G2008.15187489078115.20709453774299315577.88433677983323.605790175539486659.9179FF4194817369295551293819386
581318119797033856033806753071682268G2008.225909058531415.2642517780442914779.01802548656520.915936643705166706.59125FF1369295551293819386
581318119797033856033816493904643329G2008.40203600318615.25645375643399114885.54662830053718.76156053279368793.4066FF4194817369295551293819386
581318119797033856033820586211594870G2008.476070181304515.24695003659471715016.41545933902314.490588596964041036.2875FF1369295551293819386
581318119797033856033830327050847272G2008.65219718582814.71232450476103524570.64109172864543.8608953286856560.1947FF4194817369295551293819386
581318119797033856033834419358454119G2008.726231356473614.77777468809914723133.23740450918226.070674191206134887.32794FF1369295551293819386
581318119797033856033844160203342518G2008.902358416978615.01282549277532618630.13890330070435.762934572614164520.93427FF4194817369295551293819386
581318119797033856033848252514625450G2008.976392628291515.07703553286881317560.305894643230.969243251957153567.02405FF1369295551293819386
581318119797033856033857993370910889G2009.15251983624415.23969037663928815117.15755366130532.838140768582534460.35364FF4194817369295551293819386
581318119797033856033871826559849957G2009.402709687243315.22850509665830515273.69983383756518.203243801487414839.06476FF1369295551293819386
581318119797033856033885659774603939G2009.652871817816714.72096265187636124375.93197782340239.77600611001573612.8301FF1369295551293819386
581318119797033856033889752107382538G2009.726878233493414.84548935870568421734.54468194714438.76651853261073560.65247FF4097369295551293819386
581318119797033856033899493017675421G2009.903034380814515.05699000728264617887.52637512640630.338931239340802589.58984FF1369295551293819386
581318119797033856033903585361064694G2009.977040973850815.12225401972396516843.97864552192239.881341967077454422.35236FF4097369295551293819386
581318119797033856033913326297178645G2010.153197541980715.27059557063736214692.91823520523629.845086964696122492.3061FF1369295551293819386
581318119797033856033927159617058001G2010.403361344314815.26863016904718914719.53946930639931.13585385987356472.75208FF1369295551293819386
581318119797033856036829541303731322G2062.88903805740415.29327816710034314389.14613286105924.734102404603966581.7533FF4194817369295551293819386
581318119797033856036833633584723661G2062.963068099755715.26598289685452814755.47284865279315.172661964968555972.5039FF1369295551293819386
581318119797033856038588450339066479G2094.695782652994715.29273272829264114396.376591233314.869895855882879968.1558FF1369295551293819386
581318119797033856038598191158161925G2094.87192768315614.70029225967111624844.44995939319445.704295328124445543.5911FF4097369295551293819386
581318119797033856039883589192000026G2118.11610581066315.05821931335535917867.28499335439517.587990677753931015.8798FF1369295551293819386
581318119797033856039887681495799669G2118.19010841452815.12507028966121716800.34399427385527.417549220392043612.7588FF1369295551293819386
581318119797033856042345296273249070G2162.63290663967715.22546916548760315316.46785736561817.10519366752424895.4279FF1369295551293819386
581318119797033856042355037236368080G2162.80906366180914.81602592662738622332.42681235417733.2059480810719672.54297FF1369295551293819386
581318119797033856042359129560233007G2162.883069896432514.72728797468493224234.33461879806823.346267697967391038.039FF1369295551293819386
581318119797033856042368870438548923G2163.059225439935314.98512951745512519111.48716348522423.991790652842834796.5844FF1369295551293819386
581318119797033856042382703539536765G2163.309357336572215.21893987491361215408.85399539994620.574937514347496748.91376FF4194817369295551293819386
581318119797033856042396536561095672G2163.559544120948415.24258443920682515076.91597111668930.00318769312344502.51047FF1369295551293819386
581318119797033856042410369526818610G2163.80970186037714.68781985404283225131.49639727623829.42571919641413854.0657FF1369295551293819386
581318119797033856042414461764563946G2163.883706601008714.8048482644965922563.5268561229426.88670476770927839.2076FF1369295551293819386
581318119797033856042424202464224583G2164.059859152315815.02513868205891318420.05053010173340.67166061326495452.89645FF4097369295551293819386
581318119797033856042428294697513676G2164.13386384408515.09968807984079817197.72729767952516.23269528584321059.45FF1369295551293819386
581318119797033856042438035397174804G2164.31003754163515.24748855154002815008.9693052768529.868055788494843502.5091FF32769369295551293819386
581318119797033856042442127632299115G2164.3840211943415.27951499162055714572.7090256831632.88027707401486443.20517FF1369295551293819386
581318119797033856042451868347683256G2164.560174134270715.22775115350533815284.30968594482122.63183511557936675.3456FF1369295551293819386
581318119797033856042455960596046045G2164.63417914459315.30424321729251414244.55882787946440.94632238749036347.88373FF4097369295551293819386
581318119797033856042465701342232597G2164.810304580143614.74876507537859123759.66209443107434.458728119436955689.5107FF4194817369295551293819386
581318119797033856042479534406119719G2165.06049260123715.06714434236801717721.01336429657426.859389991297327659.7698FF1369295551293819386
581318119797033856042483626696032745G2165.13447028833415.13957571703504516577.38421407550426.68606674495071621.2FF4194817369295551293819386
581318119797033856042493367563592932G2165.310654260402815.27411999996966214645.30059670388415.237829147406169961.1146FF1369295551293819386
581318119797033856042497459884308082G2165.3846606611915.28144170445369814546.87169296041816.62794467301937874.84485FF1369295551293819386
581318119797033856042511293194606017G2165.634825195779315.1066799156052617087.33460168610727.746964568495965615.82715FF1369295551293819386
581318119797033856045106332841984754G2212.56543633452615.04969305388436318008.14871473240824.65763247583434730.3276FF4194817369295551293819386
581318119797033856045862765222445241G2226.245799896380514.96561135000272119458.1590981488113.5315848002643511437.9808FF4194817369295551293819386
581318119797033856045866857510384258G2226.31983907041115.04124543278501318148.808449589325.66136277425435707.24255FF1369295551293819386
581318119797033856047920496154523039G2263.461350414974314.77683450121952523153.2781711970524.19597906285328956.906FF16385369295551293819386
581318119797033856047924588444447284G2263.535334705385614.89000144247602420861.50868769842838.14814757861256546.8551FF1369295551293819386
581318119797033856049730597152896387G2296.1983875428615.0103326184739118672.96325763292818.207687500037211025.5538FF1369295551293819386
581318119797033856049734689416455459G2296.27239880668515.07685016358421117563.30424656334826.702458645762615657.7411FF1369295551293819386
581318119797033856051044046398296446G2319.95276281577414.76154785673789323481.57089029460334.65841319423585677.5143FF1369295551293819386
581318119797033856051048138668163543G2320.02674465499514.87562139159795621139.6471185237921.53531994207252981.6268FF4194817369295551293819386
581318119797033856051057879547016346G2320.20293951848915.06795181918896617707.8389046276426.568518712230443666.497FF1369295551293819386
581318119797033856017091923342681275BP1705.944050417511815.645391742003597627.787250948564111.4772659101631868.4246FF0369295551293819386
581318119797033856017096015648964756BP1706.018052709240714.94502614303689814539.343967569965145.0521624616696100.23528FF0369295551293819386
581318119797033856019103616164443503BP1742.321891123632715.5306619231522258477.9431307907791.7457877655633492.40689FF0369295551293819386
581318119797033856019107708466271149BP1742.39589351005314.97003965928506714208.211215337345118.85551091406668119.54188FF0369295551293819386
581318119797033856021399806213666242BP1783.845070981974515.26867654747573210791.570426426428108.6790409957943299.29762FF0369295551293819386
581318119797033856021409547035890563BP1784.021222339712515.4142556662897739437.413884990745113.8109853472460582.92182FF0369295551293819386
581318119797033856021824485293442156BP1791.52494121637915.30677975150273810419.415757986244107.1490373297868497.24227FF0369295551293819386
581318119797033856024395810684449039BP1838.026193270793815.539725433348118407.46552118264107.6688166915587578.08636FF0369295551293819386
581318119797033856024405551469584760BP1838.202355637601814.86157378776450615700.943586958276127.81483910734465122.84132FF0369295551293819386
581318119797033856024931096762012370BP1847.706930050646415.16917848414677511827.252662775876121.3483264949198597.46532FF0369295551293819386
581318119797033856024935189040650110BP1847.780940069570314.87907507245916215449.884579447802148.84256341017726103.80018FF0369295551293819386
581318119797033856027126618356192578BP1887.414168620569615.435246808548629256.707586904287102.7216718675667490.114456FF0369295551293819386
581318119797033856027130710644806030BP1887.488180259353615.4972813831988878742.642404008333104.1303579469343283.95863FF0369295551293819386
581318119797033856028701930802795025BP1915.904958800754515.11821182808222212395.68516209234118.23574321330177104.83873FF0369295551293819386
581318119797033856028706023097026037BP1915.978971325734215.24611559923255511018.15883101566133.2271421539646282.70206FF0369295551293819386
581318119797033856030212652632036510BP1943.227355703941215.5764849511948528127.580652350815113.8594438704013871.382576FF0369295551293819386
581318119797033856033678161908888922BP2005.90075289697915.0591911475597513088.16644188033113.16203384470887115.65864FF0369295551293819386
581318119797033856033691995225481810BP2006.150917971884815.4172795360031579411.16643460758194.8387893808635299.23331FF0369295551293819386
581318119797033856033696087577653571BP2006.22492487933615.4827843234386428860.15947602865393.829026916690594.42877FF0369295551293819386
581318119797033856033705828503676574BP2006.401082275306415.5837763718183888073.18156017740388.8157309176975990.8981FF0369295551293819386
581318119797033856033719661749883519BP2006.651245915612715.460395829012769044.75769282735693.939880136048896.28241FF0369295551293819386
581318119797033856033723754081345821BP2006.725252392165914.91275124403387814978.032571792613117.25497707320805127.73899FF0369295551293819386
581318119797033856033733494964639153BP2006.901408899984515.14504542909688612093.084755029244113.57136145276198106.48006FF0369295551293819386
581318119797033856033737587288630311BP2006.97541521595215.26075817397882210870.56203346659100.49130076391349108.17416FF0369295551293819386
581318119797033856033747328155533428BP2007.1515713711615.458784468174019058.19114809305895.7820409594291794.57087FF0369295551293819386
581318119797033856033751420473108127BP2007.225577561243715.5218018423155048547.40989736997390.383333719521494.56843FF0369295551293819386
581318119797033856033761161326248578BP2007.40173339653615.5676695543537728193.83938240824589.2696251355970791.787544FF0369295551293819386
581318119797033856033765253637525668BP2007.475739453691215.5117564896953878626.85845502618689.9620715923480795.894394FF0369295551293819386
581318119797033856033774994483069956BP2007.651895087769615.07639910142712512882.3658226753111.5307886305456115.50502FF0369295551293819386
581318119797033856033779086789366264BP2007.725901029367814.8667422749504515626.379176284325119.96473373334105130.2581FF0369295551293819386
581318119797033856033788827626783979BP2007.902056465452215.1887234511399111616.248333213516106.93345371180985108.63063FF0369295551293819386
581318119797033856033792919933735601BP2007.976062385428115.32286058394646310266.231062510018100.73471875490418101.91354FF0369295551293819386
581318119797033856033802660766041408BP2008.152217674885815.495048926101138760.63724794685294.2201246250829392.98053FF0369295551293819386
581318119797033856033806753071682268BP2008.226223548616615.5657928948988938208.0144123110889.7326981193442491.47183FF0369295551293819386
581318119797033856033816493904643329BP2008.402378783108615.543837401243978375.68446279349592.2811382290562790.76269FF0369295551293819386
581318119797033856033820586211594870BP2008.476384665500315.5050938669098888679.95995441891391.2618331367288895.11051FF0369295551293819386
581318119797033856033830327050847272BP2008.652539952711814.88111712118071315420.853801536456122.05785078077894126.34053FF0369295551293819386
581318119797033856033834419358454119BP2008.726545822457914.96553156447380914267.327898163978114.68397840130663124.40559FF0369295551293819386
581318119797033856033844160203342518BP2008.90270116069715.26817564974289410796.550199799905102.13417065103614105.70948FF0369295551293819386
581318119797033856033848252514625450BP2008.976707065516415.3468937829563410041.4806362868198.13887683832512102.31909FF0369295551293819386
581318119797033856033871826559849957BP2009.40302423955115.4547911451791269091.568394846332106.8152810170847985.11487FF0369295551293819386
581318119797033856033885659774603939BP2009.653186320429314.89867762751373315173.445785731099120.6645261790738125.74902FF0369295551293819386
581318119797033856033889752107382538BP2009.727192537038515.0634760883302813036.61478760932111.13121281697389117.30831FF0369295551293819386
581318119797033856033899493017675421BP2009.903348822799215.3182375909597810310.03719133605101.04130948504188102.03784FF0369295551293819386
581318119797033856033903585361064694BP2009.977355215977715.3973378092749039585.61859190207496.9049284424171698.91776FF0369295551293819386
581318119797033856033913326297178645BP2010.153511917761815.560875904951158245.2704684987390.1045974507493591.50777FF0369295551293819386
581318119797033856033927159617058001BP2010.403675645679215.5553219661747478287.55611117903493.0954233691126889.02216FF0369295551293819386
581318119797033856036829541303731322BP2062.88938076687115.5650995463832948213.25770447061890.4954434193352990.7588FF0369295551293819386
581318119797033856036833633584723661BP2062.963382956527815.5501824075550868326.87998581177590.5254516711585891.98386FF0369295551293819386
581318119797033856038588450339066479BP2094.69609770435515.570121974781218175.35233053800989.6153475539298591.22714FF0369295551293819386
581318119797033856038598191158161925BP2094.872241871333214.88017686863325515434.214116072937130.0633170264353118.66692FF0369295551293819386
581318119797033856039883589192000026BP2118.116420620395715.31091473327070710379.809308414298100.92807475625692102.84363FF0369295551293819386
581318119797033856039887681495799669BP2118.190423566554315.4092880950208139480.69183505282999.786003116891595.01024FF0369295551293819386
581318119797033856042345296273249070BP2162.63322172986415.4927500381481658779.20627038535597.0144084217737790.493835FF0369295551293819386
581318119797033856042355037236368080BP2162.809378627897314.98766267265317613979.453674064524121.22933713289285115.31412FF0369295551293819386
581318119797033856042359129560233007BP2162.883384724936614.90667824173124815062.046068954714131.3293276369215114.68913FF0369295551293819386
581318119797033856042368870438548923BP2163.05954019061415.24369754348193211042.724846387075105.64814155286828104.52361FF0369295551293819386
581318119797033856042382703539536765BP2163.309700040330415.5288852512091528491.82758479116193.6331687726603790.69251FF0369295551293819386
581318119797033856042396536561095672BP2163.559858589124415.5185712554354168572.880423380348112.4050315193455376.26776FF0369295551293819386
581318119797033856042410369526818610BP2163.810016254206414.8551867025693515793.580097078033125.11986578838156126.2276FF0369295551293819386
581318119797033856042414461764563946BP2163.884020898650314.99200649391058513923.636306456914118.6064796869851117.39355FF0369295551293819386
581318119797033856042424202464224583BP2164.060173517643815.28890834993747410592.340383641988102.96073866882989102.87747FF0369295551293819386
581318119797033856042428294697513676BP2164.134178124342315.3798100431365539741.621489119067102.8103816272280594.75329FF0369295551293819386
581318119797033856042438035397174804BP2164.310330826044315.55786542858558268.16427684207592.000694986420289.870674FF0369295551293819386
581318119797033856042442127632299115BP2164.38433550067215.5990147525499077960.66534674144893.9037348101251484.77475FF0369295551293819386
581318119797033856042451868347683256BP2164.560488567739415.5018416381589028705.99900195913793.2670033247949793.3449FF0369295551293819386
581318119797033856042455960596046045BP2164.63449351938715.4145929884531429434.48227565476797.9414252691935296.327805FF0369295551293819386
581318119797033856042465701342232597BP2164.81064723073214.92164236986546714855.877867793226134.8429850648487110.17168FF0369295551293819386
581318119797033856042479534406119719BP2165.06080727825815.34325883652227410075.154941398088100.47967482866677100.27058FF0369295551293819386
581318119797033856042483626696032745BP2165.13481306434315.4409565342067079208.155710166719102.7054181804107989.65599FF0369295551293819386
581318119797033856042493367563592932BP2165.310969130461715.5751833828556388137.3297469226992.0870200822114588.365654FF0369295551293819386
581318119797033856042497459884308082BP2165.38497553141315.5998004940784967954.906339615874100.8922985904263878.84553FF0369295551293819386
581318119797033856042511293194606017BP2165.635140334571615.3331626896334610169.279698464095105.8902481690842796.03603FF0369295551293819386
581318119797033856045106332841984754BP2212.565779146416415.29609770794242610522.433387581594102.9257107305523102.23328FF0369295551293819386
581318119797033856045862765222445241BP2226.246142584741415.2084770608511111406.816205675634105.32347812612828108.30269FF0369295551293819386
581318119797033856045866857510384258BP2226.320153895306715.3060156594478610426.751052557502101.57019536494636102.65562FF0369295551293819386
581318119797033856047920496154523039BP2263.46163706875914.98365470144809614031.153884738871130.78623243608965107.28311FF0369295551293819386
581318119797033856047924588444447284BP2263.53564900688715.1094870538118312495.695878910252112.34208503961624111.22898FF0369295551293819386
581318119797033856049730597152896387BP2296.19870231963615.271168361803410766.831677074499106.12282911968398101.45632FF0369295551293819386
581318119797033856049734689416455459BP2296.27271381364615.3558287659525329959.184130798601100.2096097526710399.38352FF0369295551293819386
581318119797033856051044046398296446BP2319.95307777533614.95101106432512614459.418994285574139.86374506068003103.38218FF0369295551293819386
581318119797033856051048138668163543BP2320.02708744905715.09264261908635912691.069448102076110.81672439159952114.52305FF0369295551293819386
581318119797033856051057879547016346BP2320.203253786679415.34991428519892210013.584205737614101.7543234039838698.409424FF0369295551293819386
581318119797033856017091923342681275RP1705.944139117757714.7605667066241810012.471954702154101.2587032209564998.88011FF0369295551293819386
581318119797033856017096015648964756RP1706.01814055783914.42257298929178313669.064712119256123.67648827643211110.52274FF0369295551293819386
581318119797033856019103616164443503RP1742.321977849001514.8200814086147949478.40871504911296.6808945366578298.03807FF0369295551293819386
581318119797033856019107708466271149RP1742.395978770546214.45836671475338713225.780458996644112.26436674761854117.80925FF0369295551293819386
581318119797033856021399806213666242RP1783.845157697734514.57014538180429911931.906528382407115.11437632330687103.65262FF0369295551293819386
581318119797033856021409547035890563RP1784.021310588304514.68254707121067410758.436646997845104.85533683500128102.60266FF0369295551293819386
581318119797033856021824485293442156RP1791.525028751344514.58096376874784511813.606144838817109.97987657714488107.41607FF0369295551293819386
581318119797033856021828577585186179RP1791.599033789710314.62756554296913711317.272630848618118.0094308520137695.90143FF0369295551293819386
581318119797033856024395810684449039RP1838.026280433692614.8065009083869239597.710189223955104.455625005853391.88313FF0369295551293819386
581318119797033856024405551469584760RP1838.20244457844614.38270032288841314180.379904184394116.87192439329641121.33265FF0369295551293819386
581318119797033856024931096762012370RP1847.707018341631514.525230656989312435.857373066374112.1184207736701110.91717FF0369295551293819386
581318119797033856024935189040650110RP1847.781028010216214.36656015573637314392.75500916038123.55701551402842116.48675FF0369295551293819386
581318119797033856027126618356192578RP1887.414253791739614.67113386913550810872.125266638457107.85368487957125100.80439FF0369295551293819386
581318119797033856027130710644806030RP1887.488268685799314.72863955039611710311.270382950866104.083175666598199.0676FF0369295551293819386
581318119797033856028701930802795025RP1915.905047146471814.51670865062122812533.85121457129112.74135575754858111.1735FF0369295551293819386
581318119797033856028706023097026037RP1915.97905873061714.56521589411055511986.203246471228118.08091277213153101.50839FF0369295551293819386
581318119797033856030212652632036510RP1943.227443893346614.8117541718468229551.384459952898101.8004797739619193.824554FF0369295551293819386
581318119797033856033678161908888922RP2005.90084207335914.48986070750404312847.650454626517111.20073704743315115.53566FF0369295551293819386
581318119797033856033691995225481810RP2006.1510068478714.66207661773961310963.200283330225102.517615760734106.93967FF0369295551293819386
581318119797033856033696087577653571RP2006.225014323656814.70908187867674110498.693179272668100.77439995998596104.18016FF0369295551293819386
581318119797033856033705828503676574RP2006.401170862959414.8018351046975359639.04379271799696.6058583944645299.77701FF0369295551293819386
581318119797033856033719661749883519RP2006.651334234709314.7683353197702529941.08683504105199.5842648128977699.82588FF0369295551293819386
581318119797033856033723754081345821RP2006.725341371247414.41486752993452413766.418984886443112.63003894784477122.22688FF0369295551293819386
581318119797033856033733494964639153RP2006.901496978401414.47579490026685513015.175695940306113.69291957361392114.47657FF0369295551293819386
581318119797033856033737587288630311RP2006.975503993748114.56155523513354712026.684031639235105.8099481508664113.66308FF0369295551293819386
581318119797033856033747328155533428RP2007.15165924175714.68502746540505110733.886755977666104.52525102184828102.6918FF0369295551293819386
581318119797033856033751420473108127RP2007.225666168057414.74718661926338310136.6242369076397.79879428628712103.64774FF0369295551293819386
581318119797033856033761161326248578RP2007.401821100373414.8019784259710939637.77148656302699.2848603493713797.071915FF0369295551293819386
581318119797033856033765253637525668RP2007.475827924398814.8649608124297989094.60141728666790.30282855992277100.71226FF0369295551293819386
581318119797033856033774994483069956RP2007.651982665975514.54182192720705112247.268085175985109.07026987007656112.28786FF0369295551293819386
581318119797033856033779086789366264RP2007.725989402404814.38505020871007514149.722144568497116.71767825408368121.23032FF0369295551293819386
581318119797033856033788827626783979RP2007.902143967627814.53799568008797412290.50487027157111.9946295298015109.74191FF0369295551293819386
581318119797033856033792919933735601RP2007.976150704477714.60131457861621511594.236738401562106.33765658084764109.03228FF0369295551293819386
581318119797033856033802660766041408RP2008.1523051487414.7213564326590410380.670886830703103.44379499872912100.35083FF0369295551293819386
581318119797033856033806753071682268RP2008.226311855260314.7710994851803729915.81010677507498.48724685279275100.68116FF0369295551293819386
581318119797033856033816493904643329RP2008.402466278140814.58282785242474211793.340948865627109.851258190621107.35736FF0369295551293819386
581318119797033856033820586211594870RP2008.476473002192314.7990669777046399663.65026677882697.3319454437805599.28549FF0369295551293819386
581318119797033856033830327050847272RP2008.652627519378314.39271611344994514050.169057629528118.99344308874657118.07516FF0369295551293819386
581318119797033856033834419358454119RP2008.726634237768814.42816695868531713598.8195770469114.42682527116902118.84293FF0369295551293819386
581318119797033856033844160203342518RP2008.90278884844414.57596273502984411868.146572766896109.82624827539324108.06293FF0369295551293819386
581318119797033856033871826559849957RP2009.403112303342114.7835086225834069803.125132226274100.2549179604756597.78199FF0369295551293819386
581318119797033856033885659774603939RP2009.653274630841514.38936831432280214093.55872827574118.09724779545724119.33858FF0369295551293819386
581318119797033856033889752107382538RP2009.727281640468214.468825686711813098.987285233841111.45319629543341117.52904FF0369295551293819386
581318119797033856033899493017675421RP2009.903437411766614.50011920272079612726.832085528233110.6186765480202115.05138FF0369295551293819386
581318119797033856033903585361064694RP2009.977444564644914.6606291774922510977.825529770187102.26205742028654107.34994FF0369295551293819386
581318119797033856033913326297178645RP2010.153600810602314.786562217709169775.59292028414798.1583275512682499.59005FF0369295551293819386
581318119797033856033927159617058001RP2010.40376485489214.8298618739249329393.40928684061796.9150979604969896.92411FF0369295551293819386
581318119797033856036829541303731322RP2062.88946828794314.8070038243126599593.26553355780698.4740178110498297.41926FF0369295551293819386
581318119797033856036833633584723661RP2062.963469541540214.8044047324596759616.25790122398897.5826000775998998.5448FF0369295551293819386
581318119797033856038588450339066479RP2094.696183146614.8303901362171589388.84005821355194.2468926469844399.61962FF0369295551293819386
581318119797033856038598191158161925RP2094.87233124403214.3692451657552914357.205907350442121.49291061019119118.1732FF0369295551293819386
581318119797033856039883589192000026RP2118.116506904195414.60295134194276811576.771423599424105.10204676358094110.14792FF0369295551293819386
581318119797033856039887681495799669RP2118.190508396368414.66040128959451210980.12993496048103.70959467338132105.87381FF0369295551293819386
581318119797033856042345296273249070RP2162.63330707737814.770532972040119920.98530723283107.8174225556190392.01653FF0369295551293819386
581318119797033856042355037236368080RP2162.809464043612514.46490605660046713146.36156798773114.01242777555767115.30639FF0369295551293819386
581318119797033856042359129560233007RP2162.883471586062614.40772223331317613857.315402793845122.78049883779902112.86251FF0369295551293819386
581318119797033856042368870438548923RP2163.059626913645414.55554054577492512093.493540118538109.4378007323521110.50563FF0369295551293819386
581318119797033856042382703539536765RP2163.309787663911314.73591049816144910242.448666209764102.9626053062643699.47736FF0369295551293819386
581318119797033856042396536561095672RP2163.55994679895114.7798458187583539836.252478858025100.1838846451498698.181984FF0369295551293819386
581318119797033856042410369526818610RP2163.81010480094214.37704825563474214254.391841245499116.64414137070456122.20409FF0369295551293819386
581318119797033856042414461764563946RP2163.88411018930314.46720758968864313118.523553899067113.75999362793084115.31755FF0369295551293819386
581318119797033856042424202464224583RP2164.060262196351714.5692656313219111941.578633285118106.99037344902234111.61358FF0369295551293819386
581318119797033856042428294697513676RP2164.13426747917714.64103514756463711177.738269385889106.24927997465637105.20296FF0369295551293819386
581318119797033856042438035397174804RP2164.310419449089714.7676092081266279947.7373944722898.3480175907792101.14832FF0369295551293819386
581318119797033856042442127632299115RP2164.38442476052914.800278456418929652.87345248946399.4754468193622397.03775FF0369295551293819386
581318119797033856042451868347683256RP2164.56057694206114.7689071181946979935.85278166642399.9665003937702599.39182FF0369295551293819386
581318119797033856042455960596046045RP2164.6345825121114.8508560595860549213.51975648170497.1654460201622194.823006FF0369295551293819386
581318119797033856042465701342232597RP2164.810735129397514.40410758782417113903.526217082652118.33776218677566117.49019FF0369295551293819386
581318119797033856042479534406119719RP2165.060894419257214.60087944682918211598.884305659378106.83759023195317108.56557FF0369295551293819386
581318119797033856042483626696032745RP2165.13490082029814.54915115705616712164.871687560117116.53458514771917104.38851FF0369295551293819386
581318119797033856042493367563592932RP2165.31105515347314.7788155934488389845.5902585672299.528702319155298.92212FF0369295551293819386
581318119797033856042497459884308082RP2165.385062169830714.8027758488258949630.695589459587106.6613473912357690.292274FF0369295551293819386
581318119797033856042511293194606017RP2165.635225382932314.6833788412313110750.19788861519112.8094026743292395.29523FF0369295551293819386
581318119797033856045106332841984754RP2212.565866836317614.64046322707879211183.62778609671113.2630617734151798.740295FF0369295551293819386
581318119797033856045862765222445241RP2226.24623042669214.5523699551298412128.860839876003109.88825185351642110.3745FF0369295551293819386
581318119797033856045866857510384258RP2226.320240900959614.59055891705911511709.663863777645107.61043341699524108.81532FF0369295551293819386
581318119797033856047920496154523039RP2263.461723826429514.44913477931781613338.717770052588123.80334194379326107.74118FF0369295551293819386
581318119797033856047924588444447284RP2263.535738416706414.50356264712854912686.532501506801111.82893053351415113.44589FF0369295551293819386
581318119797033856049730597152896387RP2296.19878905422614.5678308693154211957.369438431078108.79329379155686109.90907FF0369295551293819386
581318119797033856049734689416455459RP2296.272799784497214.62661492002166211327.185877004173105.17702330266505107.69639FF0369295551293819386
581318119797033856051044046398296446RP2319.95316334582214.39953432200670513962.21323735066130.4730097756604107.01228FF0369295551293819386
581318119797033856051048138668163543RP2320.027175227723514.49221805577933312819.785922321407112.55804259874068113.89489FF0369295551293819386
581318119797033856051057879547016346RP2320.20334301935414.61687260656427711429.282111731804107.14697456670892106.6692FF0369295551293819386
+
+
diff --git a/examples/mivotblock/test_7_votable_pointer.py b/examples/mivotblock/test_7_votable_pointer.py new file mode 100644 index 00000000000..d0a8ee98d3c --- /dev/null +++ b/examples/mivotblock/test_7_votable_pointer.py @@ -0,0 +1,70 @@ +""" +Created on Feb 26, 2021 + +@author: laurentmichel +""" +import os + +from astropy.io.votable import parse +from astropy.io.votable.tree import MivotBlock, Resource, VOTableFile + +data_path = os.path.dirname(os.path.realpath(__file__)) + +""" +Read out Test +""" + +# Read a valid VOTable +# No invalid element detected, +# The block is returned as an XML String +vpath = os.path.join(data_path, "test.7.xml") +votable = parse(vpath) +for resource in votable.resources: + print(f"Resource type: {resource.type} Mivot Block: {resource.mivot_block}") + + for resource_meta in resource.resources: + print(f"Resource type: {resource_meta.type} Mivot Block:") + print(resource_meta.mivot_block) + +# Read an invalid VOTable +# An unexpected element has been found in the mivot block +# The mivot block pointer returns a block with just REPORT in error +vpath = os.path.join(data_path, "test.7.ko.xml") +votable = parse(vpath) +for resource in votable.resources: + print(f"Resource type: {resource.type} Mivot Block: {resource.mivot_block}") + + for resource_meta in resource.resources: + print(f"Resource type: {resource_meta.type} Mivot Block:") + print(resource_meta.mivot_block) + +""" +Write Test +""" +vpath = os.path.join(data_path, "test.7.out.xml") + +# Create am empty VOTable +votable = VOTableFile() +# Create the resource that will host both data table and mivot resource. +resource = Resource() +resource.type = "results" +# Create the resource that will host the mivot. +meta_resource = Resource() +meta_resource.type = "meta" +# A dummy mivot block for the test. +resource.resources.append(meta_resource) +mivot_block = MivotBlock(""" + + + + +""" + ) +# Add the mivot resource +meta_resource.mivot_block = mivot_block +votable.resources.append(resource) +# Save the VOTable +votable.to_xml(vpath) +# and read it again to retrieve the mivot +with open(vpath) as result: + print(result.read()) From c6cd80120b8275008a03848f7ededa3c215282a3 Mon Sep 17 00:00:00 2001 From: Somia FLORET Date: Thu, 14 Sep 2023 16:32:28 +0200 Subject: [PATCH 02/15] change path for a test file --- astropy/io/votable/tests/test_tree.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/astropy/io/votable/tests/test_tree.py b/astropy/io/votable/tests/test_tree.py index 6eb2930cc54..234b3e36452 100644 --- a/astropy/io/votable/tests/test_tree.py +++ b/astropy/io/votable/tests/test_tree.py @@ -468,7 +468,8 @@ def test_mivot_order(): vtf2 = parse(buff) data_path = os.path.dirname(os.path.realpath(__file__)) vpath = os.path.join(data_path, "data/test.order.xml") + vpath2 = os.path.join(data_path, "data/test.order.out.xml") vtf2.to_xml(vpath) import filecmp - assert filecmp.cmp("data/test.order.xml", "data/test.order.out.xml") + assert filecmp.cmp(vpath, vpath2) From 73a9d6fa791dc649d68c5c0d253f1c584f1576ab Mon Sep 17 00:00:00 2001 From: Somia FLORET Date: Mon, 25 Sep 2023 13:29:07 +0200 Subject: [PATCH 03/15] add doc and improve tests --- .../io/votable/tests/data/test.order.out.xml | 25 - astropy/io/votable/tests/data/test.order.xml | 4 +- astropy/io/votable/tests/test_tree.py | 52 +- docs/io/votable/index.rst | 99 + examples/mivotblock/test.7.ko.xml | 3761 ----------------- examples/mivotblock/test.7.xml | 3761 ----------------- .../{test.7.out.xml => test.mivot.out.xml} | 8 +- examples/mivotblock/test_7_votable_pointer.py | 21 +- 8 files changed, 160 insertions(+), 7571 deletions(-) delete mode 100644 astropy/io/votable/tests/data/test.order.out.xml delete mode 100644 examples/mivotblock/test.7.ko.xml delete mode 100644 examples/mivotblock/test.7.xml rename examples/mivotblock/{test.7.out.xml => test.mivot.out.xml} (74%) diff --git a/astropy/io/votable/tests/data/test.order.out.xml b/astropy/io/votable/tests/data/test.order.out.xml deleted file mode 100644 index a4d5bc01042..00000000000 --- a/astropy/io/votable/tests/data/test.order.out.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - -
- - - - - - -
- - - diff --git a/astropy/io/votable/tests/data/test.order.xml b/astropy/io/votable/tests/data/test.order.xml index a4d5bc01042..6f705da3dfa 100644 --- a/astropy/io/votable/tests/data/test.order.xml +++ b/astropy/io/votable/tests/data/test.order.xml @@ -1,8 +1,8 @@ - + + diff --git a/astropy/io/votable/tests/test_tree.py b/astropy/io/votable/tests/test_tree.py index 234b3e36452..4fb150af44c 100644 --- a/astropy/io/votable/tests/test_tree.py +++ b/astropy/io/votable/tests/test_tree.py @@ -1,4 +1,5 @@ # Licensed under a 3-clause BSD style license - see LICENSE.rst +import filecmp import io import os from contextlib import nullcontext @@ -385,8 +386,6 @@ def test_mivot_forbidden_write(): Build a meta resource containing a mivot block, build the dummy mivot block first. """ - vot = tree - vtf = vot.VOTableFile() mivot_block = MivotBlock( """ @@ -406,10 +405,29 @@ def test_mivot_forbidden_write(): assert True +def setup_function(test_mivot_order): + """ + The setup_function() function tests ensure that the xml file does not exist. + """ + files = os.listdir(".") + if "test.order.out.xml" in files: + os.remove("test.order.out.xml") + + +def teardown_function(test_mivot_order): + """ + The teardown_function() function removes the xml file, if it was created. + """ + files = os.listdir(".") + if "test.order.out.xml" in files: + os.remove("test.order.out.xml") + + def test_mivot_order(): """ - Build a VOTable, put a mivot block and a table in the first resource, checks it can be retrieved - as well as the following table + Build a VOTable with 2 resources containing MivotBlock, parse it, and write it in a file. + Then compare it with another file to see if the order of the elements in a resource is respected, + in particular the MivotBlock which should be before the tables. """ vot = tree mivot_block = MivotBlock( @@ -419,6 +437,7 @@ def test_mivot_order(): """ ) vtf = vot.VOTableFile() + mivot_resource = Resource() mivot_resource.type = "meta" mivot_resource.mivot_block = mivot_block @@ -427,7 +446,7 @@ def test_mivot_order(): mivot_resource2.type = "meta" mivot_resource2.mivot_block = mivot_block - # R1 : 2 mivot_block and 2 tables + # R1 : 2 mivot_block, 2 tables, 1 description, 1 info, 1 CooSys r1 = vot.Resource() r1.type = "results" @@ -442,6 +461,11 @@ def test_mivot_order(): r1.resources.append(mivot_resource) r1.resources.append(mivot_resource2) + cs = vot.CooSys(ID="_XYZ", system="ICRS") + r1.coordinate_systems.append(cs) + i1 = vot.Info(name="test_name", value="test_value") + r1.infos.append(i1) + vtf.resources.append(r1) # R2 : 1 resource "results", 1 mivot_block and 1 table @@ -466,10 +490,20 @@ def test_mivot_order(): # Read the IOStream (emulates a disk readout) buff.seek(0) vtf2 = parse(buff) + data_path = os.path.dirname(os.path.realpath(__file__)) vpath = os.path.join(data_path, "data/test.order.xml") - vpath2 = os.path.join(data_path, "data/test.order.out.xml") - vtf2.to_xml(vpath) - import filecmp + vpath_out = os.path.join(data_path, "test.order.out.xml") + vtf2.to_xml(vpath_out) + + # We want to remove the xml header from the VOTable + with open("test.order.out.xml") as fichier: + lines = fichier.readlines() + # The xml header is on 2 lines (line 2 and 3) + del lines[1] + del lines[1] + + with open("test.order.out.xml", "w") as fichier: + fichier.writelines(lines) - assert filecmp.cmp(vpath, vpath2) + assert filecmp.cmp(vpath, vpath_out) diff --git a/docs/io/votable/index.rst b/docs/io/votable/index.rst index 7d1d1999ccc..25e97f62a20 100644 --- a/docs/io/votable/index.rst +++ b/docs/io/votable/index.rst @@ -465,6 +465,105 @@ record array must be resized repeatedly during load. .. _nrows: http://www.ivoa.net/documents/REC/VOTable/VOTable-20040811.html#ToC10 +Reading and writing VO model annotations +======================================== + +Introduction +------------ +Model Instances in VOTables (`MIVOT `_) +defines a syntax to map VOTable data to any model serizalized in VO-DML (Virtual Observatory Data Modeling Language). +This annotation schema operates as a bridge between the data and the model. It associates the column/param metadata +from the VOTable to the data model elements (class, attributes, types, etc.) . It also brings up VOTable data or +metadata that were possibly missing in the table meta-data. +The data model elements are grouped in an independent annotation block complying with the MIVOT XML schema which +is added as an extra resource element above the TABLE element. +The MIVOT syntax allows to describe a data structure as a hierarchy of classes. +It is also able to represent relations and composition between them. It can also build up data model objects by +aggregating instances from different tables of the VOTable. +Missing metadata can also be provided using MIVOT, for instance by completing +coordinate system description, or by providing curation tracing. + +Astropy implementation +---------------------- +The purpose of Astropy is not to process the VO annotations. +It is just to allow related packages to get and set Mivot blocks in VOTables. +For this reason the Mivot annotations are both imported and exported as strings. +The current implementation prevents client code from injecting strings in VOTable +that are not Mivot serializations. + +MivotBlock implementation : + +- Mivot blocks are handled by the MivotBlock class in tree.py. +- A MivotBlock instance can only be carried by a resource with “type=meta”. +- This instance holds the XML mapping block as a string. +- MivotBlock object are instanced by the Resource parser. +- The MivotBlock class has its own logic that operates both parsing and IO functionalities. + +Examples +^^^^^^^^ + +.. code-block:: xml + + + + + ... + + +
+ .... +
+
+
+ +Reading a VOTable containing a Mivot block +---------------------- + +To read in a VOTable file containing or not a Mivot Resource, pass a file path to`~astropy.io.votable.parse`:: + + from astropy.io.votable import parse + votable = parse("votable.xml") +The parse function will call the Mivot parser if it detects a Mivot block + +Building a Resource containing a Mivot block +--------------------------------- + +Construct the mivot block by passing the XML block as a parameter:: + + mivot_block = MivotBlock(""" + + Unit test mapping block + + + """) + +Build a new resource:: + + mivot_resource = Resource() + Give it the type meta:: + mivot_resource.type = "meta" + Then add it the mivot block:: + mivot_resource.mivot_block = mivot_block +Now you have a mivot resource that you can add to an object Resource creating a new Resource:: + + vtf = VOTableFile() + r1 = Resource() + r1.type = "results" + r1.resources.append(mivot_resource) + +You can add a Table to the resource:: + + t1 = Table(vtf) + r1.tables.append(t1) + vtf.resources.append(r1) + +You can extract a Mivot block from a file by passing the file path to`~astropy.utils.data.py`:: + + votable = parse(get_pkg_data_filename('data/mivot_block.xml')) + for resource in votable.resources: + print(resource.mivot_block.content) + See Also ======== diff --git a/examples/mivotblock/test.7.ko.xml b/examples/mivotblock/test.7.ko.xml deleted file mode 100644 index 941a6de24a3..00000000000 --- a/examples/mivotblock/test.7.ko.xml +++ /dev/null @@ -1,3761 +0,0 @@ - - - - Epoch photometry. This table contains light curve data points. Each entry is a photometric flux-time pair for a given object, band and time. It follows the (evolving) VO convention for time series as much as possible. At the time of writing, a VO recommendation has not yet been released. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Source ID - - - Photometric Band - - - - - - - - - - - - - - - - - -
5813181197970338560G
5813181197970338560BP
5813181197970338560RP
- - -Source Id. A unique single numerical identifier of the source obtained from GaiaSource. - - -Transit unique identifier. For a given object, a transit comprises the different Gaia observations (SM, AF, BP, RP and RVS) obtained for each focal plane crossing. - - -Photometric band. Values: G (per-transit combined SM-AF flux), BP (blue photometer integrated flux) and RP (red photometer integrated flux). - - -Different times are defined for each band. For G, it is the field-of-view transit averaged observation time. For BP and RP, it is the observation time of the BP CCD transit. The units are Barycentric JD (in TCB) in days -2,455,197.5, computed as follows. First the observation time is converted from On-board Mission Time (OBMT) into Julian date in TCB (Temps Coordonnee Barycentrique). Next a correction is applied for the light-travel time to the Solar system barycentre, resulting in Barycentric Julian Date (BJD). Finally, an offset of 2,455,197.5 days is applied (corresponding to a reference time $T_0$ at 2010-01-01T00:00:00) to have a conveniently small numerical value. Although the centroiding time accuracy of the individual CCD observations is (much) below 1~ms (e.g. in BP and RP), the G band observation time is averaged over typically 9 CCD observations taken in a time range of about 44sec. - - -Vega magnitude, computed from the flux applying the zero-point defined in ExtPhotZeroPoint. - - -Band flux value for the transit. For G band, it is a combination of individual SM-AF CCD fluxes. For BP and RP bands, it is an integrated CCD flux. - - -Flux error. If the flux has been rejected or is unavailable, this error will be set to null. - - -Band flux divided by its error. If the flux has been rejected or is unavailable, this field will be set to null. - - -Rejected by DPAC photometry processing. - - -Rejected by DPAC variability processing (or variability analysis). - - -Additional processing flags. This field contains extra information on the data used to compute the fluxes and their quality. It provides debugging information that may be safely ignored for many general purpose applications. The field is a collection of binary flags, whose values can be recovered applying bit shifting and masking operations. Each band has different binary flags in different positions, as shown below. Bit numbering is as follows: least significant bit = 1 and most significant bit = 64 -G band: - Bit 1: SM transit rejected by photometry processing. - Bit 2: AF1 transit rejected by photometry processing. - Bit 3: AF2 transit rejected by photometry processing. - Bit 4: AF3 transit rejected by photometry processing. - Bit 5: AF4 transit rejected by photometry processing. - Bit 6: AF5 transit rejected by photometry processing. - Bit 7: AF6 transit rejected by photometry processing. - Bit 8: AF7 transit rejected by photometry processing. - Bit 9: AF8 transit rejected by photometry processing. - Bit 10: AF9 transit rejected by photometry processing. - Bit 13: G band flux scatter larger than expected by photometry processing (all CCDs considered). - Bit 14: SM transit unavailable by photometry processing. - Bit 15: AF1 transit unavailable by photometry processing. - Bit 16: AF2 transit unavailable by photometry processing. - Bit 17: AF3 transit unavailable by photometry processing. - Bit 18: AF4 transit unavailable by photometry processing. - Bit 19: AF5 transit unavailable by photometry processing. - Bit 20: AF6 transit unavailable by photometry processing. - Bit 21: AF7 transit unavailable by photometry processing. - Bit 22: AF8 transit unavailable by photometry processing. - Bit 23: AF9 transit unavailable by photometry processing. - -BP band: - Bit 11: BP transit rejected by photometry processing. - Bit 24: BP transit photometry rejected by variability processing. -RP band: - Bit 12: RP transit rejected by photometry processing. - Bit 25: RP transit photometry rejected by variability processing. - - -All Gaia data processed by the Data Processing and Analysis Consortium comes tagged with a solution identifier. This is a numeric field attached to each table row that can be used to unequivocally identify the version of all the subsystems that where used in the generation of the data as well as the input data used. It is mainly for internal DPAC use but is included in the published data releases to enable end users to examine the provenance of processed data products. To decode a given solution ID visit https://gaia.esac.esa.int/decoder/solnDecoder.jsp - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
581318119797033856017091923342681275G1705.943736020098415.21657477445216415442.45627327361644.151258712309364349.76254FF4097369295551293819386
581318119797033856017096015648964756G1706.017710021738614.76733669360487723356.7069931982333.53035403015752696.584FF4194817369295551293819386
581318119797033856019103616164443503G1742.321576336688615.27834299913750214588.44795624094115.054069973748831969.07FF1369295551293819386
581318119797033856019107708466271149G1742.395578480121514.79945639536924622675.858166928436.37833986932219623.33405FF1369295551293819386
581318119797033856021399806213666242G1783.844756175495615.00162969715262518823.2413684894176.66828621279929245.51535FF4097369295551293819386
581318119797033856021409547035890563G1784.020907841457815.17313402571078616072.8421575771823.586653704923705681.438FF1369295551293819386
581318119797033856021824485293442156G1791.52459845637515.02049549882648318498.99310489827627.47938441501548673.1953FF4194817369295551293819386
581318119797033856021828577585186179G1791.598603555036315.08943444144808817360.91111083305444.22970422257367392.517FF4198913369295551293819386
581318119797033856024395810684449039G1838.025878524190415.26133987410009914818.707999493628.170464765084663526.03705FF1369295551293819386
581318119797033856024405551469584760G1838.202041271258214.6994481588427124863.7726777521431.69438019797314784.4852FF1369295551293819386
581318119797033856024931096762012370G1847.706615535967814.95021371400311819736.07579884085108.45084262254287181.98177FT4097369295551293819386
581318119797033856024935189040650110G1847.78062547770814.69551745209928824953.950497046231.57293736023059790.3588FF1369295551293819386
581318119797033856027126618356192578G1887.413853545711415.14774685225309616453.0928717041130.577522853022316538.078FF1369295551293819386
581318119797033856027130710644806030G1887.487865760130315.20599201707526415593.71107493394421.87756637979126712.7717FF1369295551293819386
581318119797033856028701930802795025G1915.904644283122514.90379334190622320598.18494770081835.51645082589201579.9618FF1369295551293819386
581318119797033856028706023097026037G1915.978628492924114.9887875613136519047.20541696601521.51019271049616885.49677FF4194817369295551293819386
581318119797033856030212652632036510G1943.227041158292615.28001975936244814565.93562735035821.787971439926846668.53107FF1369295551293819386
581318119797033856033678161908888922G2005.900438587903414.85846275759260321476.38530646301332.77063647752211655.35455FF1369295551293819386
581318119797033856033691995225481810G2006.15060359176915.12773870523066416759.10446054069350.30742792377961333.1338FF4097369295551293819386
581318119797033856033696087577653571G2006.22461066172115.19415792284656215764.60599562406834.629652512204686455.2343FF4097369295551293819386
581318119797033856033705828503676574G2006.400767832857815.29447047930272814373.35321955841831.728764729604734453.00702FF1369295551293819386
581318119797033856033719661749883519G2006.65093141417215.21129303347053815517.76164144798513.6396673584794071137.6936FF1369295551293819386
581318119797033856033723754081345821G2006.72493805635814.73176086343200524134.702215627953138.00028662673847174.88878FT4097369295551293819386
581318119797033856033733494964639153G2006.90109435010314.91932126902495220305.6914383843637.72607337853305538.24023FF4097369295551293819386
581318119797033856033737587288630311G2006.97510083277314.99427122984626818951.24726644503624.519279254369795772.9121FF1369295551293819386
581318119797033856033747328155533428G2007.15122866159915.16855872596250316140.71613395886226.023346121367922620.23987FF4194817369295551293819386
581318119797033856033751420473108127G2007.225263140727515.23045172587261815246.33997196106615.887231267359775959.66FF1369295551293819386
581318119797033856033761161326248578G2007.401390655455515.27881568947362114582.09805516888326.838369872261936543.33026FF4194817369295551293819386
581318119797033856033765253637525668G2007.475424999987815.22795730662149315281.40786786292822.50930538861004678.8929FF1369295551293819386
581318119797033856033774994483069956G2007.651552323342714.8887907741428920884.78363638497522.658701951766577921.71136FF4194817369295551293819386
581318119797033856033779086789366264G2007.725586554187414.70432306174447124752.38579229173825.735621412286502961.79474FF1369295551293819386
581318119797033856033788827626783979G2007.901713687645514.9679491426816519416.30712387496529.64824531572207654.8889FF4194817369295551293819386
581318119797033856033792919933735601G2007.975747898070315.0450087374083118086.01118486939629.49216571897128613.248FF1369295551293819386
581318119797033856033802660766041408G2008.15187489078115.20709453774299315577.88433677983323.605790175539486659.9179FF4194817369295551293819386
581318119797033856033806753071682268G2008.225909058531415.2642517780442914779.01802548656520.915936643705166706.59125FF1369295551293819386
581318119797033856033816493904643329G2008.40203600318615.25645375643399114885.54662830053718.76156053279368793.4066FF4194817369295551293819386
581318119797033856033820586211594870G2008.476070181304515.24695003659471715016.41545933902314.490588596964041036.2875FF1369295551293819386
581318119797033856033830327050847272G2008.65219718582814.71232450476103524570.64109172864543.8608953286856560.1947FF4194817369295551293819386
581318119797033856033834419358454119G2008.726231356473614.77777468809914723133.23740450918226.070674191206134887.32794FF1369295551293819386
581318119797033856033844160203342518G2008.902358416978615.01282549277532618630.13890330070435.762934572614164520.93427FF4194817369295551293819386
581318119797033856033848252514625450G2008.976392628291515.07703553286881317560.305894643230.969243251957153567.02405FF1369295551293819386
581318119797033856033857993370910889G2009.15251983624415.23969037663928815117.15755366130532.838140768582534460.35364FF4194817369295551293819386
581318119797033856033871826559849957G2009.402709687243315.22850509665830515273.69983383756518.203243801487414839.06476FF1369295551293819386
581318119797033856033885659774603939G2009.652871817816714.72096265187636124375.93197782340239.77600611001573612.8301FF1369295551293819386
581318119797033856033889752107382538G2009.726878233493414.84548935870568421734.54468194714438.76651853261073560.65247FF4097369295551293819386
581318119797033856033899493017675421G2009.903034380814515.05699000728264617887.52637512640630.338931239340802589.58984FF1369295551293819386
581318119797033856033903585361064694G2009.977040973850815.12225401972396516843.97864552192239.881341967077454422.35236FF4097369295551293819386
581318119797033856033913326297178645G2010.153197541980715.27059557063736214692.91823520523629.845086964696122492.3061FF1369295551293819386
581318119797033856033927159617058001G2010.403361344314815.26863016904718914719.53946930639931.13585385987356472.75208FF1369295551293819386
581318119797033856036829541303731322G2062.88903805740415.29327816710034314389.14613286105924.734102404603966581.7533FF4194817369295551293819386
581318119797033856036833633584723661G2062.963068099755715.26598289685452814755.47284865279315.172661964968555972.5039FF1369295551293819386
581318119797033856038588450339066479G2094.695782652994715.29273272829264114396.376591233314.869895855882879968.1558FF1369295551293819386
581318119797033856038598191158161925G2094.87192768315614.70029225967111624844.44995939319445.704295328124445543.5911FF4097369295551293819386
581318119797033856039883589192000026G2118.11610581066315.05821931335535917867.28499335439517.587990677753931015.8798FF1369295551293819386
581318119797033856039887681495799669G2118.19010841452815.12507028966121716800.34399427385527.417549220392043612.7588FF1369295551293819386
581318119797033856042345296273249070G2162.63290663967715.22546916548760315316.46785736561817.10519366752424895.4279FF1369295551293819386
581318119797033856042355037236368080G2162.80906366180914.81602592662738622332.42681235417733.2059480810719672.54297FF1369295551293819386
581318119797033856042359129560233007G2162.883069896432514.72728797468493224234.33461879806823.346267697967391038.039FF1369295551293819386
581318119797033856042368870438548923G2163.059225439935314.98512951745512519111.48716348522423.991790652842834796.5844FF1369295551293819386
581318119797033856042382703539536765G2163.309357336572215.21893987491361215408.85399539994620.574937514347496748.91376FF4194817369295551293819386
581318119797033856042396536561095672G2163.559544120948415.24258443920682515076.91597111668930.00318769312344502.51047FF1369295551293819386
581318119797033856042410369526818610G2163.80970186037714.68781985404283225131.49639727623829.42571919641413854.0657FF1369295551293819386
581318119797033856042414461764563946G2163.883706601008714.8048482644965922563.5268561229426.88670476770927839.2076FF1369295551293819386
581318119797033856042424202464224583G2164.059859152315815.02513868205891318420.05053010173340.67166061326495452.89645FF4097369295551293819386
581318119797033856042428294697513676G2164.13386384408515.09968807984079817197.72729767952516.23269528584321059.45FF1369295551293819386
581318119797033856042438035397174804G2164.31003754163515.24748855154002815008.9693052768529.868055788494843502.5091FF32769369295551293819386
581318119797033856042442127632299115G2164.3840211943415.27951499162055714572.7090256831632.88027707401486443.20517FF1369295551293819386
581318119797033856042451868347683256G2164.560174134270715.22775115350533815284.30968594482122.63183511557936675.3456FF1369295551293819386
581318119797033856042455960596046045G2164.63417914459315.30424321729251414244.55882787946440.94632238749036347.88373FF4097369295551293819386
581318119797033856042465701342232597G2164.810304580143614.74876507537859123759.66209443107434.458728119436955689.5107FF4194817369295551293819386
581318119797033856042479534406119719G2165.06049260123715.06714434236801717721.01336429657426.859389991297327659.7698FF1369295551293819386
581318119797033856042483626696032745G2165.13447028833415.13957571703504516577.38421407550426.68606674495071621.2FF4194817369295551293819386
581318119797033856042493367563592932G2165.310654260402815.27411999996966214645.30059670388415.237829147406169961.1146FF1369295551293819386
581318119797033856042497459884308082G2165.3846606611915.28144170445369814546.87169296041816.62794467301937874.84485FF1369295551293819386
581318119797033856042511293194606017G2165.634825195779315.1066799156052617087.33460168610727.746964568495965615.82715FF1369295551293819386
581318119797033856045106332841984754G2212.56543633452615.04969305388436318008.14871473240824.65763247583434730.3276FF4194817369295551293819386
581318119797033856045862765222445241G2226.245799896380514.96561135000272119458.1590981488113.5315848002643511437.9808FF4194817369295551293819386
581318119797033856045866857510384258G2226.31983907041115.04124543278501318148.808449589325.66136277425435707.24255FF1369295551293819386
581318119797033856047920496154523039G2263.461350414974314.77683450121952523153.2781711970524.19597906285328956.906FF16385369295551293819386
581318119797033856047924588444447284G2263.535334705385614.89000144247602420861.50868769842838.14814757861256546.8551FF1369295551293819386
581318119797033856049730597152896387G2296.1983875428615.0103326184739118672.96325763292818.207687500037211025.5538FF1369295551293819386
581318119797033856049734689416455459G2296.27239880668515.07685016358421117563.30424656334826.702458645762615657.7411FF1369295551293819386
581318119797033856051044046398296446G2319.95276281577414.76154785673789323481.57089029460334.65841319423585677.5143FF1369295551293819386
581318119797033856051048138668163543G2320.02674465499514.87562139159795621139.6471185237921.53531994207252981.6268FF4194817369295551293819386
581318119797033856051057879547016346G2320.20293951848915.06795181918896617707.8389046276426.568518712230443666.497FF1369295551293819386
581318119797033856017091923342681275BP1705.944050417511815.645391742003597627.787250948564111.4772659101631868.4246FF0369295551293819386
581318119797033856017096015648964756BP1706.018052709240714.94502614303689814539.343967569965145.0521624616696100.23528FF0369295551293819386
581318119797033856019103616164443503BP1742.321891123632715.5306619231522258477.9431307907791.7457877655633492.40689FF0369295551293819386
581318119797033856019107708466271149BP1742.39589351005314.97003965928506714208.211215337345118.85551091406668119.54188FF0369295551293819386
581318119797033856021399806213666242BP1783.845070981974515.26867654747573210791.570426426428108.6790409957943299.29762FF0369295551293819386
581318119797033856021409547035890563BP1784.021222339712515.4142556662897739437.413884990745113.8109853472460582.92182FF0369295551293819386
581318119797033856021824485293442156BP1791.52494121637915.30677975150273810419.415757986244107.1490373297868497.24227FF0369295551293819386
581318119797033856024395810684449039BP1838.026193270793815.539725433348118407.46552118264107.6688166915587578.08636FF0369295551293819386
581318119797033856024405551469584760BP1838.202355637601814.86157378776450615700.943586958276127.81483910734465122.84132FF0369295551293819386
581318119797033856024931096762012370BP1847.706930050646415.16917848414677511827.252662775876121.3483264949198597.46532FF0369295551293819386
581318119797033856024935189040650110BP1847.780940069570314.87907507245916215449.884579447802148.84256341017726103.80018FF0369295551293819386
581318119797033856027126618356192578BP1887.414168620569615.435246808548629256.707586904287102.7216718675667490.114456FF0369295551293819386
581318119797033856027130710644806030BP1887.488180259353615.4972813831988878742.642404008333104.1303579469343283.95863FF0369295551293819386
581318119797033856028701930802795025BP1915.904958800754515.11821182808222212395.68516209234118.23574321330177104.83873FF0369295551293819386
581318119797033856028706023097026037BP1915.978971325734215.24611559923255511018.15883101566133.2271421539646282.70206FF0369295551293819386
581318119797033856030212652632036510BP1943.227355703941215.5764849511948528127.580652350815113.8594438704013871.382576FF0369295551293819386
581318119797033856033678161908888922BP2005.90075289697915.0591911475597513088.16644188033113.16203384470887115.65864FF0369295551293819386
581318119797033856033691995225481810BP2006.150917971884815.4172795360031579411.16643460758194.8387893808635299.23331FF0369295551293819386
581318119797033856033696087577653571BP2006.22492487933615.4827843234386428860.15947602865393.829026916690594.42877FF0369295551293819386
581318119797033856033705828503676574BP2006.401082275306415.5837763718183888073.18156017740388.8157309176975990.8981FF0369295551293819386
581318119797033856033719661749883519BP2006.651245915612715.460395829012769044.75769282735693.939880136048896.28241FF0369295551293819386
581318119797033856033723754081345821BP2006.725252392165914.91275124403387814978.032571792613117.25497707320805127.73899FF0369295551293819386
581318119797033856033733494964639153BP2006.901408899984515.14504542909688612093.084755029244113.57136145276198106.48006FF0369295551293819386
581318119797033856033737587288630311BP2006.97541521595215.26075817397882210870.56203346659100.49130076391349108.17416FF0369295551293819386
581318119797033856033747328155533428BP2007.1515713711615.458784468174019058.19114809305895.7820409594291794.57087FF0369295551293819386
581318119797033856033751420473108127BP2007.225577561243715.5218018423155048547.40989736997390.383333719521494.56843FF0369295551293819386
581318119797033856033761161326248578BP2007.40173339653615.5676695543537728193.83938240824589.2696251355970791.787544FF0369295551293819386
581318119797033856033765253637525668BP2007.475739453691215.5117564896953878626.85845502618689.9620715923480795.894394FF0369295551293819386
581318119797033856033774994483069956BP2007.651895087769615.07639910142712512882.3658226753111.5307886305456115.50502FF0369295551293819386
581318119797033856033779086789366264BP2007.725901029367814.8667422749504515626.379176284325119.96473373334105130.2581FF0369295551293819386
581318119797033856033788827626783979BP2007.902056465452215.1887234511399111616.248333213516106.93345371180985108.63063FF0369295551293819386
581318119797033856033792919933735601BP2007.976062385428115.32286058394646310266.231062510018100.73471875490418101.91354FF0369295551293819386
581318119797033856033802660766041408BP2008.152217674885815.495048926101138760.63724794685294.2201246250829392.98053FF0369295551293819386
581318119797033856033806753071682268BP2008.226223548616615.5657928948988938208.0144123110889.7326981193442491.47183FF0369295551293819386
581318119797033856033816493904643329BP2008.402378783108615.543837401243978375.68446279349592.2811382290562790.76269FF0369295551293819386
581318119797033856033820586211594870BP2008.476384665500315.5050938669098888679.95995441891391.2618331367288895.11051FF0369295551293819386
581318119797033856033830327050847272BP2008.652539952711814.88111712118071315420.853801536456122.05785078077894126.34053FF0369295551293819386
581318119797033856033834419358454119BP2008.726545822457914.96553156447380914267.327898163978114.68397840130663124.40559FF0369295551293819386
581318119797033856033844160203342518BP2008.90270116069715.26817564974289410796.550199799905102.13417065103614105.70948FF0369295551293819386
581318119797033856033848252514625450BP2008.976707065516415.3468937829563410041.4806362868198.13887683832512102.31909FF0369295551293819386
581318119797033856033871826559849957BP2009.40302423955115.4547911451791269091.568394846332106.8152810170847985.11487FF0369295551293819386
581318119797033856033885659774603939BP2009.653186320429314.89867762751373315173.445785731099120.6645261790738125.74902FF0369295551293819386
581318119797033856033889752107382538BP2009.727192537038515.0634760883302813036.61478760932111.13121281697389117.30831FF0369295551293819386
581318119797033856033899493017675421BP2009.903348822799215.3182375909597810310.03719133605101.04130948504188102.03784FF0369295551293819386
581318119797033856033903585361064694BP2009.977355215977715.3973378092749039585.61859190207496.9049284424171698.91776FF0369295551293819386
581318119797033856033913326297178645BP2010.153511917761815.560875904951158245.2704684987390.1045974507493591.50777FF0369295551293819386
581318119797033856033927159617058001BP2010.403675645679215.5553219661747478287.55611117903493.0954233691126889.02216FF0369295551293819386
581318119797033856036829541303731322BP2062.88938076687115.5650995463832948213.25770447061890.4954434193352990.7588FF0369295551293819386
581318119797033856036833633584723661BP2062.963382956527815.5501824075550868326.87998581177590.5254516711585891.98386FF0369295551293819386
581318119797033856038588450339066479BP2094.69609770435515.570121974781218175.35233053800989.6153475539298591.22714FF0369295551293819386
581318119797033856038598191158161925BP2094.872241871333214.88017686863325515434.214116072937130.0633170264353118.66692FF0369295551293819386
581318119797033856039883589192000026BP2118.116420620395715.31091473327070710379.809308414298100.92807475625692102.84363FF0369295551293819386
581318119797033856039887681495799669BP2118.190423566554315.4092880950208139480.69183505282999.786003116891595.01024FF0369295551293819386
581318119797033856042345296273249070BP2162.63322172986415.4927500381481658779.20627038535597.0144084217737790.493835FF0369295551293819386
581318119797033856042355037236368080BP2162.809378627897314.98766267265317613979.453674064524121.22933713289285115.31412FF0369295551293819386
581318119797033856042359129560233007BP2162.883384724936614.90667824173124815062.046068954714131.3293276369215114.68913FF0369295551293819386
581318119797033856042368870438548923BP2163.05954019061415.24369754348193211042.724846387075105.64814155286828104.52361FF0369295551293819386
581318119797033856042382703539536765BP2163.309700040330415.5288852512091528491.82758479116193.6331687726603790.69251FF0369295551293819386
581318119797033856042396536561095672BP2163.559858589124415.5185712554354168572.880423380348112.4050315193455376.26776FF0369295551293819386
581318119797033856042410369526818610BP2163.810016254206414.8551867025693515793.580097078033125.11986578838156126.2276FF0369295551293819386
581318119797033856042414461764563946BP2163.884020898650314.99200649391058513923.636306456914118.6064796869851117.39355FF0369295551293819386
581318119797033856042424202464224583BP2164.060173517643815.28890834993747410592.340383641988102.96073866882989102.87747FF0369295551293819386
581318119797033856042428294697513676BP2164.134178124342315.3798100431365539741.621489119067102.8103816272280594.75329FF0369295551293819386
581318119797033856042438035397174804BP2164.310330826044315.55786542858558268.16427684207592.000694986420289.870674FF0369295551293819386
581318119797033856042442127632299115BP2164.38433550067215.5990147525499077960.66534674144893.9037348101251484.77475FF0369295551293819386
581318119797033856042451868347683256BP2164.560488567739415.5018416381589028705.99900195913793.2670033247949793.3449FF0369295551293819386
581318119797033856042455960596046045BP2164.63449351938715.4145929884531429434.48227565476797.9414252691935296.327805FF0369295551293819386
581318119797033856042465701342232597BP2164.81064723073214.92164236986546714855.877867793226134.8429850648487110.17168FF0369295551293819386
581318119797033856042479534406119719BP2165.06080727825815.34325883652227410075.154941398088100.47967482866677100.27058FF0369295551293819386
581318119797033856042483626696032745BP2165.13481306434315.4409565342067079208.155710166719102.7054181804107989.65599FF0369295551293819386
581318119797033856042493367563592932BP2165.310969130461715.5751833828556388137.3297469226992.0870200822114588.365654FF0369295551293819386
581318119797033856042497459884308082BP2165.38497553141315.5998004940784967954.906339615874100.8922985904263878.84553FF0369295551293819386
581318119797033856042511293194606017BP2165.635140334571615.3331626896334610169.279698464095105.8902481690842796.03603FF0369295551293819386
581318119797033856045106332841984754BP2212.565779146416415.29609770794242610522.433387581594102.9257107305523102.23328FF0369295551293819386
581318119797033856045862765222445241BP2226.246142584741415.2084770608511111406.816205675634105.32347812612828108.30269FF0369295551293819386
581318119797033856045866857510384258BP2226.320153895306715.3060156594478610426.751052557502101.57019536494636102.65562FF0369295551293819386
581318119797033856047920496154523039BP2263.46163706875914.98365470144809614031.153884738871130.78623243608965107.28311FF0369295551293819386
581318119797033856047924588444447284BP2263.53564900688715.1094870538118312495.695878910252112.34208503961624111.22898FF0369295551293819386
581318119797033856049730597152896387BP2296.19870231963615.271168361803410766.831677074499106.12282911968398101.45632FF0369295551293819386
581318119797033856049734689416455459BP2296.27271381364615.3558287659525329959.184130798601100.2096097526710399.38352FF0369295551293819386
581318119797033856051044046398296446BP2319.95307777533614.95101106432512614459.418994285574139.86374506068003103.38218FF0369295551293819386
581318119797033856051048138668163543BP2320.02708744905715.09264261908635912691.069448102076110.81672439159952114.52305FF0369295551293819386
581318119797033856051057879547016346BP2320.203253786679415.34991428519892210013.584205737614101.7543234039838698.409424FF0369295551293819386
581318119797033856017091923342681275RP1705.944139117757714.7605667066241810012.471954702154101.2587032209564998.88011FF0369295551293819386
581318119797033856017096015648964756RP1706.01814055783914.42257298929178313669.064712119256123.67648827643211110.52274FF0369295551293819386
581318119797033856019103616164443503RP1742.321977849001514.8200814086147949478.40871504911296.6808945366578298.03807FF0369295551293819386
581318119797033856019107708466271149RP1742.395978770546214.45836671475338713225.780458996644112.26436674761854117.80925FF0369295551293819386
581318119797033856021399806213666242RP1783.845157697734514.57014538180429911931.906528382407115.11437632330687103.65262FF0369295551293819386
581318119797033856021409547035890563RP1784.021310588304514.68254707121067410758.436646997845104.85533683500128102.60266FF0369295551293819386
581318119797033856021824485293442156RP1791.525028751344514.58096376874784511813.606144838817109.97987657714488107.41607FF0369295551293819386
581318119797033856021828577585186179RP1791.599033789710314.62756554296913711317.272630848618118.0094308520137695.90143FF0369295551293819386
581318119797033856024395810684449039RP1838.026280433692614.8065009083869239597.710189223955104.455625005853391.88313FF0369295551293819386
581318119797033856024405551469584760RP1838.20244457844614.38270032288841314180.379904184394116.87192439329641121.33265FF0369295551293819386
581318119797033856024931096762012370RP1847.707018341631514.525230656989312435.857373066374112.1184207736701110.91717FF0369295551293819386
581318119797033856024935189040650110RP1847.781028010216214.36656015573637314392.75500916038123.55701551402842116.48675FF0369295551293819386
581318119797033856027126618356192578RP1887.414253791739614.67113386913550810872.125266638457107.85368487957125100.80439FF0369295551293819386
581318119797033856027130710644806030RP1887.488268685799314.72863955039611710311.270382950866104.083175666598199.0676FF0369295551293819386
581318119797033856028701930802795025RP1915.905047146471814.51670865062122812533.85121457129112.74135575754858111.1735FF0369295551293819386
581318119797033856028706023097026037RP1915.97905873061714.56521589411055511986.203246471228118.08091277213153101.50839FF0369295551293819386
581318119797033856030212652632036510RP1943.227443893346614.8117541718468229551.384459952898101.8004797739619193.824554FF0369295551293819386
581318119797033856033678161908888922RP2005.90084207335914.48986070750404312847.650454626517111.20073704743315115.53566FF0369295551293819386
581318119797033856033691995225481810RP2006.1510068478714.66207661773961310963.200283330225102.517615760734106.93967FF0369295551293819386
581318119797033856033696087577653571RP2006.225014323656814.70908187867674110498.693179272668100.77439995998596104.18016FF0369295551293819386
581318119797033856033705828503676574RP2006.401170862959414.8018351046975359639.04379271799696.6058583944645299.77701FF0369295551293819386
581318119797033856033719661749883519RP2006.651334234709314.7683353197702529941.08683504105199.5842648128977699.82588FF0369295551293819386
581318119797033856033723754081345821RP2006.725341371247414.41486752993452413766.418984886443112.63003894784477122.22688FF0369295551293819386
581318119797033856033733494964639153RP2006.901496978401414.47579490026685513015.175695940306113.69291957361392114.47657FF0369295551293819386
581318119797033856033737587288630311RP2006.975503993748114.56155523513354712026.684031639235105.8099481508664113.66308FF0369295551293819386
581318119797033856033747328155533428RP2007.15165924175714.68502746540505110733.886755977666104.52525102184828102.6918FF0369295551293819386
581318119797033856033751420473108127RP2007.225666168057414.74718661926338310136.6242369076397.79879428628712103.64774FF0369295551293819386
581318119797033856033761161326248578RP2007.401821100373414.8019784259710939637.77148656302699.2848603493713797.071915FF0369295551293819386
581318119797033856033765253637525668RP2007.475827924398814.8649608124297989094.60141728666790.30282855992277100.71226FF0369295551293819386
581318119797033856033774994483069956RP2007.651982665975514.54182192720705112247.268085175985109.07026987007656112.28786FF0369295551293819386
581318119797033856033779086789366264RP2007.725989402404814.38505020871007514149.722144568497116.71767825408368121.23032FF0369295551293819386
581318119797033856033788827626783979RP2007.902143967627814.53799568008797412290.50487027157111.9946295298015109.74191FF0369295551293819386
581318119797033856033792919933735601RP2007.976150704477714.60131457861621511594.236738401562106.33765658084764109.03228FF0369295551293819386
581318119797033856033802660766041408RP2008.1523051487414.7213564326590410380.670886830703103.44379499872912100.35083FF0369295551293819386
581318119797033856033806753071682268RP2008.226311855260314.7710994851803729915.81010677507498.48724685279275100.68116FF0369295551293819386
581318119797033856033816493904643329RP2008.402466278140814.58282785242474211793.340948865627109.851258190621107.35736FF0369295551293819386
581318119797033856033820586211594870RP2008.476473002192314.7990669777046399663.65026677882697.3319454437805599.28549FF0369295551293819386
581318119797033856033830327050847272RP2008.652627519378314.39271611344994514050.169057629528118.99344308874657118.07516FF0369295551293819386
581318119797033856033834419358454119RP2008.726634237768814.42816695868531713598.8195770469114.42682527116902118.84293FF0369295551293819386
581318119797033856033844160203342518RP2008.90278884844414.57596273502984411868.146572766896109.82624827539324108.06293FF0369295551293819386
581318119797033856033871826559849957RP2009.403112303342114.7835086225834069803.125132226274100.2549179604756597.78199FF0369295551293819386
581318119797033856033885659774603939RP2009.653274630841514.38936831432280214093.55872827574118.09724779545724119.33858FF0369295551293819386
581318119797033856033889752107382538RP2009.727281640468214.468825686711813098.987285233841111.45319629543341117.52904FF0369295551293819386
581318119797033856033899493017675421RP2009.903437411766614.50011920272079612726.832085528233110.6186765480202115.05138FF0369295551293819386
581318119797033856033903585361064694RP2009.977444564644914.6606291774922510977.825529770187102.26205742028654107.34994FF0369295551293819386
581318119797033856033913326297178645RP2010.153600810602314.786562217709169775.59292028414798.1583275512682499.59005FF0369295551293819386
581318119797033856033927159617058001RP2010.40376485489214.8298618739249329393.40928684061796.9150979604969896.92411FF0369295551293819386
581318119797033856036829541303731322RP2062.88946828794314.8070038243126599593.26553355780698.4740178110498297.41926FF0369295551293819386
581318119797033856036833633584723661RP2062.963469541540214.8044047324596759616.25790122398897.5826000775998998.5448FF0369295551293819386
581318119797033856038588450339066479RP2094.696183146614.8303901362171589388.84005821355194.2468926469844399.61962FF0369295551293819386
581318119797033856038598191158161925RP2094.87233124403214.3692451657552914357.205907350442121.49291061019119118.1732FF0369295551293819386
581318119797033856039883589192000026RP2118.116506904195414.60295134194276811576.771423599424105.10204676358094110.14792FF0369295551293819386
581318119797033856039887681495799669RP2118.190508396368414.66040128959451210980.12993496048103.70959467338132105.87381FF0369295551293819386
581318119797033856042345296273249070RP2162.63330707737814.770532972040119920.98530723283107.8174225556190392.01653FF0369295551293819386
581318119797033856042355037236368080RP2162.809464043612514.46490605660046713146.36156798773114.01242777555767115.30639FF0369295551293819386
581318119797033856042359129560233007RP2162.883471586062614.40772223331317613857.315402793845122.78049883779902112.86251FF0369295551293819386
581318119797033856042368870438548923RP2163.059626913645414.55554054577492512093.493540118538109.4378007323521110.50563FF0369295551293819386
581318119797033856042382703539536765RP2163.309787663911314.73591049816144910242.448666209764102.9626053062643699.47736FF0369295551293819386
581318119797033856042396536561095672RP2163.55994679895114.7798458187583539836.252478858025100.1838846451498698.181984FF0369295551293819386
581318119797033856042410369526818610RP2163.81010480094214.37704825563474214254.391841245499116.64414137070456122.20409FF0369295551293819386
581318119797033856042414461764563946RP2163.88411018930314.46720758968864313118.523553899067113.75999362793084115.31755FF0369295551293819386
581318119797033856042424202464224583RP2164.060262196351714.5692656313219111941.578633285118106.99037344902234111.61358FF0369295551293819386
581318119797033856042428294697513676RP2164.13426747917714.64103514756463711177.738269385889106.24927997465637105.20296FF0369295551293819386
581318119797033856042438035397174804RP2164.310419449089714.7676092081266279947.7373944722898.3480175907792101.14832FF0369295551293819386
581318119797033856042442127632299115RP2164.38442476052914.800278456418929652.87345248946399.4754468193622397.03775FF0369295551293819386
581318119797033856042451868347683256RP2164.56057694206114.7689071181946979935.85278166642399.9665003937702599.39182FF0369295551293819386
581318119797033856042455960596046045RP2164.6345825121114.8508560595860549213.51975648170497.1654460201622194.823006FF0369295551293819386
581318119797033856042465701342232597RP2164.810735129397514.40410758782417113903.526217082652118.33776218677566117.49019FF0369295551293819386
581318119797033856042479534406119719RP2165.060894419257214.60087944682918211598.884305659378106.83759023195317108.56557FF0369295551293819386
581318119797033856042483626696032745RP2165.13490082029814.54915115705616712164.871687560117116.53458514771917104.38851FF0369295551293819386
581318119797033856042493367563592932RP2165.31105515347314.7788155934488389845.5902585672299.528702319155298.92212FF0369295551293819386
581318119797033856042497459884308082RP2165.385062169830714.8027758488258949630.695589459587106.6613473912357690.292274FF0369295551293819386
581318119797033856042511293194606017RP2165.635225382932314.6833788412313110750.19788861519112.8094026743292395.29523FF0369295551293819386
581318119797033856045106332841984754RP2212.565866836317614.64046322707879211183.62778609671113.2630617734151798.740295FF0369295551293819386
581318119797033856045862765222445241RP2226.24623042669214.5523699551298412128.860839876003109.88825185351642110.3745FF0369295551293819386
581318119797033856045866857510384258RP2226.320240900959614.59055891705911511709.663863777645107.61043341699524108.81532FF0369295551293819386
581318119797033856047920496154523039RP2263.461723826429514.44913477931781613338.717770052588123.80334194379326107.74118FF0369295551293819386
581318119797033856047924588444447284RP2263.535738416706414.50356264712854912686.532501506801111.82893053351415113.44589FF0369295551293819386
581318119797033856049730597152896387RP2296.19878905422614.5678308693154211957.369438431078108.79329379155686109.90907FF0369295551293819386
581318119797033856049734689416455459RP2296.272799784497214.62661492002166211327.185877004173105.17702330266505107.69639FF0369295551293819386
581318119797033856051044046398296446RP2319.95316334582214.39953432200670513962.21323735066130.4730097756604107.01228FF0369295551293819386
581318119797033856051048138668163543RP2320.027175227723514.49221805577933312819.785922321407112.55804259874068113.89489FF0369295551293819386
581318119797033856051057879547016346RP2320.20334301935414.61687260656427711429.282111731804107.14697456670892106.6692FF0369295551293819386
-
-
diff --git a/examples/mivotblock/test.7.xml b/examples/mivotblock/test.7.xml deleted file mode 100644 index 2a78aaeb1c9..00000000000 --- a/examples/mivotblock/test.7.xml +++ /dev/null @@ -1,3761 +0,0 @@ - - - - Epoch photometry. This table contains light curve data points. Each entry is a photometric flux-time pair for a given object, band and time. It follows the (evolving) VO convention for time series as much as possible. At the time of writing, a VO recommendation has not yet been released. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Source ID - - - Photometric Band - - - - - - - - - - - - - - - - - -
5813181197970338560G
5813181197970338560BP
5813181197970338560RP
- - -Source Id. A unique single numerical identifier of the source obtained from GaiaSource. - - -Transit unique identifier. For a given object, a transit comprises the different Gaia observations (SM, AF, BP, RP and RVS) obtained for each focal plane crossing. - - -Photometric band. Values: G (per-transit combined SM-AF flux), BP (blue photometer integrated flux) and RP (red photometer integrated flux). - - -Different times are defined for each band. For G, it is the field-of-view transit averaged observation time. For BP and RP, it is the observation time of the BP CCD transit. The units are Barycentric JD (in TCB) in days -2,455,197.5, computed as follows. First the observation time is converted from On-board Mission Time (OBMT) into Julian date in TCB (Temps Coordonnee Barycentrique). Next a correction is applied for the light-travel time to the Solar system barycentre, resulting in Barycentric Julian Date (BJD). Finally, an offset of 2,455,197.5 days is applied (corresponding to a reference time $T_0$ at 2010-01-01T00:00:00) to have a conveniently small numerical value. Although the centroiding time accuracy of the individual CCD observations is (much) below 1~ms (e.g. in BP and RP), the G band observation time is averaged over typically 9 CCD observations taken in a time range of about 44sec. - - -Vega magnitude, computed from the flux applying the zero-point defined in ExtPhotZeroPoint. - - -Band flux value for the transit. For G band, it is a combination of individual SM-AF CCD fluxes. For BP and RP bands, it is an integrated CCD flux. - - -Flux error. If the flux has been rejected or is unavailable, this error will be set to null. - - -Band flux divided by its error. If the flux has been rejected or is unavailable, this field will be set to null. - - -Rejected by DPAC photometry processing. - - -Rejected by DPAC variability processing (or variability analysis). - - -Additional processing flags. This field contains extra information on the data used to compute the fluxes and their quality. It provides debugging information that may be safely ignored for many general purpose applications. The field is a collection of binary flags, whose values can be recovered applying bit shifting and masking operations. Each band has different binary flags in different positions, as shown below. Bit numbering is as follows: least significant bit = 1 and most significant bit = 64 -G band: - Bit 1: SM transit rejected by photometry processing. - Bit 2: AF1 transit rejected by photometry processing. - Bit 3: AF2 transit rejected by photometry processing. - Bit 4: AF3 transit rejected by photometry processing. - Bit 5: AF4 transit rejected by photometry processing. - Bit 6: AF5 transit rejected by photometry processing. - Bit 7: AF6 transit rejected by photometry processing. - Bit 8: AF7 transit rejected by photometry processing. - Bit 9: AF8 transit rejected by photometry processing. - Bit 10: AF9 transit rejected by photometry processing. - Bit 13: G band flux scatter larger than expected by photometry processing (all CCDs considered). - Bit 14: SM transit unavailable by photometry processing. - Bit 15: AF1 transit unavailable by photometry processing. - Bit 16: AF2 transit unavailable by photometry processing. - Bit 17: AF3 transit unavailable by photometry processing. - Bit 18: AF4 transit unavailable by photometry processing. - Bit 19: AF5 transit unavailable by photometry processing. - Bit 20: AF6 transit unavailable by photometry processing. - Bit 21: AF7 transit unavailable by photometry processing. - Bit 22: AF8 transit unavailable by photometry processing. - Bit 23: AF9 transit unavailable by photometry processing. - -BP band: - Bit 11: BP transit rejected by photometry processing. - Bit 24: BP transit photometry rejected by variability processing. -RP band: - Bit 12: RP transit rejected by photometry processing. - Bit 25: RP transit photometry rejected by variability processing. - - -All Gaia data processed by the Data Processing and Analysis Consortium comes tagged with a solution identifier. This is a numeric field attached to each table row that can be used to unequivocally identify the version of all the subsystems that where used in the generation of the data as well as the input data used. It is mainly for internal DPAC use but is included in the published data releases to enable end users to examine the provenance of processed data products. To decode a given solution ID visit https://gaia.esac.esa.int/decoder/solnDecoder.jsp - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
581318119797033856017091923342681275G1705.943736020098415.21657477445216415442.45627327361644.151258712309364349.76254FF4097369295551293819386
581318119797033856017096015648964756G1706.017710021738614.76733669360487723356.7069931982333.53035403015752696.584FF4194817369295551293819386
581318119797033856019103616164443503G1742.321576336688615.27834299913750214588.44795624094115.054069973748831969.07FF1369295551293819386
581318119797033856019107708466271149G1742.395578480121514.79945639536924622675.858166928436.37833986932219623.33405FF1369295551293819386
581318119797033856021399806213666242G1783.844756175495615.00162969715262518823.2413684894176.66828621279929245.51535FF4097369295551293819386
581318119797033856021409547035890563G1784.020907841457815.17313402571078616072.8421575771823.586653704923705681.438FF1369295551293819386
581318119797033856021824485293442156G1791.52459845637515.02049549882648318498.99310489827627.47938441501548673.1953FF4194817369295551293819386
581318119797033856021828577585186179G1791.598603555036315.08943444144808817360.91111083305444.22970422257367392.517FF4198913369295551293819386
581318119797033856024395810684449039G1838.025878524190415.26133987410009914818.707999493628.170464765084663526.03705FF1369295551293819386
581318119797033856024405551469584760G1838.202041271258214.6994481588427124863.7726777521431.69438019797314784.4852FF1369295551293819386
581318119797033856024931096762012370G1847.706615535967814.95021371400311819736.07579884085108.45084262254287181.98177FT4097369295551293819386
581318119797033856024935189040650110G1847.78062547770814.69551745209928824953.950497046231.57293736023059790.3588FF1369295551293819386
581318119797033856027126618356192578G1887.413853545711415.14774685225309616453.0928717041130.577522853022316538.078FF1369295551293819386
581318119797033856027130710644806030G1887.487865760130315.20599201707526415593.71107493394421.87756637979126712.7717FF1369295551293819386
581318119797033856028701930802795025G1915.904644283122514.90379334190622320598.18494770081835.51645082589201579.9618FF1369295551293819386
581318119797033856028706023097026037G1915.978628492924114.9887875613136519047.20541696601521.51019271049616885.49677FF4194817369295551293819386
581318119797033856030212652632036510G1943.227041158292615.28001975936244814565.93562735035821.787971439926846668.53107FF1369295551293819386
581318119797033856033678161908888922G2005.900438587903414.85846275759260321476.38530646301332.77063647752211655.35455FF1369295551293819386
581318119797033856033691995225481810G2006.15060359176915.12773870523066416759.10446054069350.30742792377961333.1338FF4097369295551293819386
581318119797033856033696087577653571G2006.22461066172115.19415792284656215764.60599562406834.629652512204686455.2343FF4097369295551293819386
581318119797033856033705828503676574G2006.400767832857815.29447047930272814373.35321955841831.728764729604734453.00702FF1369295551293819386
581318119797033856033719661749883519G2006.65093141417215.21129303347053815517.76164144798513.6396673584794071137.6936FF1369295551293819386
581318119797033856033723754081345821G2006.72493805635814.73176086343200524134.702215627953138.00028662673847174.88878FT4097369295551293819386
581318119797033856033733494964639153G2006.90109435010314.91932126902495220305.6914383843637.72607337853305538.24023FF4097369295551293819386
581318119797033856033737587288630311G2006.97510083277314.99427122984626818951.24726644503624.519279254369795772.9121FF1369295551293819386
581318119797033856033747328155533428G2007.15122866159915.16855872596250316140.71613395886226.023346121367922620.23987FF4194817369295551293819386
581318119797033856033751420473108127G2007.225263140727515.23045172587261815246.33997196106615.887231267359775959.66FF1369295551293819386
581318119797033856033761161326248578G2007.401390655455515.27881568947362114582.09805516888326.838369872261936543.33026FF4194817369295551293819386
581318119797033856033765253637525668G2007.475424999987815.22795730662149315281.40786786292822.50930538861004678.8929FF1369295551293819386
581318119797033856033774994483069956G2007.651552323342714.8887907741428920884.78363638497522.658701951766577921.71136FF4194817369295551293819386
581318119797033856033779086789366264G2007.725586554187414.70432306174447124752.38579229173825.735621412286502961.79474FF1369295551293819386
581318119797033856033788827626783979G2007.901713687645514.9679491426816519416.30712387496529.64824531572207654.8889FF4194817369295551293819386
581318119797033856033792919933735601G2007.975747898070315.0450087374083118086.01118486939629.49216571897128613.248FF1369295551293819386
581318119797033856033802660766041408G2008.15187489078115.20709453774299315577.88433677983323.605790175539486659.9179FF4194817369295551293819386
581318119797033856033806753071682268G2008.225909058531415.2642517780442914779.01802548656520.915936643705166706.59125FF1369295551293819386
581318119797033856033816493904643329G2008.40203600318615.25645375643399114885.54662830053718.76156053279368793.4066FF4194817369295551293819386
581318119797033856033820586211594870G2008.476070181304515.24695003659471715016.41545933902314.490588596964041036.2875FF1369295551293819386
581318119797033856033830327050847272G2008.65219718582814.71232450476103524570.64109172864543.8608953286856560.1947FF4194817369295551293819386
581318119797033856033834419358454119G2008.726231356473614.77777468809914723133.23740450918226.070674191206134887.32794FF1369295551293819386
581318119797033856033844160203342518G2008.902358416978615.01282549277532618630.13890330070435.762934572614164520.93427FF4194817369295551293819386
581318119797033856033848252514625450G2008.976392628291515.07703553286881317560.305894643230.969243251957153567.02405FF1369295551293819386
581318119797033856033857993370910889G2009.15251983624415.23969037663928815117.15755366130532.838140768582534460.35364FF4194817369295551293819386
581318119797033856033871826559849957G2009.402709687243315.22850509665830515273.69983383756518.203243801487414839.06476FF1369295551293819386
581318119797033856033885659774603939G2009.652871817816714.72096265187636124375.93197782340239.77600611001573612.8301FF1369295551293819386
581318119797033856033889752107382538G2009.726878233493414.84548935870568421734.54468194714438.76651853261073560.65247FF4097369295551293819386
581318119797033856033899493017675421G2009.903034380814515.05699000728264617887.52637512640630.338931239340802589.58984FF1369295551293819386
581318119797033856033903585361064694G2009.977040973850815.12225401972396516843.97864552192239.881341967077454422.35236FF4097369295551293819386
581318119797033856033913326297178645G2010.153197541980715.27059557063736214692.91823520523629.845086964696122492.3061FF1369295551293819386
581318119797033856033927159617058001G2010.403361344314815.26863016904718914719.53946930639931.13585385987356472.75208FF1369295551293819386
581318119797033856036829541303731322G2062.88903805740415.29327816710034314389.14613286105924.734102404603966581.7533FF4194817369295551293819386
581318119797033856036833633584723661G2062.963068099755715.26598289685452814755.47284865279315.172661964968555972.5039FF1369295551293819386
581318119797033856038588450339066479G2094.695782652994715.29273272829264114396.376591233314.869895855882879968.1558FF1369295551293819386
581318119797033856038598191158161925G2094.87192768315614.70029225967111624844.44995939319445.704295328124445543.5911FF4097369295551293819386
581318119797033856039883589192000026G2118.11610581066315.05821931335535917867.28499335439517.587990677753931015.8798FF1369295551293819386
581318119797033856039887681495799669G2118.19010841452815.12507028966121716800.34399427385527.417549220392043612.7588FF1369295551293819386
581318119797033856042345296273249070G2162.63290663967715.22546916548760315316.46785736561817.10519366752424895.4279FF1369295551293819386
581318119797033856042355037236368080G2162.80906366180914.81602592662738622332.42681235417733.2059480810719672.54297FF1369295551293819386
581318119797033856042359129560233007G2162.883069896432514.72728797468493224234.33461879806823.346267697967391038.039FF1369295551293819386
581318119797033856042368870438548923G2163.059225439935314.98512951745512519111.48716348522423.991790652842834796.5844FF1369295551293819386
581318119797033856042382703539536765G2163.309357336572215.21893987491361215408.85399539994620.574937514347496748.91376FF4194817369295551293819386
581318119797033856042396536561095672G2163.559544120948415.24258443920682515076.91597111668930.00318769312344502.51047FF1369295551293819386
581318119797033856042410369526818610G2163.80970186037714.68781985404283225131.49639727623829.42571919641413854.0657FF1369295551293819386
581318119797033856042414461764563946G2163.883706601008714.8048482644965922563.5268561229426.88670476770927839.2076FF1369295551293819386
581318119797033856042424202464224583G2164.059859152315815.02513868205891318420.05053010173340.67166061326495452.89645FF4097369295551293819386
581318119797033856042428294697513676G2164.13386384408515.09968807984079817197.72729767952516.23269528584321059.45FF1369295551293819386
581318119797033856042438035397174804G2164.31003754163515.24748855154002815008.9693052768529.868055788494843502.5091FF32769369295551293819386
581318119797033856042442127632299115G2164.3840211943415.27951499162055714572.7090256831632.88027707401486443.20517FF1369295551293819386
581318119797033856042451868347683256G2164.560174134270715.22775115350533815284.30968594482122.63183511557936675.3456FF1369295551293819386
581318119797033856042455960596046045G2164.63417914459315.30424321729251414244.55882787946440.94632238749036347.88373FF4097369295551293819386
581318119797033856042465701342232597G2164.810304580143614.74876507537859123759.66209443107434.458728119436955689.5107FF4194817369295551293819386
581318119797033856042479534406119719G2165.06049260123715.06714434236801717721.01336429657426.859389991297327659.7698FF1369295551293819386
581318119797033856042483626696032745G2165.13447028833415.13957571703504516577.38421407550426.68606674495071621.2FF4194817369295551293819386
581318119797033856042493367563592932G2165.310654260402815.27411999996966214645.30059670388415.237829147406169961.1146FF1369295551293819386
581318119797033856042497459884308082G2165.3846606611915.28144170445369814546.87169296041816.62794467301937874.84485FF1369295551293819386
581318119797033856042511293194606017G2165.634825195779315.1066799156052617087.33460168610727.746964568495965615.82715FF1369295551293819386
581318119797033856045106332841984754G2212.56543633452615.04969305388436318008.14871473240824.65763247583434730.3276FF4194817369295551293819386
581318119797033856045862765222445241G2226.245799896380514.96561135000272119458.1590981488113.5315848002643511437.9808FF4194817369295551293819386
581318119797033856045866857510384258G2226.31983907041115.04124543278501318148.808449589325.66136277425435707.24255FF1369295551293819386
581318119797033856047920496154523039G2263.461350414974314.77683450121952523153.2781711970524.19597906285328956.906FF16385369295551293819386
581318119797033856047924588444447284G2263.535334705385614.89000144247602420861.50868769842838.14814757861256546.8551FF1369295551293819386
581318119797033856049730597152896387G2296.1983875428615.0103326184739118672.96325763292818.207687500037211025.5538FF1369295551293819386
581318119797033856049734689416455459G2296.27239880668515.07685016358421117563.30424656334826.702458645762615657.7411FF1369295551293819386
581318119797033856051044046398296446G2319.95276281577414.76154785673789323481.57089029460334.65841319423585677.5143FF1369295551293819386
581318119797033856051048138668163543G2320.02674465499514.87562139159795621139.6471185237921.53531994207252981.6268FF4194817369295551293819386
581318119797033856051057879547016346G2320.20293951848915.06795181918896617707.8389046276426.568518712230443666.497FF1369295551293819386
581318119797033856017091923342681275BP1705.944050417511815.645391742003597627.787250948564111.4772659101631868.4246FF0369295551293819386
581318119797033856017096015648964756BP1706.018052709240714.94502614303689814539.343967569965145.0521624616696100.23528FF0369295551293819386
581318119797033856019103616164443503BP1742.321891123632715.5306619231522258477.9431307907791.7457877655633492.40689FF0369295551293819386
581318119797033856019107708466271149BP1742.39589351005314.97003965928506714208.211215337345118.85551091406668119.54188FF0369295551293819386
581318119797033856021399806213666242BP1783.845070981974515.26867654747573210791.570426426428108.6790409957943299.29762FF0369295551293819386
581318119797033856021409547035890563BP1784.021222339712515.4142556662897739437.413884990745113.8109853472460582.92182FF0369295551293819386
581318119797033856021824485293442156BP1791.52494121637915.30677975150273810419.415757986244107.1490373297868497.24227FF0369295551293819386
581318119797033856024395810684449039BP1838.026193270793815.539725433348118407.46552118264107.6688166915587578.08636FF0369295551293819386
581318119797033856024405551469584760BP1838.202355637601814.86157378776450615700.943586958276127.81483910734465122.84132FF0369295551293819386
581318119797033856024931096762012370BP1847.706930050646415.16917848414677511827.252662775876121.3483264949198597.46532FF0369295551293819386
581318119797033856024935189040650110BP1847.780940069570314.87907507245916215449.884579447802148.84256341017726103.80018FF0369295551293819386
581318119797033856027126618356192578BP1887.414168620569615.435246808548629256.707586904287102.7216718675667490.114456FF0369295551293819386
581318119797033856027130710644806030BP1887.488180259353615.4972813831988878742.642404008333104.1303579469343283.95863FF0369295551293819386
581318119797033856028701930802795025BP1915.904958800754515.11821182808222212395.68516209234118.23574321330177104.83873FF0369295551293819386
581318119797033856028706023097026037BP1915.978971325734215.24611559923255511018.15883101566133.2271421539646282.70206FF0369295551293819386
581318119797033856030212652632036510BP1943.227355703941215.5764849511948528127.580652350815113.8594438704013871.382576FF0369295551293819386
581318119797033856033678161908888922BP2005.90075289697915.0591911475597513088.16644188033113.16203384470887115.65864FF0369295551293819386
581318119797033856033691995225481810BP2006.150917971884815.4172795360031579411.16643460758194.8387893808635299.23331FF0369295551293819386
581318119797033856033696087577653571BP2006.22492487933615.4827843234386428860.15947602865393.829026916690594.42877FF0369295551293819386
581318119797033856033705828503676574BP2006.401082275306415.5837763718183888073.18156017740388.8157309176975990.8981FF0369295551293819386
581318119797033856033719661749883519BP2006.651245915612715.460395829012769044.75769282735693.939880136048896.28241FF0369295551293819386
581318119797033856033723754081345821BP2006.725252392165914.91275124403387814978.032571792613117.25497707320805127.73899FF0369295551293819386
581318119797033856033733494964639153BP2006.901408899984515.14504542909688612093.084755029244113.57136145276198106.48006FF0369295551293819386
581318119797033856033737587288630311BP2006.97541521595215.26075817397882210870.56203346659100.49130076391349108.17416FF0369295551293819386
581318119797033856033747328155533428BP2007.1515713711615.458784468174019058.19114809305895.7820409594291794.57087FF0369295551293819386
581318119797033856033751420473108127BP2007.225577561243715.5218018423155048547.40989736997390.383333719521494.56843FF0369295551293819386
581318119797033856033761161326248578BP2007.40173339653615.5676695543537728193.83938240824589.2696251355970791.787544FF0369295551293819386
581318119797033856033765253637525668BP2007.475739453691215.5117564896953878626.85845502618689.9620715923480795.894394FF0369295551293819386
581318119797033856033774994483069956BP2007.651895087769615.07639910142712512882.3658226753111.5307886305456115.50502FF0369295551293819386
581318119797033856033779086789366264BP2007.725901029367814.8667422749504515626.379176284325119.96473373334105130.2581FF0369295551293819386
581318119797033856033788827626783979BP2007.902056465452215.1887234511399111616.248333213516106.93345371180985108.63063FF0369295551293819386
581318119797033856033792919933735601BP2007.976062385428115.32286058394646310266.231062510018100.73471875490418101.91354FF0369295551293819386
581318119797033856033802660766041408BP2008.152217674885815.495048926101138760.63724794685294.2201246250829392.98053FF0369295551293819386
581318119797033856033806753071682268BP2008.226223548616615.5657928948988938208.0144123110889.7326981193442491.47183FF0369295551293819386
581318119797033856033816493904643329BP2008.402378783108615.543837401243978375.68446279349592.2811382290562790.76269FF0369295551293819386
581318119797033856033820586211594870BP2008.476384665500315.5050938669098888679.95995441891391.2618331367288895.11051FF0369295551293819386
581318119797033856033830327050847272BP2008.652539952711814.88111712118071315420.853801536456122.05785078077894126.34053FF0369295551293819386
581318119797033856033834419358454119BP2008.726545822457914.96553156447380914267.327898163978114.68397840130663124.40559FF0369295551293819386
581318119797033856033844160203342518BP2008.90270116069715.26817564974289410796.550199799905102.13417065103614105.70948FF0369295551293819386
581318119797033856033848252514625450BP2008.976707065516415.3468937829563410041.4806362868198.13887683832512102.31909FF0369295551293819386
581318119797033856033871826559849957BP2009.40302423955115.4547911451791269091.568394846332106.8152810170847985.11487FF0369295551293819386
581318119797033856033885659774603939BP2009.653186320429314.89867762751373315173.445785731099120.6645261790738125.74902FF0369295551293819386
581318119797033856033889752107382538BP2009.727192537038515.0634760883302813036.61478760932111.13121281697389117.30831FF0369295551293819386
581318119797033856033899493017675421BP2009.903348822799215.3182375909597810310.03719133605101.04130948504188102.03784FF0369295551293819386
581318119797033856033903585361064694BP2009.977355215977715.3973378092749039585.61859190207496.9049284424171698.91776FF0369295551293819386
581318119797033856033913326297178645BP2010.153511917761815.560875904951158245.2704684987390.1045974507493591.50777FF0369295551293819386
581318119797033856033927159617058001BP2010.403675645679215.5553219661747478287.55611117903493.0954233691126889.02216FF0369295551293819386
581318119797033856036829541303731322BP2062.88938076687115.5650995463832948213.25770447061890.4954434193352990.7588FF0369295551293819386
581318119797033856036833633584723661BP2062.963382956527815.5501824075550868326.87998581177590.5254516711585891.98386FF0369295551293819386
581318119797033856038588450339066479BP2094.69609770435515.570121974781218175.35233053800989.6153475539298591.22714FF0369295551293819386
581318119797033856038598191158161925BP2094.872241871333214.88017686863325515434.214116072937130.0633170264353118.66692FF0369295551293819386
581318119797033856039883589192000026BP2118.116420620395715.31091473327070710379.809308414298100.92807475625692102.84363FF0369295551293819386
581318119797033856039887681495799669BP2118.190423566554315.4092880950208139480.69183505282999.786003116891595.01024FF0369295551293819386
581318119797033856042345296273249070BP2162.63322172986415.4927500381481658779.20627038535597.0144084217737790.493835FF0369295551293819386
581318119797033856042355037236368080BP2162.809378627897314.98766267265317613979.453674064524121.22933713289285115.31412FF0369295551293819386
581318119797033856042359129560233007BP2162.883384724936614.90667824173124815062.046068954714131.3293276369215114.68913FF0369295551293819386
581318119797033856042368870438548923BP2163.05954019061415.24369754348193211042.724846387075105.64814155286828104.52361FF0369295551293819386
581318119797033856042382703539536765BP2163.309700040330415.5288852512091528491.82758479116193.6331687726603790.69251FF0369295551293819386
581318119797033856042396536561095672BP2163.559858589124415.5185712554354168572.880423380348112.4050315193455376.26776FF0369295551293819386
581318119797033856042410369526818610BP2163.810016254206414.8551867025693515793.580097078033125.11986578838156126.2276FF0369295551293819386
581318119797033856042414461764563946BP2163.884020898650314.99200649391058513923.636306456914118.6064796869851117.39355FF0369295551293819386
581318119797033856042424202464224583BP2164.060173517643815.28890834993747410592.340383641988102.96073866882989102.87747FF0369295551293819386
581318119797033856042428294697513676BP2164.134178124342315.3798100431365539741.621489119067102.8103816272280594.75329FF0369295551293819386
581318119797033856042438035397174804BP2164.310330826044315.55786542858558268.16427684207592.000694986420289.870674FF0369295551293819386
581318119797033856042442127632299115BP2164.38433550067215.5990147525499077960.66534674144893.9037348101251484.77475FF0369295551293819386
581318119797033856042451868347683256BP2164.560488567739415.5018416381589028705.99900195913793.2670033247949793.3449FF0369295551293819386
581318119797033856042455960596046045BP2164.63449351938715.4145929884531429434.48227565476797.9414252691935296.327805FF0369295551293819386
581318119797033856042465701342232597BP2164.81064723073214.92164236986546714855.877867793226134.8429850648487110.17168FF0369295551293819386
581318119797033856042479534406119719BP2165.06080727825815.34325883652227410075.154941398088100.47967482866677100.27058FF0369295551293819386
581318119797033856042483626696032745BP2165.13481306434315.4409565342067079208.155710166719102.7054181804107989.65599FF0369295551293819386
581318119797033856042493367563592932BP2165.310969130461715.5751833828556388137.3297469226992.0870200822114588.365654FF0369295551293819386
581318119797033856042497459884308082BP2165.38497553141315.5998004940784967954.906339615874100.8922985904263878.84553FF0369295551293819386
581318119797033856042511293194606017BP2165.635140334571615.3331626896334610169.279698464095105.8902481690842796.03603FF0369295551293819386
581318119797033856045106332841984754BP2212.565779146416415.29609770794242610522.433387581594102.9257107305523102.23328FF0369295551293819386
581318119797033856045862765222445241BP2226.246142584741415.2084770608511111406.816205675634105.32347812612828108.30269FF0369295551293819386
581318119797033856045866857510384258BP2226.320153895306715.3060156594478610426.751052557502101.57019536494636102.65562FF0369295551293819386
581318119797033856047920496154523039BP2263.46163706875914.98365470144809614031.153884738871130.78623243608965107.28311FF0369295551293819386
581318119797033856047924588444447284BP2263.53564900688715.1094870538118312495.695878910252112.34208503961624111.22898FF0369295551293819386
581318119797033856049730597152896387BP2296.19870231963615.271168361803410766.831677074499106.12282911968398101.45632FF0369295551293819386
581318119797033856049734689416455459BP2296.27271381364615.3558287659525329959.184130798601100.2096097526710399.38352FF0369295551293819386
581318119797033856051044046398296446BP2319.95307777533614.95101106432512614459.418994285574139.86374506068003103.38218FF0369295551293819386
581318119797033856051048138668163543BP2320.02708744905715.09264261908635912691.069448102076110.81672439159952114.52305FF0369295551293819386
581318119797033856051057879547016346BP2320.203253786679415.34991428519892210013.584205737614101.7543234039838698.409424FF0369295551293819386
581318119797033856017091923342681275RP1705.944139117757714.7605667066241810012.471954702154101.2587032209564998.88011FF0369295551293819386
581318119797033856017096015648964756RP1706.01814055783914.42257298929178313669.064712119256123.67648827643211110.52274FF0369295551293819386
581318119797033856019103616164443503RP1742.321977849001514.8200814086147949478.40871504911296.6808945366578298.03807FF0369295551293819386
581318119797033856019107708466271149RP1742.395978770546214.45836671475338713225.780458996644112.26436674761854117.80925FF0369295551293819386
581318119797033856021399806213666242RP1783.845157697734514.57014538180429911931.906528382407115.11437632330687103.65262FF0369295551293819386
581318119797033856021409547035890563RP1784.021310588304514.68254707121067410758.436646997845104.85533683500128102.60266FF0369295551293819386
581318119797033856021824485293442156RP1791.525028751344514.58096376874784511813.606144838817109.97987657714488107.41607FF0369295551293819386
581318119797033856021828577585186179RP1791.599033789710314.62756554296913711317.272630848618118.0094308520137695.90143FF0369295551293819386
581318119797033856024395810684449039RP1838.026280433692614.8065009083869239597.710189223955104.455625005853391.88313FF0369295551293819386
581318119797033856024405551469584760RP1838.20244457844614.38270032288841314180.379904184394116.87192439329641121.33265FF0369295551293819386
581318119797033856024931096762012370RP1847.707018341631514.525230656989312435.857373066374112.1184207736701110.91717FF0369295551293819386
581318119797033856024935189040650110RP1847.781028010216214.36656015573637314392.75500916038123.55701551402842116.48675FF0369295551293819386
581318119797033856027126618356192578RP1887.414253791739614.67113386913550810872.125266638457107.85368487957125100.80439FF0369295551293819386
581318119797033856027130710644806030RP1887.488268685799314.72863955039611710311.270382950866104.083175666598199.0676FF0369295551293819386
581318119797033856028701930802795025RP1915.905047146471814.51670865062122812533.85121457129112.74135575754858111.1735FF0369295551293819386
581318119797033856028706023097026037RP1915.97905873061714.56521589411055511986.203246471228118.08091277213153101.50839FF0369295551293819386
581318119797033856030212652632036510RP1943.227443893346614.8117541718468229551.384459952898101.8004797739619193.824554FF0369295551293819386
581318119797033856033678161908888922RP2005.90084207335914.48986070750404312847.650454626517111.20073704743315115.53566FF0369295551293819386
581318119797033856033691995225481810RP2006.1510068478714.66207661773961310963.200283330225102.517615760734106.93967FF0369295551293819386
581318119797033856033696087577653571RP2006.225014323656814.70908187867674110498.693179272668100.77439995998596104.18016FF0369295551293819386
581318119797033856033705828503676574RP2006.401170862959414.8018351046975359639.04379271799696.6058583944645299.77701FF0369295551293819386
581318119797033856033719661749883519RP2006.651334234709314.7683353197702529941.08683504105199.5842648128977699.82588FF0369295551293819386
581318119797033856033723754081345821RP2006.725341371247414.41486752993452413766.418984886443112.63003894784477122.22688FF0369295551293819386
581318119797033856033733494964639153RP2006.901496978401414.47579490026685513015.175695940306113.69291957361392114.47657FF0369295551293819386
581318119797033856033737587288630311RP2006.975503993748114.56155523513354712026.684031639235105.8099481508664113.66308FF0369295551293819386
581318119797033856033747328155533428RP2007.15165924175714.68502746540505110733.886755977666104.52525102184828102.6918FF0369295551293819386
581318119797033856033751420473108127RP2007.225666168057414.74718661926338310136.6242369076397.79879428628712103.64774FF0369295551293819386
581318119797033856033761161326248578RP2007.401821100373414.8019784259710939637.77148656302699.2848603493713797.071915FF0369295551293819386
581318119797033856033765253637525668RP2007.475827924398814.8649608124297989094.60141728666790.30282855992277100.71226FF0369295551293819386
581318119797033856033774994483069956RP2007.651982665975514.54182192720705112247.268085175985109.07026987007656112.28786FF0369295551293819386
581318119797033856033779086789366264RP2007.725989402404814.38505020871007514149.722144568497116.71767825408368121.23032FF0369295551293819386
581318119797033856033788827626783979RP2007.902143967627814.53799568008797412290.50487027157111.9946295298015109.74191FF0369295551293819386
581318119797033856033792919933735601RP2007.976150704477714.60131457861621511594.236738401562106.33765658084764109.03228FF0369295551293819386
581318119797033856033802660766041408RP2008.1523051487414.7213564326590410380.670886830703103.44379499872912100.35083FF0369295551293819386
581318119797033856033806753071682268RP2008.226311855260314.7710994851803729915.81010677507498.48724685279275100.68116FF0369295551293819386
581318119797033856033816493904643329RP2008.402466278140814.58282785242474211793.340948865627109.851258190621107.35736FF0369295551293819386
581318119797033856033820586211594870RP2008.476473002192314.7990669777046399663.65026677882697.3319454437805599.28549FF0369295551293819386
581318119797033856033830327050847272RP2008.652627519378314.39271611344994514050.169057629528118.99344308874657118.07516FF0369295551293819386
581318119797033856033834419358454119RP2008.726634237768814.42816695868531713598.8195770469114.42682527116902118.84293FF0369295551293819386
581318119797033856033844160203342518RP2008.90278884844414.57596273502984411868.146572766896109.82624827539324108.06293FF0369295551293819386
581318119797033856033871826559849957RP2009.403112303342114.7835086225834069803.125132226274100.2549179604756597.78199FF0369295551293819386
581318119797033856033885659774603939RP2009.653274630841514.38936831432280214093.55872827574118.09724779545724119.33858FF0369295551293819386
581318119797033856033889752107382538RP2009.727281640468214.468825686711813098.987285233841111.45319629543341117.52904FF0369295551293819386
581318119797033856033899493017675421RP2009.903437411766614.50011920272079612726.832085528233110.6186765480202115.05138FF0369295551293819386
581318119797033856033903585361064694RP2009.977444564644914.6606291774922510977.825529770187102.26205742028654107.34994FF0369295551293819386
581318119797033856033913326297178645RP2010.153600810602314.786562217709169775.59292028414798.1583275512682499.59005FF0369295551293819386
581318119797033856033927159617058001RP2010.40376485489214.8298618739249329393.40928684061796.9150979604969896.92411FF0369295551293819386
581318119797033856036829541303731322RP2062.88946828794314.8070038243126599593.26553355780698.4740178110498297.41926FF0369295551293819386
581318119797033856036833633584723661RP2062.963469541540214.8044047324596759616.25790122398897.5826000775998998.5448FF0369295551293819386
581318119797033856038588450339066479RP2094.696183146614.8303901362171589388.84005821355194.2468926469844399.61962FF0369295551293819386
581318119797033856038598191158161925RP2094.87233124403214.3692451657552914357.205907350442121.49291061019119118.1732FF0369295551293819386
581318119797033856039883589192000026RP2118.116506904195414.60295134194276811576.771423599424105.10204676358094110.14792FF0369295551293819386
581318119797033856039887681495799669RP2118.190508396368414.66040128959451210980.12993496048103.70959467338132105.87381FF0369295551293819386
581318119797033856042345296273249070RP2162.63330707737814.770532972040119920.98530723283107.8174225556190392.01653FF0369295551293819386
581318119797033856042355037236368080RP2162.809464043612514.46490605660046713146.36156798773114.01242777555767115.30639FF0369295551293819386
581318119797033856042359129560233007RP2162.883471586062614.40772223331317613857.315402793845122.78049883779902112.86251FF0369295551293819386
581318119797033856042368870438548923RP2163.059626913645414.55554054577492512093.493540118538109.4378007323521110.50563FF0369295551293819386
581318119797033856042382703539536765RP2163.309787663911314.73591049816144910242.448666209764102.9626053062643699.47736FF0369295551293819386
581318119797033856042396536561095672RP2163.55994679895114.7798458187583539836.252478858025100.1838846451498698.181984FF0369295551293819386
581318119797033856042410369526818610RP2163.81010480094214.37704825563474214254.391841245499116.64414137070456122.20409FF0369295551293819386
581318119797033856042414461764563946RP2163.88411018930314.46720758968864313118.523553899067113.75999362793084115.31755FF0369295551293819386
581318119797033856042424202464224583RP2164.060262196351714.5692656313219111941.578633285118106.99037344902234111.61358FF0369295551293819386
581318119797033856042428294697513676RP2164.13426747917714.64103514756463711177.738269385889106.24927997465637105.20296FF0369295551293819386
581318119797033856042438035397174804RP2164.310419449089714.7676092081266279947.7373944722898.3480175907792101.14832FF0369295551293819386
581318119797033856042442127632299115RP2164.38442476052914.800278456418929652.87345248946399.4754468193622397.03775FF0369295551293819386
581318119797033856042451868347683256RP2164.56057694206114.7689071181946979935.85278166642399.9665003937702599.39182FF0369295551293819386
581318119797033856042455960596046045RP2164.6345825121114.8508560595860549213.51975648170497.1654460201622194.823006FF0369295551293819386
581318119797033856042465701342232597RP2164.810735129397514.40410758782417113903.526217082652118.33776218677566117.49019FF0369295551293819386
581318119797033856042479534406119719RP2165.060894419257214.60087944682918211598.884305659378106.83759023195317108.56557FF0369295551293819386
581318119797033856042483626696032745RP2165.13490082029814.54915115705616712164.871687560117116.53458514771917104.38851FF0369295551293819386
581318119797033856042493367563592932RP2165.31105515347314.7788155934488389845.5902585672299.528702319155298.92212FF0369295551293819386
581318119797033856042497459884308082RP2165.385062169830714.8027758488258949630.695589459587106.6613473912357690.292274FF0369295551293819386
581318119797033856042511293194606017RP2165.635225382932314.6833788412313110750.19788861519112.8094026743292395.29523FF0369295551293819386
581318119797033856045106332841984754RP2212.565866836317614.64046322707879211183.62778609671113.2630617734151798.740295FF0369295551293819386
581318119797033856045862765222445241RP2226.24623042669214.5523699551298412128.860839876003109.88825185351642110.3745FF0369295551293819386
581318119797033856045866857510384258RP2226.320240900959614.59055891705911511709.663863777645107.61043341699524108.81532FF0369295551293819386
581318119797033856047920496154523039RP2263.461723826429514.44913477931781613338.717770052588123.80334194379326107.74118FF0369295551293819386
581318119797033856047924588444447284RP2263.535738416706414.50356264712854912686.532501506801111.82893053351415113.44589FF0369295551293819386
581318119797033856049730597152896387RP2296.19878905422614.5678308693154211957.369438431078108.79329379155686109.90907FF0369295551293819386
581318119797033856049734689416455459RP2296.272799784497214.62661492002166211327.185877004173105.17702330266505107.69639FF0369295551293819386
581318119797033856051044046398296446RP2319.95316334582214.39953432200670513962.21323735066130.4730097756604107.01228FF0369295551293819386
581318119797033856051048138668163543RP2320.027175227723514.49221805577933312819.785922321407112.55804259874068113.89489FF0369295551293819386
581318119797033856051057879547016346RP2320.20334301935414.61687260656427711429.282111731804107.14697456670892106.6692FF0369295551293819386
-
-
diff --git a/examples/mivotblock/test.7.out.xml b/examples/mivotblock/test.mivot.out.xml similarity index 74% rename from examples/mivotblock/test.7.out.xml rename to examples/mivotblock/test.mivot.out.xml index d0604a70c4b..f849b09c7ea 100644 --- a/examples/mivotblock/test.7.out.xml +++ b/examples/mivotblock/test.mivot.out.xml @@ -4,10 +4,10 @@ - - - - + + + + diff --git a/examples/mivotblock/test_7_votable_pointer.py b/examples/mivotblock/test_7_votable_pointer.py index d0a8ee98d3c..76cd4090b3d 100644 --- a/examples/mivotblock/test_7_votable_pointer.py +++ b/examples/mivotblock/test_7_votable_pointer.py @@ -4,6 +4,7 @@ @author: laurentmichel """ import os +import tempfile from astropy.io.votable import parse from astropy.io.votable.tree import MivotBlock, Resource, VOTableFile @@ -11,13 +12,13 @@ data_path = os.path.dirname(os.path.realpath(__file__)) """ -Read out Test +Read out Example """ # Read a valid VOTable # No invalid element detected, # The block is returned as an XML String -vpath = os.path.join(data_path, "test.7.xml") +vpath = os.path.join(data_path, "test.mivot.xml") votable = parse(vpath) for resource in votable.resources: print(f"Resource type: {resource.type} Mivot Block: {resource.mivot_block}") @@ -29,7 +30,7 @@ # Read an invalid VOTable # An unexpected element has been found in the mivot block # The mivot block pointer returns a block with just REPORT in error -vpath = os.path.join(data_path, "test.7.ko.xml") +vpath = os.path.join(data_path, "test.mivot.ko.xml") votable = parse(vpath) for resource in votable.resources: print(f"Resource type: {resource.type} Mivot Block: {resource.mivot_block}") @@ -39,9 +40,11 @@ print(resource_meta.mivot_block) """ -Write Test +Write Example """ -vpath = os.path.join(data_path, "test.7.out.xml") + +path = tempfile.gettempdir() + "/test.mivot.out.xml" +vpath = os.path.join(data_path, path) # Create am empty VOTable votable = VOTableFile() @@ -54,10 +57,10 @@ # A dummy mivot block for the test. resource.resources.append(meta_resource) mivot_block = MivotBlock(""" - - - - + + + + """ ) # Add the mivot resource From 3907806ec6b9a589c6928e30c543230f7162f123 Mon Sep 17 00:00:00 2001 From: Somia FLORET Date: Tue, 26 Sep 2023 09:59:37 +0200 Subject: [PATCH 04/15] changed path test_mivot_order --- astropy/io/votable/tests/test_tree.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/astropy/io/votable/tests/test_tree.py b/astropy/io/votable/tests/test_tree.py index 4fb150af44c..b34bad4be3f 100644 --- a/astropy/io/votable/tests/test_tree.py +++ b/astropy/io/votable/tests/test_tree.py @@ -497,13 +497,13 @@ def test_mivot_order(): vtf2.to_xml(vpath_out) # We want to remove the xml header from the VOTable - with open("test.order.out.xml") as fichier: - lines = fichier.readlines() + with open(vpath_out) as file: + lines = file.readlines() # The xml header is on 2 lines (line 2 and 3) del lines[1] del lines[1] - with open("test.order.out.xml", "w") as fichier: - fichier.writelines(lines) + with open(vpath_out, "w") as file: + file.writelines(lines) assert filecmp.cmp(vpath, vpath_out) From 2ddf88e6afcb42d93b7dcca6b5bc8a7d5053ff53 Mon Sep 17 00:00:00 2001 From: Somia FLORET Date: Tue, 26 Sep 2023 11:09:07 +0200 Subject: [PATCH 05/15] reformate doc --- docs/io/votable/index.rst | 62 +++++++++++++++++++++------------------ 1 file changed, 33 insertions(+), 29 deletions(-) diff --git a/docs/io/votable/index.rst b/docs/io/votable/index.rst index 25e97f62a20..4858bdae757 100644 --- a/docs/io/votable/index.rst +++ b/docs/io/votable/index.rst @@ -471,24 +471,22 @@ Reading and writing VO model annotations Introduction ------------ Model Instances in VOTables (`MIVOT `_) -defines a syntax to map VOTable data to any model serizalized in VO-DML (Virtual Observatory Data Modeling Language). -This annotation schema operates as a bridge between the data and the model. It associates the column/param metadata -from the VOTable to the data model elements (class, attributes, types, etc.) . It also brings up VOTable data or -metadata that were possibly missing in the table meta-data. +defines a syntax to map VOTable data to any model serialised in VO-DML (Virtual Observatory Data Modeling Language). +This annotation schema operates as a bridge between data and the models. It associates both column/param metadata and data +from the VOTable to the data model elements (class, attributes, types, etc.). It also brings up VOTable data or +metadata that were possibly missing in the table e.g. coordinate system description, or curation tracin. The data model elements are grouped in an independent annotation block complying with the MIVOT XML schema which -is added as an extra resource element above the TABLE element. +is added as an extra resource above the TABLE element. The MIVOT syntax allows to describe a data structure as a hierarchy of classes. -It is also able to represent relations and composition between them. It can also build up data model objects by +It is also able to represent relations and compositions between them. It can moreover build up data model objects by aggregating instances from different tables of the VOTable. -Missing metadata can also be provided using MIVOT, for instance by completing -coordinate system description, or by providing curation tracing. Astropy implementation ---------------------- -The purpose of Astropy is not to process the VO annotations. -It is just to allow related packages to get and set Mivot blocks in VOTables. -For this reason the Mivot annotations are both imported and exported as strings. -The current implementation prevents client code from injecting strings in VOTable +The purpose of Astropy is not to process VO annotations. +It is just to allow related packages to get and set Mivot blocks from/into VOTables. +For this reason, in this implementation Mivot annotations are both imported and exported as strings. +The current implementation prevents client code from injecting into VOTables strings that are not Mivot serializations. MivotBlock implementation : @@ -496,38 +494,40 @@ MivotBlock implementation : - Mivot blocks are handled by the MivotBlock class in tree.py. - A MivotBlock instance can only be carried by a resource with “type=meta”. - This instance holds the XML mapping block as a string. -- MivotBlock object are instanced by the Resource parser. +- MivotBlock objects are instanced by the Resource parser. - The MivotBlock class has its own logic that operates both parsing and IO functionalities. Examples ^^^^^^^^ .. code-block:: xml - - - - - ... - - - - .... -
-
-
+ + + + + + ... + + + + .... +
+
+
Reading a VOTable containing a Mivot block ----------------------- +------------------------------------------ To read in a VOTable file containing or not a Mivot Resource, pass a file path to`~astropy.io.votable.parse`:: from astropy.io.votable import parse votable = parse("votable.xml") -The parse function will call the Mivot parser if it detects a Mivot block + +The parse function will call the Mivot parser if it detects a Mivot block. Building a Resource containing a Mivot block ---------------------------------- +-------------------------------------------- Construct the mivot block by passing the XML block as a parameter:: @@ -545,6 +545,7 @@ Build a new resource:: mivot_resource.type = "meta" Then add it the mivot block:: mivot_resource.mivot_block = mivot_block + Now you have a mivot resource that you can add to an object Resource creating a new Resource:: vtf = VOTableFile() @@ -579,6 +580,9 @@ See Also - `VOTable Format Definition Version 1.4 `_ +- `MIVOT Recommendation Version 1.0 + `_ + .. note that if this section gets too long, it should be moved to a separate doc page - see the top of performance.inc.rst for the instructions on how to do that From b1db10d16062044ccc4ae139b4e20e929663dbb1 Mon Sep 17 00:00:00 2001 From: Laurent MICHEL Date: Tue, 26 Sep 2023 15:02:42 +0200 Subject: [PATCH 06/15] Update tree.py --- astropy/io/votable/tests/test_tree.py | 4 ++-- astropy/io/votable/tree.py | 22 ++++++++++++++++++++-- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/astropy/io/votable/tests/test_tree.py b/astropy/io/votable/tests/test_tree.py index b34bad4be3f..f482d3f24e6 100644 --- a/astropy/io/votable/tests/test_tree.py +++ b/astropy/io/votable/tests/test_tree.py @@ -341,7 +341,7 @@ def test_mivot_write_after_resource(): """ vot = tree mivot_block = MivotBlock( - """ + """ Unit test mivot block1 @@ -431,7 +431,7 @@ def test_mivot_order(): """ vot = tree mivot_block = MivotBlock( - """ + """ """ diff --git a/astropy/io/votable/tree.py b/astropy/io/votable/tree.py index fb074425541..696af60bfaf 100644 --- a/astropy/io/votable/tree.py +++ b/astropy/io/votable/tree.py @@ -3388,6 +3388,18 @@ class MivotBlock(Element): """ def __init__(self, content=None): + """ + Constructor + + parameters + ---------- + content: String + String serialization of the MIVOT block. + If it None, the instance is meant to be set by the Resource + parser. + Orherwise, the parameter value is parsed to make sure it matches + the MIVOT XML structure + """ if content is not None: self._content = content.strip() self.check_content_format() @@ -3403,6 +3415,7 @@ def _add_statement(self, start, tag, data, config, pos): """ Convert the tag as a string and append it to the mapping block string with the correct indentation level. + The signature si that same as for all _add_* methods of the parser """ if self._on_error is True: return @@ -3426,6 +3439,7 @@ def _add_statement(self, start, tag, data, config, pos): if start is False: self._indent_level -= 1 + # The content is formated on the fly: not mandatory but cool for debugging indent = "".join(" " for _ in range(2 * self._indent_level)) if ele_content: self._content += indent + " " + ele_content @@ -3437,8 +3451,10 @@ def _unknown_mapping_tag(self, start, tag, data, config, pos): """ In case of unexpected tag, the parsing stops and the mapping block is set with a REPORT tag telling what went wrong + The signature si that same as for all _add_* methods of the parser """ - self._content = f'\n Unknown mivot block statement: {tag}\n' + self._content = f'\n' + f' Unknown mivot block statement: {tag}\n' self._on_error = True warn_or_raise(W10, W10, tag, config={"verify": "warn"}, pos=pos) @@ -3448,9 +3464,11 @@ def content( ): """ The XML mapping block serialized as string. + If there is not mapping block, an empty block is returned in order to pervent client code to deal with None blocks """ if self._content == "": - self._content = '\n No Mivot block\n\n' + self._content = '\n' + ' No Mivot block\n\n' return self._content def parse(self, votable, iterator, config): From 06b9c38a032a8eee6e5e5b6aa11854a86987fb88 Mon Sep 17 00:00:00 2001 From: Laurent MICHEL Date: Tue, 26 Sep 2023 15:12:44 +0200 Subject: [PATCH 07/15] Update test_7_votable_pointer.py --- examples/mivotblock/test_7_votable_pointer.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/mivotblock/test_7_votable_pointer.py b/examples/mivotblock/test_7_votable_pointer.py index 76cd4090b3d..aca358ba75d 100644 --- a/examples/mivotblock/test_7_votable_pointer.py +++ b/examples/mivotblock/test_7_votable_pointer.py @@ -1,7 +1,7 @@ """ -Created on Feb 26, 2021 +Created on Sept 26, 2023 -@author: laurentmichel +@author: somilia """ import os import tempfile From b6cbc6e9037a13c9964bb006241f11ab506138ee Mon Sep 17 00:00:00 2001 From: Somia FLORET Date: Tue, 26 Sep 2023 15:30:58 +0200 Subject: [PATCH 08/15] fixed indentation error --- astropy/io/votable/tests/test_tree.py | 4 ++-- astropy/io/votable/tree.py | 25 +++++++++++++++---------- astropy/utils/xml/writer.py | 2 +- docs/io/votable/index.rst | 2 +- 4 files changed, 19 insertions(+), 14 deletions(-) diff --git a/astropy/io/votable/tests/test_tree.py b/astropy/io/votable/tests/test_tree.py index f482d3f24e6..b34bad4be3f 100644 --- a/astropy/io/votable/tests/test_tree.py +++ b/astropy/io/votable/tests/test_tree.py @@ -341,7 +341,7 @@ def test_mivot_write_after_resource(): """ vot = tree mivot_block = MivotBlock( - """ + """ Unit test mivot block1 @@ -431,7 +431,7 @@ def test_mivot_order(): """ vot = tree mivot_block = MivotBlock( - """ + """ """ diff --git a/astropy/io/votable/tree.py b/astropy/io/votable/tree.py index 696af60bfaf..89408a496ec 100644 --- a/astropy/io/votable/tree.py +++ b/astropy/io/votable/tree.py @@ -3390,14 +3390,15 @@ class MivotBlock(Element): def __init__(self, content=None): """ Constructor - - parameters + + + Parameters ---------- content: String - String serialization of the MIVOT block. - If it None, the instance is meant to be set by the Resource + String serialization of the MIVOT block. + If it None, the instance is meant to be set by the Resource parser. - Orherwise, the parameter value is parsed to make sure it matches + Orherwise, the parameter value is parsed to make sure it matches the MIVOT XML structure """ if content is not None: @@ -3439,7 +3440,7 @@ def _add_statement(self, start, tag, data, config, pos): if start is False: self._indent_level -= 1 - # The content is formated on the fly: not mandatory but cool for debugging + # The content is formatted on the fly: not mandatory but cool for debugging indent = "".join(" " for _ in range(2 * self._indent_level)) if ele_content: self._content += indent + " " + ele_content @@ -3453,8 +3454,10 @@ def _unknown_mapping_tag(self, start, tag, data, config, pos): is set with a REPORT tag telling what went wrong The signature si that same as for all _add_* methods of the parser """ - self._content = f'\n' - f' Unknown mivot block statement: {tag}\n' + self._content = ( + f'\n ' + f'Unknown mivot block statement: {tag}\n' + ) self._on_error = True warn_or_raise(W10, W10, tag, config={"verify": "warn"}, pos=pos) @@ -3467,8 +3470,10 @@ def content( If there is not mapping block, an empty block is returned in order to pervent client code to deal with None blocks """ if self._content == "": - self._content = '\n' - ' No Mivot block\n\n' + self._content = ( + '\n ' + 'No Mivot block\n\n' + ) return self._content def parse(self, votable, iterator, config): diff --git a/astropy/utils/xml/writer.py b/astropy/utils/xml/writer.py index 96b518a4f25..11c2e5f3d1b 100644 --- a/astropy/utils/xml/writer.py +++ b/astropy/utils/xml/writer.py @@ -306,7 +306,7 @@ def element(self, tag, text=None, wrap=False, attrib={}, **extra): def string_element(self, xml_string): """ - Reformat indentations on the xml in order to insert the mivot block + Reformat the indentation in the XML to insert the mivot block. """ self._flush() indent = self.get_indentation_spaces() diff --git a/docs/io/votable/index.rst b/docs/io/votable/index.rst index 4858bdae757..81052643cb0 100644 --- a/docs/io/votable/index.rst +++ b/docs/io/votable/index.rst @@ -486,7 +486,7 @@ Astropy implementation The purpose of Astropy is not to process VO annotations. It is just to allow related packages to get and set Mivot blocks from/into VOTables. For this reason, in this implementation Mivot annotations are both imported and exported as strings. -The current implementation prevents client code from injecting into VOTables strings +The current implementation prevents client code from injecting into VOTables strings that are not Mivot serializations. MivotBlock implementation : From 5c72a3cf8f8f77dee5ed82c9576b96d8222f57a7 Mon Sep 17 00:00:00 2001 From: Somia FLORET Date: Tue, 26 Sep 2023 16:50:33 +0200 Subject: [PATCH 09/15] add change log entry --- docs/changes/io.votable/15390.feature.rst | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 docs/changes/io.votable/15390.feature.rst diff --git a/docs/changes/io.votable/15390.feature.rst b/docs/changes/io.votable/15390.feature.rst new file mode 100644 index 00000000000..6accccdec00 --- /dev/null +++ b/docs/changes/io.votable/15390.feature.rst @@ -0,0 +1,2 @@ +Added ``Mivot feature`` through the ``MivotBlock`` class (tree.py) +that allows model annotations reading and writing in VOTable. From 09038047745c711b03ea998baaa7d608987c8b9a Mon Sep 17 00:00:00 2001 From: Somia Floret <57394764+somilia@users.noreply.github.com> Date: Wed, 27 Sep 2023 09:51:59 +0200 Subject: [PATCH 10/15] Address first review Co-authored-by: P. L. Lim <2090236+pllim@users.noreply.github.com> --- astropy/io/votable/exceptions.py | 2 +- astropy/io/votable/tree.py | 8 ++--- docs/changes/io.votable/15390.feature.rst | 2 +- docs/io/votable/index.rst | 42 +++++++++++++++++------ 4 files changed, 36 insertions(+), 18 deletions(-) diff --git a/astropy/io/votable/exceptions.py b/astropy/io/votable/exceptions.py index 169c6fe7ae4..58a68d2be10 100644 --- a/astropy/io/votable/exceptions.py +++ b/astropy/io/votable/exceptions.py @@ -1535,7 +1535,7 @@ class E26(VOTableSpecError): The mapping block can only be set in a type=meta RESOURCE. """ - message_template = "Mapping block can not be set in a RESOURCE with type=result " + message_template = "Mapping block can not be set in a RESOURCE with type=result" def _get_warning_and_exception_classes(prefix): diff --git a/astropy/io/votable/tree.py b/astropy/io/votable/tree.py index 89408a496ec..6d4dada4bb3 100644 --- a/astropy/io/votable/tree.py +++ b/astropy/io/votable/tree.py @@ -3378,13 +3378,13 @@ def iter_info(self): class MivotBlock(Element): """ - Mivot Block holder + Mivot Block holder: Processing VO model views on data is out of the scope of Astropy. This is why the only VOmodel-related feature implemented here the extraction or the writing of a mapping block from/to a VOtable There is no syntax validation other than the allowed tag names. The mapping block is handled as a correctly indented XML string - which is meant to be parsed by the calling API (e.g. PyVO) + which is meant to be parsed by the calling API (e.g., PyVO). """ def __init__(self, content=None): @@ -3513,9 +3513,7 @@ def to_xml(self, w): """ w.string_element(self._content) - def check_content_format( - self, - ): + def check_content_format(self): """ Check if the content is on xml format by building a VOTable, putting a mivot block in the first resource and trying to parse the VOTable. diff --git a/docs/changes/io.votable/15390.feature.rst b/docs/changes/io.votable/15390.feature.rst index 6accccdec00..3da031231a9 100644 --- a/docs/changes/io.votable/15390.feature.rst +++ b/docs/changes/io.votable/15390.feature.rst @@ -1,2 +1,2 @@ -Added ``Mivot feature`` through the ``MivotBlock`` class (tree.py) +Added ``Mivot feature`` through the ``MivotBlock`` class that allows model annotations reading and writing in VOTable. diff --git a/docs/io/votable/index.rst b/docs/io/votable/index.rst index 81052643cb0..72d7f61b667 100644 --- a/docs/io/votable/index.rst +++ b/docs/io/votable/index.rst @@ -474,7 +474,7 @@ Model Instances in VOTables (`MIVOT @@ -538,28 +542,44 @@ Construct the mivot block by passing the XML block as a parameter:: """) -Build a new resource:: +Build a new resource: + +.. code-block:: python mivot_resource = Resource() - Give it the type meta:: + +Give it the type meta: + +.. code-block:: python + mivot_resource.type = "meta" - Then add it the mivot block:: + +Then add it the mivot block: + +.. code-block:: python + mivot_resource.mivot_block = mivot_block -Now you have a mivot resource that you can add to an object Resource creating a new Resource:: +Now you have a mivot resource that you can add to an object Resource creating a new Resource: + +.. code-block:: python vtf = VOTableFile() r1 = Resource() r1.type = "results" r1.resources.append(mivot_resource) -You can add a Table to the resource:: +You can add a Table to the resource: + +.. code-block:: python t1 = Table(vtf) r1.tables.append(t1) vtf.resources.append(r1) -You can extract a Mivot block from a file by passing the file path to`~astropy.utils.data.py`:: +You can extract a Mivot block from a file by passing the file path: + +.. code-block:: python votable = parse(get_pkg_data_filename('data/mivot_block.xml')) for resource in votable.resources: From dabea4f03f2e617695c3c2d8afc55f3e3f86df41 Mon Sep 17 00:00:00 2001 From: Somia FLORET Date: Thu, 28 Sep 2023 16:21:36 +0200 Subject: [PATCH 11/15] changes from the general review --- .../tests/data/mivot_annnotated_table.xml | 103 ++---------------- astropy/io/votable/tests/test_tree.py | 83 ++++++-------- astropy/io/votable/tree.py | 49 ++++----- astropy/utils/xml/writer.py | 2 +- docs/io/votable/index.rst | 68 ++++++------ docs/whatsnew/6.0.rst | 89 +++++++++++++++ examples/mivotblock/test.mivot.out.xml | 13 --- examples/mivotblock/test_7_votable_pointer.py | 73 ------------- 8 files changed, 186 insertions(+), 294 deletions(-) delete mode 100644 examples/mivotblock/test.mivot.out.xml delete mode 100644 examples/mivotblock/test_7_votable_pointer.py diff --git a/astropy/io/votable/tests/data/mivot_annnotated_table.xml b/astropy/io/votable/tests/data/mivot_annnotated_table.xml index 901b99848d2..c8a6858bb1f 100644 --- a/astropy/io/votable/tests/data/mivot_annnotated_table.xml +++ b/astropy/io/votable/tests/data/mivot_annnotated_table.xml @@ -3,16 +3,7 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.ivoa.net/xml/VOTable/v1.3 http://vo.ari.uni-heidelberg.de/docs/schemata/VOTable-1.4.xsd"> - This schema contains data re-published from the official - Gaia mirrors (such as ivo://uni-heidelberg.de/gaia/tap) - either to - support combining its data with local tables (the various Xlite tables) - or to make the data more accessible to VO - clients (e.g., epoch fluxes). - - Other Gaia-related data is found in, among others, the gdr3mock, - gdr3spec, gedr3auto, gedr3dist, - gedr3mock, and gedr3spur schemas. + This schema contains data re-published from the official... This schema contains data re-published from the official Gaia mirrors -(such as ivo://uni-heidelberg.de/gaia/tap) either to support combining -its data with local tables (the various Xlite tables) or to make the -data more accessible to VO clients (e.g., epoch fluxes). - -Other Gaia-related data is found in, among others, the gdr3mock, -gdr3spec, gedr3auto, gedr3dist, gedr3mock, and gedr3spur schemas. + ... + If you use public Gaia DR3 data in a paper, please take note of `ESAC's guide`_ on how to acknowledge and cite it. .. _ESAC's guide: https://gea.esac.esa.int/archive/documentation/GDR3/Miscellaneous/sec_credit_and_citation_instructions/ This is gaia_source from the Gaia Data Release 3, stripped to just -enough columns to enable basic science (but therefore a bit faster and -simpler to deal with than the full gaia_source table). - -Note that on this server, there is also The gedr3dist.main, which -gives distances computed by Bailer-Jones et al. Use these in -preference to working with the raw parallaxes. - -This server also carries the gedr3mock schema containing a simulation -of gaia_source based on a state-of-the-art galaxy model, computed by -Rybizki et al. - -The full DR3 is available from numerous places in the VO (in -particular from the TAP services ivo://uni-heidelberg.de/gaia/tap and -ivo://esavo/gaia/tap). + ... + Query successful For advice on how to cite the resource(s) that contributed to this result, see http://dc.zah.uni-heidelberg.de/tableinfo/gaia.dr3lite#ti-citing More information on a resource that contributed to this data is found at http://dc.zah.uni-heidelberg.de/tableinfo/gaia.dr3lite @@ -311,74 +286,12 @@ ivo://esavo/gaia/tap). - This is gaia_source from the Gaia Data Release 3, stripped to just - enough columns to enable basic science - (but therefore a bit faster and - simpler to deal with than the full gaia_source table). - - Note that on this server, there - is - also The gedr3dist.main, which - gives distances computed by Bailer-Jones et al. Use these in - preference to working - with the - raw parallaxes. - - This server also carries the gedr3mock schema containing a simulation - of gaia_source based on a - state-of-the-art galaxy model, computed by - Rybizki et al. - - The full DR3 is available from numerous places in the VO (in - particular from the TAP services ivo://uni-heidelberg.de/gaia/tap and - ivo://esavo/gaia/tap). + + This is gaia_source from the Gaia Data Release 3, stripped to just... - For the contents of Gaia DR3, - the source ID consists of a 64-bit integer, least - significant bit = 1 and - most - significant bit = 64, comprising: - - * a HEALPix index number (sky pixel) in bits 36 - 63; by definition the - smallest - HEALPix index number is zero. - * a 3-bit Data Processing Centre code in bits 33 - 35; for example - MOD(source_id / - 4294967296, 8) can be used to distinguish between - sources initialised via the Initial Gaia Source - List by the Torino DPC - (code = 0) and sources otherwise detected and assigned by Gaia - observations (code > 0) - * a - 25-bit plus 7 bit sequence - number within the HEALPix pixel in bits 1 - to 32 split into: - - * a 25 bit running number in - bits 8 - 32; the running numbers - are - defined to be positive, i.e. never zero (except in the case of forced - empty - windows) - * a 7-bit component number in - bits 1 - 7 - - This means that the HEALpix index level 12 of a given source is - contained - in the most significant bits. - HEALpix index of 12 and lower levels can - thus be retrieved as follows: - - * - HEALpix level 12 = source_id / 34359738368 - * - HEALpix level 11 = source_id / 137438953472 - * HEALpix level 10 = - source_id / 549755813888 - * HEALpix level n = source_id / - 2^35 * 4^(12 - level). + For the contents of Gaia DR3,... diff --git a/astropy/io/votable/tests/test_tree.py b/astropy/io/votable/tests/test_tree.py index b34bad4be3f..13918331617 100644 --- a/astropy/io/votable/tests/test_tree.py +++ b/astropy/io/votable/tests/test_tree.py @@ -179,32 +179,33 @@ def test_votable_tag(): assert 'http://www.ivoa.net/xml/VOTable/VOTable-1.4.xsd"' in xml -def squash_xml(data): +def _squash_xml(data): """ Utility squashing XML fragment to easier their comparison + This function is only used in the test module. It was more convenient for comparing the xml. """ return data.replace(" ", "").replace("\n", "").replace('"', "").replace("'", "") def test_mivot_constructor(): """ - Construct a mivot block with wrong tag to test the expected exception + Construct a MIVOT block with wrong tag to test the expected exception """ with pytest.raises(ValueError, match="not well-formed"): MivotBlock( """ - - Unit test mivot block1 - - - - """ + + Unit test mivot block1 + + + + """ ) def test_mivot_readout(): """ - Test the mivot block extraction from a file against a reference block stored in data + Test the MIVOT block extraction from a file against a reference block stored in data """ votable = parse(get_pkg_data_filename("data/mivot_annnotated_table.xml")) @@ -214,22 +215,24 @@ def test_mivot_readout(): get_pkg_data_filename("data/mivot_block_custom_datatype.xml") ) as reference: ref_data = reference.read() - assert squash_xml(ref_data) == squash_xml(resource.mivot_block.content) + assert _squash_xml(ref_data) == _squash_xml(resource.mivot_block.content) assert len(resource.tables) == 1 def test_mivot_write(): """ - Build a VOTable, put a mivot block in the first resource, checks it can be retrieved + Build a VOTable, put a MIVOT block in the first resource, checks it can be retrieved as well as the following table """ vot = tree mivot_block = MivotBlock( """ - Unit test mivot block1 - - + + Unit test mivot block1 + + + """ ) @@ -251,7 +254,7 @@ def test_mivot_write(): vtf2 = parse(buff) assert len(vtf2.resources) == 1 for resource in vtf2.resources: - assert squash_xml(mivot_block.content) == squash_xml( + assert _squash_xml(mivot_block.content) == _squash_xml( resource.mivot_block.content ) assert len(resource.tables) == 0 @@ -259,7 +262,7 @@ def test_mivot_write(): def test_mivot_write_after_table(): """ - Build a VOTable, put a mivot block and a table in the first resource, checks it can be retrieved + Build a VOTable, put a MIVOT block and a table in the first resource, checks it can be retrieved as well as the following table """ vot = tree @@ -295,7 +298,7 @@ def test_mivot_write_after_table(): vtf2 = parse(buff) assert len(vtf2.resources) == 1 for resource in vtf2.resources: - assert squash_xml(mivot_block.content) == squash_xml( + assert _squash_xml(mivot_block.content) == _squash_xml( resource.mivot_block.content ) assert len(resource.tables) == 1 @@ -303,7 +306,7 @@ def test_mivot_write_after_table(): def test_write_no_mivot(): """ - Build a VOTable, put an empty mivot block in the first resource, checks it can be retrieved + Build a VOTable, put an empty MIVOT block in the first resource, checks it can be retrieved as well as the following table """ vot = tree @@ -328,7 +331,7 @@ def test_write_no_mivot(): assert len(vtf2.resources) == 1 for resource in vtf2.resources: assert ( - squash_xml(resource.mivot_block.content) + _squash_xml(resource.mivot_block.content) == "NoMivotblock" ) assert len(resource.tables) == 1 @@ -336,7 +339,7 @@ def test_write_no_mivot(): def test_mivot_write_after_resource(): """ - Build a VOTable, put a mivot block in the first resource after another meta resource, + Build a VOTable, put a MIVOT block in the first resource after another meta resource, checks it can be retrieved as well as the following table """ vot = tree @@ -375,7 +378,7 @@ def test_mivot_write_after_resource(): vtf2 = parse(buff) assert len(vtf2.resources) == 1 for resource in vtf2.resources: - assert squash_xml(mivot_block.content) == squash_xml( + assert _squash_xml(mivot_block.content) == _squash_xml( resource.mivot_block.content ) assert len(resource.tables) == 1 @@ -383,47 +386,27 @@ def test_mivot_write_after_resource(): def test_mivot_forbidden_write(): """ - Build a meta resource containing a mivot block, - build the dummy mivot block first. + Build a meta resource containing a MIVOT block, + build the dummy MIVOT block first. """ mivot_block = MivotBlock( """ - Unit test mivot block1 - + Unit test mivot block1 + """ ) # package the MIVOT block in the resource mivot_resource = Resource() mivot_resource.type = "results" - try: - # a mivot block must be with "type=meta" - mivot_resource.mivot_block = mivot_block - raise AssertionError() - except E26: - assert True - -def setup_function(test_mivot_order): - """ - The setup_function() function tests ensure that the xml file does not exist. - """ - files = os.listdir(".") - if "test.order.out.xml" in files: - os.remove("test.order.out.xml") - - -def teardown_function(test_mivot_order): - """ - The teardown_function() function removes the xml file, if it was created. - """ - files = os.listdir(".") - if "test.order.out.xml" in files: - os.remove("test.order.out.xml") + with pytest.raises(E26): + # A MIVOT block must be with "type=meta" + mivot_resource.mivot_block = mivot_block -def test_mivot_order(): +def test_mivot_order(tmp_path): """ Build a VOTable with 2 resources containing MivotBlock, parse it, and write it in a file. Then compare it with another file to see if the order of the elements in a resource is respected, @@ -493,7 +476,7 @@ def test_mivot_order(): data_path = os.path.dirname(os.path.realpath(__file__)) vpath = os.path.join(data_path, "data/test.order.xml") - vpath_out = os.path.join(data_path, "test.order.out.xml") + vpath_out = os.path.join(data_path, tmp_path / "test.order.out.xml") vtf2.to_xml(vpath_out) # We want to remove the xml header from the VOTable diff --git a/astropy/io/votable/tree.py b/astropy/io/votable/tree.py index 6d4dada4bb3..95ad35e2354 100644 --- a/astropy/io/votable/tree.py +++ b/astropy/io/votable/tree.py @@ -3378,29 +3378,23 @@ def iter_info(self): class MivotBlock(Element): """ - Mivot Block holder: + MIVOT Block holder: Processing VO model views on data is out of the scope of Astropy. This is why the only VOmodel-related feature implemented here the - extraction or the writing of a mapping block from/to a VOtable + extraction or the writing of a mapping block from/to a VOTable There is no syntax validation other than the allowed tag names. The mapping block is handled as a correctly indented XML string which is meant to be parsed by the calling API (e.g., PyVO). - """ - def __init__(self, content=None): - """ - Constructor + The constructor takes "content" as a parameter, it is the string + serialization of the MIVOT block. + If it is None, the instance is meant to be set by the Resource parser. + Orherwise, the parameter value is parsed to make sure it matches + the MIVOT XML structure. + """ - Parameters - ---------- - content: String - String serialization of the MIVOT block. - If it None, the instance is meant to be set by the Resource - parser. - Orherwise, the parameter value is parsed to make sure it matches - the MIVOT XML structure - """ + def __init__(self, content=None): if content is not None: self._content = content.strip() self.check_content_format() @@ -3416,7 +3410,7 @@ def _add_statement(self, start, tag, data, config, pos): """ Convert the tag as a string and append it to the mapping block string with the correct indentation level. - The signature si that same as for all _add_* methods of the parser + The signature is the same as for all _add_* methods of the parser. """ if self._on_error is True: return @@ -3451,15 +3445,15 @@ def _add_statement(self, start, tag, data, config, pos): def _unknown_mapping_tag(self, start, tag, data, config, pos): """ In case of unexpected tag, the parsing stops and the mapping block - is set with a REPORT tag telling what went wrong - The signature si that same as for all _add_* methods of the parser + is set with a REPORT tag telling what went wrong. + The signature si that same as for all _add_* methods of the parser. """ self._content = ( f'\n ' f'Unknown mivot block statement: {tag}\n' ) self._on_error = True - warn_or_raise(W10, W10, tag, config={"verify": "warn"}, pos=pos) + warn_or_raise(W10, W10, tag, config, pos=pos) @property def content( @@ -3467,7 +3461,8 @@ def content( ): """ The XML mapping block serialized as string. - If there is not mapping block, an empty block is returned in order to pervent client code to deal with None blocks + If there is not mapping block, an empty block is returned in order to + prevent client code to deal with None blocks. """ if self._content == "": self._content = ( @@ -3480,7 +3475,6 @@ def parse(self, votable, iterator, config): """ Regular parser similar to others VOTable components """ - self._votable = votable model_mapping_mapping = { "VODML": self._add_statement, "GLOBALS": self._add_statement, @@ -3503,20 +3497,18 @@ def parse(self, votable, iterator, config): if start is False and tag == "VODML": break - del self._votable - return self def to_xml(self, w): """ - Tell the writer to insert the mivot block in its output stream + Tells the writer to insert the MIVOT block in its output stream. """ w.string_element(self._content) def check_content_format(self): """ Check if the content is on xml format by building a VOTable, - putting a mivot block in the first resource and trying to parse the VOTable. + putting a MIVOT block in the first resource and trying to parse the VOTable. """ if self._content.startswith("<") is False: vo_raise(E26) @@ -3623,9 +3615,10 @@ def type(self, type): @property def mivot_block(self): """ - The XML mapping block serialized as string. - Take the resource mivot block if type=meta - or the mivot block of the first sub-resource (type=meta) having one + Returns the XML MIVOT block serialized as a string. + If the host resource is of type `results`, it is taken from the first + child resource with a MIVOT block, if any. + Otherwise, it is taken from the host resource """ if self.type == "results": for resource in self.resources: diff --git a/astropy/utils/xml/writer.py b/astropy/utils/xml/writer.py index 11c2e5f3d1b..d9c36041c54 100644 --- a/astropy/utils/xml/writer.py +++ b/astropy/utils/xml/writer.py @@ -306,7 +306,7 @@ def element(self, tag, text=None, wrap=False, attrib={}, **extra): def string_element(self, xml_string): """ - Reformat the indentation in the XML to insert the mivot block. + Reformat the indentation in the XML to insert the MIVOT block. """ self._flush() indent = self.get_indentation_spaces() diff --git a/docs/io/votable/index.rst b/docs/io/votable/index.rst index 72d7f61b667..e8c6778bce8 100644 --- a/docs/io/votable/index.rst +++ b/docs/io/votable/index.rst @@ -476,7 +476,7 @@ This annotation schema operates as a bridge between data and the models. It asso from the VOTable to the data model elements (class, attributes, types, etc.). It also brings up VOTable data or metadata that were possibly missing in the table, e.g., coordinate system description, or curation tracing. The data model elements are grouped in an independent annotation block complying with the MIVOT XML schema which -is added as an extra resource above the TABLE element. +is added as an extra resource above the table element. The MIVOT syntax allows to describe a data structure as a hierarchy of classes. It is also able to represent relations and compositions between them. It can moreover build up data model objects by aggregating instances from different tables of the VOTable. @@ -484,21 +484,21 @@ aggregating instances from different tables of the VOTable. Astropy implementation ---------------------- The purpose of Astropy is not to process VO annotations. -It is just to allow related packages to get and set Mivot blocks from/into VOTables. -For this reason, in this implementation Mivot annotations are both imported and exported as strings. +It is just to allow related packages to get and set MIVOT blocks from/into VOTables. +For this reason, in this implementation MIVOT annotations are both imported and exported as strings. The current implementation prevents client code from injecting into VOTables strings -that are not Mivot serializations. +that are not MIVOT serializations. MivotBlock implementation: -- Mivot blocks are handled by the :class:`astropy.io.votable.tree.MivotBlock` class. +- MIVOT blocks are handled by the :class:`astropy.io.votable.tree.MivotBlock` class. - A MivotBlock instance can only be carried by a resource with “type=meta”. - This instance holds the XML mapping block as a string. - MivotBlock objects are instanced by the Resource parser. - The MivotBlock class has its own logic that operates both parsing and IO functionalities. -Examples -^^^^^^^^ +Example +^^^^^^^ .. code-block:: xml @@ -516,26 +516,27 @@ Examples -Reading a VOTable containing a Mivot block +Reading a VOTable containing a MIVOT block ------------------------------------------ -To read in a VOTable file containing or not a Mivot Resource, pass a file path to`~astropy.io.votable.parse`: +To read in a VOTable file containing or not a MIVOT Resource, pass a file path to`~astropy.io.votable.parse`: .. code-block:: python - from astropy.io.votable import parse - votable = parse("votable.xml") + >>> from astropy.io.votable import parse + >>> votable = parse("votable.xml") -The parse function will call the Mivot parser if it detects a Mivot block. +The parse function will call the MIVOT parser if it detects a MIVOT block. -Building a Resource containing a Mivot block +Building a Resource containing a MIVOT block -------------------------------------------- -Construct the mivot block by passing the XML block as a parameter: +Construct the MIVOT block by passing the XML block as a parameter: .. code-block:: python - mivot_block = MivotBlock(""" + >>> from astropy.io.votable import tree + >>> mivot_block = MivotBlock(""" Unit test mapping block @@ -546,44 +547,43 @@ Build a new resource: .. code-block:: python - mivot_resource = Resource() + >>> mivot_resource = Resource() Give it the type meta: .. code-block:: python - mivot_resource.type = "meta" + >>> mivot_resource.type = "meta" -Then add it the mivot block: +Then add it the MIVOT block: .. code-block:: python - mivot_resource.mivot_block = mivot_block + >>> mivot_resource.mivot_block = mivot_block -Now you have a mivot resource that you can add to an object Resource creating a new Resource: +Now you have a MIVOT resource that you can add to an object Resource creating a new Resource: .. code-block:: python - vtf = VOTableFile() - r1 = Resource() - r1.type = "results" - r1.resources.append(mivot_resource) + >>> votable = VOTableFile() + >>> r1 = Resource() + >>> r1.type = "results" + >>> r1.resources.append(mivot_resource) You can add a Table to the resource: .. code-block:: python - t1 = Table(vtf) - r1.tables.append(t1) - vtf.resources.append(r1) - -You can extract a Mivot block from a file by passing the file path: - -.. code-block:: python + >>> table = tree.Table(votable) + >>> r1.tables.append(t1) + >>> votable.resources.append(r1) + >>> for resource in votable.resources: + >>> print(resource.mivot_block.content) + + Unit test mapping block + + - votable = parse(get_pkg_data_filename('data/mivot_block.xml')) - for resource in votable.resources: - print(resource.mivot_block.content) See Also ======== diff --git a/docs/whatsnew/6.0.rst b/docs/whatsnew/6.0.rst index d58c989e6a2..0412b712f3d 100644 --- a/docs/whatsnew/6.0.rst +++ b/docs/whatsnew/6.0.rst @@ -17,6 +17,7 @@ In particular, this release includes: * :ref:`whatsnew-6.0-broadcasting-frame-attributes` * :ref:`whatsnew-6.0-cosmology-latex-export` * :ref:`whatsnew-6.0-iers-data` +* :ref:`whatsnew-6.0-model-annotation-in-votable` In addition to these major changes, Astropy v6.0 includes a large number of smaller improvements and bug fixes, which are described in the :ref:`changelog`. @@ -234,6 +235,94 @@ IERS data can now install the latest version of the download the package manually and transfer it to a computer that has no public internet connection. +.. _whatsnew-6.0-model-annotation-in-votable: + +Reading and writing VO model annotations +======================================== + +Introduction +------------ +Model Instances in VOTables (MIVOT _) +defines a syntax to map VOTable data to any model serialised in VO-DML (Virtual Observatory Data Modeling Language). +This annotation schema operates as a bridge between data and the models. It associates both column/param metadata and data +from the VOTable to the data model elements (class, attributes, types, etc.). It also brings up VOTable data or +metadata that were possibly missing in the table, e.g., coordinate system description, or curation tracing. +The data model elements are grouped in an independent annotation block complying with the MIVOT XML schema which +is added as an extra resource above the table element. +The MIVOT syntax allows to describe a data structure as a hierarchy of classes. +It is also able to represent relations and compositions between them. It can moreover build up data model objects by +aggregating instances from different tables of the VOTable. + +The MIVOT object, instance of the MivotBlock class, holds the xml block serialized as a string. +MivotBlock instances can only be held by resources with "type=meta". + +Example +^^^^^^^ + +.. code-block:: xml + + + + + + ... + + +
+ .... +
+ + + +Reading a VOTable containing a MIVOT block +------------------------------------------ + +To read in a VOTable file containing or not a MIVOT Resource, pass a file path to`~astropy.io.votable.parse`: + +.. code-block:: python + + >>> from astropy.io.votable import parse + >>> votable = parse("votable.xml") + >>> for resource in votables.resources: + >>> print(resource.mivot_block.content) + + +The MIVOT block readout has been integrated into the resource parser. +If no MIVOT block is found, an empty block is returned with a message telling that no annotations have been found. + +Building a Resource containing a MIVOT block +-------------------------------------------- + +Construct the MIVOT block by passing the XML block as a parameter: + +.. code-block:: python + + >>> from astropy.io.votable import tree + >>> mivot_block = MivotBlock(""" + ... + ... Unit test mapping block + ... + ... + ... """) + >>> mivot_resource = Resource() + >>> mivot_resource.type = "meta" + >>> mivot_resource.mivot_block = mivot_block + >>> votable = VOTableFile() + >>> resource = Resource() + >>> resource.type = "results" + >>> resource.resources.append(mivot_resource) + >>> table = tree.Table(votable) + >>> resource.tables.append(table) + >>> votable.resources.append(resource) + >>> for resource in votable.resources: + >>> print(resource.mivot_block.content) + + Unit test mapping block + + + + Full change log =============== diff --git a/examples/mivotblock/test.mivot.out.xml b/examples/mivotblock/test.mivot.out.xml deleted file mode 100644 index f849b09c7ea..00000000000 --- a/examples/mivotblock/test.mivot.out.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - diff --git a/examples/mivotblock/test_7_votable_pointer.py b/examples/mivotblock/test_7_votable_pointer.py deleted file mode 100644 index aca358ba75d..00000000000 --- a/examples/mivotblock/test_7_votable_pointer.py +++ /dev/null @@ -1,73 +0,0 @@ -""" -Created on Sept 26, 2023 - -@author: somilia -""" -import os -import tempfile - -from astropy.io.votable import parse -from astropy.io.votable.tree import MivotBlock, Resource, VOTableFile - -data_path = os.path.dirname(os.path.realpath(__file__)) - -""" -Read out Example -""" - -# Read a valid VOTable -# No invalid element detected, -# The block is returned as an XML String -vpath = os.path.join(data_path, "test.mivot.xml") -votable = parse(vpath) -for resource in votable.resources: - print(f"Resource type: {resource.type} Mivot Block: {resource.mivot_block}") - - for resource_meta in resource.resources: - print(f"Resource type: {resource_meta.type} Mivot Block:") - print(resource_meta.mivot_block) - -# Read an invalid VOTable -# An unexpected element has been found in the mivot block -# The mivot block pointer returns a block with just REPORT in error -vpath = os.path.join(data_path, "test.mivot.ko.xml") -votable = parse(vpath) -for resource in votable.resources: - print(f"Resource type: {resource.type} Mivot Block: {resource.mivot_block}") - - for resource_meta in resource.resources: - print(f"Resource type: {resource_meta.type} Mivot Block:") - print(resource_meta.mivot_block) - -""" -Write Example -""" - -path = tempfile.gettempdir() + "/test.mivot.out.xml" -vpath = os.path.join(data_path, path) - -# Create am empty VOTable -votable = VOTableFile() -# Create the resource that will host both data table and mivot resource. -resource = Resource() -resource.type = "results" -# Create the resource that will host the mivot. -meta_resource = Resource() -meta_resource.type = "meta" -# A dummy mivot block for the test. -resource.resources.append(meta_resource) -mivot_block = MivotBlock(""" - - - - -""" - ) -# Add the mivot resource -meta_resource.mivot_block = mivot_block -votable.resources.append(resource) -# Save the VOTable -votable.to_xml(vpath) -# and read it again to retrieve the mivot -with open(vpath) as result: - print(result.read()) From ca17862e3c81afd0774ef5394e16e62aacd6982c Mon Sep 17 00:00:00 2001 From: Somia FLORET Date: Fri, 29 Sep 2023 11:25:30 +0200 Subject: [PATCH 12/15] update docs --- astropy/io/votable/tests/test_tree.py | 8 +++----- astropy/io/votable/tree.py | 2 +- docs/io/votable/index.rst | 10 ++++++++-- docs/whatsnew/6.0.rst | 8 +++++++- 4 files changed, 19 insertions(+), 9 deletions(-) diff --git a/astropy/io/votable/tests/test_tree.py b/astropy/io/votable/tests/test_tree.py index 13918331617..7e1598210c5 100644 --- a/astropy/io/votable/tests/test_tree.py +++ b/astropy/io/votable/tests/test_tree.py @@ -1,7 +1,6 @@ # Licensed under a 3-clause BSD style license - see LICENSE.rst import filecmp import io -import os from contextlib import nullcontext import pytest @@ -216,7 +215,7 @@ def test_mivot_readout(): ) as reference: ref_data = reference.read() assert _squash_xml(ref_data) == _squash_xml(resource.mivot_block.content) - assert len(resource.tables) == 1 + assert len(resource.tables) == 1 def test_mivot_write(): @@ -474,9 +473,8 @@ def test_mivot_order(tmp_path): buff.seek(0) vtf2 = parse(buff) - data_path = os.path.dirname(os.path.realpath(__file__)) - vpath = os.path.join(data_path, "data/test.order.xml") - vpath_out = os.path.join(data_path, tmp_path / "test.order.out.xml") + vpath = get_pkg_data_filename("data/test.order.xml") + vpath_out = str(tmp_path / "test.order.out.xml") vtf2.to_xml(vpath_out) # We want to remove the xml header from the VOTable diff --git a/astropy/io/votable/tree.py b/astropy/io/votable/tree.py index 95ad35e2354..3759df44544 100644 --- a/astropy/io/votable/tree.py +++ b/astropy/io/votable/tree.py @@ -3616,7 +3616,7 @@ def type(self, type): def mivot_block(self): """ Returns the XML MIVOT block serialized as a string. - If the host resource is of type `results`, it is taken from the first + If the host resource is of type results, it is taken from the first child resource with a MIVOT block, if any. Otherwise, it is taken from the host resource """ diff --git a/docs/io/votable/index.rst b/docs/io/votable/index.rst index e8c6778bce8..63c4fa43b56 100644 --- a/docs/io/votable/index.rst +++ b/docs/io/votable/index.rst @@ -524,7 +524,13 @@ To read in a VOTable file containing or not a MIVOT Resource, pass a file path t .. code-block:: python >>> from astropy.io.votable import parse - >>> votable = parse("votable.xml") + >>> from astropy.utils.data import get_pkg_data_filename + >>> votable = get_pkg_data_filename("data/test.order.xml", package="astropy.io.votable.tests") + + + + + The parse function will call the MIVOT parser if it detects a MIVOT block. @@ -570,7 +576,7 @@ Now you have a MIVOT resource that you can add to an object Resource creating a >>> r1.type = "results" >>> r1.resources.append(mivot_resource) -You can add a Table to the resource: +You can add an `astropy.io.votable.tree.Table` to the resource: .. code-block:: python diff --git a/docs/whatsnew/6.0.rst b/docs/whatsnew/6.0.rst index 0412b712f3d..2535fc0943a 100644 --- a/docs/whatsnew/6.0.rst +++ b/docs/whatsnew/6.0.rst @@ -283,9 +283,15 @@ To read in a VOTable file containing or not a MIVOT Resource, pass a file path t .. code-block:: python >>> from astropy.io.votable import parse - >>> votable = parse("votable.xml") + >>> from astropy.utils.data import get_pkg_data_filename + >>> votable = get_pkg_data_filename("data/test.order.xml", package="astropy.io.votable.tests") >>> for resource in votables.resources: >>> print(resource.mivot_block.content) + + + + + The MIVOT block readout has been integrated into the resource parser. From 8b8e3621da3b6acae718006218042b3c73091772 Mon Sep 17 00:00:00 2001 From: Somia FLORET Date: Fri, 29 Sep 2023 15:22:45 +0200 Subject: [PATCH 13/15] fix doc --- docs/io/votable/index.rst | 5 +++-- docs/whatsnew/6.0.rst | 12 +++++++----- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/docs/io/votable/index.rst b/docs/io/votable/index.rst index 63c4fa43b56..16cff7e3668 100644 --- a/docs/io/votable/index.rst +++ b/docs/io/votable/index.rst @@ -525,7 +525,7 @@ To read in a VOTable file containing or not a MIVOT Resource, pass a file path t >>> from astropy.io.votable import parse >>> from astropy.utils.data import get_pkg_data_filename - >>> votable = get_pkg_data_filename("data/test.order.xml", package="astropy.io.votable.tests") + >>> votable = parse(get_pkg_data_filename("data/test.order.xml", package="astropy.io.votable.tests")) @@ -542,6 +542,7 @@ Construct the MIVOT block by passing the XML block as a parameter: .. code-block:: python >>> from astropy.io.votable import tree + >>> from astropy.io.votable.tree import MivotBlock, Resource, VOTableFile >>> mivot_block = MivotBlock(""" Unit test mapping block @@ -584,7 +585,7 @@ You can add an `astropy.io.votable.tree.Table` to the resource: >>> r1.tables.append(t1) >>> votable.resources.append(r1) >>> for resource in votable.resources: - >>> print(resource.mivot_block.content) + ... print(resource.mivot_block.content) Unit test mapping block diff --git a/docs/whatsnew/6.0.rst b/docs/whatsnew/6.0.rst index 2535fc0943a..2a88a67b2d7 100644 --- a/docs/whatsnew/6.0.rst +++ b/docs/whatsnew/6.0.rst @@ -284,14 +284,15 @@ To read in a VOTable file containing or not a MIVOT Resource, pass a file path t >>> from astropy.io.votable import parse >>> from astropy.utils.data import get_pkg_data_filename - >>> votable = get_pkg_data_filename("data/test.order.xml", package="astropy.io.votable.tests") - >>> for resource in votables.resources: - >>> print(resource.mivot_block.content) + >>> votable = parse(get_pkg_data_filename("data/test.order.xml", package="astropy.io.votable.tests")) + >>> for resource in votable.resources: + ... print(resource.mivot_block.content) - + + The MIVOT block readout has been integrated into the resource parser. @@ -305,6 +306,7 @@ Construct the MIVOT block by passing the XML block as a parameter: .. code-block:: python >>> from astropy.io.votable import tree + >>> from astropy.io.votable.tree import MivotBlock, Resource, VOTableFile >>> mivot_block = MivotBlock(""" ... ... Unit test mapping block @@ -322,7 +324,7 @@ Construct the MIVOT block by passing the XML block as a parameter: >>> resource.tables.append(table) >>> votable.resources.append(resource) >>> for resource in votable.resources: - >>> print(resource.mivot_block.content) + ... print(resource.mivot_block.content) Unit test mapping block From f2edd3990d61d0be5ae0f65d520346ee78868313 Mon Sep 17 00:00:00 2001 From: Somia FLORET Date: Fri, 6 Oct 2023 10:38:47 +0200 Subject: [PATCH 14/15] fixes from the review --- .../{mivot_annnotated_table.xml => mivot_annotated_table.xml} | 0 astropy/io/votable/tests/test_tree.py | 2 +- astropy/io/votable/tree.py | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) rename astropy/io/votable/tests/data/{mivot_annnotated_table.xml => mivot_annotated_table.xml} (100%) diff --git a/astropy/io/votable/tests/data/mivot_annnotated_table.xml b/astropy/io/votable/tests/data/mivot_annotated_table.xml similarity index 100% rename from astropy/io/votable/tests/data/mivot_annnotated_table.xml rename to astropy/io/votable/tests/data/mivot_annotated_table.xml diff --git a/astropy/io/votable/tests/test_tree.py b/astropy/io/votable/tests/test_tree.py index 7e1598210c5..4421a22bed6 100644 --- a/astropy/io/votable/tests/test_tree.py +++ b/astropy/io/votable/tests/test_tree.py @@ -206,7 +206,7 @@ def test_mivot_readout(): """ Test the MIVOT block extraction from a file against a reference block stored in data """ - votable = parse(get_pkg_data_filename("data/mivot_annnotated_table.xml")) + votable = parse(get_pkg_data_filename("data/mivot_annotated_table.xml")) ref_data = "" for resource in votable.resources: diff --git a/astropy/io/votable/tree.py b/astropy/io/votable/tree.py index 3759df44544..46baab3e78d 100644 --- a/astropy/io/votable/tree.py +++ b/astropy/io/votable/tree.py @@ -3615,7 +3615,7 @@ def type(self, type): @property def mivot_block(self): """ - Returns the XML MIVOT block serialized as a string. + Returns the MIVOT block instance. If the host resource is of type results, it is taken from the first child resource with a MIVOT block, if any. Otherwise, it is taken from the host resource From 249819aadb1b8ae4c0d5ed060e3a7ab37661f15c Mon Sep 17 00:00:00 2001 From: Somia Floret <57394764+somilia@users.noreply.github.com> Date: Mon, 9 Oct 2023 09:35:26 +0200 Subject: [PATCH 15/15] Apply suggestions from code review Co-authored-by: P. L. Lim <2090236+pllim@users.noreply.github.com> --- astropy/io/votable/tree.py | 10 +-- docs/changes/io.votable/15390.feature.rst | 2 +- docs/io/votable/index.rst | 4 +- docs/whatsnew/6.0.rst | 95 ++--------------------- 4 files changed, 16 insertions(+), 95 deletions(-) diff --git a/astropy/io/votable/tree.py b/astropy/io/votable/tree.py index 46baab3e78d..6edaf98e040 100644 --- a/astropy/io/votable/tree.py +++ b/astropy/io/votable/tree.py @@ -3456,9 +3456,7 @@ def _unknown_mapping_tag(self, start, tag, data, config, pos): warn_or_raise(W10, W10, tag, config, pos=pos) @property - def content( - self, - ): + def content(self): """ The XML mapping block serialized as string. If there is not mapping block, an empty block is returned in order to @@ -3473,7 +3471,7 @@ def content( def parse(self, votable, iterator, config): """ - Regular parser similar to others VOTable components + Regular parser similar to others VOTable components. """ model_mapping_mapping = { "VODML": self._add_statement, @@ -3510,7 +3508,7 @@ def check_content_format(self): Check if the content is on xml format by building a VOTable, putting a MIVOT block in the first resource and trying to parse the VOTable. """ - if self._content.startswith("<") is False: + if not self._content.startswith("<"): vo_raise(E26) in_memory_votable = VOTableFile() @@ -3618,7 +3616,7 @@ def mivot_block(self): Returns the MIVOT block instance. If the host resource is of type results, it is taken from the first child resource with a MIVOT block, if any. - Otherwise, it is taken from the host resource + Otherwise, it is taken from the host resource. """ if self.type == "results": for resource in self.resources: diff --git a/docs/changes/io.votable/15390.feature.rst b/docs/changes/io.votable/15390.feature.rst index 3da031231a9..90eacb4484d 100644 --- a/docs/changes/io.votable/15390.feature.rst +++ b/docs/changes/io.votable/15390.feature.rst @@ -1,2 +1,2 @@ -Added ``Mivot feature`` through the ``MivotBlock`` class +Added MIVOT feature through the ``MivotBlock`` class that allows model annotations reading and writing in VOTable. diff --git a/docs/io/votable/index.rst b/docs/io/votable/index.rst index 16cff7e3668..a06b245f114 100644 --- a/docs/io/votable/index.rst +++ b/docs/io/votable/index.rst @@ -465,6 +465,8 @@ record array must be resized repeatedly during load. .. _nrows: http://www.ivoa.net/documents/REC/VOTable/VOTable-20040811.html#ToC10 +.. _votable_mivot: + Reading and writing VO model annotations ======================================== @@ -492,7 +494,7 @@ that are not MIVOT serializations. MivotBlock implementation: - MIVOT blocks are handled by the :class:`astropy.io.votable.tree.MivotBlock` class. -- A MivotBlock instance can only be carried by a resource with “type=meta”. +- A MivotBlock instance can only be carried by a resource with "type=meta". - This instance holds the XML mapping block as a string. - MivotBlock objects are instanced by the Resource parser. - The MivotBlock class has its own logic that operates both parsing and IO functionalities. diff --git a/docs/whatsnew/6.0.rst b/docs/whatsnew/6.0.rst index 2a88a67b2d7..542c17afaef 100644 --- a/docs/whatsnew/6.0.rst +++ b/docs/whatsnew/6.0.rst @@ -235,101 +235,22 @@ IERS data can now install the latest version of the download the package manually and transfer it to a computer that has no public internet connection. + .. _whatsnew-6.0-model-annotation-in-votable: Reading and writing VO model annotations ======================================== -Introduction ------------- -Model Instances in VOTables (MIVOT _) +Model Instances in VOTables (`MIVOT `_) defines a syntax to map VOTable data to any model serialised in VO-DML (Virtual Observatory Data Modeling Language). -This annotation schema operates as a bridge between data and the models. It associates both column/param metadata and data -from the VOTable to the data model elements (class, attributes, types, etc.). It also brings up VOTable data or -metadata that were possibly missing in the table, e.g., coordinate system description, or curation tracing. -The data model elements are grouped in an independent annotation block complying with the MIVOT XML schema which -is added as an extra resource above the table element. -The MIVOT syntax allows to describe a data structure as a hierarchy of classes. -It is also able to represent relations and compositions between them. It can moreover build up data model objects by -aggregating instances from different tables of the VOTable. - -The MIVOT object, instance of the MivotBlock class, holds the xml block serialized as a string. +The data model elements are grouped in an independent annotation block complying with +the MIVOT XML schema which is added as an extra resource above the table element. +In Astropy, the MIVOT block is implemented as a new component of the Resource element (MivotBlock class). MivotBlock instances can only be held by resources with "type=meta". +In this new feature, Astropy is able to read and write MIVOT annotations from and within VOTables. +There is no function processing data models, they will be delegated to affiliated packages such as PyVO. -Example -^^^^^^^ - -.. code-block:: xml - - - - - - ... - - - - .... -
-
-
- -Reading a VOTable containing a MIVOT block ------------------------------------------- - -To read in a VOTable file containing or not a MIVOT Resource, pass a file path to`~astropy.io.votable.parse`: - -.. code-block:: python - - >>> from astropy.io.votable import parse - >>> from astropy.utils.data import get_pkg_data_filename - >>> votable = parse(get_pkg_data_filename("data/test.order.xml", package="astropy.io.votable.tests")) - >>> for resource in votable.resources: - ... print(resource.mivot_block.content) - - - - - - - - -The MIVOT block readout has been integrated into the resource parser. -If no MIVOT block is found, an empty block is returned with a message telling that no annotations have been found. - -Building a Resource containing a MIVOT block --------------------------------------------- - -Construct the MIVOT block by passing the XML block as a parameter: - -.. code-block:: python - - >>> from astropy.io.votable import tree - >>> from astropy.io.votable.tree import MivotBlock, Resource, VOTableFile - >>> mivot_block = MivotBlock(""" - ... - ... Unit test mapping block - ... - ... - ... """) - >>> mivot_resource = Resource() - >>> mivot_resource.type = "meta" - >>> mivot_resource.mivot_block = mivot_block - >>> votable = VOTableFile() - >>> resource = Resource() - >>> resource.type = "results" - >>> resource.resources.append(mivot_resource) - >>> table = tree.Table(votable) - >>> resource.tables.append(table) - >>> votable.resources.append(resource) - >>> for resource in votable.resources: - ... print(resource.mivot_block.content) - - Unit test mapping block - - - +See :ref:`votable_mivot` for more details. Full change log