コード例 #1
0
ファイル: clones.py プロジェクト: arosenfeld/immunedb
def generate_consensus(session, clone_ids):
    """Generates consensus CDR3s for clones.

    :param Session session: The database session
    :param list clone_ids: The list of clone IDs to assign to groups

    """

    if len(clone_ids) == 0:
        return
    for clone in funcs.periodic_commit(
            session,
            session.query(Clone).filter(Clone.id.in_(clone_ids)),
            interval=1000):
        seqs = session.query(
            Sequence
        ).join(SequenceCollapse).filter(
            Sequence.clone_id == clone.id,
            SequenceCollapse.copy_number_in_subject > 0
        ).all()
        clone.cdr3_nt = funcs.consensus([s.cdr3_nt for s in seqs])
        clone.cdr3_aa = lookups.aas_from_nts(clone.cdr3_nt)

        clone.germline = generate_germline(session, seqs, clone)

    session.commit()
コード例 #2
0
def generate_consensus(session, clone_ids):
    """Generates consensus CDR3s for clones.

    :param Session session: The database session
    :param list clone_ids: The list of clone IDs to assign to groups

    """

    if not clone_ids:
        return
    for clone in funcs.periodic_commit(session,
                                       session.query(Clone).filter(
                                           Clone.id.in_(clone_ids)),
                                       interval=1000):
        seqs = session.query(Sequence).join(SequenceCollapse).filter(
            Sequence.clone_id == clone.id,
            SequenceCollapse.copy_number_in_subject > 0).all()
        clone.cdr3_nt = funcs.consensus([s.cdr3_nt for s in seqs])
        clone.cdr3_aa = lookups.aas_from_nts(clone.cdr3_nt)

        clone.germline = generate_germline(session, seqs, clone)

        clone.overall_total_cnt = sum([s.copy_number for s in seqs])

        clone.functional = (clone.cdr3_num_nts % 3 == 0
                            and '*' not in clone.cdr3_aa
                            and not lookups.has_stop(clone.germline))

    session.commit()
コード例 #3
0
 def get_ties(self, genes):
     length = len(self[genes[0]])
     key = tuple(sorted(genes))
     if key in self.ties:
         return self.ties[key]
     step = 1 if self.gene == 'v' else -1
     seqs = [self[v].ljust(length, 'N')[::step] for v in genes]
     cons = funcs.consensus(seqs)[::step]
     return self.ties.setdefault(key, cons)