def transcript_based_entry(root, line, transcript, protein_fasta, chrom, pos, codon_change, sav, alt_aa, aa_pos, minPepLength, leading_aas, trailing_aas):
    (pep_id, pep_seq) = refparse.get_protein_fasta_seq(transcript, protein_fasta) # get AA sequence using transcript ID in VCF line
    aa_offset = (aa_pos - 1)
    start_pos, end_pos = 0, 0 
    if not pep_seq: 
        print "error finding transcript " + transcript + " in " + line
        return
        
    start_pos = max(aa_offset - leading_aas, 0) if leading_aas else 0
    end_pos = min(aa_offset + trailing_aas + 1, len(pep_seq)) if trailing_aas else len(pep_seq)
    alt_seq = pep_seq[start_pos:aa_offset] + alt_aa + pep_seq[aa_offset+1:end_pos]
    if len(alt_seq) < minPepLength: return

    fields = pep_id.split()
    fields.append("snv_location:%s:%s codon_change:%s sav:%s" % (chrom, pos, codon_change, sav))
    enter_seqvar(root, fields[0], 'pep:sav', fields[2], ' '.join(fields[5:]), '', '', fields[3][5:], fields[4][11:], alt_seq)
 def test_get_protein_fasta_seq(self):
     self.assertTrue(self.header, self.sequence == refparse.get_protein_fasta_seq("ENST00000398344", self.protein_fasta))