LSST Applications 27.0.0,g0265f82a02+469cd937ee,g02d81e74bb+21ad69e7e1,g1470d8bcf6+cbe83ee85a,g2079a07aa2+e67c6346a6,g212a7c68fe+04a9158687,g2305ad1205+94392ce272,g295015adf3+81dd352a9d,g2bbee38e9b+469cd937ee,g337abbeb29+469cd937ee,g3939d97d7f+72a9f7b576,g487adcacf7+71499e7cba,g50ff169b8f+5929b3527e,g52b1c1532d+a6fc98d2e7,g591dd9f2cf+df404f777f,g5a732f18d5+be83d3ecdb,g64a986408d+21ad69e7e1,g858d7b2824+21ad69e7e1,g8a8a8dda67+a6fc98d2e7,g99cad8db69+f62e5b0af5,g9ddcbc5298+d4bad12328,ga1e77700b3+9c366c4306,ga8c6da7877+71e4819109,gb0e22166c9+25ba2f69a1,gb6a65358fc+469cd937ee,gbb8dafda3b+69d3c0e320,gc07e1c2157+a98bf949bb,gc120e1dc64+615ec43309,gc28159a63d+469cd937ee,gcf0d15dbbd+72a9f7b576,gdaeeff99f8+a38ce5ea23,ge6526c86ff+3a7c1ac5f1,ge79ae78c31+469cd937ee,gee10cc3b42+a6fc98d2e7,gf1cff7945b+21ad69e7e1,gfbcc870c63+9a11dc8c8f
LSST Data Management Base Package
Loading...
Searching...
No Matches
Public Member Functions | Public Attributes | Static Public Attributes | Protected Member Functions | Static Protected Attributes | List of all members
lsst.meas.algorithms.convertReferenceCatalog.ConvertReferenceCatalogTask Class Reference
Inheritance diagram for lsst.meas.algorithms.convertReferenceCatalog.ConvertReferenceCatalogTask:

Public Member Functions

 __init__ (self, *output_dir=None, **kwargs)
 
 run (self, inputFiles)
 
 makeSchema (self, dtype)
 

Public Attributes

 base_dir
 
 output_dir
 
 ingest_table_file
 
 indexer
 
 config
 
 file_reader
 
 log
 

Static Public Attributes

bool canMultiprocess = False
 
 ConfigClass = ConvertReferenceCatalogConfig
 

Protected Member Functions

 _writeIngestHelperFile (self, result)
 
 _writeConfig (self)
 
 _getOutputFilenames (self, htm)
 
 _writeMasterSchema (self, inputfile)
 
 _reduce_kwargs (self)
 

Static Protected Attributes

str _DefaultName = 'ConvertReferenceCatalogTask'
 

Detailed Description

Class for producing HTM-indexed reference catalogs from external
catalog data.

This implements an indexing scheme based on hierarchical triangular
mesh (HTM). The term index really means breaking the catalog into
localized chunks called shards.  In this case each shard contains
the entries from the catalog in a single HTM trixel

For producing catalogs this task makes the following assumptions
about the input catalogs:

- RA, Dec are in decimal degrees.
- Epoch is available in a column, in a format supported by astropy.time.Time.
- There are either no off-diagonal covariance terms, or there are all the
  five-dimensional covariance terms (between RA, Dec, proper motion, and
  parallax). In the latter case, a custom ``ConvertRefcatManager`` must
  exist to handle the covariance terms.

Parameters
----------
output_dir : `str`
    The path to write the output files to, in a subdirectory defined by
    ``DatasetConfig.ref_dataset_name``.

Definition at line 471 of file convertReferenceCatalog.py.

Constructor & Destructor Documentation

◆ __init__()

lsst.meas.algorithms.convertReferenceCatalog.ConvertReferenceCatalogTask.__init__ ( self,
* output_dir = None,
** kwargs )

Definition at line 500 of file convertReferenceCatalog.py.

500 def __init__(self, *, output_dir=None, **kwargs):
501 super().__init__(**kwargs)
502 if output_dir is None:
503 raise RuntimeError("Must specify output_dir.")
504 self.base_dir = output_dir
505 self.output_dir = os.path.join(output_dir, self.config.dataset_config.ref_dataset_name)
506 self.ingest_table_file = os.path.join(self.base_dir, "filename_to_htm.ecsv")
507 self.indexer = IndexerRegistry[self.config.dataset_config.indexer.name](
508 self.config.dataset_config.indexer.active)
509 self.makeSubtask('file_reader')
510

Member Function Documentation

◆ _getOutputFilenames()

lsst.meas.algorithms.convertReferenceCatalog.ConvertReferenceCatalogTask._getOutputFilenames ( self,
htm )
protected
Get filenames from the butler for each output htm pixel.

