/* global variables */
#define MAX_LENGTH  2048      /* maximum length of amino acid chain */

/* data structure for hydrophobicity scale */
typedef struct Hydroscale 
{
  float resA, resC, resD, resE, resF, resG, resH, resI, resK, resL, resM, resN, resP, resQ, resR, resS, resT, resV, resW, resY;
} Hydroscale;


/* function prototypes */
char* substring(const char*, size_t, size_t); /* substring */
void hydroscale_selector(int, Hydroscale*); /* selector for hydrophobicity scales */
float average_score(float*, int, int, int); /* average hydrophobicity score for a range of residues */
float hydroscore(Hydroscale*, char); /* hydrophobicity score for a single residue */

int get_chain(char*, char*); /* get the first amino acid chain */
char aa3to1(char*); /* convert residue name from three letter code to one letter code */
char* aa1to3(char); /* convert residue name from one letter code to three letter code */
void print_usage(); /* print usage message */

void calc_hydrophobicity(char *res_seq, int chain_length, float *hydro_scores, int window_size, int scale_option);
