24 from astropy.io.votable.tree 
import Info
    25 from astropy.io.votable 
import from_table
    26 from astropy.table 
import Column
    33     """Select records from source catalog    37     record : `lsst.afw.detect.SourceRecord`    40         'all' to select all records. 'blended parents' to select records with    41         more than zero children. 'deblended children' to select records with    42         non-zero parents. 'isolated' to select records that are not blended,    43         meaning zero parents and zero children.    44         Values to check for sel    46     nChildren = record.get(
'deblend_nChild')
    47     parentId = record.getParent()
    48     if selection == 
'all':
    50     elif selection == 
'blended parents':
    51         return (nChildren > 0)
    52     elif selection == 
'deblended children':
    54     elif selection == 
'isolated':
    55         return ((parentId == 0) 
and (nChildren == 0))
    57         raise RuntimeError(
'invalid selection: {}'.
format(selection) +
    58                            '\nMust be one of "all", "blended parents", ' +
    59                            '"deblended children", "isolated"')
    63     """make a VOTable of SourceData table and footprints    67     catalog : `lsst.afw.table.SourceCatalog`    68             Source catalog from which to display footprints.    69     xy0 : tuple or list or None    70         Pixel origin to subtract off from the footprint coordinates.    71         If None, the value used is (0,0)    73         Column at which to insert the "family_id" and "category" columns    77     `astropy.io.votable.voTableFile`    78         VOTable object to upload to Firefly    84     _catalog.extend(catalog, deep=
True)
    85     sourceTable = _catalog.asAstropy()
    88     for colName 
in sourceTable.colnames:
    89         if sourceTable[colName].dtype.num == 9:
    90             sourceTable[colName].dtype = np.dtype(
'long')
    92     inputColumnNames = sourceTable.colnames
   103     for record 
in catalog:
   104         footprint = record.getFootprint()
   105         recordId = record.getId()
   106         spans = footprint.getSpans()
   107         scoords = [(s.getY()-y0, s.getX0()-x0, s.getX1()-x0) 
for s 
in spans]
   108         scoords = np.array(scoords).flatten()
   109         scoords = np.ma.MaskedArray(scoords, mask=np.zeros(len(scoords),
   111         fpbbox = footprint.getBBox()
   112         corners = [(c.getX()-x0, c.getY()-y0) 
for c 
in fpbbox.getCorners()]
   113         fpxll.append(corners[0][0])
   114         fpyll.append(corners[0][1])
   115         fpxur.append(corners[2][0])
   116         fpyur.append(corners[2][1])
   117         peaks = footprint.getPeaks()
   118         pcoords = [(p.getFx()-x0, p.getFy()-y0) 
for p 
in peaks]
   119         pcoords = np.array(pcoords).flatten()
   120         pcoords = np.ma.MaskedArray(pcoords, mask=np.zeros(len(pcoords),
   122         fpbbox = footprint.getBBox()
   123         parentId = record.getParent()
   124         nChild = record.get(
'deblend_nChild')
   126             familyList.append(recordId)
   129                 categoryList.append(
'blended parent')
   132                 categoryList.append(
'isolated')
   135             familyList.append(parentId)
   136             categoryList.append(
'deblended child')
   137         spanList.append(scoords)
   138         peakList.append(pcoords)
   140     sourceTable.add_column(Column(np.array(familyList)),
   143     sourceTable.add_column(Column(np.array(categoryList)),
   145                            index=insertColumn+1)
   146     sourceTable.add_column(Column(np.array(spanList)), name=
'spans')
   147     sourceTable.add_column(Column(np.array(peakList)), name=
'peaks')
   148     sourceTable.add_column(Column(np.array(fpxll)), name=
'footprint_corner1_x')
   149     sourceTable.add_column(Column(np.array(fpyll)), name=
'footprint_corner1_y')
   150     sourceTable.add_column(Column(np.array(fpxur)), name=
'footprint_corner2_x')
   151     sourceTable.add_column(Column(np.array(fpyur)), name=
'footprint_corner2_y')
   153     outputVO = from_table(sourceTable)
   154     outTable = outputVO.get_first_table()
   156     outTable.infos.append(Info(name=
'contains_lsst_footprints', value=
'true'))
   157     outTable.infos.append(Info(name=
'contains_lsst_measurements', value=
'true'))
   158     outTable.infos.append(Info(name=
'FootPrintColumnNames',
   159                                value=
'id;footprint_corner1_x;footprint_corner1_y;' +
   160                                'footprint_corner2_x;footprint_corner2_y;spans;peaks'))
   161     outTable.infos.append(Info(name=
'pixelsys', value=
'zero-based'))
   163     if ((
'slot_Centroid_x' in inputColumnNames) 
and   164             (
'slot_Centroid_y' in inputColumnNames) 
and   165             np.isfinite(outTable.array[
'slot_Centroid_x']).
any() 
and   166             np.isfinite(outTable.array[
'slot_Centroid_y']).
any()):
   167         coord_column_string = 
'slot_Centroid_x;slot_Centroid_y;ZERO_BASED'   168     elif ((
'coord_ra' in inputColumnNames) 
and   169             (
'coord_dec' in inputColumnNames) 
and   170             np.isfinite(outTable.array[
'coord_ra']).
any() 
and   171             np.isfinite(outTable.array[
'coord_dec']).
any()):
   172         coord_column_string = 
'coord_ra;coord_dec;EQ_J2000'   173     elif ((
'base_SdssCentroid_x' in inputColumnNames) 
and   174             (
'base_SdssCentroid_y' in inputColumnNames) 
and   175             np.isfinite(outTable.array[
'base_SdssCentroid_x']).
any() 
and   176             np.isfinite(outTable.array[
'base_SdssCentroid_y']).
any()):
   177         coord_column_string = 
'base_SdssCentroid_x;base_SdssCentroid_y;ZERO_BASED'   178     elif ((
'base_NaiveCentroid_x' in inputColumnNames) 
and   179             (
'base_NaiveCentroid_y' in inputColumnNames) 
and   180             np.isfinite(outTable.array[
'base_NaiveCentroid_x']).
any() 
and   181             np.isfinite(outTable.array[
'base_NaiveCentroid_y']).
any()):
   182         coord_column_string = 
'base_NaiveCentroid_x;base_NaiveCentroid_y;ZERO-BASED'   184         raise RuntimeError(
'No valid coordinate columns in catalog')
   185     outTable.infos.append(Info(name=
'CatalogCoordColumns',
   186                                value=coord_column_string))
   188     for f 
in outTable.fields:
   189         if f.datatype == 
'bit':
   190             f.datatype = 
'boolean'   192     outTable._config[
'version_1_3_or_later'] = 
True   193     outputVO.set_all_tables_format(
'binary2')
 
bool any(CoordinateExpr< N > const &expr) noexcept
Return true if any elements are true. 
def format(config, name=None, writeSourceLine=True, prefix="", verbose=False)