Beispiel #1
0
class QCCrossMatch(Entity):
    """
	2009-9-22
		add unique constraint ('strainid', 'target_id', 'qc_method_id')
	2008-08-26
	"""
    strain = ManyToOne("Strain",
                       colname='strainid',
                       ondelete='CASCADE',
                       onupdate='CASCADE')
    target_id = Field(Integer)
    qc_method = ManyToOne("%s.QCMethod" % __name__,
                          colname='qc_method_id',
                          ondelete='CASCADE',
                          onupdate='CASCADE')
    mismatch_rate = Field(Float)
    no_of_mismatches = Field(Integer)
    no_of_non_NA_pairs = Field(Integer)
    readme = ManyToOne("%s.README" % __name__,
                       colname='readme_id',
                       ondelete='CASCADE',
                       onupdate='CASCADE')
    using_options(tablename='qc_cross_match')
    using_table_options(mysql_engine='InnoDB')
    using_table_options(
        UniqueConstraint('strainid', 'target_id', 'qc_method_id'))
Beispiel #2
0
class DataVote(Entity):
    using_options(tablename='vote')
    user = ManyToOne('DataUser')
    card = ManyToOne('DataCard')

    @classmethod
    def get_vote(cls, card, user):
        '''Return Vote instance which match with user and card

        In:
            - ``card`` -- DataCard instance
            - ``user`` -- DataUser instance
        Return:
            - DataVote instance
        '''
        return cls.get_by(user=user, card=card)

    @classmethod
    def has_voted(cls, card, user):
        '''Return if a user has voted for a given card

        In:
            - ``card`` -- DataCard instance
            - ``user`` -- DataUser instance
        Return:
            - True if a vote is found, False otherwise
        '''
        return cls.get_vote(card, user) is not None

    @classmethod
    def count_votes(cls, card):
        q = cls.query
        q = q.filter(cls.card == card)
        return q.count()
Beispiel #3
0
class DataBoardManager(Entity):
    using_options(tablename='user_managed_boards__board_managers')
    board = ManyToOne('DataBoard', primary_key=True, ondelete='CASCADE')
    member = ManyToOne('DataUser',
                       primary_key=True,
                       ondelete='CASCADE',
                       colname=['user_username', 'user_source'])
Beispiel #4
0
class HaploGroupPairwiseGeneticDist(Entity):
    """
	2009-4-16
		genetic distance between each haplogroup pair
	"""
    haplo_group1 = ManyToOne('HaploGroup',
                             colname='haplo_group_id1',
                             ondelete='CASCADE',
                             onupdate='CASCADE')
    haplo_group2 = ManyToOne('HaploGroup',
                             colname='haplo_group_id2',
                             ondelete='CASCADE',
                             onupdate='CASCADE')
    mismatch_rate = Field(Float)
    no_of_mismatches = Field(Integer)
    no_of_non_NA_pairs = Field(Integer)
    created_by = Field(String(200))
    updated_by = Field(String(200))
    date_created = Field(DateTime, default=datetime.now)
    date_updated = Field(DateTime)
    using_options(tablename='haplo_group_pairwise_genetic_dist',
                  metadata=__metadata__,
                  session=__session__)
    using_table_options(mysql_engine='InnoDB')
    using_table_options(UniqueConstraint('haplo_group_id1', 'haplo_group_id2'))
Beispiel #5
0
class SNPsABAlleleMapping(Entity):
    snp = ManyToOne('SNPs',
                    colname='snps_id',
                    ondelete='CASCADE',
                    onupdate='CASCADE')
    allele_A_nt = Field(String(2))
    allele_B_nt = Field(String(2))
    tg_snps_name = Field(String(200))
    NA_rate = Field(Float)
    no_of_NAs = Field(Integer)
    no_of_totals = Field(Integer)
    relative_NA_rate = Field(Float)
    relative_no_of_NAs = Field(Integer)
    relative_no_of_totals = Field(Integer)
    mismatch_rate = Field(Float)
    no_of_mismatches = Field(Integer)
    no_of_non_NA_pairs = Field(Integer)
    readme = ManyToOne("README",
                       colname='readme_id',
                       ondelete='CASCADE',
                       onupdate='CASCADE')
    created_by = Field(String(128))
    updated_by = Field(String(128))
    date_created = Field(DateTime, default=datetime.now)
    date_updated = Field(DateTime)
    using_options(tablename='snps_ab_allele_mapping',
                  metadata=__metadata__,
                  session=__session__)
    using_table_options(mysql_engine='InnoDB')
