view PLIDflow/scripts/pdbqtcorrector2step.R @ 6:795e11fac81b draft default tip

Included new tools for standardization
author bitlab
date Wed, 22 Apr 2020 06:12:00 -0400
parents 6fcfa4756040
children
line wrap: on
line source

#pdbqtcorrector2step.R prepare the out PDBQT file from pdbqtcorrector.R to run Vina 

#!/usr/bin/env Rscript      
args = commandArgs(trailingOnly=TRUE)

if(length(args) < 2){
  stop("USE: Rscript pdbqtcorrector.R <receptor_name> <galaxy_file_pdbqt> <receptor_types>")
}

#Argument definition
receptor_name <- args[1]
receptor_types_file_out <- args[3]

#Scan file
original_file <- scan(args[1], what = character(), quiet = TRUE, na.strings = "NULLAJSKAJSFL")

#13FEB2019
#In order to avoid col 1 and col 2 fussion, split by characters all words. Then paste characters fron col 1 in a word, and those for col 2, rest columns change by " "

buscador <-  c()
for(of in 1:length(original_file)){
  buscador <-  c(buscador,strsplit(original_file[of], ""))
}

fix_row_1 <- 0
for(off in 1:length(buscador)){
  if(buscador[[off]][1] == "A"){
    if(length(buscador[[off]]) >= 3){
      if(buscador[[off]][2] == "T"){
        if(buscador[[off]][3] == "O"){
          if(buscador[[off]][4] == "M"){
            fix_row_1 <- fix_row_1 + 1
            buscador[[off]][1] <- paste(buscador[[off]][1], buscador[[off]][2], buscador[[off]][3], buscador[[off]][4], sep = "")
            if(length(buscador[[off]]) == 4){
              for(off1 in 2:length(buscador[[off]])){
                buscador[[off]][off1] <- ""
              }
              for(qu in 1:(length(buscador[[off]])-1)){
                buscador[[off]] <- buscador[[off]][-length(buscador[[off]])]
                
                
              }
            }
            if(length(buscador[[off]]) > 4){
              var_aux <- c()
              for(off1 in 5:length(buscador[[off]])){
                var_aux <- c(var_aux, paste(buscador[[off]][off1]))
              }
              termino <- var_aux[1]
              for(ofu in 2:length(var_aux)){
                termino <- paste(termino, var_aux[ofu], sep = "") 
              }
              
              buscador[[off]][2] <- termino
              
              for(off1 in 3:length(buscador[[off]])){
                buscador[[off]][off1] <- ""
              }
              for(qu in 2:(length(buscador[[off]])-1)){
                buscador[[off]] <- buscador[[off]][-length(buscador[[off]])]
                
                
              }
            }
          }
        }    
      }
    }
  }
}
#print(fix_row_1)


fix_row_2 <- 0
for(off in 1:length(buscador)){
  if(buscador[[off]][1] == "H"){
    if(length(buscador[[off]]) >= 3){
      if(buscador[[off]][2] == "E"){
        if(buscador[[off]][3] == "T"){
          if(buscador[[off]][4] == "A"){
            if(buscador[[off]][5] == "T"){
              if(buscador[[off]][6] == "M"){
                fix_row_2 <- fix_row_2 + 1
                buscador[[off]][1] <- paste(buscador[[off]][1], buscador[[off]][2], buscador[[off]][3], buscador[[off]][4], buscador[[off]][5], buscador[[off]][6], sep = "")
                if(length(buscador[[off]]) == 6){
                  for(off1 in 2:length(buscador[[off]])){
                    buscador[[off]][off1] <- ""
                  }
                  for(qu in 1:(length(buscador[[off]])-1)){
                    buscador[[off]] <- buscador[[off]][-length(buscador[[off]])]
                    
                    
                  }
                }
                if(length(buscador[[off]]) > 6){
                  var_aux <- c()
                  for(off1 in 7:length(buscador[[off]])){
                    var_aux <- c(var_aux, paste(buscador[[off]][off1]))
                  }
                  termino <- var_aux[1]
                  for(ofu in 2:length(var_aux)){
                    termino <- paste(termino, var_aux[ofu], sep = "") 
                  }
                  
                  buscador[[off]][2] <- termino
                  
                  for(off1 in 3:length(buscador[[off]])){
                    buscador[[off]][off1] <- ""
                  }
                  
                  for(qu in 2:(length(buscador[[off]])-1)){
                    buscador[[off]] <- buscador[[off]][-length(buscador[[off]])]
                  }
                }
              }  
            }
          }  
        }    
      }
    }
  }
}
#print(fix_row_2)

fix_row_3 <- 0
for(off in 1:length(buscador)){
  if(buscador[[off]][1] == "T"){
    if(length(buscador[[off]]) >= 3){
      if(buscador[[off]][2] == "E"){
        if(buscador[[off]][3] == "R"){
          fix_row_3 <- fix_row_3 + 1
        }    
      }
    }
  }
}
#print(fix_row_3)