Parameters
----------
htm : `lsst.sphgeom.HtmPixelization`
    The HTM pixelization scheme to be used to build filenames.

Returns
-------
filenames : `list [str]`
    List of filenames to write each HTM pixel to.

Definition at line 559 of file convertReferenceCatalog.py.

559 def _getOutputFilenames(self, htm):
560 """Get filenames from the butler for each output htm pixel.
561
562 Parameters
563 ----------
564 htm : `lsst.sphgeom.HtmPixelization`
565 The HTM pixelization scheme to be used to build filenames.
566
567 Returns
568 -------
569 filenames : `list [str]`
570 List of filenames to write each HTM pixel to.
571 """
572 filenames = {}
573 start, end = htm.universe()[0]
574 path = os.path.join(self.output_dir, f"{self.indexer.htm}.fits")
575 base = os.path.join(os.path.dirname(path), "%d"+os.path.splitext(path)[1])
576 for pixelId in range(start, end):
577 filenames[pixelId] = base % pixelId
578
579 return filenames
580

◆ _reduce_kwargs()

lsst.meas.algorithms.convertReferenceCatalog.ConvertReferenceCatalogTask._reduce_kwargs ( self)
protected

Definition at line 631 of file convertReferenceCatalog.py.

631 def _reduce_kwargs(self):
632 # Need to be able to pickle this class to use the multiprocess manager.
633 kwargs = super()._reduce_kwargs()
634 kwargs['output_dir'] = self.base_dir
635 return kwargs
636
637

◆ _writeConfig()

lsst.meas.algorithms.convertReferenceCatalog.ConvertReferenceCatalogTask._writeConfig ( self)
protected
Write the config that was used to generate the refcat.

Definition at line 553 of file convertReferenceCatalog.py.

553 def _writeConfig(self):
554 """Write the config that was used to generate the refcat."""
555 filename = os.path.join(self.output_dir, "config.py")
556 with open(filename, 'w') as file:
557 self.config.dataset_config.saveToStream(file)
558

◆ _writeIngestHelperFile()

lsst.meas.algorithms.convertReferenceCatalog.ConvertReferenceCatalogTask._writeIngestHelperFile ( self,
result )
protected
Write the astropy table containing the htm->filename relationship,
used for the ``butler ingest-files`` command after this task completes.

Definition at line 543 of file convertReferenceCatalog.py.

543 def _writeIngestHelperFile(self, result):
544 """Write the astropy table containing the htm->filename relationship,
545 used for the ``butler ingest-files`` command after this task completes.
546 """
547 dimension = f"htm{self.config.dataset_config.indexer.active.depth}"
548 table = astropy.table.Table(names=("filename", dimension), dtype=('str', 'int'))
549 for key in result:
550 table.add_row((result[key], key))
551 table.write(self.ingest_table_file)
552

◆ _writeMasterSchema()

lsst.meas.algorithms.convertReferenceCatalog.ConvertReferenceCatalogTask._writeMasterSchema ( self,
inputfile )
protected
Generate and save the master catalog schema.

Parameters
----------
inputfile : `str`
    An input file to read to get the input dtype.

Definition at line 614 of file convertReferenceCatalog.py.

614 def _writeMasterSchema(self, inputfile):
615 """Generate and save the master catalog schema.
616
617 Parameters
618 ----------
619 inputfile : `str`
620 An input file to read to get the input dtype.
621 """
622 arr = self.file_reader.run(inputfile)
623 schema, key_map = self.makeSchema(arr.dtype)
624
625 catalog = lsst.afw.table.SimpleCatalog(schema)
626 addRefCatMetadata(catalog)
627 outputfile = os.path.join(self.output_dir, "master_schema.fits")
628 catalog.writeFits(outputfile)
629 return schema, key_map
630
Custom catalog class for record/table subclasses that are guaranteed to have an ID,...

◆ makeSchema()

lsst.meas.algorithms.convertReferenceCatalog.ConvertReferenceCatalogTask.makeSchema ( self,
dtype )
Make the schema to use in constructing the persisted catalogs.

Parameters
----------
dtype : `numpy.dtype`
    Data type describing each entry in ``config.extra_col_names``
    for the catalogs being ingested.

Returns
-------
schemaAndKeyMap : `tuple` of (`lsst.afw.table.Schema`, `dict`)
    A tuple containing two items:
    - The schema for the output source catalog.
    - A map of catalog keys to use in filling the record

Definition at line 581 of file convertReferenceCatalog.py.

