## Technologies and Tools The repository primarily utilizes the following technologies and tools: - R - Shiny - JavaScript - Node.js - Electron - HTML - CSS - Shell scripting - Git The main technologies used are R and the Shiny web framework for the core application functionality. JavaScript, Node.js, and Electron are used to package the Shiny app as a standalone desktop application. HTML and CSS are used for the UI layout and styling. Shell scripting (Bash) is used for setup and build automation. Git is used for version control. ## Functionality The Farber Screen Machine is a GUI application for analyzing and visualizing chemical screening data. Its main features include: - Creating or uploading a main database file from chemical screening results - Linking and managing matched .sdf files for chemical structure information - Sampling, filtering, and coloring screening data - Exploring screening results with interactive visualizations: - Dual flashlight plots - Chemical similarity vs screen similarity plots - Specific CID chemical similarity vs screen results plots - Comparing a list of CIDs to an .sdf library - Standalone tools for SDF file manipulation and ID mapping The repository contains the core Shiny application code, JavaScript code for the Electron app, shell scripts for setup and building, and configuration files. ## Relevant Skills - Integrating R and Shiny with JavaScript and Node.js using Electron for building cross-platform desktop apps - Modularizing Shiny app code into UI and server components and separate R files for maintainability - Using reactive programming concepts in Shiny (reactive values, expressions, observers) for dynamic UIs - Creating interactive plots and visualizations with packages like plotly - Performing CRUD operations and data transformations on chemical screening data - Comparing chemical structures using various similarity metrics - Parallel processing with the parallel package for improved performance - Packaging R code and dependencies for portability using renv - Cross-platform scripting using Bash - Familiarity with version control using Git ## Example Code - Shiny reactive programming: ```r # Create a reactive value to store the data values <- reactiveValues(data = NULL) # Update the data when an input changes observeEvent(input$file, { values$data <- read.csv(input$file$datapath) }) # Render a plot using the reactive data output$plot <- renderPlot({ plot(values$data) }) ``` - Comparing chemical structures: ```r # Calculate Tanimoto similarity between two molecules fp1 <- rcdk::get.fingerprint(mol1, type = "maccs") fp2 <- rcdk::get.fingerprint(mol2, type = "maccs") tanimoto <- rcdk::tanimoto.coeff(fp1, fp2) ``` - Parallel processing: ```r # Perform a computation in parallel result <- mclapply(data, function(x) { # Computationally intensive task }, mc.cores = detectCores()) ``` ## Notable Achievements - Developed a comprehensive, user-friendly application for chemical screening data analysis and visualization - Integrated various technologies (R, Shiny, JavaScript, Electron) to create a seamless desktop experience - Implemented advanced cheminformatics techniques like chemical structure similarity - Optimized performance through parallel processing and efficient data handling - Utilized software engineering best practices such as modularization and reactive programming - Achieved cross-platform compatibility through containerization and build scripting In summary, the Farber Screen Machine showcases strong skills in full-stack application development, bridging the gap between scientific computing with R and desktop GUI development using web technologies. The project highlights the ability to create domain-specific tools that are both powerful and accessible to end-users.


© 2024 Elias Weston-Farber. All rights reserved.