final_row <-  fix_row_1 + fix_row_2 + fix_row_3

#counter <- final_row
#print(counter)

# At this point roots "ATOM", "HETATM" and "TER" are isolated in case fusion. This step component differrent for those are pasted
for(off in 1:length(buscador)){
  if(as.character(buscador[[off]][1]) != "ATOM" && buscador[[off]][1] != "HETATM"){
    #print(off)
    pegado <- buscador[[off]][1]
    for(fus in 2:length(buscador[[off]])){
      if(length(buscador[[off]]) > 1){
        pegado <- paste(pegado, buscador[[off]][fus], sep = "")
        buscador[[off]][1] <- pegado
      }
    }
    if(length(buscador[[off]]) > 1){
      for(qu in 1:(length(buscador[[off]])-1)){
        buscador[[off]] <- buscador[[off]][-length(buscador[[off]])]
      }
    }
  }
}


# strsplit applied to the original_file return a list format. In this steps it is for changing list for vector format for buscador varible

total_original_file <- c()
for(si in 1:length(buscador)){
  total_original_file <- c(total_original_file, buscador[[si]])
}
#13feb2019

original_file <- total_original_file

#Starts pdbqtcorrector

#Calculate first root word and "TER"
for(e in 1:length(original_file)){
  if(original_file[e] == "ATOM" || original_file[e] == "HETATM" || original_file[e] == "TER"){
    k <- e
    break
  }
}

#Calculate the row number for table which conteins aligned x,y,z coordenates 
counter <- 0
for(c in e:length(original_file)){
  if(original_file[c] == "ATOM" || original_file[c] == "HETATM" || original_file[c] == "TER"){
    counter <- counter + 1
  }
}

#Table to be fills in named tabla_ordenados
tabla_ordenados <- matrix(1, nrow = (counter), ncol = 13)

#Calculate TER times and make a vector
ele_ter_vector <- 1
ter_vector <- c()
k_position <- c()
#ter_pos <- 0 #21sep2018
for(o in 1:(length(original_file))){
  if(original_file[o] =="TER"){
    k_position <- c(k_position, o)
    ter_pos <- o #21sep
    for(g in o:(o+4)){
      ter_vector <- c(ter_vector,original_file[g] )
    }
    
  }
}


#Fill in the tabla_ordenados with values scaned until counter-1 since last row (ter) has diferent length and this could give you back an error
for(i in 1:(counter-1)){
  for(j in 1:13){
    tabla_ordenados[i,j] <- original_file[k]
    if(tabla_ordenados[i,13]=="ATOM" || tabla_ordenados[i,13]== "HETATM"|| tabla_ordenados[i,13]=="TER"){
      corte <- c()
      for(v in 4:12){
        corte <- c(corte,tabla_ordenados[i,v])
      }
      coo_corte <- 1
      tabla_ordenados[i,4] <- ""
      for(m in 5:13){
        tabla_ordenados[i,m] <- corte[coo_corte]
        coo_corte <- coo_corte + 1
      }
      k <- k-1
    }
      # #################02julio2019################################
    
      if(tabla_ordenados[i,12]=="ATOM" || tabla_ordenados[i,12]== "HETATM"|| tabla_ordenados[i,12]=="TER"){


        #print("ENTERING")
        #stop()

         corte_2 <- c()
        for(iv in 5:11){
           corte_2 <- c(corte_2,tabla_ordenados[i,iv])
        }

         #print(corte_2)

         first_number <- substr(corte_2[5], 1, 4)
         second_number <- substr(corte_2[5], 5, 1000)



         coo_corte_2 <- 1
         tabla_ordenados[i,5] <- ""
         tabla_ordenados[i,12] <- ""
         tabla_ordenados[i,13] <- ""
       for(im in 6:13){
           tabla_ordenados[i,im] <- corte_2[coo_corte_2]
           coo_corte_2 <- coo_corte_2 + 1
         }
         k <- k-2

         tabla_ordenados[i,12] <- corte_2[6]
         tabla_ordenados[i,10] <- first_number
         tabla_ordenados[i,11] <- second_number




       }
      
    
    
    #################02julio2019################################
      
    
    k <- k + 1 
  }
  if(tabla_ordenados[i,1]=="TER"){
    k <- k - 8
  } 
}

#Fill in TER row until last one 
star_ter <- 2
mmm <- 1
for(ii in 1:counter){
  if(tabla_ordenados[ii,1]=="TER"){
    k <- k_position[mmm] + 4
    mmm <- mmm + 1
    y <- 2
    for(l in star_ter:(star_ter+3)){
      if(y%%3==0 && y!=6){
        tabla_ordenados[ii,y] <- ""
        y <- y + 1
        tabla_ordenados[ii,y] <- ter_vector[l]
      }
      tabla_ordenados[ii,y] <- ter_vector[l]
      y <- y +1
    }
    star_ter <- star_ter + 5
    for(b in 7:13){
      tabla_ordenados[ii,b] <- ""
    }
  }
}

