code: def generateXY(self, **kwargs):
          
          self.num_objects = 0
          xycols = self._readCatalog()
  
          if xycols is not None:
              # convert the catalog into attribute
              self.xypos = xycols[:3]
              # convert optional columns if they are present
              if self.numcols > 3:
                  self.xypos.append(np.asarray(xycols[3], dtype=int)) # source ID
              if self.numcols > 4:
                  self.sharp = xycols[4]
              if self.numcols > 5:
                  self.round1 = xycols[5]
              if self.numcols > 6:
                  self.round2 = xycols[6]
              self.num_objects = len(xycols[0])
  
          if self.numcols < 3: # account for flux column
              self.xypos.append(np.zeros(self.num_objects, dtype=float))
              self.flux_col = False
  
          if self.numcols < 4: # add source ID column
              self.xypos.append(np.arange(self.num_objects)+self.start_id)
  
          if self.use_sharp_round:
              for i in range(len(self.xypos), 7):
                  self.xypos.append(np.zeros(self.num_objects, dtype=float))
              self.sharp_col = False
  
          if self.pars['xyunits'] == 'degrees':
              self.radec = [x.copy() for x in self.xypos]
              if self.wcs is not None:
                  self.xypos[:2] = list(self.wcs.all_world2pix(np.array(self.xypos[:2]).T, self.origin).T)
docs: Method to interpret input catalog file as columns of positions and fluxes.