#!/usr/bin/python from numpy import array, matrix, shape, reshape, zeros, diag from scipy.io import read_array, write_array from scipy.linalg import svd from glob import glob from os import chdir fllist = ['tmp'] # List of folders in which the TiffToTxtImages ImageJ macro has saved the text images for fl in fllist: chdir(fl) flist = glob('Slice*') n = len(flist) fi = read_array(flist[0]) x, y = shape(fi) m = len(fi.ravel()) data = zeros((m,n), 'l') for i, f in enumerate(flist): fi = read_array(f, atype='l').ravel() data[:,i] = fi ## All data assembled into one matrix of pixel vs. time write_array('data.txt', data) ## SVD u, s, v = svd(data) del data ## Filtering rank = 30 ## Controls the level of filtering (lower = less noise) ur = matrix(u[:,:rank]) sr = diag(s[:rank]) vr = matrix(v[:rank,:]) write_array('v.txt', v) del u, s, v modelr = array(ur*sr*vr, 'l') del ur, sr, vr ## Output write_array('model.txt', modelr) for i in range(n): fname = "Slice_%.5i.txt" % (i+1) fo = modelr[:,i].reshape(x,y) write_array(fname, fo) chdir('..') del modelr, fname, fo