Skip to content

Instantly share code, notes, and snippets.

View jrjhealey's full-sized avatar

Joe Healey jrjhealey

View GitHub Profile
@jrjhealey
jrjhealey / slice_genes.py
Last active September 18, 2023 09:33
Code to 'slice' or subset genbank format sequences from one gene specifier to another by looking up their locations.
#!/usr/bin/env python
# Slice subregions out of a genbank between 2 genes.
# Usage:
# slice_genes.py infile.gbk gene1:gene2:strand
from Bio import SeqIO
import sys, argparse
def get_args():
#!/usr/bin/env Rscript
# Perform cell-wise averaging of matrices (ignoring headers and row names)
# Standard install if missing
list.of.packages <- c("argparse", "abind")
new.packages <- list.of.packages[!(list.of.packages %in% installed.packages()[,"Package"])]
if(length(new.packages)) install.packages(new.packages)
for(i in list.of.packages){suppressMessages(library(i, character.only = TRUE))}
#!/bin/bash
set -eo pipefail
# A small script to generate artemis comparison files (nucleic acid comparison)
# since all the webservers are apparently defunct!
# Script requires blastn (NOT LEGACY BLAST) and makeblastdb in path - check for existence:
command -v makeblastdb >/dev/null 2>&1 || { echo >&2 "makeblastdb doesn't appear to be installed. Aborting."; exit 1; }
command -v blastn >/dev/null 2>&1 || { echo >&2 "BLAST+ doesn't appear to be installed. Aborting."; exit 1; }
@jrjhealey
jrjhealey / prime_anagrams.py
Last active February 1, 2018 10:54
Work out if 2 words are anagrams based on their unique prime products.
#!/usr/bin/env python
"""
Using products of primes to work out whether 2 strings are anagrams of one another.
Inspired by: https://twitter.com/fermatslibrary/status/958700402647674880
Map each of the 26 english characters (A, B, C, ...) to a (unique) prime number.
Multiply the values mapped to each character together (A x B x C x ...).
Since every integer is a prime, or a unique product of primes, according to the
fundamental theorem of arithmetic), two words are anagrams of one another if their
@jrjhealey
jrjhealey / Iterative_R_images.r
Created January 30, 2018 17:39
Making a video from an R loop
#!/usr/bin/env Rscript
# Plotting surface plots via ggplot2/plotly
# Usage:
# $ Rscript CDmeltplot.R -i data.csv -o filename
############################################################
# General purpose heatmap plotting script for consistency. #
# This script can be slow as it was designed to be pretty #
@jrjhealey
jrjhealey / structfit.py
Created December 4, 2017 14:32
Connecting HHSuite to Chimera for visualitations of how similar 2 HMM PDBs are.
"""
This script pulls in homologs of proteins from PDB
as determined by HHSuite. It then employs pychimera and
UCSF Chimera to structurally match them and get an
indication of how well they score (RMSD) in order
to pick the best simulation.
"""
import os
import subprocess
import sys
@jrjhealey
jrjhealey / Fiddling_with_fastas.sh
Created November 27, 2017 14:13
A useful pure bash construct for dealing with FASTA files. Can be tweaked to perform all sorts of actions on the headers of sequences (e.g. rearrangement, regex, text matching)
#!/bin/bash
#### Print out all fastas ending in a certain string. ####
# Change *"$string" to *"$string"* to find containing,
# or "$string"* to find starts with.
file="$1"
string="$2"
# Getting python logging info output in a colour coded and customised manner.
# Stolen from M. Galardini and https://stackoverflow.com/questions/384076/how-can-i-color-python-logging-output/2532931#2532931
import logging
import sys
BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE = range(8)
COLORS = {
'WARNING' : YELLOW,
@jrjhealey
jrjhealey / getPDB.sh
Last active April 26, 2018 10:59
Fetching PDB structures from the Protein Databank
#!/bin/bash
# Script to retrieve PDBs via the command line from the PDB HTTP/FTP
# Capture inputs
usage()
{
cat << EOF
usage: $0 options
@jrjhealey
jrjhealey / MacMAC.sh
Last active September 20, 2017 10:55
Get wireless and ethernet MAC addresses.
#!/bin/bash
ethernet=$(ifconfig en0 | awk '/ether/{print $2}')
wifi=$(ifconfig en1 | awk '/ether/{print $2}')
echo "Ethernet MAC Address: $ethernet"
echo "Wifi MAC Address: $wifi"