Skip to content

Instantly share code, notes, and snippets.

View txje's full-sized avatar

Jeremy txje

  • University of North Carolina
  • Chapel Hill, NC
View GitHub Profile
@txje
txje / sum_lsf_runtime.sh
Created February 9, 2016 19:00
Sum all of the LSF runtime for a collection of job outputs
grep -R 'CPU time' results/* | awk '{print $5}' | paste -sd+ - | bc
@txje
txje / runmod
Created February 5, 2016 14:13
Deal with module dependency issues
#!/bin/bash
source /nas02/apps/Modules/default/init/bash
module clear < yes.file # yes.file contains only the letter 'y'
module add <module>
<module_exe> ...
@txje
txje / get_sra
Created February 4, 2016 21:34
Apparently our installation of SRAToolkit is such that we can't operate on remote SRAs, so here.
#!/bin/sh
accession=$1
wget -q "ftp://ftp-trace.ncbi.nih.gov/sra/sra-instant/reads/ByRun/sra/${accession:0:3}/${accession:0:6}/$accession/$accession.sra"
@txje
txje / fa2fq
Created February 4, 2016 20:44
Quick utility to convert a FASTA file to FASTQ with a given global accuracy rate
#!/nas02/apps/python-2.7.6/bin/python
import sys
import math
if len(sys.argv) < 2 or sys.argv[1] == "-h" or sys.argv[1] == "--help":
print "fa2fq <fasta> <accuracy>"
acc = float(sys.argv[2])
phred = int(-10 * math.log(1.0 - acc, 10))
@txje
txje / fq2fa
Last active January 29, 2016 18:57
Convert fastq to fasta, simply
Add this to .bashrc:
fq2fa(){
sed -n '1~4s/^@/>/p;2~4p' $1
}
OR
Create a file (ex. ~/local/bin/fq2fa)
from ssw_wrap import Aligner
tseq = "AAGAGAGAGATTAAACGCTTGCTGCTATCGCCATACGCCGATACTAATCAGCAGACTTGCTCATCCAGCGTGCTGCCCGTAAAAAAAGGCGTCGTCCACTGCTGACGTCAAAGCCGACCATCGGGCCGGTATCCAGTCCCAGCGCCCGGCAGGCGACGAATCCAGATTAAGCGCCTGCATGGACTGTTGCGAAACGCGTCTTCCTTCGGCAAGTTGTGGGCAATGGAGGTAAACCAACTGCGGCATCACCGTGGGGAAACGTAATGCGTAACCCGTTCATAAAATCTCACTGTCCCAGGCGACGATAGCGGTGACGAGGCGCGGTCAGGGGTTTTTTGCAGATTGCCAGCTGGAAAGTAGCCGGGCGCAGAACGTATTCTTATTCCTTCTGCAAGATGCCAGGATAAACACGATATCGCATCAACGCGGCAGAACAGTTAGATGATGAAATCGGCCCCCATTTCATAAGGAGCATAAAAATCTCCGTAACGTCTCATCGCTGACGGGTGTCTCCCGCCAGCAACGTTGTGTGAGTGAGGGCATCGAGTGAAACAGGGGTGACTAAGCGAACCTGGGCTAACCGGCATTCGTATCATCCAGCAATTCCTTAACAGGGCGGCATTCACGGATGATGTTAACAGGCCCTGGAAGAACCCGTTGAGCTAACAGAGCATAAATCGTTTCGGGGACCTCACGCGATCACGTTTGCAGGCGTGTCCCCATAGCTGCCAATGTTATCTGGCTATCGGGCAGGCCGCGCATGAAGTCACTGGAAAATGCTGTTGGCACAGCAGATCATCGACGTGGGCAGACCGTGGATGTGTGCACCGGGCAGCGGTGCGATCGGCGCAATGGTGTGAGCTAAAGATCAGCGCGTTGTTGAGGGCGTTAAGTCGACGCAGTAAATCCCTCTCTTTCTGCCCCCTGAAAATGCGCCAGGTGCAGGCGCGTCTTCTGCCTCACAGGCGAGGTCGCGGGCCGCCATC
@txje
txje / font_mask.py
Created December 12, 2013 19:06
Takes two images and masks one by the other (b/w)
import sys
import Image
def main(text, pattern):
text = Image.open(text)
text = text.convert('L') # to luminosity
pattern = Image.open(pattern)
width, height = text.size
newim = Image.new('RGB', (width, height), (255,255,255))
for x in xrange(width):
@txje
txje / qa_puzzle.py
Created November 19, 2013 14:24
There are two numbers between 2 and 100. Sam knows their sum, and Pete knows their product. Pete: I don't know the numbers. Sam: I know you don't. Pete: *Now* I know the numbers. Sam: Now *I* know the numbers.
import math
def main():
factorcache = [factors(a) for a in xrange(10001)]
steps = [0, 0, 0, 0]
limit = 100
for a in xrange(2, limit+1):
for b in xrange(a, limit+1):
s = a + b
p = a * b
@txje
txje / cryptoquote.js
Created October 15, 2013 20:07
Solve a "Cryptoquote" (inspired most immediately by the excellent Greensboro News & Record with an unusually challenging example from Oct. 12, 2013). The only known implementation in javascript/node.js! Why would anyone need such a thing?! Runs in ~10 sec. for me.
var fs = require('fs');
Array.prototype.remove = function(val) {
var index = this.indexOf(val);
if(index > -1) {
return this.splice(index, 1);
} else {
return null;
}
}
<html><head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
<script>
$(function() {
var size = 1000;
var colors = [[0.6, '#CCCC00'],
[0.2, '#FFFF00'],
[0.1, '#FFFFFF'],
[0.1, '#888800']];
var variance = 10;