readseq/ureadseq.h

173 lines
4.8 KiB
C

/* File: ureadseq.h
*
* Header for module UReadSeq
*/
#ifndef UREADSEQ_H
#define UREADSEQ_H
typedef char boolean;
#define NEWLINE '\n'
#define false 0
#define true 1
#define min(a, b) (a < b) ? a : b
#define max(a, b) (a > b) ? a : b
#define skipwhitespace(string) \
{ \
while (*string <= ' ' && *string != 0) string++; \
}
/* NLM strings */
#define is_upper(c) ('A' <= (c) && (c) <= 'Z')
#define is_lower(c) ('a' <= (c) && (c) <= 'z')
#define to_lower(c) ((char)(is_upper(c) ? (c) + ' ' : (c)))
#define to_upper(c) ((char)(is_lower(c) ? (c) - ' ' : (c)))
/* readSeq errors */
#define eFileNotFound -1
#define eNoData -2
#define eMemFull -3
#define eItemNotFound -4
#define eOneFormat -5
#define eUnequalSize -6
#define eFileCreate -7
#define eUnknownFormat -8
#define eOptionBad -9
#define eASNerr -10
/* magic number for readSeq(whichEntry) to give seq list */
#define kListSequences -1
/* sequence types parsed by getseqtype */
#define kOtherSeq 0
#define kDNA 1
#define kRNA 2
#define kNucleic 3
#define kAmino 4
/* formats known to readSeq */
#define kIG 1
#define kGenBank 2
#define kNBRF 3
#define kEMBL 4
#define kGCG 5
#define kStrider 6
#define kFitch 7
#define kPearson 8
#define kZuker 9
#define kOlsen 10
#define kPhylip2 11
#define kPhylip4 12
#define kPhylip3 kPhylip4
#define kPhylip kPhylip4
#define kPlain 13 /* keep this at #13 */
#define kPIR 14
#define kMSF 15
#define kASN1 16
#define kPAUP 17
#define kPretty 18
#define kMaxFormat 18
#define kMinFormat 1
#define kNoformat -1 /* format not tested */
#define kUnknown 0 /* format not determinable */
/* subsidiary types */
#define kASNseqentry 51
#define kASNseqset 52
#define kPhylipInterleave 61
#define kPhylipSequential 62
typedef struct {
boolean isactive, baseonlynum;
boolean numright, numleft, numtop, numbot;
boolean nameright, nameleft, nametop;
boolean noleaves, domatch, degap;
char matchchar, gapchar;
short numline, atseq;
short namewidth, numwidth;
short interline, spacer, seqwidth, tab;
} prettyopts;
#define gPrettyInit(p) \
{ \
p.isactive = false; \
p.baseonlynum = true; \
p.numline = p.atseq = 0; \
p.numright = p.numleft = p.numtop = p.numbot = false; \
p.nameright = p.nameleft = p.nametop = false; \
p.noleaves = p.domatch = p.degap = false; \
p.matchchar = '.'; \
p.gapchar = '-'; \
p.namewidth = 8; \
p.numwidth = 5; \
p.interline = 1; \
p.spacer = 10; \
p.seqwidth = 50; \
p.tab = 0; \
}
#ifdef UREADSEQ_G
prettyopts gPretty;
#else
extern prettyopts gPretty;
#endif
#ifdef __cplusplus
extern "C" {
#endif
extern short seqFileFormat(const char *filename, long *skiplines, short *error);
extern short seqFileFormatFp(FILE *fseq, long *skiplines, short *error);
extern char *listSeqs(const char *filename, const long skiplines,
const short format, short *nseq, short *error);
extern char *readSeq(const short whichEntry, const char *filename,
const long skiplines, const short format, long *seqlen,
short *nseq, short *error, char *seqid);
extern char *readSeqFp(const short whichEntry_, FILE *fp_,
const long skiplines_, const short format_,
long *seqlen_, short *nseq_, short *error_,
char *seqid_);
extern short writeSeq(FILE *outf, const char *seq, const long seqlen,
const short outform, const char *seqid);
extern unsigned long CRC32checksum(const char *seq, const long seqlen,
unsigned long *checktotal);
extern unsigned long GCGchecksum(const char *seq, const long seqlen,
unsigned long *checktotal);
#ifdef SMALLCHECKSUM
#define seqchecksum GCGchecksum
#else
#define seqchecksum CRC32checksum
#endif
extern short getseqtype(const char *seq, const long seqlen);
extern char *compressSeq(const char gapc, const char *seq, const long seqlen,
long *newlen);
#ifdef NCBI
extern char *listASNSeqs(const char *filename, const long skiplines,
const short format, short *nseq, short *error);
extern char *readASNSeq(const short whichEntry, const char *filename,
const long skiplines, const short format, long *seqlen,
short *nseq, short *error, char **seqid);
#endif
/* patches for some missing string.h stuff */
extern int Strcasecmp(const char *a, const char *b);
extern int Strncasecmp(const char *a, const char *b, long maxn);
#ifdef __cplusplus
}
#endif
#endif /*UREADSEQ_H*/