00001 /* dnaSeq - stuff to manage DNA sequences. 00002 * 00003 * This file is copyright 2002 Jim Kent, but license is hereby 00004 * granted for all use - public, private or commercial. */ 00005 00006 #ifndef DNASEQ_H 00007 #define DNASEQ_H 00008 00009 #ifndef DNAUTIL_H 00010 #include "dnautil.h" 00011 #endif 00012 00013 #ifndef BITS_H 00014 #include "bits.h" 00015 #endif 00016 00017 struct dnaSeq 00018 /* A dna sequence in one-character per base format. */ 00019 { 00020 struct dnaSeq *next; /* Next in list. */ 00021 char *name; /* Name of sequence. */ 00022 DNA *dna; /* Sequence base by base. */ 00023 int size; /* Size of sequence. */ 00024 Bits* mask; /* Repeat mask (optional) */ 00025 }; 00026 00027 typedef struct dnaSeq bioSeq; /* Preferred use if either DNA or protein. */ 00028 typedef struct dnaSeq aaSeq; /* Preferred use if protein. */ 00029 00030 struct dnaSeq *newDnaSeq(DNA *dna, int size, char *name); 00031 /* Create a new DNA seq. */ 00032 00033 struct dnaSeq *cloneDnaSeq(struct dnaSeq *seq); 00034 /* Duplicate dna sequence in RAM. */ 00035 00036 void freeDnaSeq(struct dnaSeq **pSeq); 00037 /* Free up DNA seq. */ 00038 #define dnaSeqFree freeDnaSeq 00039 00040 void freeDnaSeqList(struct dnaSeq **pSeqList); 00041 /* Free up list of DNA sequences. */ 00042 #define dnaSeqFreeList freeDnaSeqList 00043 00044 aaSeq *translateSeqN(struct dnaSeq *inSeq, unsigned offset, unsigned size, boolean stop); 00045 /* Return a translated sequence. Offset is position of first base to 00046 * translate. If size is 0 then use length of inSeq. */ 00047 00048 aaSeq *translateSeq(struct dnaSeq *inSeq, unsigned offset, boolean stop); 00049 /* Return a translated sequence. Offset is position of first base to 00050 * translate. If stop is TRUE then stop at first stop codon. (Otherwise 00051 * represent stop codons as 'Z'). */ 00052 00053 boolean seqIsDna(bioSeq *seq); 00054 /* Make educated guess whether sequence is DNA or protein. */ 00055 00056 boolean seqIsLower(bioSeq *seq); 00057 /* Return TRUE if sequence is all lower case. */ 00058 00059 bioSeq *whichSeqIn(bioSeq **seqs, int seqCount, char *letters); 00060 /* Figure out which if any sequence letters is in. */ 00061 00062 Bits *maskFromUpperCaseSeq(bioSeq *seq); 00063 /* Allocate a mask for sequence and fill it in based on 00064 * sequence case. */ 00065 00066 struct hash *dnaSeqHash(struct dnaSeq *seqList); 00067 /* Return hash of sequences keyed by name. */ 00068 00069 #endif /* DNASEQ_H */ 00070
1.5.2