Beispiel #6
0
class DataBoardMember(Entity):
    using_options(tablename='user_boards__board_members')
    board = ManyToOne('DataBoard', primary_key=True, ondelete='CASCADE')
    member = ManyToOne('DataUser',
                       primary_key=True,
                       ondelete='CASCADE',
                       colname=['user_username', 'user_source'])
    notify = Field(Integer, default=lambda: 1)
Beispiel #7
0
class DataComment(Entity):
    """Comment mapper
    """
    using_options(tablename='comment')
    comment = Field(UnicodeText, default=u'')
    creation_date = Field(DateTime)
    card = ManyToOne('DataCard')
    author = ManyToOne('DataUser')
Beispiel #8
0
class DataAsset(Entity):

    using_options(tablename='asset')
    filename = Field(Unicode(255), primary_key=True)
    creation_date = Field(DateTime)
    author = ManyToOne('DataUser')
    card = ManyToOne('DataCard')
    cover = ManyToOne('DataCard')

    @classmethod
    def get_all(cls, card):
        return cls.query.filter_by(card=card).all()

    @classmethod
    def add(cls, filename, card, author):
        return cls(filename=filename,
                   card=card,
                   author=author,
                   creation_date=datetime.datetime.utcnow())

    @classmethod
    def remove(cls, card, filename):
        file = cls.get_by_filename(filename)
        file.delete()

    @classmethod
    def remove_all(cls, card):
        q = cls.query
        q = q.filter_by(card=card)
        q.delete()

    @classmethod
    def has_cover(cls, card):
        q = cls.query
        q = q.filter_by(cover=card)
        return q.count() == 1

    @classmethod
    def get_cover(cls, card):
        q = cls.query
        q = q.filter_by(cover=card)
        return q.first()

    @classmethod
    def set_cover(cls, card, asset):
        cls.remove_cover(card)
        asset.cover = card

    @classmethod
    def remove_cover(cls, card):
        asset = cls.get_cover(card)
        if asset is not None:
            asset.cover = None

    @classmethod
    def get_by_filename(cls, filename):
        return cls.get(filename)
Beispiel #9
0
class DataChecklist(Entity):
    using_options(tablename='checklists')

    title = Field(Unicode(255))
    items = OneToMany('DataChecklistItem', order_by='index', inverse='checklist',
                      collection_class=ordering_list('index'))
    card = ManyToOne('DataCard')
    author = ManyToOne('DataUser')
    index = Field(Integer)

    @classmethod
    def get_by_card(cls, card):
        q = cls.query
        q = q.filter_by(card=card)
        q = q.order_by(cls.index)
        return q.all()

    def update(self, other):
        self.title = other.title
        self.index = other.index
        for item in other.items:
            self.items.append(DataChecklistItem(title=item.title,
                                                index=item.index,
                                                done=False))
        database.session.flush()

    def __unicode__(self):
        titles = [item.title for item in self.items if item.title]
        if self.title:
            titles.insert(0, self.title)
        return u'\n'.join(titles)

    def to_indexable(self):
        return unicode(self)

    def add_item_from_str(self, text):
        item = DataChecklistItem.new_from_str(text)
        return self.add_item(item)

    def add_item(self, item):
        self.items.append(item)
        return item

    def insert_item(self, index, item):
        self.items.insert(index, item)

    def remove_item(self, item):
        self.items.remove(item)

    def delete_item(self, item):
        self.remove_item(item)
        item.delete()

    def purge(self):
        for item in self.items:
            item.delete()
