staden-lg/src/frog/scfIO.h

82 lines
2.4 KiB
C

/*
* File: scfIO.h
*
* Author: Simon Dear
* MRC Laboratory of Molecular Biology
* Hills Road
* Cambridge CB2 2QH
* United Kingdom
*
* Description: header file for SCF file IO
*
* Created: 8 October 1992 (from seqIOSCF.c)
* Updated:
*
*/
#ifndef _SCFIO_H_
#define _SCFIO_H_
#include "mach-io.h"
/* ---- Constants ---- */
#define SCF_MAGIC (((((uint_4)'.'<<8)+(uint_4)'s'<<8)+(uint_4)'c'<<8)+(uint_4)'f')
/*
** Type definition for the Header structure
*/
typedef struct {
uint_4 magic_number; /* Always ((('.'<<8)+'s'<<8)+'c'<<8)+'f'; */
uint_4 samples; /* Number of elements in Samples matrix */
uint_4 samples_offset; /* Byte offset from start of file */
uint_4 bases; /* Number of bases in Bases matrix */
uint_4 bases_left_clip; /* Number of bases in left clip (vector)*/
uint_4 bases_right_clip; /* Number of bases in right clip (unreliable) */
uint_4 bases_offset; /* Byte offset from start of file */
uint_4 comments_size; /* Number of bytes in Comment section */
uint_4 comments_offset; /* Byte offset from start of file */
uint_4 spare[23]; /* Unused */
} Header;
/*
** Type definition for the Sample data
*/
typedef struct {
uint_1 sample_A; /* Sample for A trace */
uint_1 sample_C; /* Sample for C trace */
uint_1 sample_G; /* Sample for G trace */
uint_1 sample_T; /* Sample for T trace */
} Samples;
/*
** Type definition for the sequence data
*/
typedef struct {
uint_4 peak_index; /* Index into Samples matrix for base position */
uint_1 prob_A; /* Probability of it being an A */
uint_1 prob_C; /* Probability of it being an C */
uint_1 prob_G; /* Probability of it being an G */
uint_1 prob_T; /* Probability of it being an T */
uint_1 base; /* Base called */
uint_1 spare[3]; /* Spare */
} Bases;
/*
** Type definition for the comments
*/
typedef char Comments; /* Zero terminated list of \n separated entries */
extern int read_scf_header(FILE *fp, Header *h);
extern int read_scf_sample(FILE *fp, Samples *s);
extern int read_scf_base(FILE *fp, Bases *b);
extern int write_scf_header(FILE *fp, Header *h);
extern int write_scf_sample(FILE *fp, Samples *s);
extern int write_scf_base(FILE *fp, Bases *b);
extern int write_scf_comment(FILE *fp, Comments *c, size_t l);
#endif /*_SCFIO_H_*/