Skip to content

Instantly share code, notes, and snippets.

View smach's full-sized avatar

Sharon Machlis smach

View GitHub Profile
@smach
smach / app_ollama.R
Last active March 21, 2025 16:25
Sample R Shiny app to run local models with an Ollama server. Coded mostly by various LLMs including Posit's Shiny Assistant
# This is a sample R Shiny app chatbot that runs local models with an Ollama server.
# You also need Ollama installed and a ollama server running, plus at least one local model pulled.
# I hard-coded a few local models,
# If you use this, you'll want to hard code yours (including descriptions, or take those out)
# Coded with lots of LLM help + Posit's Shiny Assistant.
library(shiny)
library(shinychat)
library(bslib)
@smach
smach / favicon_app.R
Last active March 12, 2025 13:46
R Shiny app to turn JPGs and PNGs into .ico favicon files. Written mostly by GPT o3-mini-high with help from Claude and Shiny Assistant (and me)
options(shiny.maxRequestSize = 5 * 1024^2) # Limit uploads to 5 MB
library(shiny)
library(magick)
library(base64enc)
library(bslib)
# Helper function to sanitize file names
safeFileName <- function(filename) {
gsub("[^a-zA-Z0-9_.-]", "_", filename)
@smach
smach / search_loc_images.R
Created January 12, 2025 15:05
Search US Library of Congress images with R
# Uses httr and jsonlite packages and optional DT to display results
library(httr)
library(jsonlite)
search_loc_images <- function(query, max_results = 10) {
# Base URL
base_url <- "https://www.loc.gov/photos/"
@smach
smach / app.py
Last active October 20, 2023 16:09
Chat with your uploaded file
# This code is a slight modification from the code at
# https://docs.chainlit.io/examples/qa
# that adds handling PDF and Word doc files in addition to text files
# Load all necessary libraries and modules
import chainlit as cl
from langchain.memory import ChatMessageHistory, ConversationBufferMemory
from langchain.docstore.document import Document
from langchain.prompts.chat import (
ChatPromptTemplate,
@smach
smach / bitbucket-pipelines.yml
Last active January 25, 2023 18:48 — forked from ellisvalentiner/bitbucket-pipelines.yml
yaml to build R package for bitbucket pipelines continuous integration
image: rocker/tidyverse:latest
pipelines:
default:
- step:
script:
- cd /opt/atlassian/pipelines/agent/build
- Rscript -e 'devtools::install_deps(".", dependencies=TRUE, upgrade=FALSE)'
- Rscript -e 'devtools::build()'
- Rscript -e 'devtools::install(upgrade_dependencies = FALSE)'
# get all people you follow on Mastodon and which lists you've assigned them to. Inspired by Jon Udell doing this with Steampipe, his blog post: https://blog.jonudell.net/2022/12/22/lists-and-people-on-mastodon/
library(rtoot) # need the dev version, and you need to have gotten and stored a user token
library(dplyr)
library(purrr)
library(magrittr)
library(glue)
# If you don't know your Mastodon account ID
my_display_name <- "YOUR DISPLAY NAME HERE"
@smach
smach / boston_snowfall.2000s.csv
Created July 14, 2022 18:33
Annual Boston Snowfall 2000-2016
Winter Total
2000-01 45.9
2001-02 15.1
2002-03 70.9
2003-04 39.4
2004-05 86.6
2005-06 39.9
2006-07 17.1
2007-08 51.2
2008-09 65.9
get_forecast_data <- function(city, forecast_url) {
req<-httr::GET(forecast_url)
json <- httr::content(req, as = "text")
weather_data <- jsonlite::fromJSON(json)
forecast_df <- weather_data$properties$periods
forecast_df <- forecast_df %>%
dplyr::mutate(
City = city,
Temp = if_else(isDaytime == TRUE, "High", "Low"),
Date = as.Date(substr(startTime,1,10)),
@smach
smach / everyn.R
Created July 28, 2021 15:32
Only display every n data point in ggplot2
# Function to set all vector items to blank except for every nth item
everyn <- function(myvec, n){
myvec <- sort(unique(myvec))
for(i in 1:length(myvec)) {
if( i %% n != 1) {
myvec[i] <- ""
}
}
return(myvec)
library(rvest)
library(rio)
library(dplyr)
library(xml2)
# If your spreadsheet is named "data.xlsx" and the column with submitter names is named "submitting_lab"
data <- rio::import("data.xlsx") %>%
dplyr::pull(submitting_lab) %>%
unique()