Skip to content

Instantly share code, notes, and snippets.

View njvack's full-sized avatar

Nate Vack njvack

View GitHub Profile
#!/usr/bin/env python
Takes a REDCap CSV file and splits it into:
* A file for each event
* A file for repeated instruments in events where they happen
So, if your data has events 'scr,' 'pre,' and 'post', and 'pre' and 'post'
each have a repeated instument called 'meds', you can expect
Generates an array blocks * block_len long, containing 1 and 2.
It's shuffled such that there can never be more than block_len
consecutive repetitions of either value.
import numpy as np
blocks = 100
block_len = 8
groupnums = (np.arange(blocks * block_len) % 2) + 1
njvack /
Last active March 13, 2020 17:18 — forked from annalee/
A sample code of conduct for social slack teams.

UW-Madison TechPartners Slack Code of Conduct


This Slack group is for any and everyone involved in tech at UW-Madison. Students, staff, faculty, alumni, and emeriti are all welcome. We're here to share tips and tricks, debate policy, but more importantly: to be a community.

The current admins are:

  • Nate Vack
# Binary builds
tap "homebrew/cask"
# Lets me get at things like sequel-pro-nightly
tap "homebrew/cask-versions"
# mas -> "Mac App Store"
brew "mas"
mas "Xcode", id: 497799835
brew "imagemagick"
njvack /
Created November 12, 2019 17:31

Keybase proof

I hereby claim:

  • I am njvack on github.
  • I am njvack ( on keybase.
  • I have a public key ASB6TTOovVMHwUxq7IPCufRUK8WWK-MQlLVNO5USZ4C1lQo

To claim this, I am signing this object:

njvack /
Created April 25, 2019 15:05
Match distributions of two pandas dataframes
# -*- coding: utf-8 -*-
# Written by Nate Vack <> at the Center for Healthy Minds
# Copyright 2019 Board of Regents of the University of Wisconsin System
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
njvack /
Created June 28, 2018 19:23
LAG generator for Mnemonic Similarity Task
#!/usr/bin/env python
Compute stimulus orderings for the mnemonic similarity task, described in:
Stark SM, Stevenson R, Wu C, Rutledge S, & Stark CEL (2015). Stability of
age-related deficits in the mnemonic similarity task across task variations.
Behavioral Neuroscience 129(3), 257-268.
Written by Nate Vack <> at the Center for Healthy Minds,
University of Wisconsin-Madison, for the mp2 study conducted by Dan Grupe
njvack /
Created October 11, 2017 23:02
Convert tarfile of dicoms
# Written by Jonah Chaiken and Nate Vack
# Support:
help=" Usage: <in_file> <out_file>
This program will individually convert a dicom archive file to a NIfTI file.
The input can be either a .tar file containing bzip2'd dicom slices, or a
njvack /
Created July 31, 2017 18:24
Python script to normalize CSV files (remove UTF-8 sig, change line endings to CRLF)
#!/usr/bin/env python
Usage: dos_line_endings
Takes stdin, changes all line endings from \r or \n to \r\n, strips UTF-8
byte-order mark (if any), writes to stdout.
import sys
import re
njvack /
Last active April 21, 2017 20:03
Three to four-byte conversion
def convert_three_byte(frame):
data_out = np.zeros(128, dtype=np.int32) # You're looking to make a 128-element array of int32.
data_out.dtype = np.byte
data_out = data_out.reshape(-1, 4) # Shape is now (128,4) and dtype is byte
# Now, copy the data from chans08to00 into data_out. We need to specify which bytes to put it in.
# Also, we need to reverse the data in frame.
# You'd change 0:3 to 1:4 if the stuff in frame is big-endian, I think? You'll need to experiment.
data_out[0:8, 0:3] = frame['chans08to00'][::-1]
# ... and so on with channels
data_out.dtype = np.int32