Ejemplo n.º 1
0
class PawprintXTile(db.Model):

    __tablename__ = "PawprintXTile"
    __table_args__ = (
        db.UniqueConstraint('pawprint_id', 'tile_id',
                            name='_pawprint_tile_uc'),
    )

    statuses = db.Enum(
        "raw", "pending", "sync", name="pawprint_x_tile_statuses")

    id = db.Column(db.Integer, db.Sequence('pxt_id_seq'), primary_key=True)

    pawprint_id = db.Column(
        db.Integer, db.ForeignKey('Pawprint.id'), nullable=False)
    pawprint = db.relationship(
        "Pawprint", backref=db.backref("pxts"))

    tile_id = db.Column(db.Integer, db.ForeignKey('Tile.id'), nullable=False)
    tile = db.relationship("Tile", backref=db.backref("pxts"))

    status = db.Column(statuses, default="raw")

    def __repr__(self):
        string = "<PXT '{}: {}'>"
        return string.format(self.tile.name, self.pawprint.name)
Ejemplo n.º 2
0
class ClassificationXMasterSource(db.Model):

    __tablename__ = "ClassificationXMasterSource"
    __table_args__ = (
        db.UniqueConstraint('classification_id', 'master_src_id',
                            name='_classification_master_src_uc'),
    )

    id = db.Column(db.Integer, db.Sequence('cxms_id_seq'), primary_key=True)

    classification_id = db.Column(
        db.Integer, db.ForeignKey('Classification.id'), nullable=False)
    classification = db.relationship(
        "Classification", backref=db.backref("cxms"))

    master_src_id = db.Column(
        db.Integer, db.ForeignKey('MasterSource.id'), nullable=False)
    master_src = db.relationship(
        "MasterSource", backref=db.backref("cxms"))

    extra_data = db.Column(db.JSONType)

    def __repr__(self):
        string = "<CXMS '{}: {}'>"
        return string.format(self.classification.name, str(self.master_src))
Ejemplo n.º 3
0
class Match(db.Model):

    __tablename__ = "Match"
    __table_args__ = (
        db.UniqueConstraint('pawprint_src_id', 'master_src_id', 'tile_id',
                            name='_match_uc'),
    )

    id = db.Column(db.Integer, db.Sequence('match_id_seq'), primary_key=True)

    band = db.Column(
        db.Enum("k", "j", "h", name="match, bands"), index=True)

    tile_id = db.Column(
        db.Integer, db.ForeignKey('Tile.id'), index=True, nullable=False)
    tile = db.relationship(
        "Tile", backref=db.backref("matches"), lazy="joined")
    master_src_id = db.Column(
        db.Integer, db.ForeignKey('MasterSource.id'),
        index=True, nullable=False)
    master_src = db.relationship(
        "MasterSource", backref=db.backref("matches"), lazy="joined")
    master_src_order = db.Column(db.Integer)
    master_src_ra = db.Column(db.Float)
    master_src_dec = db.Column(db.Float)

    pawprint_id = db.Column(
        db.Integer, db.ForeignKey('Pawprint.id'), index=True, nullable=False)
    pawprint = db.relationship(
        "Pawprint", backref=db.backref("matches"), lazy="joined")
    pawprint_src_id = db.Column(
        db.Integer, db.ForeignKey('PawprintSource.id'),
        index=True, nullable=False)
    pawprint_src = db.relationship(
        "PawprintSource", backref=db.backref("matches"), lazy="joined")
    pawprint_src_order = db.Column(db.Integer)
    pawprint_src_ra = db.Column(db.Float)
    pawprint_src_dec = db.Column(db.Float)
    pawprint_src_mag = db.Column(db.Float)
    pawprint_src_mag_err = db.Column(db.Float)
    pawprint_src_hjd = db.Column(db.Float, nullable=True)
    pawprint_src_chip_nro = db.Column(db.Float)
    pawprint_src_stel_cls = db.Column(db.Float)
    pawprint_src_elip = db.Column(db.Float)
    pawprint_src_pos_ang = db.Column(db.Float)

    tile_id = db.Column(
        db.Integer, db.ForeignKey('Tile.id'), index=True, nullable=False)
    tile = db.relationship(
        "Tile", backref=db.backref("matches"), lazy="joined")

    def __repr__(self):
        return u"<Match '{}->{}'>".format(self.master_src, self.pawprint_src)