##Fill if last row is not TER root
if(ter_pos < (length(original_file)-14)){ 
  tpnt <- 0
  ntn <- length(original_file) - 12
  for(jnt in 1:13){
    tabla_ordenados[nrow(tabla_ordenados),jnt] <- original_file[ntn]
    
    ntn <- ntn + 1
  }
}

##Fill in last row with TER row values ##
#ajustcel4 <-0
if(ter_pos > (length(original_file)-14)){
  for(rtv in 1:length(ter_vector)){
    ajustcel4 <- rtv #14nov2018
    if(is.na(ter_vector[rtv])){
      ajustcel4 <- rtv - 1
    }
  }
  
  ter_vector_numeric <- strsplit(ter_vector[ajustcel4], "")
  
  last_ter <- length(ter_vector)-4
  if(length(ter_vector_numeric[[1]]) != 1){
    if(length(ter_vector) < 5){
      
      for(jj in 1:6){
        tabla_ordenados[counter,jj] <- ter_vector[last_ter]
        
        if(jj%%3==0 && jj !=6 || jj == 4){    #he incluido el jj == 4
          tabla_ordenados[counter, jj] <- ""
          last_ter <- last_ter - 1
        }
        last_ter <- last_ter + 1
      }
      for(jj in 7:13){
        tabla_ordenados[counter, jj] <- ""
      }
    }
    
    if(length(ter_vector) >= 5){
      for(jj in 1:7){
        tabla_ordenados[counter,jj] <- ter_vector[last_ter]
        if(jj%%3==0 && jj !=6){    #he incluido el jj == 4
          tabla_ordenados[counter, jj] <- ""
          last_ter <- last_ter -1 
        }
        last_ter <- last_ter + 1
      }
      for(jj in 8:13){
        tabla_ordenados[counter, jj] <- ""
      }
    }
  }
  
  if(length(ter_vector_numeric[[1]]) == 1){
    if(length(ter_vector) <= 5){
      
      for(jj in 1:6){
        tabla_ordenados[counter,jj] <- ter_vector[last_ter]
        
        if(jj%%3==0 && jj !=6 ){    #he incluido el jj == 4
          tabla_ordenados[counter, jj] <- ""
          last_ter <- last_ter - 1
        }
        last_ter <- last_ter + 1
      }
      for(jj in 7:13){
        tabla_ordenados[counter, jj] <- ""
      }
    }
    
    if(length(ter_vector) > 5){
      for(jj in 1:7){
        tabla_ordenados[counter,jj] <- ter_vector[last_ter]
        if(jj%%3==0 && jj !=6){    #he incluido el jj == 4
          tabla_ordenados[counter, jj] <- ""
          last_ter <- last_ter -1 
        }
        last_ter <- last_ter + 1
      }
      for(jj in 8:13){
        tabla_ordenados[counter, jj] <- ""
      }
    }
  }
  
}


#View(tabla_ordenados)

#19octubre2018

#listacol11 <- matrix(0, nrow = nrow(tabla_ordenados), ncol = 1)
twopoint <- c()
for(dc11 in  1:nrow(tabla_ordenados)){
  listacol11 <-strsplit(tabla_ordenados[dc11,11], "")
  
  if(length(listacol11[[1]]) != 0){
    num_poin <- 0
    for(findpoint in 1:length(listacol11[[1]])){
      if(listacol11[[1]][findpoint] == "."){
        num_poin <- num_poin + 1
      }
    }
    if(num_poin == 2){
      twopoint <- c(twopoint, dc11)
      unopto0 <- listacol11[[1]][1] 
      dospto0 <- listacol11[[1]][5] 
      for(div1pto in 2:4){
        unopto0 <- paste(unopto0, listacol11[[1]][div1pto], sep = "")
      }
      for(div2pto in 6:length(listacol11[[1]])){
        dospto0 <- paste(dospto0, listacol11[[1]][div2pto], sep = "")
      }
      #19oct2018 Voy a guardar cada fila en un vector para luego pegarlo
      vec_guarfilas <- c()
      for(vgf in 1:10){
        
        if(tabla_ordenados[dc11,vgf] != ""){
          vec_guarfilas <- c(vec_guarfilas, tabla_ordenados[dc11,vgf])
        }
      }
      vec_guarfilas[10] <- unopto0
      vec_guarfilas[11] <- dospto0
      vec_guarfilas[12] <- tabla_ordenados[dc11,12]
      vec_guarfilas[13] <- tabla_ordenados[dc11,13]
      
      #print(vec_guarfilas)
      for(mvc in 1:13){
        tabla_ordenados[dc11,mvc] <- vec_guarfilas[mvc]
      }
      
    }
  }
}

#View(tabla_ordenados)
#acaba 19octubre2018



