37977956905d588f73ee5f635fae2f609cb40842
angie
  Wed Aug 9 12:52:00 2017 -0700
Assorted little util functions in support of adding HGVS output to hgVai -- refs #19968

diff --git src/inc/dnaseq.h src/inc/dnaseq.h
index 164b1e9..01ecb01 100644
--- src/inc/dnaseq.h
+++ src/inc/dnaseq.h
@@ -29,39 +29,46 @@
 
 struct dnaSeq *newDnaSeq(DNA *dna, int size, char *name);
 /* Create a new DNA seq. */
 
 struct dnaSeq *cloneDnaSeq(struct dnaSeq *seq);
 /* Duplicate dna sequence in RAM. */
 
 void freeDnaSeq(struct dnaSeq **pSeq);
 /* Free up DNA seq.  */
 #define dnaSeqFree freeDnaSeq
 
 void freeDnaSeqList(struct dnaSeq **pSeqList);
 /* Free up list of DNA sequences. */
 #define dnaSeqFreeList freeDnaSeqList
 
+char *dnaSeqCannibalize(struct dnaSeq **pSeq);
+/* Return the already-allocated dna string and free the dnaSeq container. */
+
 aaSeq *translateSeqN(struct dnaSeq *inSeq, unsigned offset, unsigned size, boolean stop);
 /* Return a translated sequence.  Offset is position of first base to
  * translate. If size is 0 then use length of inSeq. */
 
 aaSeq *translateSeq(struct dnaSeq *inSeq, unsigned offset, boolean stop);
 /* Return a translated sequence.  Offset is position of first base to
  * translate. If stop is TRUE then stop at first stop codon.  (Otherwise 
  * represent stop codons as 'Z'). */
 
+void aaSeqZToX(aaSeq *aa);
+/* If seq has a 'Z' for stop codon, possibly followed by other bases, change the 'Z' to an X
+ * (compatible with dnautil's aminoAcidTable) and truncate there. */
+
 boolean seqIsDna(bioSeq *seq);
 /* Make educated guess whether sequence is DNA or protein. */
 
 boolean seqIsLower(bioSeq *seq);
 /* Return TRUE if sequence is all lower case. */
 
 bioSeq *whichSeqIn(bioSeq **seqs, int seqCount, char *letters);
 /* Figure out which if any sequence letters is in. */
 
 Bits *maskFromUpperCaseSeq(bioSeq *seq);
 /* Allocate a mask for sequence and fill it in based on
  * sequence case. */
 
 struct hash *dnaSeqHash(struct dnaSeq *seqList);
 /* Return hash of sequences keyed by name. */