Skip to content

Instantly share code, notes, and snippets.

@henryroe
henryroe / scene_scroll_test.py
Created September 27, 2013 04:24
scene_scroll_test
from scene import *
from math import exp
from threading import Thread
import datetime
# example scrolling scene with inertial scrolling
# basic scrolling example was by Dalorbi on the forums at:
# http://omz-software.com/pythonista/forums/discussion/213/scrolling-in-scene-module/p1
# inertial scrolling added on by hroe
@henryroe
henryroe / ocr_all_pdf_in_dir.scpt
Created December 6, 2013 16:46
OCR all documents in a user selected folder using PDFpenPro 6 on OS X Note: No recursion into other folders. For a recursive version, see: https://gist.github.com/henryroe/7828092
--
-- OCR all documents in a folder
--
set theFolder to (choose folder with prompt "Choose Folder to OCR every PDF in")
ocr_this_folder(theFolder)
on ocr_pdf(PDFfilename)
tell application "PDFpenPro 6"
open PDFfilename
set theDoc to document 1
@henryroe
henryroe / ocr_all_pdf_in_dir_recursive.scpt
Last active March 9, 2020 16:13
OCR all documents in a user selected folder using PDFpenPro 6 on OS X recursively descending through the directory tree
--
-- OCR all documents in a folder and all sub-folders
--
set theFolder to (choose folder with prompt "Choose Folder to OCR every PDF in recursively descending")
ocr_this_folder(theFolder)
on ocr_pdf(PDFfilename)
tell application "PDFpenPro 6"
open PDFfilename
set theDoc to document 1
@henryroe
henryroe / Rotate portrait pages by 90
Created January 6, 2014 22:20
Rotate portrait pages by +90degrees in current document in PDFpenPro 6
# Install this file in:
# ~/Library/Application Scripts/com.smileonmymac.PDFpenPro6.MacAppStore/
# and it will then be accessible from the Applescript menu in PDFpenPro 6
tell application "PDFpenPro 6"
if (count documents) > 0 then
set myDoc to document 1
set pageCount to count pages of myDoc
repeat with pageNumber from 1 to pageCount
if (height of page pageNumber of myDoc) > (width of page pageNumber of myDoc) then
@henryroe
henryroe / list_displays.sh
Created February 4, 2014 18:37
List all display sizes and origins in /Library/Preferences/com.apple.windowserver.plist
#!/bin/bash
output=""
numDisplaySets=`/usr/libexec/PlistBuddy -c "Print DisplaySets" /Library/Preferences/com.apple.windowserver.plist | grep -E '^ Array' | wc -l`
for (( curDisplaySetNum=0; curDisplaySetNum<$numDisplaySets; curDisplaySetNum++ ))
do
echo "DisplaySet "$curDisplaySetNum
curDisplayNum=0
notdone=1
while [[ "$notdone" -ne 0 ]]
@henryroe
henryroe / Access NSScreen.scpt
Last active March 7, 2021 21:54
Demonstration of how to use an AppleScript Bundle to enable access to NSScreen in AppleScriptObjC
(*
Copy and paste this script into a new document in AppleScript Editor.
When saving, select "Script Bundle" as File Type.
Save the file to: "~/Library/Script Libraries/Access NSScreen.scptd"
Note: you may need to create the directory: "~/Library/Script Libraries"
Note: while this gist has the file ending "scpt", by selecting the
"Script Bundle" file type, the file extension "scptd" should be added.
@henryroe
henryroe / import_nsf_ast_csv.py
Created June 20, 2014 21:37
Import NSF AST funding data in CSV format
import pandas
import numpy as np
awards = pandas.read_csv("awards_dump_2014-06-20.csv",
parse_dates=['StartDate', 'LastAmendmentDate', 'ExpirationDate',
'AwardedAmountToDate'],
converters={'AwardedAmountToDate': lambda x:
float(x.replace('$', '').replace(',', ''))},
dtype={'AwardedAmountToDate':np.float64})
awards['DurationYears'] = ((awards['ExpirationDate'] - awards['StartDate']) /
(365.25 * np.timedelta64(1, 'D')))
@henryroe
henryroe / plot_nsf_ast_grants_per_year.py
Created June 20, 2014 21:40
Plot NSF AST funding data for per-year funding of grants
max_award_per_year = 3e5 # above this amount just bin in to top bin
years_per_bin = 1.0
award_bin_size = 10000
start_year = np.array([a.year + (a.month - 1)/12. for a in awards['StartDate']])
year_bins = np.arange(np.floor(start_year.min()), np.ceil(start_year.max())+1, years_per_bin)
awarded_per_year = np.array(awards['AwardedAmountToDate']/awards['DurationYears'])
awarded_per_year_mean_per_bin = np.zeros(year_bins.size - 1)
awarded_per_year_median_per_bin = np.zeros(year_bins.size - 1)
year_per_bin = np.zeros(year_bins.size - 1)
for i in np.arange(year_bins.size - 1):
@henryroe
henryroe / plot_nsf_ast_grant_totals.py
Created June 20, 2014 21:41
Plot NSF AST funding data for total funding of grants
max_award = 1e6 # above this amount just bin in to top bin
years_per_bin = 1.0
award_bin_size = 50000
start_year = np.array([a.year + (a.month - 1)/12. for a in awards['StartDate']])
year_bins = np.arange(np.floor(start_year.min()), np.ceil(start_year.max())+1, years_per_bin)
awarded = np.array(awards['AwardedAmountToDate'])
awarded_mean_per_bin = np.zeros(year_bins.size - 1)
awarded_median_per_bin = np.zeros(year_bins.size - 1)
year_per_bin = np.zeros(year_bins.size - 1)
for i in np.arange(year_bins.size - 1):
@henryroe
henryroe / traitsui_matplotlib_playground.py
Last active August 26, 2020 13:02
The demo of traitsui, matplotlib, including a pop-up menu, I wish I'd found.
import wx
import matplotlib
matplotlib.use('WXAgg')
from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as FigureCanvas
from matplotlib.figure import Figure
from matplotlib.image import AxesImage
from matplotlib.axes import Axes
from matplotlib.widgets import AxesWidget
import matplotlib.pyplot as plt