] (paper2)predic-positive 개수구하기 using R
본문 바로가기

카테고리 없음

(paper2)predic-positive 개수구하기 using R

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시간이나 했을까?...난 너무 멍청한것 같다 그래도 뭔가 배운건 있는것 같다.