#Make a table containing for each cell the number of characters for each for the tabla_ordenados
tabla_ordenados_numcarac <- matrix(1, nrow = nrow(tabla_ordenados), ncol = ncol(tabla_ordenados))

for(i in 1:nrow(tabla_ordenados)){
  for(j in 1:ncol(tabla_ordenados)){
    caracteres <- strsplit(tabla_ordenados[i,j], "")
    num_carac <- 0
    # if(tabla_ordenados[i,j] == ""){
    #   num_carac <- ""
    # }
    #if(tabla_ordenados[i,j] != ""){ 
    for(k in 1:length(caracteres[[1]])){
      num_carac <- num_carac + 1
    }
    tabla_ordenados_numcarac[i,j] <- num_carac
    #} 
  }
}
#View(tabla_ordenados_numcarac) #27mar2019

#################03julio2019###################3     ##

for(i in 1:nrow(tabla_ordenados)){
  
    if(tabla_ordenados_numcarac[i,4] == 2 && tabla_ordenados_numcarac[i,5] == 3){
      cambio_posicion5 <- tabla_ordenados[i,5]
      tabla_ordenados[i,5] <- ""
      tabla_ordenados_numcarac[i,5] <- 2
      tabla_ordenados[i,4] <- cambio_posicion5
      tabla_ordenados_numcarac[i,4] <- 3 
    }
  }

for(i in 1:nrow(tabla_ordenados)){
  if(tabla_ordenados_numcarac[i,5] == 2 && tabla_ordenados_numcarac[i,6] == 5){
    Aaposicion5 <- substr(tabla_ordenados[i,6], 1, 1)
    cambio_posicion5 <- substr(tabla_ordenados[i,6], 2, 5)
    tabla_ordenados[i,5] <- Aaposicion5
    tabla_ordenados_numcarac[i,5] <- 1
    tabla_ordenados[i,6] <- cambio_posicion5
    tabla_ordenados_numcarac[i,6] <- 4
  }
}

for(i in 1:nrow(tabla_ordenados)){
  if(tabla_ordenados[i, 3] < 6 && tabla_ordenados[i, 4] == ""){
  tabla_ordenados[i, 4] <- "XX"
  }
}

#################03julio2019###################3     ##

# &&&&& 03sep2019 &&&&&&&&&&&&
if(tabla_ordenados_numcarac[counter,5] >= 5){
  ter_5_col <- substr(tabla_ordenados[counter, 5], 1, 1)
  ter_6_col <- substr(tabla_ordenados[counter, 5], 2, 1000)
  
  
  tabla_ordenados[counter, 5] <- ter_5_col
  tabla_ordenados[counter, 6] <- ter_6_col
}

# &&&&& 03sep2019 &&&&&&&&&&&&


####····̣# &&&&& 30oct2019 &&&&&&&&&&&&
for(ac3 in 1:counter){
  if(tabla_ordenados_numcarac[ac3,3] >= 7){
  ter_3_col <- substr(tabla_ordenados[ac3, 3], 1, 4)
  ter_4_col <- substr(tabla_ordenados[ac3, 3], 5, 1000)
  
  
  tabla_ordenados[ac3, 3] <- ter_3_col
  tabla_ordenados[ac3, 4] <- ter_4_col
  tabla_ordenados_numcarac[ac3, 3] <- 4
  tabla_ordenados_numcarac[ac3, 4] <- 3
}

}

####····̣# &&&&& 30oct2019 &&&&&&&&&&&&





#:;:;:;:;:;:;:;:;________09septiembre2019. Remove line with "Na" in column 13 in tabla_ordenados and tabla_ordenados_numcarac 

# quitar_fila <- 0
# for(ena in 1:counter){
#   if(tabla_ordenados[ena,13] == "Na"){
#     print(ena)
#     tabla_ordenados_numcarac <- tabla_ordenados_numcarac[-ena,]
#     ena <- ena - 1
#     quitar_fila <- quitar_fila + 1
#     counter <- counter - quitar_fila
#     
#   }
# }
# 
# tabla_ordenados <- subset(tabla_ordenados, tabla_ordenados[,13] != "Na")

#:;:;:;:;:;:;:;:;________09septiembre2019

#View(tabla_ordenados)
#View(tabla_ordenados_numcarac) 




#Fit spaces for write()
#Fit spaces for write() 
#Pairwise 1col-2col con 1col == "ATOM"

