Skip to content

Instantly share code, notes, and snippets.


Shawn Graham shawngraham

View GitHub Profile
shawngraham / demo.R
Last active May 16, 2022
demo for students of gist use
View demo.R
# demo for sharing a script
# in scripts, a hashtag (pound sign) = a comment (in markdown, it means a header)
# we create a variable called y, and give it a _string_ of text; in this case, the direct URL to a csv file
y <- ""
# now we use the read.csv command to read the file address stored in 'y'; the results go into a dataframe called 'documents2'
documents2 <- read.csv(y)
shawngraham / retrieve-theses-metadata.R
Created Jan 17, 2022
script to generate a table of metadata concerning theses in CURVE repository; curve is changing soon so this will become dated
View retrieve-theses-metadata.R
base_url <- ""
theses = data.frame()
View test-neo4j.csv
Artifact Position_X Position_Y chip name
242 1110.973076 480.0500947 /Users/shawngraham/Documents/chips2/object1/0000000001.png
252 772.6520572 434.331038 /Users/shawngraham/Documents/chips2/object2/0000000001.png
1231 626.3510759 672.0701326 /Users/shawngraham/Documents/chips2/object3/0000000001.png
35 2059.369176 1630.107527 /Users/shawngraham/Documents/chips2/object4/0000000001.png
35 594.3477363 1275.56168 /Users/shawngraham/Documents/chips2/object4/0000000002.png
shawngraham /
Last active Apr 13, 2021
extracting structured notes from PUBLIC annotations based on
import requests, re, json, types, traceback
class HypothesisAnnotation:
def __init__(self, row):
"""Encapsulate relevant parts of one row of a Hypothesis API search."""
self.tags = []
if row.has_key('tags') and row['tags'] is not None:
self.tags = row['tags']
View simple-scraper.ipynb
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
shawngraham /
Last active Oct 28, 2020
A History Generator; Also Does Timelines!
#!/usr/bin/env python
# source:
# to create a visualisation, run like this:
# ./ --dot | dot -Tpng > filename.png
# brew install graphviz to get the dot files rendering
# to have the story, run like this:
# ./
# have your state names in the names.txt file
# now, all of this *could* be done with tracery i suppose, but you can see the bones of the
# history system could be expanded to model other aspects, keep track of things, calculate new things.
shawngraham / bib.xsl
Last active Oct 15, 2020
sample metadata from jstor-dfr, and an xsl file meant to turn it into a citations.tsv with: xsltproc bib.xsl *.xml > citations.tsv
View bib.xsl
<xsl:stylesheet version="1.0" xmlns:xsl="">
<xsl:output method="text"/>
<xsl:template match="/">
<xsl:for-each select="article/front">
"<xsl:value-of select="article-meta/contrib-group/contrib/string-name/surname" />, <xsl:value-of select="article-meta/contrib-group/contrib/string-name/given-names" />" <xsl:text>&#9;</xsl:text><xsl:value-of select="article-meta/pub-date/year" /> <xsl:text>&#9;</xsl:text> "<xsl:value-of select="article-meta/title-group/article-title" />" <xsl:text>&#9;"</xsl:text><xsl:value-of select="journal-meta/journal-title-group/journal-title"/>"<xsl:text>&#9;</xsl:text> "<xsl:value-of select="article-meta/volume" />(<xsl:value-of select="article-meta/issue" />)" <xsl:text>&#9;</xsl:text> "<xsl:value-of select="article-meta/page-range" />" <xsl:text>&#9;</xsl:text>"<xsl:value-of select="article-meta/article-id" />" <xsl:text>&#9;</xsl:text><xsl:value-of select="article-meta/self-uri" /><xsl:text>&#xA;</xsl:text>
shawngraham / entities.csv
Last active Jul 22, 2020
giving nertwork a spin on chapbooks from the national library of scotland. cancelled out of the script because my machine was running hot; did extract some 13 000 entities though
View entities.csv
doc entity entityType count
104184105 ABERDEEN organization 1
104184105 Navy organization 1
104184105 Sceptre organization 1
104184105 1 person 1
104184105 Brodie person 2
104184105 Cromar person 2
104184105 Earl person 1
104184105 Fife person 3
104184105 Glen person 1
## Split audio files into chunks
## Daniel Pett 1/5/2020
__author__ = 'portableant'
## Tested on Python 2.7.13
import argparse
import os
import speech_recognition as sr
shawngraham / getNotes.scpt
Created Mar 11, 2020
extract notes from skim to clipboard
View getNotes.scpt
(* Inspired and modified based on and *)
property LF : (ASCII character 10)
property tid : AppleScript's text item delimiters
tell application "Skim"
set the clipboard to ""