Ejemplo n.º 4
0
class PawprintStackXTile(db.Model):
    """Relation between a pawprint-stack and a tile. Because the virca, overlap
    some pawprints can be in two tiles

    """

    __tablename__ = "PawprintStackXTile"
    __table_args__ = (db.UniqueConstraint('pawprint_stack_id',
                                          'tile_id',
                                          name='_pawprint_tile_uc'), )

    statuses = db.Enum("raw", "ready-to-match", "matched", name="pxt_statuses")

    id = db.Column(db.Integer, db.Sequence('pxt_id_seq'), primary_key=True)

    pawprint_stack_id = db.Column(db.Integer,
                                  db.ForeignKey('PawprintStack.id'),
                                  nullable=False)
    pawprint_stack = db.relationship("PawprintStack",
                                     backref=db.backref("pxts"))

    tile_id = db.Column(db.Integer, db.ForeignKey('Tile.id'), nullable=False)
    tile = db.relationship("Tile", backref=db.backref("pxts"))

    _npy_filename = db.Column("npy_filename", db.Text)

    matched_number = db.Column(db.Integer, nullable=True)

    status = db.Column(statuses, default="raw")

    def __repr__(self):
        string = "<PXT '{}: {}'>"
        return string.format(self.tile.name, self.pawprint_stack.name)

    @property
    def npy_file_path(self):
        if self._npy_filename:
            return os.path.join(settings.MATCHS_DIR, self.tile.name,
                                self._npy_filename)

    def store_npy_file(self, arr):
        self._npy_filename = "{}_{}.npy".format(self.tile.name,
                                                self.pawprint_stack.name)
        file_dir = os.path.dirname(self.npy_file_path)
        if not os.path.isdir(file_dir):
            os.makedirs(file_dir)
        np.save(self.npy_file_path, arr)

    def load_npy_file(self):
        return np.load(self.npy_file_path)
Ejemplo n.º 5
0
class MasterSource(db.Model):

    __tablename__ = "MasterSource"
    __table_args__ = (
        db.UniqueConstraint('tile_id', 'order', name='_tile_order_uc'),
    )

    id = db.Column(
        db.Integer, db.Sequence('master_src_id_seq'), primary_key=True)

    tile_id = db.Column(db.Integer, db.ForeignKey('Tile.id'), nullable=False)
    tile = db.relationship("Tile", backref=db.backref("sources"))

    order = db.Column(db.Integer, nullable=False)

    ra_h = db.Column(db.Float, nullable=False)
    dec_h = db.Column(db.Float, nullable=False)

    ra_j = db.Column(db.Float, nullable=False)
    dec_j = db.Column(db.Float, nullable=False)

    ra_k = db.Column(db.Float, nullable=False)
    dec_k = db.Column(db.Float, nullable=False)

    x = db.Column(db.Float, nullable=True)
    y = db.Column(db.Float, nullable=True)
    z = db.Column(db.Float, nullable=True)

    type = db.Column(db.String(255))

    @classmethod
    def conesearch(cls, ra, dec, radius):
        x, y, z = SkyCoord(
            ra=ra, dec=dec, unit="deg", frame="icrs"
        ).represent_as("cartesian").xyz.value
        cos_r = np.cos(radius)
        query = (cls.x * x + cls.y * y + cls.z * z) >= cos_r
        return query

    def __repr__(self):
        return u"<MasterSource '{}[{}]'>".format(self.tile, self.order)
Ejemplo n.º 6
0
class PawprintSource(db.Model):

    __tablename__ = "PawprintSource"
    __table_args__ = (
        db.UniqueConstraint('pawprint_id', 'order', name='_pawprint_order_uc'),
    )

    id = db.Column(
        db.Integer, db.Sequence('pawprint_src_id_seq'), primary_key=True)

    pawprint_id = db.Column(
        db.Integer, db.ForeignKey('Pawprint.id'), nullable=False)
    pawprint = db.relationship(
        "Pawprint", backref=db.backref("pxt"))

    order = db.Column(db.Integer, nullable=False)

    ra_deg = db.Column(db.Float)
    ra_h = db.Column(db.Float)
    ra_m = db.Column(db.Float)
    ra_s = db.Column(db.Float)
    dec_deg = db.Column(db.Float)
    dec_d = db.Column(db.Float)
    dec_m = db.Column(db.Float)
    dec_s = db.Column(db.Float)
    pwp_x = db.Column(db.Float)
    pwp_y = db.Column(db.Float)
    mag = db.Column(db.Float)
    mag_err = db.Column(db.Float)
    chip_nro = db.Column(db.Float)
    stel_cls = db.Column(db.Float)
    elip = db.Column(db.Float)
    pos_ang = db.Column(db.Float)

    hjd = db.Column(db.Float, nullable=True)

    def __repr__(self):
        return u"<PawprintSource '{}[{}]'>".format(self.pawprint, self.order)