staden-lg/src/bap/osp-bits/defs.h
2021-12-04 05:07:58 +00:00

122 lines
2.6 KiB
C

#ifndef _osp_defs_h
#define _osp_defs_h
/* File: defs.h
Purpose: hold all definitions for primer program
Copyright 1991: LaDeana Hillier and Philip Green*/
#define MAX_LEN_LOC_NAME 20
#define MAX_LEN_PKU_NAME 80
#define MAX_LEN_ORDS_NAME 80
#define NUM_PRE_COMP 20
typedef long ALLOC;
/* if change type SHORT to anything larger than short need to read values
in scanf & fscanf into a dummy variable of type short, then assign the
dummy variable to the true variable.
*/
typedef short SHORT;
typedef long ID;
typedef long LINDEX;
typedef int INT;
struct loci_orders{
SHORT num_loci, num_orders;
SHORT **orders;
struct loci_orders *next_orders;
};
struct loci_data{
SHORT n, num_types;
double ***data;
};
struct chrom_data{
SHORT num_loci, num_fams;
SHORT *num_chroms; /* different number of chroms for each fam */
struct phase **phase_choices;
char ***chrom_array;
ID *fam_nums_array;
char **locus_names;
};
struct phase{
SHORT num_switches;
SHORT *locus_nums;
char **array;
};
struct int_array{
SHORT n;
struct intervals **list;
};
struct intervals {
SHORT chrom_num, i, j, k, index, sort_index;
unsigned rank : 4;
unsigned r : 1;
/* i = sex; j, k are starting, ending loci; r = reference recomb. count; index, sort_index give position in list */
struct intervals *next_interval, *prev_interval;
};
struct interval_list{
SHORT num_intervals;
struct intervals *first_interval;
};
struct interval_ptrs{
struct intervals *interval;
struct interval_ptrs *next_ptr, *prev_ptr;
};
struct tswitchs{
SHORT chrom_tswitch_index, num_intervals;
struct interval_ptrs *first_ptr;
struct tswitchs *next_tswitch, *prev_tswitch;
};
struct tswitch_list {
SHORT num_tswitchs;
struct tswitchs *first_tswitch;
};
struct flank_tswitchs {
/* struct tswitchs *tswitch; ELIMINATE -- AND MAKE CORRESPONDING CHANGES IN PROGRAM? */
LINDEX m_in_l_list, m_in_r_list;
unsigned affects_l_interval : 1;
unsigned affects_r_interval : 1;
unsigned in_l_list : 1;
unsigned in_r_list : 1;
struct flank_tswitchs *next_tswitch;
};
struct flank_list {
SHORT num_flanks;
SHORT *num_tswitchs;
LINDEX *m_left_off, *m_right_off;
struct flank_tswitchs **first_tswitch;
};
struct individual{
ID id, moth_id, fath_id, moth, fath;
char sex;
SHORT **a;
};
struct data{
SHORT num_fams, num_loci;
SHORT *num_mems;
ID *fam_id;
char **locus_names;
struct individual ***ind;
};
#endif