This function constructs Support Vector Machine (SVM) models to find optimal decision boundaries that separate positive and negative control samples in event coverage space. It uses radial kernel SVM to create non-linear decision boundaries for both decrease and increase directions.
SVM(ECdataList)A list containing two data frames:
A data frame with SVM decision boundary points for decrease direction. Each row contains a Z-score threshold and the corresponding event coverage threshold that separates positive and negative controls.
A data frame with SVM decision boundary points for increase direction. Each row contains a Z-score threshold and the corresponding event coverage threshold that separates positive and negative controls.
A list containing event coverage data from the EventCoverage() function. The list should contain:
EC_N_D: Event coverage matrix for negative controls in decrease direction
EC_P_D: Event coverage matrix for positive controls in decrease direction
EC_N_I: Event coverage matrix for negative controls in increase direction
EC_P_I: Event coverage matrix for positive controls in increase direction
ZseqList: Z-score thresholds for both directions
Yajing Hao, Shuyang Zhang, Junhui Li, Guofeng Zhao, Xiang-Dong Fu
The function performs the following steps:
Prepares training data by combining positive and negative control event coverage data
Trains separate SVM models for decrease and increase directions using radial kernel
Uses pre-tuned hyperparameters (cost=20, gamma=3 for decrease; cost=50, gamma=2 for increase)
Generates prediction grids across the Z-score and event coverage space
Identifies decision boundary points where the SVM prediction changes from negative to positive
Returns the optimal threshold points for each Z-score bin
The resulting SVM curves can be used for background correction in zeta score calculations to improve the accuracy of hit identification.
data(countMat)
data(negGene)
data(posGene)
ZscoreVal <- Zscore(countMat, negGene)
ECdataList <- EventCoverage(ZscoreVal, negGene, posGene, binNum=10, combine=TRUE)
SVM(ECdataList)
Run the code above in your browser using DataLab