Skip to content

Instantly share code, notes, and snippets.

View vsoch's full-sized avatar
💭
rawr

Vanessasaurus vsoch

💭
rawr
View GitHub Profile
@vsoch
vsoch / vcademy_mutual_information.m
Last active April 5, 2021 17:22
Mutual Information for Image Registration: an example of why maximizing mutual information is preferable over minimizing the least sum of squares for aligning two images from different modality.
% Mutual Information
% This shows why mutual information is important for registration, more-so
% than another metric like the least sum of squares.
% VSoch July 2013
% First, let's read in two pickle images that we want to register
% Note - this is a picture I found on google search, and I transformed it in
% photoshop by moving it down and right, and then CONTROL+I to get the inverse
pickle1 = imread('pickle1.png');
pickle2 = imread('pickle2.png');
@vsoch
vsoch / vcademy_mds.m
Created August 6, 2013 16:12
Multidimensional Scaling: a simple Matlab demonstration
% Multidimensional scaling (MDS) Example
% Load matlab cities data
load cities
% This data has cities in rows, and different categories for ratings in
% columns. We will implement MDS to assess city similarity based on
% ratings.
% Step 1: Set up our proximity matrix
@vsoch
vsoch / print_dr_report.m
Last active December 21, 2015 14:59
visual_dr creates and prints a web report for a dual regression run with FSL. The figures print exactly the size of the open figure 1, so you might want to open and size it to your liking before running the script. visual_dr is the main script to run, and it uses print_dr_report to create a web report, and imoverlay to overlay maps on the backgr…
function print_dr_report(imgfolder)
% This function takes a folder of images produced by visual_dr
% and prints and html report page
filey = fopen([imgfolder 'index.html' ],'w');
% Print top of html file
fprintf(filey,'%s\n','<html><body><h2>Dual Regression Report</h2>');
% Get all images in folder
@vsoch
vsoch / cytoscapeExport.m
Created September 13, 2013 20:13
Functions for exporting graph data (a list of connected nodes and corresponding attribute values) for functional neuroimaging data. Currently includes cytoscape and gephi. You must provide a list of anatomical labels (the variable AAL_labels).
function cytoscapeExport(links,weights,threshold,exptype)
% This function will take a list of links and weights, and create a file to
% import into Cytoscape for further graph analysis
% exptype is the export type - 'all' means voxelwise above a threshold,
% 'region' means creating graph of average regional values
% links is an n by 2 list of connections, each a voxel id
% weights is a correlation value corresponding to each link set
@vsoch
vsoch / flattenSphere.m
Last active December 23, 2015 11:28
flattenSphere.m takes a 3D image with x y z coordinates defined on the circumference of a circle, and flattens it to a 2D representation (with some obvious distortion). unwrapSphere.m estimates a radius and centroid with least squares, and then writes data to a 3D matrix defined by azimuth, elevation, and radius. Since this sphere is hollow, the…
function flat = flattenSphere(mr)
% First read in sphere files and vox mapping
%vox = spm_read_vols(spm_vol('NDARAK333GZA.lh.vtxvol.nii'));
mr = spm_read_vols(spm_vol(mr));
% First create a random maximum length - we will crop at the end
maxlength = floor(pi*size(mr,1));
% Now go through vox image and save vector of x,y,z coordinates
@vsoch
vsoch / nc_spatial_kurtosis.m
Last active December 24, 2015 12:19
NoiseCloud Features
function feature = nc_kurtosis_spatial(spatialMap)
% FEATURE NAME: Kurtosis
% FEATURE TYPE: spatial.gist
% We take a component image, sum the voxel values quadrupled, and divide by the
% number of voxels, subtract 3. We then normalize the value by linear scaling transform of abs(ln(kurtosis))
% This does the same thing as doing kurtosis(curr_network(:))
ICkurt = sum(power(spatialMap,4)) / length(spatialMap(:));
@vsoch
vsoch / plotly.R
Last active December 26, 2015 00:09
R Functions in the Cloud!
# This function will use plotly to create an online boxplot!
plotlyBox = function(username,key,datastore) {
# Username is your plotly username
# API key is found via plot.ly, login --> Access plotly --> settings
# datalist is a list of data
# The number of plots, N, is determined by length(N)
# Eg, put your data into a list
@vsoch
vsoch / searchNdarLocal.py
Last active December 29, 2015 03:28
searchNdarLocal.py takes an input file (input.txt) with single keywords on each line, and searches a local database of NDAR behavioral data. Output includes: 1) outfile_vars.txt, with questions containing the search term(s) of interests on single lines, followed by an estimate of the min, max, and variable type 2) outfile_data.txt, with subject …
#!/usr/bin/python
"""
searchNdar: reads in a set of strings from file, and search behavioral metrics
to find questions / subscales that might be of interest
python searchNdarLocal.py --o outfile --i /home
/vanessa/Documents/Work/NDAR/behavioral -w input.txt
--o is the outfile name, without extension
@vsoch
vsoch / exportRWeka.R
Last active December 29, 2015 07:08
Export a data matrix and associated demographic variables to arff file for import into Weka. All variables are assumed to be numeric, and columns are features (with column names the feature names), and rows data objects (with appropriate rownames). Missing values, currently set as -9999 and NA, are recoded as "?" Change this section (line 28) to…
exportRWeka = function(data,relation_name,outname) {
# Data is a data matrix, with features in columns, data in rows
# Edit the script to match whatever is the missing value for your data
# Rownames will be exported as well, and should be data labels
# relation_name is the name of the relation in Weka
# outname is the output file
# If you have a nominal outcome variable (eg, you want to color
# your data by a label in Weka) change the variable type as follows:
# @attribute groupVar {1,2}
@vsoch
vsoch / clinPheno.py
Last active December 31, 2015 07:09
clinPheno.py connects to a database of clinical data, a data dictionary, searches the data dictionary (all fields) for strings of interest, and then queries the clinical data for all maches, and prints two text files: 1) a text file of data, with questions in columns and items in rows, and 2) a text file of data dictionary fields See script head…
#!/usr/bin/python
"""
clinPheno: Methods for querying a SQL database of clinical
variables to establish a clinical phenotype. The script will
search a data dictionary (database) for a set of user specified
terms (in some input.txt file), and then extract the matches
from the clinical database, for import into R (see clinPhenoR.R)
# SAMPLE INPUT.TXT file: