コード例 #1
0
ファイル: get_primer_info.py プロジェクト: ptraverse/gsc
 def GetPTDPrimerInfo(self, primer_info): #{
   # [event_id, chimera.id, chimera.left, chimera.right, gene.id,
   #  gene.left, gene.right]
   # event_id
   event_id = primer_info.EventID()
   # contig_id
   contig = PrimerSeqCls(primer_info.ctg_id)
   # contig_left
   contig.left = min(primer_info.c2t_aligns[0].ctg_end,
     primer_info.c2t_aligns[1].ctg_start)
   # contig_right
   contig.right = max(primer_info.c2t_aligns[0].ctg_end,
     primer_info.c2t_aligns[1].ctg_start)
   # gene_id
   gene = PrimerSeqCls(primer_info.c2t_aligns[0].transcript)
   # gene.left
   gene.left = min(primer_info.c2t_aligns[0].transcript_end,
     primer_info.c2t_aligns[1].transcript_start)
   # gene.right
   gene.right = max(primer_info.c2t_aligns[0].transcript_end,
     primer_info.c2t_aligns[1].transcript_start)
   # dup_length
   dup_length = (gene.right - gene.left) + 1
   # construct inferred chimera sequence
   ctg_overlap = primer_info.C2TAlignOverlap()
   extra = ""
   if (0 > ctg_overlap): #{
     extra = self.contigs[primer_info.ctg_id][contig_left+1:contig_right]
   #} end if
   if ("-" == primer_info.c2t_aligns[0].strand): #{
     extra = ReverseComplement(extra)
   #} end if
   # chimera_id
   chimera = PrimerSeqCls("G%i_%s_%s" % (primer_info.group_id,
     primer_info.ctg_id, gene.id))
   chimera.seq = (self.transcripts[gene.id][:gene.right] + extra +
     self.transcripts[gene.id][gene.left-1:])
   if (chimera.id in self.transcripts and
       self.transcripts[chimera.id] != chimera.seq): #{
     raise PrimerDesignerError("conflicting chimeric PTD sequences: %s" %
       chimera.id)
   #} end if
   self.transcripts[chimera.id] = chimera.seq
   # chimera_left
   chimera.left = gene.left
   # chimera_right
   chimera.right = gene.right + len(extra) + dup_length
   DebugMsg(self, "Overlap: %i, Extra: \"%s\", WT_Length: %i, Dup_Length: "
     "%i, CT_Length: %i, Calc_Length: %i" % (ctg_overlap, extra,
     len(self.transcripts[gene.id]), dup_length, len(chimera.seq),
     len(self.transcripts[gene.id])+len(extra)+dup_length))
   return map(str, [event_id, chimera.id, chimera.left, chimera.right,
     gene.id, gene.left, gene.right])
コード例 #2
0
ファイル: get_primer_info.py プロジェクト: ptraverse/gsc
 def ConstructFusionSeq(self, primer_info, contig, ctg_overlap): #{
   # chimera_id
   chimera = PrimerSeqCls("G%i_%s_%s/%s" % (primer_info.group_id,
     primer_info.ctg_id, primer_info.c2t_aligns[0].transcript,
     primer_info.c2t_aligns[1].transcript))
   left_seq  = self.RefSeqFromAlign0(primer_info.c2t_aligns[0])
   right_seq = self.RefSeqFromAlign1(primer_info.c2t_aligns[1])
   extra = ""
   if (0 > ctg_overlap): #{
     extra = self.contigs[primer_info.ctg_id][contig.left:contig.right-1]
   else:
     right_seq = right_seq[ctg_overlap:]
   #} end if
   chimera.seq = (left_seq + extra + right_seq)
   # chimera_left
   chimera.left = min(len(left_seq), len(left_seq)+ctg_overlap)
   # chimera_right
   chimera.right = max(len(left_seq), len(left_seq)+ctg_overlap)
   DebugMsg(self, "Left: %s\nExtra: %s\nRight: %s\nOverlap: %i, "
     "WT_Length0: %i, WT_Length1: %i, Extra_len: %i, CT_Length: %i, "
     "Calc_Length: %i" % (left_seq, extra, right_seq, ctg_overlap,
     len(left_seq), len(right_seq)+max(0,ctg_overlap), len(extra),
     len(chimera.seq), len(left_seq)+len(right_seq)+len(extra)))
   return chimera