for(i in 1:nrow(tabla_ordenados)){
  linea <- c()
  if(tabla_ordenados_numcarac[i,1] == 4){
    num_espacios <- 6
    ajuste <- 0
    for(a in 1:(tabla_ordenados_numcarac[i,2])){
      if(a != tabla_ordenados_numcarac[i,2]){
        ajuste <- ajuste + 1
      }
      if(a == tabla_ordenados_numcarac[i,2]){
        espacios <- rep(" ", num_espacios-ajuste)
        linea <- c(espacios, tabla_ordenados[i,2])
        break
      }
    }
  }
  
  #1col == HETATM INI
  if(tabla_ordenados_numcarac[i,1] == 6){
    num_espacios <- 4
    ajuste <- 0
    for(a in 1:(tabla_ordenados_numcarac[i,2])){
      if(a != tabla_ordenados_numcarac[i,2]){
        ajuste <- ajuste + 1
      }
      if(a == tabla_ordenados_numcarac[i,2]){
        espacios <- rep(" ", num_espacios-ajuste)
        linea <- c(espacios, tabla_ordenados[i,2])
        
        ###21feb2019
        if(tabla_ordenados_numcarac[i,2] == 5){
          espacios <- rep(" ", (num_espacios-ajuste) + 1)
          linea <- c(espacios, tabla_ordenados[i,2])
        }
        ###21feb2019
        
        break
      }
    }
  }
  #1col == HETATM FIN
  
  ##1col == TER INICIO
  if(tabla_ordenados_numcarac[i,1] == 3){
    num_espacios <- 7
    ajuste <- 0
    for(a in 1:(tabla_ordenados_numcarac[i,2])){
      if(a != tabla_ordenados_numcarac[i,2]){
        ajuste <- ajuste + 1
        espacios <- rep(" ", num_espacios-ajuste)
      }
      if(a == tabla_ordenados_numcarac[i,2]){
        espacios <- rep(" ", num_espacios-ajuste)
        linea <- c(espacios, tabla_ordenados[i,2])
        break
      }
    }
  }
  ##1col == TER FIN
  
  ##Pairwise 2col-3col 
  linea2 <- c()
  for(b in 1:(tabla_ordenados_numcarac[i,3])){
    if(b < 4){
      espacios2 <- rep(" ", 2)
    }
    if(b >= 4){
      if(tabla_ordenados[i,4] == ""){
        espacios2 <- rep(" ", 2)
      }
      
      if(tabla_ordenados[i,4]!= ""){
        espacios2 <- rep(" ", 1) 
      }
    }
  }
  
  if(tabla_ordenados_numcarac[i,3] >= 8){
    e_espacios2 <- length(espacios2)-1
    espacios2 <- rep(" ",e_espacios2)
    
    
  }
  
  linea2 <- c(linea, espacios2, tabla_ordenados[i,3])
  
  ###21feb2019
  if(tabla_ordenados_numcarac[i,1] == 6 && tabla_ordenados_numcarac[i,2] == 5){
    espacios2 <- espacios2[-length(espacios2)]
    linea2 <- c(linea, espacios2, tabla_ordenados[i,3])
  }
  ###21feb2019
  
  ###Pairwise 3col-4col 
  linea3 <- c()
  
  for(c in 1:(tabla_ordenados_numcarac[i,4])){
    
    #28nov
    if(c == 2){
      if(tabla_ordenados_numcarac[i,1] == 6 && tabla_ordenados_numcarac[i,3] == 1){
        espacios3 <- rep(" ", 2)
      }
      if(tabla_ordenados_numcarac[i,1] == 6 && tabla_ordenados_numcarac[i,3] == 2){
        espacios3 <- rep(" ", 1)
      }
      if(tabla_ordenados_numcarac[i,1] == 6 && tabla_ordenados_numcarac[i,3] == 2 && tabla_ordenados_numcarac[i,5] == 1){
        espacios3 <- rep(" ", 3)
      }
      
      #########21junio2019
      
      if(tabla_ordenados_numcarac[i,1] == 4 &&  tabla_ordenados_numcarac[i,3] == 1 && tabla_ordenados_numcarac[i,6] == 5){
        espacios3 <- rep(" ", 2) 
      }
      if(tabla_ordenados_numcarac[i,1] == 4 &&  tabla_ordenados_numcarac[i,3] == 2 && tabla_ordenados_numcarac[i,6] == 5){
        espacios3 <- rep(" ", 1) 
      }
      
      ########21junio2019
      
      
      
      
    }
    #28nov. Hace falta corregir para el resto de HETATM
    
    
    if(c == 3){
      if(b == 1){
        espacios3 <- rep(" ", 3)
      }
      if(b == 2){
        espacios3 <- rep(" ", 2)
      }
      if(b >= 3){
        espacios3 <- rep(" ", 1)
      }
    }
    if(c == 4){
      if(b == 1){
        espacios3 <- rep(" ", 2)
      }
      if(b >= 2){
        espacios3 <- rep(" ", 1)
      }
    }
    #27mar2019 ######################################
    if(c == 5){
      if(b >= 2){
        espacios3 <- rep("", 1)
      }
    }
    #27mar2019 ######################################
  }
    
  linea3 <- c(linea2, espacios3, tabla_ordenados[i,4])
                                                      ####03julio2019####################### #####################
# if(tabla_ordenados_numcarac[i,3] == 3 && tabla_ordenados_numcarac[i,4] == 3 && tabla_ordenados_numcarac[i,5] == 2 && tabla_ordenados_numcarac[i,6] == 5){
#   linea3 <- c(linea2, " ", tabla_ordenados[i,4])
# }
  ####03julio2019####################### #####################
  
  #TER
  if(tabla_ordenados_numcarac[i,1] == 3){
    num_espacios4 <- 8  
    ajuste_t1 <- 0
    for(l in 1:tabla_ordenados_numcarac[i,4]){
      if(l != tabla_ordenados_numcarac[i,4]){
        ajuste_t1 <-ajuste_t1 + 1
        num_espacios4 <- 8 - ajuste_t1
      }
      if(l == tabla_ordenados_numcarac[i,4]){
        num_espacios4 <- 8 - ajuste_t1
      }
    }
    linea3 <- c(linea, rep(" ", num_espacios4), tabla_ordenados[i,4])
    
  }
  
  ####Pairwise 4col-5col 
  linea4 <- c()
  if(tabla_ordenados_numcarac[i,1] != 3){
    if(tabla_ordenados_numcarac[i,3] >= 7){
      linea4 <- c(linea3, tabla_ordenados[i,5])
    }
    if(tabla_ordenados_numcarac[i,3] < 7){
      linea4 <- c(linea3, " ", tabla_ordenados[i,5])
      ###18oct2018
      if(tabla_ordenados_numcarac[i,3] >= 3 && tabla_ordenados[i,4] == ""){
        linea4 <- c(linea2, " ", tabla_ordenados[i,5])
      }
      ###18oct2018
    }
    #------------29julio2019--------------------#
    
    if(isTRUE(tabla_ordenados[i,3] == "NA") && tabla_ordenados[i,4] == ""){
      linea4 <- c(linea2, rep(" ", 6), tabla_ordenados[i,5])
    }
    
    
    #------------29julio2019--------------------#
  }
  
  
  
  
  if(tabla_ordenados_numcarac[i,1] == 3){
    
    linea4 <- c(linea3, " ", tabla_ordenados[i,5])
    ##
    if(tabla_ordenados[i,4] == ""){
      linea4 <- c(linea2,rep(" ", 4),tabla_ordenados[i,5])
    }
    
    ##
    
    
  }
  
  #####Pairwise 5col-6col. NO espacios4
  if(tabla_ordenados_numcarac[i,1] != 3){
    linea5 <-c()
    for(d in 1:(tabla_ordenados_numcarac[i,6])){
      if(d == 1){
        espacios5 <- rep(" ", 3)  
      }
      if(d == 2){
        espacios5 <- rep(" ", 2)  
      }
      if(d >= 3){
        espacios5 <- rep(" ", 1)  
      }
      
      ##################21junio2109#############
      
      if(tabla_ordenados_numcarac[i,3] == 2 && tabla_ordenados_numcarac[i,5] == 2 && tabla_ordenados_numcarac[i,6] == 5){
        espacios5 <- rep(" ", 2)
      }
      
      ##################21junio2109#############
                                                    ###########03julio################                 ############
      # if(tabla_ordenados_numcarac[i,3] == 1 && tabla_ordenados_numcarac[i,4] == 3 && tabla_ordenados_numcarac[i,5] == 2 && tabla_ordenados_numcarac[i,6] == 5){
      #   
      #   espacios5 <- ""
      # }
      
      ###########03julio################                 ############
      
      
    }
    linea5 <- c(linea4, espacios5, tabla_ordenados[i,6])
    
    
  }
  if(tabla_ordenados_numcarac[i,1] == 3){
    for(dd in 1:(tabla_ordenados_numcarac[i,6])){
      if(dd == 1){
        espacios55 <- rep(" ", 3) 
      }
      
      #14nov
      if(dd == 1 && tabla_ordenados_numcarac[i,5] == 3){
        espacios55 <- rep(" ", 1)
      }
      #14nov
      
      if(dd == 2){
        espacios55 <- rep(" ", 2)
      }
      if(dd >= 3){
        espacios55 <- rep(" ", 1)
      }
      
      
    }
    linea5 <- c(linea4, espacios55, tabla_ordenados[i,6])
    
    #------------------05sep2019------------#
    
    if(tabla_ordenados_numcarac[i,6] == 1 && tabla_ordenados_numcarac[i,5] >= 5){
      espacios55 <- rep(" ", 1)
      linea5 <- c(linea4, espacios55, tabla_ordenados[i,6])
    }
    
    #------------------05sep2019------------#
    
  }
  
  
  
  
  ######Pairwise 6col-7col  
  linea6 <- c()
  if(tabla_ordenados_numcarac[i,7] == 5){
    espacios6 <- rep(" ", 7)
    linea6 <-c(linea5, espacios6, tabla_ordenados[i,7]) 
    
    ###################21junio2109#################
    if(tabla_ordenados_numcarac[i,3] == 4 && tabla_ordenados_numcarac[i,6] == 5){
      espacios6 <- rep(" ", 6)
      linea6 <-c(linea5, espacios6, tabla_ordenados[i,7])
    }
    
    ###################21junio2109#################
    
    ##    03julio2019   #########
    
    if(tabla_ordenados_numcarac[i,6] == 4 && tabla_ordenados_numcarac[i,6] == 4){
      espacios6 <- rep(" ", 6)
      linea6 <-c(linea5, espacios6, tabla_ordenados[i,7]) 
    }
    
    ##    03julio2019   #########
    
    
  }
  
  if(tabla_ordenados_numcarac[i,7] > 5){
    out_spaces <- tabla_ordenados_numcarac[i,7] - 5
    espacios6 <- rep(" ", (7-out_spaces))
    linea6 <-c(linea5, espacios6, tabla_ordenados[i,7]) 
    
    ###################21junio2109#################
    if(tabla_ordenados_numcarac[i,3] == 4 && tabla_ordenados_numcarac[i,6] == 5){
      out_spaces <- tabla_ordenados_numcarac[i,7] - 4
      espacios6 <- rep(" ", (7-out_spaces))
      linea6 <-c(linea5, espacios6, tabla_ordenados[i,7]) 
    }
    
    ###################21junio2109#################
    ##    03julio2019   #########
    
    if(tabla_ordenados_numcarac[i,6] == 4 && tabla_ordenados_numcarac[i,6] == 4){
      out_spaces_2 <- tabla_ordenados_numcarac[i,7] - 4
      espacios6 <- rep(" ", (7-out_spaces_2))
      linea6 <-c(linea5, espacios6, tabla_ordenados[i,7]) 
    }
    
    ##    03julio2019   #########
    
    
  }
  
  ######################################27mar2019
  # 
  # if(tabla_ordenados_numcarac[i,4] == 5){
  #   espacios6 <- rep(" ",5)
  #   linea6 <-c(linea5, espacios6, tabla_ordenados[i,7]) 
  # }
  # 
  # if(tabla_ordenados_numcarac[i,4] > 5){
  #   espacios6 <- rep(" ",4)
  #   linea6 <-c(linea5, espacios6, tabla_ordenados[i,7]) 
  # }
 
  ######################################27mar2019
  
  
  #######Pairwise 7col-8col 
  linea7 <- c()
  ajuste3 <- 0
  if(tabla_ordenados_numcarac[i,8] == 5){
    espacios7 <- rep(" ", 3)
    linea7 <-c(linea6, espacios7, tabla_ordenados[i,8]) 
  }
  if(tabla_ordenados_numcarac[i,8] == 6){
    espacios7 <- rep(" ", 2)
    linea7 <-c(linea6, espacios7, tabla_ordenados[i,8]) 
  }
  if(tabla_ordenados_numcarac[i,8] > 6){
    espacios7 <- rep(" ", 1)
    linea7 <-c(linea6, espacios7, tabla_ordenados[i,8]) 
  }
  
  ########Pairwise 8col-9col
  linea8 <- c()
  ajuste4 <- 0
  if(tabla_ordenados_numcarac[i,9] == 5){
    espacios8 <- rep(" ", 3)
    linea8 <-c(linea7, espacios8, tabla_ordenados[i,9]) 
  }
  if(tabla_ordenados_numcarac[i,9] == 6){
    espacios8 <- rep(" ", 2)
    linea8 <-c(linea7, espacios8, tabla_ordenados[i,9]) 
  }
  if(tabla_ordenados_numcarac[i,9] > 6){
    espacios8 <- rep(" ", 1)
    linea8 <-c(linea7, espacios8, tabla_ordenados[i,9]) 
  }
  
  #########Pairwise 9col-10col
  linea9 <- c()
  if(tabla_ordenados_numcarac[i,10] == 4){
    espacios9 <- rep(" ", 2)
    linea9 <- c(linea8, espacios9, tabla_ordenados[i,10])
  }
  if(tabla_ordenados_numcarac[i,10] > 4){
    espacios9 <- rep(" ", 1)
    linea9 <- c(linea8, espacios9, tabla_ordenados[i,10])
  }
  
  ##########Pairwise 10col-11col
  # linea10 <- c()
  # if(tabla_ordenados_numcarac[i,11] == 4){
  #   espacios10 <- rep(" ", 2)
  #   linea10 <- c(linea9, espacios10, tabla_ordenados[i,11])
  # }
  # if(tabla_ordenados_numcarac[i,11] > 4){
  #   espacios10 <- rep(" ", 1)
  #   linea10 <- c(linea9, espacios10, tabla_ordenados[i,11])
  # }
  #22oct2018
  ##########Pairwise 10col-11col
  linea10 <- c()
  if(tabla_ordenados_numcarac[i,11] == 4){
    espacios10 <- rep(" ", 3)
    linea10 <- c(linea9, espacios10, tabla_ordenados[i,11])
  }
  if(tabla_ordenados_numcarac[i,11] == 5){
    espacios10 <- rep(" ", 2)
    linea10 <- c(linea9, espacios10, tabla_ordenados[i,11])
  }
  
  if(tabla_ordenados_numcarac[i,11] > 5){
    espacios10 <- rep(" ", 1)
    linea10 <- c(linea9, espacios10, tabla_ordenados[i,11])
  }
  #22oct2018
  
  
  ###########Pairwise 11col-12col
  linea11 <- c()
  if(tabla_ordenados_numcarac[i,12] == 5){
    espacios11 <- rep(" ", 5)
    linea11 <-c(linea10, espacios11, tabla_ordenados[i,12])
  } 
  ajuste5 <- 0
  for(h in 6:tabla_ordenados_numcarac[i,12]){
    if(tabla_ordenados_numcarac[i,12] > 5){
      ajuste5 <- ajuste5 + 1
      espacios11 <- rep(" ", (5-ajuste5))
      ##espacios11 <- rep(" ", (5-ajuste5))
      linea11 <-c(linea10, espacios11, tabla_ordenados[i,12])
    }  
  }
  
  ############Pairwise 12col-13col
  linea12 <- c(linea11," ", tabla_ordenados[i,13])
  
  #TER
  if(tabla_ordenados_numcarac[i,1] == 3){
    cabecera <- tabla_ordenados[i,1]
    for(w in 1:length(linea5)){
      cabecera <- paste(cabecera,linea5[w], sep = "")
    }
    #write(cabecera, file = "1z95_wo_198andwater_ph7_MOD.pdbqt", append = TRUE)
    write(cabecera, file = args[2], append = TRUE)
  }
  
  #!= TER
  if(tabla_ordenados_numcarac[i,1] != 3){
    cabecera <- tabla_ordenados[i,1]
    for(w in 1:length(linea12)){
      cabecera <- paste(cabecera,linea12[w], sep = "")
    }
    #write(cabecera, file = "1z95_wo_198andwater_ph7_MOD.pdbqt", append = TRUE)
    write(cabecera, file = args[2], append = TRUE)
  }
}