581 def makeSchema(self, dtype):
582 """Make the schema to use in constructing the persisted catalogs.
583
584 Parameters
585 ----------
586 dtype : `numpy.dtype`
587 Data type describing each entry in ``config.extra_col_names``
588 for the catalogs being ingested.
589
590 Returns
591 -------
592 schemaAndKeyMap : `tuple` of (`lsst.afw.table.Schema`, `dict`)
593 A tuple containing two items:
594 - The schema for the output source catalog.
595 - A map of catalog keys to use in filling the record
596 """
597 # make a schema with the standard fields
598 schema = _makeSchema(
599 filterNameList=self.config.mag_column_list,
600 addCentroid=False,
601 addIsPhotometric=bool(self.config.is_photometric_name),
602 addIsResolved=bool(self.config.is_resolved_name),
603 addIsVariable=bool(self.config.is_variable_name),
604 fullPositionInformation=self.config.full_position_information,
605 )
606 keysToSkip = set(("id", "centroid_x", "centroid_y", "hasCentroid"))
607 key_map = {fieldName: schema[fieldName].asKey() for fieldName in schema.getOrderedNames()
608 if fieldName not in keysToSkip}
609
610 _addExtraColumnsToSchema(schema, dtype, self.config.extra_col_names, key_map)
611
612 return schema, key_map
613
daf::base::PropertySet * set
Definition fits.cc:931

◆ run()

lsst.meas.algorithms.convertReferenceCatalog.ConvertReferenceCatalogTask.run ( self,
inputFiles )
Index a set of files comprising a reference catalog.

Outputs are persisted in the butler repository.

Parameters
----------
inputFiles : `list`
    A list of file paths to read.

Definition at line 511 of file convertReferenceCatalog.py.

511 def run(self, inputFiles):
512 """Index a set of files comprising a reference catalog.
513
514 Outputs are persisted in the butler repository.
515
516 Parameters
517 ----------
518 inputFiles : `list`
519 A list of file paths to read.
520 """
521 # Create the output path, if it doesn't exist; fail if the path exists:
522 # we don't want to accidentally append to existing files.
523 pathlib.Path(self.output_dir).mkdir(exist_ok=False)
524
525 schema, key_map = self._writeMasterSchema(inputFiles[0])
526 # create an HTM we can interrogate about pixel ids
527 htm = lsst.sphgeom.HtmPixelization(self.indexer.htm.get_depth())
528 filenames = self._getOutputFilenames(htm)
529 worker = self.config.manager.target(filenames,
530 self.config,
531 self.file_reader,
532 self.indexer,
533 schema,
534 key_map,
535 htm.universe()[0],
536 addRefCatMetadata,
537 self.log)
538 result = worker.run(inputFiles)
539
540 self._writeConfig()
541 self._writeIngestHelperFile(result)
542
HtmPixelization provides HTM indexing of points and regions.

Member Data Documentation

◆ _DefaultName

str lsst.meas.algorithms.convertReferenceCatalog.ConvertReferenceCatalogTask._DefaultName = 'ConvertReferenceCatalogTask'
staticprotected

Definition at line 498 of file convertReferenceCatalog.py.

◆ base_dir

lsst.meas.algorithms.convertReferenceCatalog.ConvertReferenceCatalogTask.base_dir

Definition at line 504 of file convertReferenceCatalog.py.

◆ canMultiprocess

bool lsst.meas.algorithms.convertReferenceCatalog.ConvertReferenceCatalogTask.canMultiprocess = False
static

Definition at line 496 of file convertReferenceCatalog.py.

◆ config

lsst.meas.algorithms.convertReferenceCatalog.ConvertReferenceCatalogTask.config

Definition at line 530 of file convertReferenceCatalog.py.

◆ ConfigClass

lsst.meas.algorithms.convertReferenceCatalog.ConvertReferenceCatalogTask.ConfigClass = ConvertReferenceCatalogConfig
static

Definition at line 497 of file convertReferenceCatalog.py.

◆ file_reader

lsst.meas.algorithms.convertReferenceCatalog.ConvertReferenceCatalogTask.file_reader

Definition at line 531 of file convertReferenceCatalog.py.

◆ indexer

lsst.meas.algorithms.convertReferenceCatalog.ConvertReferenceCatalogTask.indexer

Definition at line 507 of file convertReferenceCatalog.py.

◆ ingest_table_file

lsst.meas.algorithms.convertReferenceCatalog.ConvertReferenceCatalogTask.ingest_table_file

Definition at line 506 of file convertReferenceCatalog.py.

◆ log

lsst.meas.algorithms.convertReferenceCatalog.ConvertReferenceCatalogTask.log

Definition at line 537 of file convertReferenceCatalog.py.

◆ output_dir

lsst.meas.algorithms.convertReferenceCatalog.ConvertReferenceCatalogTask.output_dir

Definition at line 505 of file convertReferenceCatalog.py.


The documentation for this class was generated from the following file: