Skip to content

Instantly share code, notes, and snippets.

@jtprince
jtprince / drop_tables_matching_regexp.py
Created September 19, 2014 23:46
delete all tables in an sqlite database that match a regular expression
#!/usr/bin/env python
import sys
import sqlite3
import argparse
import re
parser = argparse.ArgumentParser(description='deletes tables matching some regular expression')
parser.add_argument('database', help='the database file')
parser.add_argument('regexp', help='the regexp you are matching')
@jtprince
jtprince / opening_an_inherited_class.rb
Created August 1, 2014 04:52
ruby, do I need to include the inheritance each time I open a class? Answer: NO (but the inheritance must be there the 1st time or you'll get a superclass mismatch TypeError)
# [be careful, though, if you switch the order of introduction, then you will get this error:
# <file>.rb:11:in `<main>': superclass mismatch for class Dog (TypeError)
class Dog < Hash
def silly(key)
self[key] = 88 + key.to_i
end
end
# This is the *key* point: we can re-open this class and it won't give us any trouble!
class Dog
@jtprince
jtprince / Rakefile
Last active August 29, 2015 14:04
Rakefile Template (after "bundle gem <some_gem>")
require "bundler/gem_tasks"
@module_name = Mspire::Mass
@gem_name = 'mspire-mass'
@gem_path_name = @gem_name.gsub('-','/')
require "#{@gem_path_name}/version"
require 'rspec/core'
require 'rspec/core/rake_task'
@jtprince
jtprince / risk2_saver.rb
Created May 29, 2014 16:50
Save and load your Risk II (Hasbro Interactive) game with this simple ruby GUI
require 'Win32API'
require 'fileutils'
require 'tk'
# supposed to hide base window... not working with cygwin ruby
getConsoleWindow = Win32API.new("kernel32" , "GetConsoleWindow" , [] , 'L')
ptr_to_console = getConsoleWindow.call()
wndConsole = Win32API.new( "user32" , "ShowWindow" , ['p' , 'i'] , 'i' )
wndConsole.call( ptr_to_console , 1 )
@jtprince
jtprince / generate_fake_peak.rb
Created April 15, 2014 21:27
Creates a gamma distribution peak, then adds noise in both x and y values. Writes out a CSV file and plots the thing.
#!/usr/bin/env ruby
require 'distribution'
require 'gnuplot'
require 'csv'
params = {
step: 0.01,
stop: 1.0,
xwiggle: 0.01,
@jtprince
jtprince / sc
Last active May 23, 2021 17:55
screenshot application
#!/usr/bin/env ruby
# sc - screenshot utility using imagemagick 'import'
require 'optparse'
require 'ostruct'
require 'shellwords'
require 'fileutils'
viewers = {
'g' => 'geeqie',
@jtprince
jtprince / unique_peptides.rb
Created May 30, 2013 16:12
A simple script that displays unique tryptic peptides for proteins retrieved by uniprot accession number.
#!/usr/bin/env ruby
require 'open-uri'
require 'mspire/digester' # gem install mspire
require 'bio'
require 'set'
accessions = ARGV[0,2]
missed_cleavages = ARGV[2].to_i
# http://rosettacode.org/wiki/Twelve_statements
#1. This is a numbered list of twelve statements.
#2. Exactly 3 of the last 6 statements are true.
#3. Exactly 2 of the even-numbered statements are true.
#4. If statement 5 is true, then statements 6 and 7 are both true.
#5. The 3 preceding statements are all false.
#6. Exactly 4 of the odd-numbered statements are true.
#7. Either statement 2 or 3 is true, but not both.
#8. If statement 7 is true, then 5 and 6 are both true.
@jtprince
jtprince / savgol.rb
Created July 9, 2012 16:13
Savitsky-Golay filter for ruby arrays
# do what the heck you want to public license (see doc end)
# gem install ruby-svg # provides SVDMatrix
require 'ruby-svd'
class SVDMatrix < Matrix
def self.[](*rows)
mat = self.new(rows.size,rows.first.size)
rows.each_with_index {|row,i| mat.set_row(i, row) }
mat
@jtprince
jtprince / execute_on_modify.rb
Created June 19, 2012 21:13
Uses rb-notify to execute a command when a file has been modified and can sub in the filename into the command
#!/usr/bin/env ruby
# requires rb-inotify (will only work on linux)
require 'rb-inotify'
substitute = '{{}}'
div = '--'
if ARGV.size < 2
prog = File.basename(__FILE__)