#21junio2019
# #### Make file receptor_atm_types.txt to be paste in the GPF file ###

prereceptor_atmtypes <- c()
for(i in 1:nrow(tabla_ordenados)){
  if(tabla_ordenados[i,13] != ""){
    prereceptor_atmtypes <- c(prereceptor_atmtypes, tabla_ordenados[i,13])
  }
}
# 
 receptor_atmtypes <- unique(prereceptor_atmtypes)
#

filtered_receptor <- c()
for(i in 1:length(receptor_atmtypes)){

	#print(receptor_atmtypes[i])
	#print(is.na(as.numeric(receptor_atmtypes[i])))

	if(suppressWarnings(is.na(as.numeric(receptor_atmtypes[i])))){
		filtered_receptor <- c(filtered_receptor, receptor_atmtypes[i])
	}

}

receptor_atmtypes <- filtered_receptor

cabeceratm <- receptor_atmtypes[1]
for(rat in 2:length(receptor_atmtypes)){

  cabeceratm <- paste(cabeceratm, receptor_atmtypes[rat], sep = " ")
}

write(cabeceratm, file = receptor_types_file_out, append = FALSE)


#21junio2019




# #::::::::06sep2019:::::::::::::::::#
# 
# #Make the file receptor_types_file_out.txt removing duplicates and Na 
# #21junio2019
# 
# # 
# prereceptor_atmtypes <- c()
# for(i in 1:nrow(tabla_ordenados)){
#   if(tabla_ordenados[i,13] != ""){
#     prereceptor_atmtypes <- c(prereceptor_atmtypes, tabla_ordenados[i,13])
#   }
# }
# # 
# # #print(prereceptor_atmtypes)
# # 
# receptor_atmtypes <- unique(prereceptor_atmtypes)
# #21junio2019
# 
# quitar <- 0
# for(i in 1:length(receptor_atmtypes)){
#   if(isTRUE(receptor_atmtypes[i] == "Na")){
#     quitar <- i
#     break
#   }
# }
# 
# if(quitar == 0){
#   cabeceratm <- receptor_atmtypes[1]
#   for(rat in 2:length(receptor_atmtypes)){
#     cabeceratm <- paste(cabeceratm, receptor_atmtypes[rat], sep = " ")
#   }
#   
#   write(cabeceratm, file = "receptor_types_file_out.txt", append = FALSE)
# }
# 
# if(quitar != 0){
#   receptor_atmtypes <- receptor_atmtypes[-quitar]    
#   cabeceratm_types <- receptor_atmtypes[1]
#   for(at_t in 2:length(receptor_atmtypes)){
#    cabeceratm_types <- paste(cabeceratm_types, receptor_atmtypes[at_t], sep = " ")
#   }
#   write(cabeceratm_types, file = "receptor_types_file_out.txt", append = FALSE)
# }