Determinação e Calibração da Concentração de Inóculo Fúngico

Via suspensão de esporos utilizando hemacitômetro

O hemacitômetro comum consiste em uma lâmina retangular em forma de H, na qual se encontram duas regiões delimitadas, (figura I). Cada região delimitada possui uma superfície de 9 mm² e profundidade de 0,1 mm. Esse compartimento possui 9 divisões/quadrantes, (figura II) que são de três tipos, são eles “A” = “B” = “C”, em que:

  • “A” – localizados nos quatro cantos e subdivididos em 15 quadrados “a”
  • “B” – localizados entre os compartimentos “A” e subdivididos em 20 quadrados “b”
  • “C” – localizado no centro e subdivididos em 25 quadrados “c”

I: Esquema de um hemacitômetro tipo Neubauer: lâmina retangular em forma de “H”, II compartimentos (A, B, C) e subcompartimentos (a-c) da lâmina (fonte: Alfenas & Mafia, 2016)

Para utilizar o aplicativo, preencha os campos conforme o indicado e escolha o quadrante no qual foi realizada a contagem de esporos. Insira o volume final de suspensão de esporos e a concentração desejada. A aplicação lhe retornara três valores:

  • Esporos por mL da suspensão inicial
  • Volume da suspensão inicial para preparo da suspensão de inóculo final em mL
  • Volume de veículo para preparo da suspensão de inóculo final em mL
#| '!! shinylive warning !!': |
#|   shinylive does not work in self-contained HTML documents.
#|   Please set `embed-resources: false` in your metadata.
#| standalone: true
#| viewerHeight: 900

webr::install("dplyr")

library(shiny)
library(dplyr)
library(bslib)

# -----------------------------
# Função inoculo (inalterada)
# -----------------------------
inoculo <- function(numero, quadrante, conc, volume) {
  fator_correcao <- case_when(
    quadrante == "A" ~ 10000,
    quadrante == "a" ~ 160000,
    quadrante == "b" ~ 200000,
    quadrante == "c" ~ 250000,
    quadrante == "c'" ~ 4000000,
    TRUE ~ 1
  )
  esporo_mL <- numero * fator_correcao
  volume_inoculo <- (conc * volume) / esporo_mL
  volume_veiculo <- volume - volume_inoculo
  return(list(esporo_mL = esporo_mL, volume_inoculo = volume_inoculo, volume_veiculo = volume_veiculo))
}

# -----------------------------
# UI
# -----------------------------
ui <- navbarPage(
  theme = bs_theme(bootswatch = "lumen"),
  tabPanel("Calibração de Inóculo",
           
           # CSS para usar largura total da tela
           tags$head(
             tags$style(HTML("
               .container-fluid {
                 max-width: 100% !important;
               }
               pre {
                 white-space: pre-wrap;
                 word-wrap: break-word;
                 overflow-x: hidden;
               }
             "))
           ),
           
           h3("Calibração de Inóculo Fúngico", 
              style = "text-align:center; margin-bottom:25px;"),
           
           fluidRow(
             # Coluna esquerda (inputs)
             column(width = 6,
                    card(
                      card_header("Parâmetros"),
                      card_body(
                        numericInput("numero", "Número MÉDIO de esporos contados:", 0, min = 1),
                        radioButtons("quadrante", "Quadrante:",
                                     c("A" = "A", "a" = "a", "b" = "b", 
                                       "c" = "c", "c'" = "c'")),
                        numericInput("volume", "Volume final desejado (mL):", 0, min = 0),
                        radioButtons("conc", "Concentração desejada:",
                                     c("10²" = 100,"10³" = 1000,"10⁴" = 10000,"10⁵" = 100000,
                                       "10⁶" = 1000000,"10⁷" = 10000000,"10⁸" = 100000000,
                                       "10⁹"=1000000000,"10¹⁰"=10000000000))
                      )
                    )
             ),
             
             # Coluna direita (resultados sem scroll, fundo verde)
             column(width = 6,
                    card(
                      card_header("Resultados"),
                      card_body(
                        tags$pre(
                          textOutput("resultado"),
                          style = "background-color:#d4edda; 
                                   color:#155724; 
                                   font-weight:bold; 
                                   padding:20px; 
                                   border-radius:10px; 
                                   font-size:16px;"
                        )
                      )
                    )
             )
           )
  )
)

# -----------------------------
# Server (inalterado)
# -----------------------------
server <- function(input, output, session) {
  output$resultado <- renderText({
    resultado <- inoculo(input$numero, input$quadrante, 
                         as.numeric(input$conc), input$volume)
    paste("Esporos por mL (Ci):", format(resultado$esporo_mL, scientific = TRUE), "\n",
          "Volume para Inóculo (Vi):", resultado$volume_inoculo, "\n",
          "Volume de Veículo (água):", resultado$volume_veiculo)
  })
}

# -----------------------------
# Run the application
# -----------------------------
shinyApp(ui = ui, server = server)


Referência: Alfenas A., Mafia R. Métodos em Fitopatologia. 2ª edição. Editora UFV. 2016.