hp2FEM
0.1
|
00001 00010 #ifndef _GK_PROTO_H_ 00011 #define _GK_PROTO_H_ 00012 00013 #ifdef __cplusplus 00014 extern "C" { 00015 #endif 00016 00017 /*------------------------------------------------------------- 00018 * blas.c 00019 *-------------------------------------------------------------*/ 00020 GK_MKBLAS_PROTO(gk_c, char, intmax_t) 00021 GK_MKBLAS_PROTO(gk_i, int, intmax_t) 00022 GK_MKBLAS_PROTO(gk_i32, int32_t, intmax_t) 00023 GK_MKBLAS_PROTO(gk_i64, int64_t, intmax_t) 00024 GK_MKBLAS_PROTO(gk_f, float, float) 00025 GK_MKBLAS_PROTO(gk_d, double, double) 00026 GK_MKBLAS_PROTO(gk_idx, gk_idx_t, intmax_t) 00027 00028 00029 00030 00031 /*------------------------------------------------------------- 00032 * io.c 00033 *-------------------------------------------------------------*/ 00034 FILE *gk_fopen(char *, char *, const char *); 00035 void gk_fclose(FILE *); 00036 gk_idx_t gk_getline(char **lineptr, size_t *n, FILE *stream); 00037 char **gk_readfile(char *fname, gk_idx_t *r_nlines); 00038 int32_t *gk_i32readfile(char *fname, gk_idx_t *r_nlines); 00039 int64_t *gk_i64readfile(char *fname, gk_idx_t *r_nlines); 00040 00041 00042 00043 00044 /*------------------------------------------------------------- 00045 * fs.c 00046 *-------------------------------------------------------------*/ 00047 int gk_fexists(char *); 00048 int gk_dexists(char *); 00049 intmax_t gk_getfsize(char *); 00050 void gk_getfilestats(char *fname, size_t *r_nlines, size_t *r_ntokens, 00051 size_t *r_max_nlntokens, size_t *r_nbytes); 00052 char *gk_getbasename(char *path); 00053 char *gk_getextname(char *path); 00054 char *gk_getfilename(char *path); 00055 char *gk_getpathname(char *path); 00056 int gk_mkpath(char *); 00057 int gk_rmpath(char *); 00058 00059 00060 00061 /*------------------------------------------------------------- 00062 * memory.c 00063 *-------------------------------------------------------------*/ 00064 GK_MKALLOC_PROTO(gk_c, char) 00065 GK_MKALLOC_PROTO(gk_i, int) 00066 GK_MKALLOC_PROTO(gk_i32, int32_t) 00067 GK_MKALLOC_PROTO(gk_i64, int64_t) 00068 GK_MKALLOC_PROTO(gk_f, float) 00069 GK_MKALLOC_PROTO(gk_d, double) 00070 GK_MKALLOC_PROTO(gk_idx, gk_idx_t) 00071 00072 GK_MKALLOC_PROTO(gk_ckv, gk_ckv_t) 00073 GK_MKALLOC_PROTO(gk_ikv, gk_ikv_t) 00074 GK_MKALLOC_PROTO(gk_i32kv, gk_i32kv_t) 00075 GK_MKALLOC_PROTO(gk_i64kv, gk_i64kv_t) 00076 GK_MKALLOC_PROTO(gk_fkv, gk_fkv_t) 00077 GK_MKALLOC_PROTO(gk_dkv, gk_dkv_t) 00078 GK_MKALLOC_PROTO(gk_skv, gk_skv_t) 00079 GK_MKALLOC_PROTO(gk_idxkv, gk_idxkv_t) 00080 00081 void gk_AllocMatrix(void ***, size_t, size_t , size_t); 00082 void gk_FreeMatrix(void ***, size_t, size_t); 00083 int gk_malloc_init(); 00084 void gk_malloc_cleanup(int showstats); 00085 void *gk_malloc(size_t nbytes, char *msg); 00086 void *gk_realloc(void *oldptr, size_t nbytes, char *msg); 00087 void gk_free(void **ptr1,...); 00088 size_t gk_GetCurMemoryUsed(); 00089 size_t gk_GetMaxMemoryUsed(); 00090 00091 00092 00093 /*------------------------------------------------------------- 00094 * seq.c 00095 *-------------------------------------------------------------*/ 00096 gk_seq_t *gk_seq_ReadGKMODPSSM(char *file_name); 00097 gk_i2cc2i_t *gk_i2cc2i_create_common(char *alphabet); 00098 void gk_seq_init(gk_seq_t *seq); 00099 00100 00101 00102 00103 /*------------------------------------------------------------- 00104 * pdb.c 00105 *-------------------------------------------------------------*/ 00106 char gk_threetoone(char *res); 00107 void gk_freepdbf(pdbf *p); 00108 pdbf *gk_readpdbfile(char *fname); 00109 void gk_writefullatom(pdbf *p, char *fname); 00110 void gk_writebackbone(pdbf *p, char *fname); 00111 void gk_writealphacarbons(pdbf *p, char *fname); 00112 void gk_showcorruption(pdbf *p); 00113 00114 00115 /*------------------------------------------------------------- 00116 * error.c 00117 *-------------------------------------------------------------*/ 00118 void gk_set_exit_on_error(int value); 00119 void errexit(char *,...); 00120 void gk_errexit(int signum, char *,...); 00121 int gk_sigtrap(); 00122 int gk_siguntrap(); 00123 void gk_sigthrow(int signum); 00124 void gk_SetSignalHandlers(); 00125 void gk_UnsetSignalHandlers(); 00126 void gk_NonLocalExit_Handler(int signum); 00127 char *gk_strerror(int errnum); 00128 void PrintBackTrace(); 00129 00130 00131 /*------------------------------------------------------------- 00132 * util.c 00133 *-------------------------------------------------------------*/ 00134 void gk_RandomPermute(size_t, int *, int); 00135 void gk_array2csr(size_t n, size_t range, int *array, int *ptr, int *ind); 00136 int gk_log2(int); 00137 int gk_ispow2(int); 00138 float gk_flog2(float); 00139 00140 00141 /*------------------------------------------------------------- 00142 * time.c 00143 *-------------------------------------------------------------*/ 00144 gk_wclock_t gk_WClockSeconds(void); 00145 double gk_CPUSeconds(void); 00146 00147 /*------------------------------------------------------------- 00148 * string.c 00149 *-------------------------------------------------------------*/ 00150 char *gk_strchr_replace(char *str, char *fromlist, char *tolist); 00151 int gk_strstr_replace(char *str, char *pattern, char *replacement, char *options, char **new_str); 00152 char *gk_strtprune(char *, char *); 00153 char *gk_strhprune(char *, char *); 00154 char *gk_strtoupper(char *); 00155 char *gk_strtolower(char *); 00156 char *gk_strdup(char *orgstr); 00157 int gk_strcasecmp(char *s1, char *s2); 00158 int gk_strrcmp(char *s1, char *s2); 00159 char *gk_time2str(time_t time); 00160 time_t gk_str2time(char *str); 00161 int gk_GetStringID(gk_StringMap_t *strmap, char *key); 00162 00163 00164 00165 /*------------------------------------------------------------- 00166 * sort.c 00167 *-------------------------------------------------------------*/ 00168 void gk_csorti(size_t, char *); 00169 void gk_csortd(size_t, char *); 00170 void gk_isorti(size_t, int *); 00171 void gk_isortd(size_t, int *); 00172 void gk_fsorti(size_t, float *); 00173 void gk_fsortd(size_t, float *); 00174 void gk_dsorti(size_t, double *); 00175 void gk_dsortd(size_t, double *); 00176 void gk_idxsorti(size_t, gk_idx_t *); 00177 void gk_idxsortd(size_t, gk_idx_t *); 00178 void gk_ckvsorti(size_t, gk_ckv_t *); 00179 void gk_ckvsortd(size_t, gk_ckv_t *); 00180 void gk_ikvsorti(size_t, gk_ikv_t *); 00181 void gk_ikvsortd(size_t, gk_ikv_t *); 00182 void gk_i32kvsorti(size_t, gk_i32kv_t *); 00183 void gk_i32kvsortd(size_t, gk_i32kv_t *); 00184 void gk_i64kvsorti(size_t, gk_i64kv_t *); 00185 void gk_i64kvsortd(size_t, gk_i64kv_t *); 00186 void gk_fkvsorti(size_t, gk_fkv_t *); 00187 void gk_fkvsortd(size_t, gk_fkv_t *); 00188 void gk_dkvsorti(size_t, gk_dkv_t *); 00189 void gk_dkvsortd(size_t, gk_dkv_t *); 00190 void gk_skvsorti(size_t, gk_skv_t *); 00191 void gk_skvsortd(size_t, gk_skv_t *); 00192 void gk_idxkvsorti(size_t, gk_idxkv_t *); 00193 void gk_idxkvsortd(size_t, gk_idxkv_t *); 00194 00195 00196 /*------------------------------------------------------------- 00197 * Selection routines 00198 *-------------------------------------------------------------*/ 00199 int gk_dfkvkselect(size_t, int, gk_fkv_t *); 00200 int gk_ifkvkselect(size_t, int, gk_fkv_t *); 00201 00202 00203 /*------------------------------------------------------------- 00204 * Priority queue 00205 *-------------------------------------------------------------*/ 00206 GK_MKPQUEUE_PROTO(gk_ipq, gk_ipq_t, int, gk_idx_t) 00207 GK_MKPQUEUE_PROTO(gk_i32pq, gk_i32pq_t, int32_t, gk_idx_t) 00208 GK_MKPQUEUE_PROTO(gk_i64pq, gk_i64pq_t, int64_t, gk_idx_t) 00209 GK_MKPQUEUE_PROTO(gk_fpq, gk_fpq_t, float, gk_idx_t) 00210 GK_MKPQUEUE_PROTO(gk_dpq, gk_dpq_t, double, gk_idx_t) 00211 GK_MKPQUEUE_PROTO(gk_idxpq, gk_idxpq_t, gk_idx_t, gk_idx_t) 00212 00213 00214 /*------------------------------------------------------------- 00215 * HTable routines 00216 *-------------------------------------------------------------*/ 00217 gk_HTable_t *HTable_Create(int nelements); 00218 void HTable_Reset(gk_HTable_t *htable); 00219 void HTable_Resize(gk_HTable_t *htable, int nelements); 00220 void HTable_Insert(gk_HTable_t *htable, int key, int val); 00221 void HTable_Delete(gk_HTable_t *htable, int key); 00222 int HTable_Search(gk_HTable_t *htable, int key); 00223 int HTable_GetNext(gk_HTable_t *htable, int key, int *val, int type); 00224 int HTable_SearchAndDelete(gk_HTable_t *htable, int key); 00225 void HTable_Destroy(gk_HTable_t *htable); 00226 int HTable_HFunction(int nelements, int key); 00227 00228 00229 /*------------------------------------------------------------- 00230 * Tokenizer routines 00231 *-------------------------------------------------------------*/ 00232 void gk_strtokenize(char *line, char *delim, gk_Tokens_t *tokens); 00233 void gk_freetokenslist(gk_Tokens_t *tokens); 00234 00235 /*------------------------------------------------------------- 00236 * Encoder/Decoder 00237 *-------------------------------------------------------------*/ 00238 void encodeblock(unsigned char *in, unsigned char *out); 00239 void decodeblock(unsigned char *in, unsigned char *out); 00240 void GKEncodeBase64(int nbytes, unsigned char *inbuffer, unsigned char *outbuffer); 00241 void GKDecodeBase64(int nbytes, unsigned char *inbuffer, unsigned char *outbuffer); 00242 00243 00244 /*------------------------------------------------------------- 00245 * random.c 00246 *-------------------------------------------------------------*/ 00247 GK_MKRANDOM_PROTO(gk_c, size_t, char) 00248 GK_MKRANDOM_PROTO(gk_i, size_t, int) 00249 GK_MKRANDOM_PROTO(gk_f, size_t, float) 00250 GK_MKRANDOM_PROTO(gk_d, size_t, double) 00251 GK_MKRANDOM_PROTO(gk_idx, size_t, gk_idx_t) 00252 void gk_randinit(uint64_t); 00253 uint64_t gk_randint64(void); 00254 uint32_t gk_randint32(void); 00255 00256 00257 /*------------------------------------------------------------- 00258 * OpenMP fake functions 00259 *-------------------------------------------------------------*/ 00260 #if !defined(__OPENMP__) 00261 void omp_set_num_threads(int num_threads); 00262 int omp_get_num_threads(void); 00263 int omp_get_max_threads(void); 00264 int omp_get_thread_num(void); 00265 int omp_get_num_procs(void); 00266 int omp_in_parallel(void); 00267 void omp_set_dynamic(int num_threads); 00268 int omp_get_dynamic(void); 00269 void omp_set_nested(int nested); 00270 int omp_get_nested(void); 00271 #endif /* __OPENMP__ */ 00272 00273 00274 /*------------------------------------------------------------- 00275 * CSR-related functions 00276 *-------------------------------------------------------------*/ 00277 gk_csr_t *gk_csr_Create(); 00278 void gk_csr_Init(gk_csr_t *mat); 00279 void gk_csr_Free(gk_csr_t **mat); 00280 void gk_csr_FreeContents(gk_csr_t *mat); 00281 gk_csr_t *gk_csr_Dup(gk_csr_t *mat); 00282 gk_csr_t *gk_csr_ExtractSubmatrix(gk_csr_t *mat, int rstart, int nrows); 00283 gk_csr_t *gk_csr_ExtractRows(gk_csr_t *mat, int nrows, int *rind); 00284 gk_csr_t *gk_csr_ExtractPartition(gk_csr_t *mat, int *part, int pid); 00285 gk_csr_t **gk_csr_Split(gk_csr_t *mat, int *color); 00286 gk_csr_t *gk_csr_Read(char *filename, int format, int readvals, int numbering); 00287 void gk_csr_Write(gk_csr_t *mat, char *filename, int format, int writevals, int numbering); 00288 gk_csr_t *gk_csr_Prune(gk_csr_t *mat, int what, int minf, int maxf); 00289 gk_csr_t *gk_csr_LowFilter(gk_csr_t *mat, int what, int norm, float fraction); 00290 gk_csr_t *gk_csr_TopKPlusFilter(gk_csr_t *mat, int what, int topk, float keepval); 00291 gk_csr_t *gk_csr_ZScoreFilter(gk_csr_t *mat, int what, float zscore); 00292 void gk_csr_CompactColumns(gk_csr_t *mat); 00293 void gk_csr_SortIndices(gk_csr_t *mat, int what); 00294 void gk_csr_CreateIndex(gk_csr_t *mat, int what); 00295 void gk_csr_Normalize(gk_csr_t *mat, int what, int norm); 00296 void gk_csr_Scale(gk_csr_t *mat, int type); 00297 void gk_csr_ComputeSums(gk_csr_t *mat, int what); 00298 void gk_csr_ComputeSquaredNorms(gk_csr_t *mat, int what); 00299 float gk_csr_ComputeSimilarity(gk_csr_t *mat, int i1, int i2, int what, int simtype); 00300 int gk_csr_GetSimilarRows(gk_csr_t *mat, int nqterms, int *qind, float *qval, 00301 int simtype, int nsim, float minsim, gk_fkv_t *hits, int *_imarker, 00302 gk_fkv_t *i_cand); 00303 00304 00305 00306 /* itemsets.c */ 00307 void gk_find_frequent_itemsets(int ntrans, int *tranptr, int *tranind, 00308 int minfreq, int maxfreq, int minlen, int maxlen, 00309 void (*process_itemset)(void *stateptr, int nitems, int *itemind, 00310 int ntrans, int *tranind), 00311 void *stateptr); 00312 00313 00314 /* evaluate.c */ 00315 float ComputeAccuracy(int n, gk_fkv_t *list); 00316 float ComputeROCn(int n, int maxN, gk_fkv_t *list); 00317 float ComputeMedianRFP(int n, gk_fkv_t *list); 00318 float ComputeMean (int n, float *values); 00319 float ComputeStdDev(int n, float *values); 00320 00321 00322 /* mcore.c */ 00323 gk_mcore_t *gk_mcoreCreate(size_t coresize); 00324 gk_mcore_t *gk_gkmcoreCreate(); 00325 void gk_mcoreDestroy(gk_mcore_t **r_mcore, int showstats); 00326 void gk_gkmcoreDestroy(gk_mcore_t **r_mcore, int showstats); 00327 void *gk_mcoreMalloc(gk_mcore_t *mcore, size_t nbytes); 00328 void gk_mcorePush(gk_mcore_t *mcore); 00329 void gk_gkmcorePush(gk_mcore_t *mcore); 00330 void gk_mcorePop(gk_mcore_t *mcore); 00331 void gk_gkmcorePop(gk_mcore_t *mcore); 00332 void gk_mcoreAdd(gk_mcore_t *mcore, int type, size_t nbytes, void *ptr); 00333 void gk_gkmcoreAdd(gk_mcore_t *mcore, int type, size_t nbytes, void *ptr); 00334 void gk_mcoreDel(gk_mcore_t *mcore, void *ptr); 00335 void gk_gkmcoreDel(gk_mcore_t *mcore, void *ptr); 00336 00337 00338 #ifdef __cplusplus 00339 } 00340 #endif 00341 00342 00343 #endif 00344