📄 roc.c
字号:
/* * $Id: roc.c 1269 2007-05-09 07:49:08Z mhe $ */#include <stdio.h>#include <stdlib.h>#include "lstm.h"#include "roc.h"/* compares two seqperfs */int seqperfcmp(const void *sp0, const void *sp1) { if ((*(struct seqperf*)sp0).out == ((*(struct seqperf*)sp1)).out) { return 0; } else if ((*(struct seqperf*)sp0).out > (*(struct seqperf*)sp1).out) { return -1; } else return 1; }static double *xarrtest, *yarrtest, *xarrtrain, *yarrtrain;void allocarrs(int train_size, int test_size) { xarrtest = (double*)malloc(sizeof(double) * test_size); yarrtest = (double*)malloc(sizeof(double) * test_size); xarrtrain = (double*)malloc(sizeof(double) * train_size); yarrtrain = (double*)malloc(sizeof(double) * train_size); }double roctest(int num_prot) { int i, fp, tp; double auc, prevx; qsort(sptest, num_prot, sizeof(struct seqperf), *seqperfcmp); tp = 0; fp = 0; for (i = 0; i < num_prot; i++) { if (sptest[i].target == 1.0) { tp++; } else { fp++; } xarrtest[i] = (double) fp / (negativetest * 1.0); yarrtest[i] = (double) tp / (positivetest * 1.0); } auc = 0; prevx = 0; for (i = 0; i < num_prot; i++) { if (xarrtest[i] != prevx) { auc += (xarrtest[i] - prevx) * yarrtest[i]; prevx = xarrtest[i]; } } return auc;}double roctrain(int num_prot) { int i, fp, tp; double auc, prevx; qsort(sptrain, num_prot, sizeof(struct seqperf), *seqperfcmp); tp = 0; fp = 0; for (i = 0; i < num_prot; i++) { if (sptrain[i].target == 1.0) { tp++; } else { fp++; } xarrtrain[i] = (double) fp / (negativetrain * 1.0); yarrtrain[i] = (double) tp / (positivetrain * 1.0); } auc = 0; prevx = 0; for (i = 0; i < num_prot; i++) { if (xarrtrain[i] != prevx) { auc += (xarrtrain[i] - prevx) * yarrtrain[i]; prevx = xarrtrain[i]; } } return auc;}double rocROCNtest(int num_prot) { int i, j, fp, tp; double auc, prevx; qsort(sptest, num_prot, sizeof(struct seqperf), *seqperfcmp); tp = 0; fp = 0; for (i = 0; i < num_prot; i++) { if (sptest[i].target == 1.0) { tp++; } else { fp++; } xarrtest[i] = (double) fp / (double)ROCN; yarrtest[i] = (double) tp / (positivetest * 1.0); if (fp == ROCN) { break; } } auc = 0; prevx = 0; for (j = 0; j <= i; j++) { if (xarrtest[j] != prevx) { auc += (xarrtest[j] - prevx) * yarrtest[j]; prevx = xarrtest[j]; } } return auc;}double rocROCNtrain(int num_prot) { int i, j, fp, tp; double auc, prevx; qsort(sptrain, num_prot, sizeof(struct seqperf), *seqperfcmp); tp = 0; fp = 0; for (i = 0; i < num_prot; i++) { if (sptrain[i].target == 1.0) { tp++; } else { fp++; } xarrtrain[i] = (double) fp / (double)ROCN; yarrtrain[i] = (double) tp / (positivetrain * 1.0); if (fp == ROCN) { break; } } auc = 0; prevx = 0; for (j = 0; j <= i; j++) { if (xarrtrain[j] != prevx) { auc += (xarrtrain[j] - prevx) * yarrtrain[j]; prevx = xarrtrain[j]; } } return auc;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -