Pec = read.csv("E:\\AOP\\trained_models\\PEC(input).csv",stringsAsFactors = F)
Pec_smile_list = Pec[,4] #pec의 smiles를 담는 리스트
list = list.files(path="F:\\Seperated", pattern = NULL) #디렉토리안의 toxcast 데이터 리스트.
p = 2 #index of PEC_Prection -->ligand인 물질 찾기 위해.
pecdata = read.csv("E:\\AOP\\trained_models\\pecdata_encoded_model.csv")
for (i in list)
{
cn = i #열이름
cn = sub(pattern="(input).csv", replacement="", x=cn,fixed=TRUE) #열 이름을 얻기 위해 뒤에 파일이름을 지움.
Toxcast = read.csv(paste0("F:\\Seperated\\", i),stringsAsFactors = F)
Toxcast_smile_list = Toxcast[,2] # toxcast smile list(첫번째 assay). 2번째 열이 SMILES
nop = 0 #number of prediction nop값이 toxcast에 이미 있는 값.(기록)
#
new_list = c()
for(ps in Pec_smile_list)
{
for(ts in Toxcast_smile_list)
{
if(ps == ts)
{
nop=nop+1
new_list = c(new_list,ps) #toxcast에 있는 SMILE들을 new_list에 저장한다.
} #pec중 toxcast에 있는 것의 개수= nop.이 값을 기록하면 된다.
}
#pec prediction 파일을 루프 돌기 위해서.리스트에 집어넣는다.
#list_pec_prection = list.files(path="E:\\AOP\\trained_models\\PEC_Prediction_encoded", pattern = NULL)
prediction_file_name = paste0( paste0("PEC(Input).txt_predictions_",i), "_model.h5.txt")
Pec_prediction = read.csv(paste0("E:\\AOP\\trained_models\\PEC_Prediction_encoded\\", prediction_file_name),stringsAsFactors = F, sep = "\t")
y = subset(Pec_prediction, !(SMIELS %in% new_list) & Prediction == "1" ) #SMILES이 NEW_LIST안에 있지 않은 것만 골랐다는건 prediction-positive의 개수
#y값에 있는 결과를 기록하면 된다.(기록)
#y = subset(Pec_prediction, SMILES %in% new_list)
}
pecdata[6,cn] = 460
pecdata[7,cn] = nop # pec중 toxcast에 있는 것의 개수
pecdata[8,cn] = 460-nop #pec중 toxcast에 없는 것의 개수
pecdata[9,cn] = nrow(y) # number of rows수 predic-positive
print(cn)
write.csv(pecdata,"E:\\AOP\\trained_models\\pecdata_encoded_model.csv" )
}
첫 130개의 prediction 파일은 잘 수행되었는데 그 이후에서 cannot find object 'SMIELS'오류가 떴다... 이것때문에 약 1시간 반 삽질.... 결국 해결했는데 1월2일 이후에 만든 prediction 파일들에 colname이 SMILES(스마일스)가 아니라 SMIELS(스미엘스.....)로 되어있었다... 오타하나때문에 2시간을 날려먹었다. 왜 오류메세지를 제대로 해석하지 못하고 삽질을 2시간이나 했을까?...난 너무 멍청한것 같다 그래도 뭔가 배운건 있는것 같다.