Beispiel #10
0
class DataHistory(Entity):
    using_options(tablename='history', order_by='-when')

    when = Field(DateTime)
    action = Field(Unicode(255))
    data = Field(JSONType)

    board = ManyToOne('DataBoard', ondelete='cascade')
    card = ManyToOne('DataCard', ondelete='cascade')
    user = ManyToOne('DataUser', ondelete='cascade')

    def to_string(self):
        data = self.data.copy()
        data['author'] = self.user.fullname or self.user.username
        return render_event(self.action, data)

    @classmethod
    def add_history(cls, board, card, user, action, data):
        data.update(action=action)
        when = datetime.utcnow()
        data = cls(when=when,
                   action=action,
                   board=board,
                   card=card,
                   user=user,
                   data=data)
        database.session.flush()

    @classmethod
    def get_events(cls, board, hours=None):
        '''board to None means "everything".'''
        since = datetime.utcnow() - timedelta(hours=hours)
        q = cls.query
        if board:
            q = q.filter_by(board=board)
        q = q.filter(cls.when >= since)
        q = q.order_by(cls.board_id, cls.action, cls.when)
        return q.all()

    @classmethod
    def get_history(cls, board, cardid=None, username=None):
        q = cls.query
        q = q.filter_by(board=board)
        if cardid:
            q = q.filter(cls.card.has(id=cardid))
        if username:
            q = q.filter(cls.user.has(username=username))
        return q

    @classmethod
    def get_last_activity(cls, board):
        q = database.session.query(cls.when)
        q = q.filter(cls.board == board)
        q = q.order_by(cls.when.desc())
        q = q.limit(1)
        return q.scalar()
Beispiel #11
0
class DataHistory(Entity):
    using_options(tablename='history', order_by='-when')

    when = Field(DateTime)
    action = Field(Unicode(255))
    data = Field(JSONType)

    board = ManyToOne('DataBoard', ondelete='cascade')
    card = ManyToOne('DataCard', ondelete='cascade')
    user = ManyToOne('DataUser', ondelete='cascade')
class nmap_script(Entity):
    script_id = Field(String)
    output = Field(Unicode)
    port = ManyToOne('nmap_port')
    host = ManyToOne('nmap_host')

    def __init__(self, script_id, output, portId, hostId):
        self.script_id = script_id
        self.output = unicode(output)
        self.port = portId
        self.host = hostId
Beispiel #13
0
class DataCardMembership(Entity):
    using_options(tablename='membership_cards__card')
    membership = ManyToOne('DataMembership', ondelete='cascade', required=True)
    card = ManyToOne('DataCard', ondelete='cascade', required=True)
    using_table_options(
        sa.UniqueConstraint('membership_id',
                            'card_id',
                            name='card_membership_ix'))

    @classmethod
    def purge(cls, card):
        for member in cls.query.filter_by(card=card):
            member.delete()
Beispiel #14
0
class Sequence(Entity):
    accession_obj = ManyToOne('Accession', colname='accession')
    alignment_obj = ManyToOne('Alignment', colname='alignment')
    start = Field(Integer)
    bases = Field(Text)
    quality = Field(Text)
    _quality = Field(Text)
    created = Field(DateTime, default=datetime.now)
    modified = Field(DateTime)
    using_options(tablename='sequence',
                  metadata=__metadata__,
                  session=__session__)
    using_table_options(mysql_engine='InnoDB')
Beispiel #15
0
class SNPs2SNPset(Entity):
    snp = ManyToOne('SNPs',
                    colname='snps_id',
                    ondelete='CASCADE',
                    onupdate='CASCADE')
    snpset = ManyToOne('SNPset',
                       colname='snpset_id',
                       ondelete='CASCADE',
                       onupdate='CASCADE')
    using_options(tablename='snps2snpset',
                  metadata=__metadata__,
                  session=__session__)
    using_table_options(mysql_engine='InnoDB')
Beispiel #16
0
class Accession(Entity):
    population_obj = ManyToOne('Population', colname='population')
    region_obj = ManyToOne('Region', colname='region')
    description = Field(Text)
    name = Field(String(20))
    origin = Field(String(50))
    created = Field(DateTime, default=datetime.now)
    modified = Field(DateTime)
    number = Field(String(10))
    using_options(tablename='accession',
                  metadata=__metadata__,
                  session=__session__)
    using_table_options(mysql_engine='InnoDB')
class nmap_port(Entity):
    port_id = Field(String)
    protocol = Field(String)
    state = Field(String)
    host = ManyToOne('nmap_host')
    service = ManyToOne('nmap_service')
    script = ManyToMany('nmap_script')

    def __init__(self, port_id, protocol, state, host, service=''):
        self.port_id = port_id
        self.protocol = protocol
        self.state = state
        self.host = host
        self.service = service
Beispiel #18
0
class BatchEcotype(Entity):
    batch = ManyToOne('Batch',
                      colname='batchid',
                      ondelete='CASCADE',
                      onupdate='CASCADE')
    ecotype = ManyToOne('Ecotype',
                        colname='ecotypeid',
                        ondelete='CASCADE',
                        onupdate='CASCADE')
    lineorder = Field(Integer, nullable=False)
    using_options(tablename='batch_ecotype',
                  metadata=__metadata__,
                  session=__session__)
    using_table_options(mysql_engine='InnoDB')
Beispiel #19
0
class Constraint(Entity):
    using_options(tablename='constraints')

    caption = Field(Text,
                    default='Constraint')  #Constraint name (specified by PI)
    type = Field(Text)  #Module providing constraint logic
    min = Field(Float, default=0)  #Minimum value passed to constraint logic
    max = Field(Float, default=0)  #Maximum value passed to constraint logic

    exposure = ManyToOne('Exposure', inverse='constraints')
    observation = ManyToOne('Observation', inverse='constraints')
    program = ManyToOne('Program', inverse='constraints')

    def checkMe(self):
        return True
Beispiel #20
0
class Cast(Entity):
    using_options(tablename='cast')
    movie = ManyToOne('Movie')
    actor = ManyToOne('Person', required=True)
    role = Field(Unicode(60))

    class Admin(EntityAdmin):
        verbose_name = 'Actor'
        list_display = ['actor', 'role']
        form_display = ['actor', 'role']

    def __unicode__(self):
        if self.actor:
            return self.actor.name
        return ''
Beispiel #21
0
class Station(Entity):
    name = Field(String(256))
    url = Field(String(256))

    bitrate = ManyToOne('Bitrate')
    stream = ManyToOne('Stream')

    genres = ManyToMany('Genre')

    def __init__(self, **kwars):
        for key, value in kwars.items():
            setattr(self, key, value)

    def __repr__(self):
        return '<Station %s>' % (self.name)
Beispiel #22
0
class Lei(Entity):
    using_options(tablename='lei_decisao')
    esfera = Field(Unicode(10))
    lei = Field(Unicode(32))
    ano = Field(Integer)
    decisao = ManyToOne('Decisao')
    artigos = OneToMany('Artigo')
Beispiel #23
0
class DataChecklistItem(Entity):
    using_options(tablename='checklist_items')

    index = Field(Integer)
    title = Field(Unicode(255))
    done = Field(Boolean)
    checklist = ManyToOne('DataChecklist')
class note(Entity):
    host = ManyToOne('nmap_host')
    text = Field(Unicode)

    def __init__(self, hostId, text):
        self.text = unicode(text)
        self.host = hostId
Beispiel #25
0
class DataCard(Entity):
    '''Card mapper'''

    using_options(tablename='card')
    title = Field(UnicodeText)
    index = Field(Integer)
    creation_date = Field(DateTime, default=datetime.datetime.utcnow)
    column = ManyToOne('DataColumn')

    # feature data to move to card extensions
    members = ManyToMany('DataUser')

    def update(self, other):
        self.title = other.title
        self.index = other.index
        session.flush()

    # Methods for data belonging to card extensions

    def remove_member(self, datauser):
        if datauser in self.members:
            self.members.remove(datauser)

    @property
    def archived(self):
        return self.column.archive
Beispiel #26
0
class DataLabel(Entity):
    """Label mapper
    """
    using_options(tablename='label')
    title = Field(Unicode(255))
    color = Field(Unicode(255))
    board = ManyToOne('DataBoard')
    cards = ManyToMany('DataCard', tablename='label_cards__card_labels')
    index = Field(Integer)

    def copy(self, parent):
        new_data = DataLabel(title=self.title,
                             color=self.color,
                             index=self.index,
                             board=parent)
        session.flush()
        return new_data

    @classmethod
    def get_by_card(cls, card):
        q = cls.query
        q = q.filter(cls.cards.contains(card))
        return q.all()

    @classmethod
    def add_to_card(cls, card, id):
        label = cls.get(id)
        if not card in label.cards:
            label.cards.append(card)

    @classmethod
    def remove_from_card(cls, card, id):
        label = cls.get(id)
        if card in label.cards:
            label.cards.remove(card)
Beispiel #27
0
class DataLabel(Entity):
    """Label mapper
    """
    using_options(tablename='label')
    title = Field(Unicode(255))
    color = Field(Unicode(255))
    board = ManyToOne('DataBoard')
    cards = ManyToMany('DataCard', tablename='label_cards__card_labels')
    index = Field(Integer)

    def copy(self):
        new_data = DataLabel(title=self.title,
                             color=self.color,
                             index=self.index)
        return new_data

    def remove(self, card):
        self.cards.remove(card)

    def add(self, card):
        self.cards.append(card)

    @classmethod
    def get_by_card(cls, card):
        q = cls.query
        q = q.filter(cls.cards.contains(card))
        return q.order_by(cls.index)
Beispiel #28
0
class HaploGroup(Entity):
    """
	2009-3-30
		table to store the haplotype groups generated from Alex
	"""
    short_name = Field(String(40), unique=True)
    ref_ecotype = ManyToOne(
        "Ecotype",
        colname='ref_ecotypeid',
        ondelete='CASCADE',
        onupdate='CASCADE')  #the ecotype with the best reference genotype.
    latitude = Field(Float)
    longitude = Field(Float)
    max_snp_typing_error_rate = Field(Float)
    comment = Field(String(8192))
    ecotypes = ManyToMany("Ecotype",
                          tablename='haplo_group2ecotype',
                          ondelete='CASCADE',
                          onupdate='CASCADE')
    created_by = Field(String(200))
    updated_by = Field(String(200))
    date_created = Field(DateTime, default=datetime.now)
    date_updated = Field(DateTime)
    using_options(tablename='haplo_group',
                  metadata=__metadata__,
                  session=__session__)
    using_table_options(mysql_engine='InnoDB')
    using_table_options(UniqueConstraint('short_name', 'ref_ecotypeid'))
Beispiel #29
0
class ComiteNews(Entity):
    """Mapper for the `comite` news, sent by users"""
    using_options(tablename='comite_news')
    user = ManyToOne('User')
    creation_date = Field(DateTime, default=datetime.now)
    title = Field(String(500,convert_unicode=True))
    content = Field(Text(convert_unicode=True))
Beispiel #30
0
class DataComment(Entity):

    """Comment mapper
    """
    using_options(tablename='comment')
    comment = Field(UnicodeText, default=u'')
    creation_date = Field(DateTime)
    card = ManyToOne('DataCard')
    author = ManyToOne('DataUser')

    @classmethod
    def get_by_card(cls, card):
        q = cls.query
        q = q.filter_by(card=card)
        q = q.order_by(cls.creation_date.desc())
        return q.all()