Exemplo n.º 1
0
class GelBand(db.Model, MGIModel):
    __tablename__ = "gxd_gelband"
    _gelband_key = db.Column(db.Integer, primary_key=True)
    _gelrow_key = db.Column(db.Integer, mgi_fk("gxd_gelrow._gelrow_key"))
    _gellane_key = db.Column(db.Integer, mgi_fk("gxd_gellane._gellane_key"))
    _strength_key = db.Column(db.Integer)
    bandnote = db.Column(db.String())

    strength = db.column_property(
        db.select([GxdStrength.strength
                   ]).where(GxdStrength._strength_key == _strength_key))

    gelrow_sequencenum = db.column_property(
        db.select([GelRow.sequencenum
                   ]).where(GelRow._gelrow_key == _gelrow_key))

    gelrow = db.relationship("GelRow", uselist=False)
Exemplo n.º 2
0
class GelRow(db.Model, MGIModel):
    __tablename__ = "gxd_gelrow"
    _gelrow_key = db.Column(db.Integer, primary_key=True)
    _assay_key = db.Column(db.Integer, mgi_fk("gxd_assay._assay_key"))
    _gelunits_key = db.Column(db.Integer)
    sequencenum = db.Column(db.Integer)
    rownote = db.Column(db.String())
    size = db.Column(db.Float())

    gelunits = db.column_property(
        db.select([GelUnits.units
                   ]).where(GelUnits._gelunits_key == _gelunits_key))

    @property
    def size_and_units(self):
        return "%s %s" % (self.size, self.gelunits)
Exemplo n.º 3
0
class Sequence(db.Model, MGIModel):
    __tablename__ = "seq_sequence"
    _sequence_key = db.Column(db.Integer, primary_key=True)
    _sequencetype_key = db.Column(db.Integer)
    _sequencequality_key = db.Column(db.Integer)
    _sequencestatus_key = db.Column(db.Integer)
    _sequenceprovider_key = db.Column(db.Integer)
    _organism_key = db.Column(db.Integer, mgi_fk("mgi_organism._organism_key"))

    length = db.Column(db.String())
    description = db.Column(db.String())
    version = db.Column(db.String())
    division = db.Column(db.String())

    # constants
    _mgitype_key = 19

    # column definitions
    type = db.column_property(
        db.select([VocTerm.term
                   ]).where(VocTerm._term_key == _sequencetype_key))

    #relationships
    markers = db.relationship(
        "Marker",
        secondary=SeqMarkerCache.__table__,
        primaryjoin="Sequence._sequence_key==SeqMarkerCache._sequence_key",
        secondaryjoin="SeqMarkerCache._marker_key==Marker._marker_key",
        foreign_keys="[Sequence._sequence_key,Marker._marker_key]",
        backref="sequences",
        order_by="Marker.symbol")

    # sequence can have multiple IDs
    accession_objects = db.relationship(
        "Accession",
        primaryjoin="and_(Accession._object_key==Sequence._sequence_key,"
        "Accession.preferred==1,"
        "Accession._mgitype_key==%s)" % (_mgitype_key),
        foreign_keys="[Accession._object_key]",
        order_by="Accession.accid")

    source = db.relationship("ProbeSource",
                             secondary=SeqSourceAssoc.__table__,
                             uselist=False)
Exemplo n.º 4
0
class Note(db.Model, MGIModel):
    __tablename__ = "mgi_note"
    _note_key = db.Column(db.Integer, primary_key=True)
    _object_key = db.Column(db.Integer)
    _mgitype_key = db.Column(db.Integer)
    _notetype_key = db.Column(db.Integer)

    notetype = db.column_property(
        db.select([NoteType.notetype
                   ]).where(NoteType._notetype_key == _notetype_key))

    chunks = db.relationship("NoteChunk", order_by="NoteChunk.sequencenum")

    @property
    def text(self):
        return ''.join([c.note for c in self.chunks])

    def __repr__(self):
        return self.text
Exemplo n.º 5
0
class SeqMarkerCache(db.Model, MGIModel):
    __tablename__ = "seq_marker_cache"

    _cache_key = db.Column(db.Integer, primary_key=True)
    _sequence_key = db.Column(db.Integer, mgi_fk("seq_sequence._sequence_key"))
    _marker_key = db.Column(db.Integer, mgi_fk("mrk_marker._marker_key"))
    _organism_key = db.Column(db.Integer)
    _logicaldb_key = db.Column(db.Integer,
                               mgi_fk("acc_logicaldb._logicaldb_key"))
    accid = db.Column(db.String())
    rawbiotype = db.Column(db.String())
    _sequenceprovider_key = db.Column(db.Integer)
    _biotypeconflict_key = db.Column(db.Integer, mgi_fk("voc_term._term_key"))
    annotation_date = db.Column(db.DateTime)

    # constants
    # the biotype conflict term
    _biotypeconflict_yes_key = 5420767

    # column properties
    sequenceprovider = db.column_property(
        db.select([VocTerm.term
                   ]).where(VocTerm._term_key == _sequenceprovider_key))

    marker = db.relationship("Marker")

    logicaldb_obj = db.relationship("LogicalDb")

    @property
    def sequence_url(self):
        """
        This requires loading logicaldb_obj
            and logicaldb_obj.actualdb
        """
        url = ""
        if self.logicaldb_obj and \
            self.logicaldb_obj.actualdb:

            url = self.logicaldb_obj.actualdb.url.replace("@@@@", self.accid)

        return url