00001 #ifndef RAA_ACNUC_H
00002 #define RAA_ACNUC_H
00003
00004 #include <stdio.h>
00005 #include <stdlib.h>
00006 #include <string.h>
00007 #include <ctype.h>
00008 #if defined(WIN32)
00009 #define SOCKBUFS 8192
00010 #include <winsock2.h>
00011 #endif
00012 #ifdef __alpha
00013 typedef long raa_long;
00014 #define RAA_LONG_FORMAT "%lu"
00015 #else
00016 typedef long long raa_long;
00017 #define RAA_LONG_FORMAT "%llu"
00018 #endif
00019
00020 #ifndef TRUE
00021 #define FALSE 0
00022 #define TRUE (!FALSE)
00023 #endif
00024 #ifndef ERREUR
00025 #define ERREUR 1
00026 #endif
00027
00028 struct rlng {
00029 int next;
00030 int sub[1];
00031 };
00032
00033 #define RAA_GFRAG_BSIZE 10000
00034 struct gfrag_aux {
00035 char buffer[RAA_GFRAG_BSIZE + 1];
00036 int lbuf, nseq_buf, first_buf, l_nseq_buf;
00037 };
00038
00039 struct readsub_aux {
00040 char *name;
00041 int lname, previous, length, type, toext, lkey, locus, frame, gencode, div;
00042 raa_long addr;
00043 };
00044
00045 #define ANNOTCOUNT 40
00046 struct annot_aux {
00047 char *annotline[ANNOTCOUNT + 1];
00048 int annotcurrent, annotcount, annotdiv;
00049 raa_long annotaddr, annotaddrfirst, annotaddrlast;
00050 char annotsbuffer[ 300 ];
00051 };
00052
00053 struct readsp_kw_aux {
00054 char name[150], libel[200];
00055 int lsub, desc, syno, host, previous;
00056 };
00057
00058 #define BLOCK_ELTS_IN_LIST 500
00059 struct nextelt_aux {
00060 int current_rank, previous, total;
00061 int tabnum[BLOCK_ELTS_IN_LIST];
00062 char *tabname[BLOCK_ELTS_IN_LIST];
00063 int tablength[BLOCK_ELTS_IN_LIST];
00064 raa_long taboffset[BLOCK_ELTS_IN_LIST];
00065 int tabdiv[BLOCK_ELTS_IN_LIST];
00066 };
00067
00068 #define S_BUF_SHRT 5000
00069 struct readshrt_aux {
00070 unsigned shrt_buffer[S_BUF_SHRT][3];
00071 int shrt_max, shrt_begin, total;
00072 };
00073
00074 struct readsmj_aux {
00075 int lastrec;
00076 char **names, **libels;
00077 unsigned *plongs;
00078 };
00079
00080 typedef struct raa_node {
00081 char *name;
00082 char *libel;
00083 char *libel_upcase;
00084 int rank;
00085 int tid;
00086 int count;
00087 struct raa_node *parent;
00088 struct raa_pair *list_desc;
00089 struct raa_node *syno;
00090 } raa_node;
00091 struct raa_pair {
00092 raa_node *value;
00093 struct raa_pair *next;
00094 };
00095
00096 typedef struct _raa_db_access {
00097 char *dbname;
00098 FILE *raa_sockfdr, *raa_sockfdw;
00099 int genbank, embl, swissprot, nbrf;
00100 int nseq, longa, maxa;
00101 int L_MNEMO, WIDTH_SP, WIDTH_KW, WIDTH_SMJ, WIDTH_AUT, WIDTH_BIB, ACC_LENGTH, SUBINLNG, lrtxt;
00102 raa_node **sp_tree;
00103 int max_tid;
00104 int *tid_to_rank;
00105 struct rlng *rlng_buffer;
00106 struct gfrag_aux gfrag_data;
00107 struct readsub_aux readsub_data;
00108 int first_recs[20];
00109 struct annot_aux annot_data;
00110 struct readsp_kw_aux readspec_data, readkey_data;
00111 struct nextelt_aux nextelt_data;
00112 struct readshrt_aux readshrt_data;
00113 struct readsmj_aux readsmj_data;
00114 void *matchkey_data;
00115
00116 int tot_key_annots;
00117 char **key_annots, **key_annots_min;
00118 unsigned char *want_key_annots;
00119 #ifdef WIN32
00120 char sock_input[SOCKBUFS];
00121 char *sock_input_pos, *sock_input_end;
00122 char sock_output[SOCKBUFS];
00123 DWORD sock_output_lbuf;
00124 #endif
00125 } raa_db_access;
00126
00127 #define WIDTH_MAX 150
00128
00129 typedef enum { raa_sub = 0, raa_loc, raa_key, raa_spec, raa_shrt, raa_lng, raa_ext, raa_smj,
00130 raa_aut, raa_bib, raa_txt, raa_acc } raa_file;
00131 typedef void (*raa_char_void_function)(raa_db_access *, char *);
00132 struct chain_void {
00133 void *data;
00134 struct chain_void *next;
00135 };
00136
00137
00138 extern raa_char_void_function raa_error_mess_proc;
00139
00140
00141 extern int raa_acnucopen (char *clientid, raa_db_access **psock) ;
00142 extern int raa_decode_address(char *url, char **p_ip_name, int *socket, char **p_remote_db);
00143 extern int raa_acnucopen_alt (char *serveurName, int port, char *db_name, char *clientid, raa_db_access **psock);
00144 extern int raa_open_socket(char *serveurName, int port, char *clientid, raa_db_access **psock);
00145 extern int raa_opendb(raa_db_access *raa_current_db, char *db_name);
00146 int raa_opendb_pw(raa_db_access *raa_current_db, char *db_name, void *ptr, char *(*getpasswordf)(void *) );
00147 extern int raa_gfrag(raa_db_access *raa_current_db, int nsub, int first, int lfrag, char *dseq) ;
00148 extern void raa_acnucclose(raa_db_access *raa_current_db) ;
00149 extern int raa_prep_acnuc_query(raa_db_access *raa_current_db) ;
00150 extern int raa_proc_query(raa_db_access *raa_current_db, char *query, char **message, char *nomliste, int *numlist,
00151 int *count, int *locus, int *type) ;
00152 int raa_nexteltinlist(raa_db_access *raa_current_db, int first, int lrank, char **pname, int *plength) ;
00153 int raa_nexteltinlist_annots(raa_db_access *raa_current_db, int first, int lrank, char **pname, int *plength,
00154 raa_long *paddr, int *pdiv);
00155 raa_long scan_raa_long(char *txt);
00156 int raa_seq_to_annots(raa_db_access *raa_current_db, int numseq, raa_long *faddr, int *div);
00157 char *print_raa_long(raa_long val);
00158 char *raa_read_annots(raa_db_access *raa_current_db, raa_long faddr, int div);
00159 char *raa_next_annots(raa_db_access *raa_current_db, raa_long *faddr);
00160 char *raa_translate_cds(raa_db_access *raa_current_db, int seqnum);
00161 char raa_translate_init_codon(raa_db_access *raa_current_db, int numseq);
00162 int raa_iknum(raa_db_access *raa_current_db, char *name, raa_file cas);
00163 int raa_isenum(raa_db_access *raa_current_db, char *name);
00164 int raa_bcount(raa_db_access *raa_current_db, int lrank);
00165 void raa_bit1(raa_db_access *raa_current_db, int lrank, int num);
00166 void raa_bit0(raa_db_access *raa_current_db, int lrank, int num);
00167 int raa_btest(raa_db_access *raa_current_db, int lrank, int num);
00168 void raa_copylist(raa_db_access *raa_current_db, int from, int to);
00169 void raa_zerolist(raa_db_access *raa_current_db, int rank);
00170 void raa_setliststate(raa_db_access *raa_current_db, int lrank, int locus, int type);
00171 char *raa_getliststate(raa_db_access *raa_current_db, int lrank, int *locus, int *type, int *count);
00172 char *raa_residuecount(raa_db_access *raa_current_db, int lrank);
00173 int raa_getemptylist(raa_db_access *raa_current_db, char *name);
00174 int raa_setlistname(raa_db_access *raa_current_db, int lrank, char *name);
00175 int raa_getlistrank(raa_db_access *raa_current_db, char *name);
00176 int raa_releaselist(raa_db_access *raa_current_db, int lrank);
00177 int raa_countfilles(raa_db_access *raa_current_db, int lrank);
00178 int raa_alllistranks(raa_db_access *raa_current_db, int **pranks);
00179 int raa_fcode(raa_db_access *raa_current_db, raa_file cas, char *name);
00180 int raa_read_first_rec(raa_db_access *raa_current_db, raa_file cas);
00181 char *raa_readsub(raa_db_access *raa_current_db, int num, int *plength, int *ptype, int *pext, int *plkey, int *plocus,
00182 int *pframe, int *pgencode);
00183 char *raa_readsub_pannots(raa_db_access *raa_current_db, int num, int *plength, int *ptype, int *pext, int *plkey, int *plocus,
00184 int *pframe, int *pgencode, raa_long *paddr, int *pdiv);
00185 char *raa_readloc(raa_db_access *raa_current_db, int num, int *sub, int *pnuc, int *spec, int *host, int *plref,
00186 int *molec, int *placc, int *org);
00187 char *raa_readspec(raa_db_access *raa_current_db, int num, char **plibel, int *plsub, int *desc, int *syno, int *plhost);
00188 char *raa_readkey(raa_db_access *raa_current_db, int num, char **plibel, int *plsub, int *desc, int *syno);
00189 char *raa_readsmj(raa_db_access *raa_current_db, int num, char **plibel, int *plong);
00190 char *raa_readacc(raa_db_access *raa_current_db, int num, int *plsub);
00191 int raa_readext(raa_db_access *raa_current_db, int num, int *mere, int *deb, int *fin);
00192 int raa_readlng(raa_db_access *raa_current_db, int num);
00193 unsigned raa_readshrt(raa_db_access *raa_current_db, unsigned point, int *val);
00194 char *raa_ghelp(raa_db_access *raa_current_db, char *fname, char *topic);
00195 int raa_nextmatchkey(raa_db_access *raa_current_db, int num, char *pattern, char **matching);
00196 int raa_savelist(raa_db_access *raa_current_db, int lrank, FILE *out, int use_acc, char *prefix);
00197 int raa_modifylist(raa_db_access *raa_current_db, int lrank, char *type , char *operation ,
00198 int *pnewlrank, int (*check_interrupt)(void) , int *p_processed);
00199 int raa_knowndbs(raa_db_access *raa_current_db, char ***pnames, char ***pdescriptions);
00200 char *raa_short_descr(raa_db_access *raa_current_db, int seqnum, char *text, int maxlen, raa_long pinf, int div, char *name);
00201 struct chain_void *raa_get_list_open_dbs(void);
00202 void *raa_prep_extract(raa_db_access *raa_current_db, char *format, FILE *outstream, char *choix,
00203 char *feature_name, char *bornes, char *min_bornes, char **message, int lrank);
00204 int raa_extract_1_seq(void *opaque);
00205 int raa_extract_interrupt(raa_db_access *raa_current_db, void *opaque);
00206 void *raa_prep_coordinates(raa_db_access *raa_current_db, int lrank, int seqnum,
00207 char *operation,
00208 char *feature_name, char *bounds, char *min_bounds);
00209 int *raa_1_coordinate_set(void *);
00210 int raa_loadtaxonomy(raa_db_access *raa_current_db, char *rootname,
00211 int (*progress_function)(int, void *), void *progress_arg,
00212 int (*need_interrupt_f)(void *), void *interrupt_arg);
00213 char *raa_get_taxon_info(raa_db_access *raa_current_db, char *name, int rank, int tid, int *p_rank,
00214 int *p_tid, int *p_parent, struct raa_pair **p_desc_list);
00215 char *raa_getattributes(raa_db_access *raa_current_db, const char *id,
00216 int *prank, int *plength, int *pframe, int *pgc, char **pacc, char **pdesc, char **pspecies, char **pseq);
00217 char *raa_seqrank_attributes(raa_db_access *raa_current_db, int rank,
00218 int *plength, int *pframe, int *pgc, char **pacc, char **pdesc, char **pspecies, char **pseq);
00219
00220 int sock_fputs(raa_db_access *raa_current_db, char *line);
00221 int sock_flush(raa_db_access *raa_current_db);
00222 char *read_sock(raa_db_access *raa_current_db);
00223
00224
00225 int trim_key(char *name);
00226 void majuscules(char *name);
00227 int atoi_u(const char *p);
00228 char *protect_quotes(char *name);
00229 void compact(char *chaine);
00230 int strcmptrail(char *s1, int l1, char *s2, int l2);
00231
00232
00233 #endif