Compare commits

...

7 Commits

2 changed files with 79 additions and 26 deletions
+3
View File
@@ -0,0 +1,3 @@
# Revtrans
Paquet per a la traducció reversa de pèptid a DNA tenint en compte l'ús de codons específics.
+76 -26
View File
@@ -6,22 +6,24 @@ library(reversetranslate)
ui <- fluidPage( ui <- fluidPage(
# Application title # Application title
titlePanel("Reverse tranlation"), titlePanel("Reverse translation"),
navbarPage("Apps", navbarPage("Apps",
tabPanel("Translation", tabPanel("Translation",
sidebarPanel( sidebarPanel(
fileInput("file1", "Sube fichero mfasta", multiple = FALSE), fileInput("file1", "Upload file (fasta, csv or xlsx)", multiple = FALSE),
selectInput("spec", label = h3("Specie"), selectInput("spec", label = h3("Specie"),
choices = list("Human" = 1, "E. Coli" = 2), choices = list("Human" = 1, "E. Coli" = 2),
selected = 1), selected = 1),
actionButton("calab", "Analizar") actionButton("but_an", "Analize"),
selectInput("for_output", label = h3("Output Format"),
choices = list("fasta" = 1, "tabla" = 2),
selected = 1),
), ),
mainPanel( mainPanel(
textAreaInput("seqText", label="Enter mFasta text", width = "100%", height = "500px", value=""), textAreaInput("seqText", label="Enter mFasta text", width = "100%", height = "500px", value=""),
# tags$head(tags$style(HTML("pre { white-space: pre-wrap; word-break: break-all; }"))), uiOutput("seqDNAui")
htmlOutput("seqDNA")
) )
), ),
tabPanel("Codon Frequency Table", tabPanel("Codon Frequency Table",
@@ -34,38 +36,86 @@ ui <- fluidPage(
# Define server # Define server
server <- function(input, output) { server <- function(input, output) {
obj<-reactiveValues()
output$seqDNA <- renderText({ obj$fasta<-NULL
obj$seqs<-NULL
obj$names<-NULL
observe({
if (!is.null(input$file1)){ # This ensures that the reading is only tried when File selected
if (grepl(".xlsx", input$file1$datapath)){
file<-openxlsx::read.xlsx(input$file1$datapath)
obj$fasta<-dataframe2fas(file)
}else{
if (grepl(".csv", input$file1$datapath)){
file<-read.csv(input$file1$datapath)
obj$fasta<-dataframe2fas(file)
}else{
obj$fasta<-read.fasta(input$file1$datapath)
}
}
}
})
revtrans<-eventReactive(input$but_an, {
if (input$seqText != "" | !is.null(obj$fasta)){
if (input$seqText == ""){ if (input$seqText == ""){
print("Result") seqs<-obj$fasta
}else{ }else{
seqs<-strsplit(input$seqText,"\n")[[1]] seqs<-strsplit(input$seqText,"\n")[[1]]
names_seqs<-seqs[grepl("^>",seqs)]
names_seqs<-gsub(">","", names_seqs)
seqs<-seqs[!grepl("^>", seqs)]
if(input$spec == 1){spec<-hsapien_tbl}
if(input$spec == 2){spec<-ecoli_tbl}
seqs_DNA<-c()
progress <- shiny::Progress$new(min=0, max=length(seqs))
for (i in 1:length(seqs)){
set.seed(123)
seqs_DNA<-c(seqsDNA<-reverse_translate(seqs[i],spec))
progress$set(message = "Reverse Translating", value = i)
}
paste(dataframe2fas(data.frame(names=names_seqs,
seqs=seqs_DNA)), collapse="<br>")
} }
names_seqs<-seqs[grepl("^>",seqs)]
names_seqs<-gsub(">","", names_seqs)
seqs<-seqs[!grepl("^>", seqs)]
if(input$spec == 1){spec<-hsapien_tbl}
if(input$spec == 2){spec<-ecoli_tbl}
seqs_DNA<-c()
progress <- shiny::Progress$new(min=0, max=length(seqs))
for (i in 1:length(seqs)){
set.seed(123)
seqs_DNA<-c(seqs_DNA, reverse_translate(seqs[i],spec))
progress$set(message = "Reverse Translating", value = i)
}
progress$close()
obj$seqs<-seqs_DNA
obj$names<-names_seqs
}
}) })
output$seqDNA <- renderText({
print(1)
observeEvent(input$but_an, {revtrans()})
if (!is.null(obj$seqs)){
paste(dataframe2fas(data.frame(names=obj$names, seqs=obj$seqs)), collapse="<br>")
}
})
output$seqDNAt <- renderTable({
print(2)
observeEvent(input$but_an, {revtrans()})
if (!is.null(obj$seqs)){
data.frame("Name"=obj$names, "Seqs"=obj$seqs)
}
})
{ {
output$tbl <- renderTable({ output$tbl <- renderTable({
if(input$spec == 1){spec<-hsapien_tbl} if(input$spec == 1){spec<-hsapien_tbl}
if(input$spec == 2){spec<-ecoli_tbl} if(input$spec == 2){spec<-ecoli_tbl}
spec %>% arrange(aa) spec[order(spec$aa),]
}) })
} }
output$seqDNAui<-renderUI({
observeEvent(input$but_an, {})
if (input$for_output == 1){
htmlOutput("seqDNA")
}else{
tableOutput("seqDNAt")
}
})
} }
# Run the application # Run the application