<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5150084882015979368</id><updated>2011-12-20T08:38:54.634-08:00</updated><category term='ruby'/><category term='gnuplot'/><category term='matplotlib'/><category term='cooking'/><category term='GPU'/><category term='aperiodic tilings'/><category term='digital signal processing'/><category term='latex'/><category term='penrose'/><category term='text mining'/><category term='GNU'/><category term='stdint'/><category term='threading'/><category term='pycuda'/><category term='C++'/><category term='rpy'/><category term='hdf5'/><category term='cython'/><category term='python'/><category term='scipy'/><category term='maxima'/><category term='scp'/><category term='physics'/><category term='haralick texture'/><category term='GSL'/><category term='linux'/><category term='girih'/><category term='opencv'/><category term='pycublas'/><category term='image classification'/><category term='cuda'/><category term='genetic algorithm'/><category term='octave'/><category term='programming'/><category term='dynamic modeling'/><category term='sorting'/><category term='fractals'/><category term='r'/><category term='pil'/><category term='ssh'/><category term='bash'/><category term='pthreads'/><category term='concept hierarchy'/><category term='matlab'/><category term='io'/><category term='numpy'/><category term='open office'/><category term='GPGPU'/><category term='stocks'/><category term='color'/><category term='mathematics'/><category term='pygame'/><category term='errata'/><category term='data set'/><category term='statistics'/><category term='fail'/><category term='ubuntu'/><category term='g++'/><category term='machine learning'/><category term='image processing'/><category term='json'/><title type='text'>MATH AND PROGRAMMING!</title><subtitle type='html'>If you don't live it, it won't come out of your horn. ~Charlie Parker</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>77</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-6833821422517072255</id><published>2011-12-20T08:38:00.000-08:00</published><updated>2011-12-20T08:38:54.643-08:00</updated><title type='text'>Rescaling</title><content type='html'>&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;I keep forgetting/losing this function. I need to put it in a module somewhere.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;def rescale( data, newmin, newmax ):&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;oldmin, oldmax = np.min( data ), np.max( data )&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;rows, cols = data.shape&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;nd = np.reshape( data, (rows*cols,) )&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;newdata = list()&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;newscale = newmax-newmin&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;oldscale = oldmax-oldmin&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;ratio = newscale/float(oldscale+.005)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;for i in nd:&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;newdata.append((i-oldmin)*ratio+newmin)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;newdata = np.reshape( newdata, (rows,cols) )&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;return newdata&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-6833821422517072255?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/6833821422517072255/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2011/12/i-keep-forgettinglosing-this-function.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/6833821422517072255'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/6833821422517072255'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2011/12/i-keep-forgettinglosing-this-function.html' title='Rescaling'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-3120483303176401706</id><published>2011-12-08T10:12:00.001-08:00</published><updated>2011-12-08T10:45:46.471-08:00</updated><title type='text'>Merging Segments in an Image</title><content type='html'>&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;I'll walk though some code for merging segments in an image using a two classes, &lt;i&gt;Segment&lt;/i&gt; and &lt;i&gt;Segments&lt;/i&gt;. The first class is for&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;class Segment:&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;def __init__( self, elements, neighbors, class ):&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;self.elements = [ elements ] # tuple addresses&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;self.neighbors = neighbors # class labels&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;self.class = class # personal class&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;self.quality = None # either textured or smooth&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;self.mean = None # mean reflectance&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;self.texture = None # texture vector&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;lt;&amp;lt; OTHER CODE &amp;gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: 'Courier New', Courier, monospace; font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;def merge( self, a, b ):&lt;/div&gt;&lt;div style="font-family: 'Courier New', Courier, monospace; font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# enhance readabilityness&lt;/div&gt;&lt;div style="font-family: 'Courier New', Courier, monospace; font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;newclass = a.class&lt;/div&gt;&lt;div style="font-family: 'Courier New', Courier, monospace; font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;oldclass = b.class&lt;/div&gt;&lt;div style="font-family: 'Courier New', Courier, monospace; font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# a subsumes b's elements&amp;nbsp;&lt;/div&gt;&lt;div style="font-family: 'Courier New', Courier, monospace; font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;a.elements += b.elements&amp;nbsp;&lt;/div&gt;&lt;div style="font-family: 'Courier New', Courier, monospace; font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# set of class labels&lt;/div&gt;&lt;div style="font-family: 'Courier New', Courier, monospace; font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# the class labels neighboring a and the class label of a&lt;/div&gt;&lt;div style="font-family: 'Courier New', Courier, monospace; font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;mine = set( a.neighbors + [ newclass ] )&lt;/div&gt;&lt;div style="font-family: 'Courier New', Courier, monospace; font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# set of class labels&lt;/div&gt;&lt;div style="font-family: 'Courier New', Courier, monospace; font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# the class labels neighboring b and the class lebel of b&lt;/div&gt;&lt;div style="font-family: 'Courier New', Courier, monospace; font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;theirs = set( b.neighbors + [ oldclass ] )&lt;/div&gt;&lt;div style="font-family: 'Courier New', Courier, monospace; font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# set of class labels for elements of a (after adding b to a)&lt;/div&gt;&lt;div style="font-family: 'Courier New', Courier, monospace; font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ours = set( [ self.element_segment[i] for i in a.elements ] )&lt;/div&gt;&lt;div style="font-family: 'Courier New', Courier, monospace; font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# update a's new neighbors&lt;/div&gt;&lt;div style="font-family: 'Courier New', Courier, monospace; font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;a.neighbors = list( mine.union( theirs ) - ours )&amp;nbsp;&lt;/div&gt;&lt;div style="font-family: 'Courier New', Courier, monospace; font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# update class elementship of b's elements&lt;/div&gt;&lt;div style="font-family: 'Courier New', Courier, monospace; font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for m in b.elements:&lt;/div&gt;&lt;div style="font-family: 'Courier New', Courier, monospace; font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;self.element_segment[ m ] = newclass&amp;nbsp;&lt;/div&gt;&lt;div style="font-family: 'Courier New', Courier, monospace; font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;self.segment_element[ newclass ].append( m )&amp;nbsp;&lt;/div&gt;&lt;div style="font-family: 'Courier New', Courier, monospace; font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# remove the oldclass from the dict of classes&lt;/div&gt;&lt;div style="font-family: 'Courier New', Courier, monospace; font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;del self.segment_element[ oldclass ]&amp;nbsp;&lt;/div&gt;&lt;div style="font-family: 'Courier New', Courier, monospace; font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# remove the oldclass from the dict of segments&lt;/div&gt;&lt;div style="font-family: 'Courier New', Courier, monospace; font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;del self.segments[ oldclass ]&lt;/div&gt;&lt;div style="font-family: 'Courier New', Courier, monospace; font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# update old neighbors of the oldclass&lt;/div&gt;&lt;div style="font-family: 'Courier New', Courier, monospace; font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for s in self.segments:&lt;/div&gt;&lt;div style="font-family: 'Courier New', Courier, monospace; font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if oldclass in self.segments[s].neighbors:&lt;/div&gt;&lt;div style="font-family: 'Courier New', Courier, monospace; font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;while oldclass in self.segments[s].neighbors:&lt;/div&gt;&lt;div style="font-family: 'Courier New', Courier, monospace; font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;self.segments[s].neighbors.remove( oldclass )&lt;/div&gt;&lt;div style="font-family: 'Courier New', Courier, monospace; font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if newclass not in self.segments[s].neighbors:&lt;/div&gt;&lt;div style="font-family: 'Courier New', Courier, monospace; font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;self.segments[s].neighbors.append( newclass )&lt;/div&gt;&lt;div style="font-family: 'Courier New', Courier, monospace; font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/div&gt;What the &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;merge()&lt;/span&gt; function does, is figure out the new elements of the new segment (easy), figure out the new neighbors of the new segment (harder), and then do some cleaning operations.&lt;br /&gt;&lt;br /&gt;In the &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;merge()&lt;/span&gt; function, &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;newclass = a.class&lt;/b&gt;&lt;/span&gt; and &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;oldclass = b.class&lt;/b&gt;&lt;/span&gt; take the class labels of the segments to be merged, a and b. In this implementation, &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;a&lt;/b&gt;&lt;/span&gt; is dominant, and subsumes &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;b&lt;/b&gt;&lt;/span&gt;'s class label.&lt;br /&gt;&lt;br /&gt;Then, with &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;a.elements += b.elements&lt;/b&gt;&lt;/span&gt;, we add the elements of b to the elements of a. These elements are tuple addresses for image chips, or individual pixels.&lt;br /&gt;&lt;br /&gt;Imagine the following setup:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;|---|---|---|---|&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;| 3 | 8 | 8 | 8 |&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;|---&lt;span class="Apple-style-span" style="color: red;"&gt;|---&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #674ea7;"&gt;|&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;---|&lt;/span&gt;---|&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="font-family: serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;| 3 &lt;span class="Apple-style-span" style="color: red;"&gt;|&lt;/span&gt; &lt;b&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;1&lt;/span&gt;&lt;/b&gt; &lt;span class="Apple-style-span" style="color: #674ea7;"&gt;|&lt;/span&gt; &lt;b&gt;&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;2&lt;/span&gt;&lt;/b&gt; &lt;span class="Apple-style-span" style="color: #0b5394;"&gt;|&lt;/span&gt; 7 |&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;|---&lt;span class="Apple-style-span" style="color: red;"&gt;|---&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #674ea7;"&gt;|&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;---|&lt;/span&gt;---|&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: center;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;| 4 &lt;span class="Apple-style-span" style="color: red;"&gt;|&lt;/span&gt; &lt;b&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;1&lt;/span&gt;&lt;/b&gt; &lt;span class="Apple-style-span" style="color: #674ea7;"&gt;|&lt;/span&gt; &lt;b&gt;&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;2&lt;/span&gt;&lt;/b&gt; &lt;span class="Apple-style-span" style="color: #0b5394;"&gt;|&lt;/span&gt; 7 |&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: center;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;|---&lt;span class="Apple-style-span" style="color: red;"&gt;|---&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #674ea7;"&gt;|&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;---|&lt;/span&gt;---|&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: center;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;| 4 | 4 | 5 | 6 |&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: center;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;|---|---|---|---|&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Here, segment &lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;a&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt; is denoted by the ones, and segment &lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;b&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt; is denoted by the twos. The line &lt;/span&gt;&lt;b style="font-family: 'Courier New', Courier, monospace;"&gt;mine = set( a.neighbors + [ newclass ] )&lt;/b&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&amp;nbsp;is just the set {3,4,2,8,1}, the class labels for the n,s,e,w neighbors of segment &lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;a&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;, which are {3,4,2,8}, and the class label for &lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;a&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;, which is {1}. Similarly for &lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;theirs&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt; we have the class labels for the neighbors of &lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;b&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;, and the class label for &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-weight: bold;"&gt;b&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;, and this ends up being the set {1,8,7,5,2}. Then &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;ours&lt;/b&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt; is the class labels in the new segment, which will be the set {1,2}, since 1 and 2 are the class labels of segment &lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;a&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt; and segment &lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;b&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Then the new neighbors of the new segment will be found by taking the union of &lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;mine&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt; and &lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;theirs&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;, which is {3,8,4,7,5,1,2}, and then tossing ours, giving us the set {3,4,8,7,5}, and these are the tiles ordinally neighboring the tiles labeled 1 and 2. Note that tile 6 is not considered a neighbor because it is to the south-east of tile 2; only tiles that share a whole side are counted as neighbors.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;After cleaning up the requisite dictionaries that keep track of these things, we should have the following diagram,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;/div&gt;&lt;div style="font-family: serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: center;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;|---|---|---|---|&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: center;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;| 3 | 8 | 8 | 8 |&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: center;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;|---&lt;span class="Apple-style-span" style="color: red;"&gt;|---|---|&lt;/span&gt;---|&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;/div&gt;&lt;div style="font-family: serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: center;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;| 3&amp;nbsp;&lt;span class="Apple-style-span" style="color: red;"&gt;|&lt;/span&gt;&amp;nbsp;&lt;b&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;1&lt;/span&gt;&lt;/b&gt;&amp;nbsp;&lt;span class="Apple-style-span" style="color: red;"&gt;|&amp;nbsp;&lt;b&gt;1&lt;/b&gt;&amp;nbsp;|&lt;/span&gt;&amp;nbsp;7 |&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: center;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;|---&lt;span class="Apple-style-span" style="color: red;"&gt;|---|---|&lt;/span&gt;---|&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: center;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;| 4&amp;nbsp;&lt;span class="Apple-style-span" style="color: red;"&gt;|&lt;/span&gt;&amp;nbsp;&lt;b&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;1&lt;/span&gt;&lt;/b&gt;&amp;nbsp;&lt;span class="Apple-style-span" style="color: red;"&gt;|&amp;nbsp;&lt;b&gt;1&lt;/b&gt;&amp;nbsp;|&lt;/span&gt;&amp;nbsp;7 |&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: center;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;|---&lt;span class="Apple-style-span" style="color: red;"&gt;|---|---|&lt;/span&gt;---|&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: center;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;| 4 | 4 | 5 | 6 |&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: center;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;|---|---|---|---|&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: serif;"&gt;&lt;/div&gt;&lt;div style="font-family: serif;"&gt;&lt;/div&gt;&lt;div style="font-family: serif;"&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-3120483303176401706?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/3120483303176401706/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2011/12/merging-segments-in-image.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/3120483303176401706'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/3120483303176401706'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2011/12/merging-segments-in-image.html' title='Merging Segments in an Image'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-180579435812409855</id><published>2011-11-22T18:49:00.001-08:00</published><updated>2011-11-23T11:31:42.568-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>pywt versus PyWT</title><content type='html'>To be specific, I am talking about the difference between pywt (PyWavelets) and PyWT (Python Web Toolkit).&lt;br /&gt;&lt;br /&gt;I thought I had installed the wavelets package, as I had used pywt freely for several years; however, when I executed,&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;$ pip install pywt&lt;/span&gt;&lt;/blockquote&gt;I got the web toolkit package instead, even though it goes by PyWF now. Executing the inverese:&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;$ pip uninstall pywt&lt;/span&gt;&lt;/blockquote&gt;I got the reassuring,&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;$ pip uninstall pywt&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Uninstalling PyWT:&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Proceed (y/n)? y&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;Successfully uninstalled PyWT&lt;/span&gt;&lt;/blockquote&gt;&lt;div&gt;But when I went to use the wavelet package, it was still accessing the ununinstalled web toolkit, which does absolutely nothing for wavelets. So... I imported pywt at the terminal again and looked at the path:&lt;/div&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;gt;&amp;gt;&amp;gt; pywt.__path__&lt;br /&gt;['/usr/local/lib/python2.6/dist-packages/pywt']&lt;/span&gt;&lt;/blockquote&gt;And then I went in like gangbangers and shot up that joint with,&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;$ sudo rm -r /usr/local/lib/python2.6/dist-packages/pywt/&lt;/span&gt;&lt;/blockquote&gt;Then everything worked out okay.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;gt;&amp;gt;&amp;gt; import pywt&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;gt;&amp;gt;&amp;gt; from pywt import dwt&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;gt;&amp;gt;&amp;gt; dwt([1,2,3,4,5,6,7,8],'db4')&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;(array([ &amp;nbsp;7.06453146, &amp;nbsp;4.23073611, &amp;nbsp;1.41360717, &amp;nbsp;2.83605428,&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;5.6633906 , &amp;nbsp;8.49718595, 11.3143149 &amp;nbsp;]),&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; array([ &amp;nbsp;2.37131306e-02, &amp;nbsp;4.09620864e-02, &amp;nbsp;-6.46752170e-02,&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; -9.90107302e-13, -2.37131306e-02, &amp;nbsp;-4.09620864e-02,&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;6.46752170e-02]))&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;gt;&amp;gt;&amp;gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-180579435812409855?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/180579435812409855/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2011/11/pywt-versus-pywt.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/180579435812409855'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/180579435812409855'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2011/11/pywt-versus-pywt.html' title='pywt versus PyWT'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-5753565753367727683</id><published>2011-11-07T09:12:00.000-08:00</published><updated>2011-11-09T08:23:59.957-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hdf5'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Matrix Inversion with HDF5 files</title><content type='html'>&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: courier new;"&gt;#!/usr/bin/env python&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;import sys&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;import h5py&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;import numpy as np&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 85%;"&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;def &lt;b&gt;doolittle_h5&lt;/b&gt;( a_filename, side_size ):&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    import h5py&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    import numpy as np&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    fa = h5py.File( a_filename, 'r' )&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    a = fa['chunked']&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    fl = h5py.File( 'l.h5', 'r+' )&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    l = fl[u'data']&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    fu = h5py.File( 'u.h5', 'r+' )&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    u = fu[u'data']&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    n = side_size&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    &lt;b&gt;for&lt;/b&gt; i &lt;b&gt;in&lt;/b&gt; range( n ):&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;       for&lt;/b&gt; j in range( i, n ):&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;            u[i,j] = a[i,j]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;            for k in range( i ):&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;                u[i,j] = u[i,j] - l[i,k] * u[k,j]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;for&lt;/b&gt; j &lt;b&gt;in&lt;/b&gt; range( i, n ):&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;            l[j,i] = a[j,i]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;           for&lt;/b&gt; k &lt;b&gt;in&lt;/b&gt; range( i ):&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;                l[j,i] = l[j,i] - l[j,k] * u[k,i]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;            l[j,i] = l[j,i] / float( u[i,i] )&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;        print 'd: '+i&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    fa.close()&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    fl.close()&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    fu.close()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    &lt;b&gt;return&lt;/b&gt; None&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: courier new;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;def &lt;b&gt;solve_L_system_h5&lt;/b&gt;( a_filename, side_size, b ):&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    import h5py&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    import numpy as np&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    f = h5py.File( a_filename, 'r' )&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    a = f[u'data'][ :side_size, :side_size ] &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    x = np.zeros_like( b ).astype( np.float32 )&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    &lt;b&gt;for&lt;/b&gt; i &lt;b&gt;in&lt;/b&gt; range( b.size ):&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;        x[i] = b[i]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;       for&lt;/b&gt; j &lt;b&gt;in&lt;/b&gt; range( i ):&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;            x[i] -= a[i,j] * x[j]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    f.close()&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    &lt;b&gt;return&lt;/b&gt; x&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: courier new;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;def &lt;b&gt;solve_U_system_h5&lt;/b&gt;( a_filename, side_size, b ):&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    import h5py&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    import numpy as np&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    f = h5py.File( a_filename, 'r' )&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    a = f[u'data'][ :side_size, :side_size ]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    x = np.zeros_like( b ).astype( np.float32 )&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    &lt;b&gt;for&lt;/b&gt; i &lt;b&gt;in&lt;/b&gt; range( b.size-1,-1,-1 ):&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; x[i] = b[i] &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;for&lt;/b&gt; j &lt;b&gt;in&lt;/b&gt; range( i+1, b.size ):&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;            x[i] -= a[i,j] * x[j]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; x[i] /= float( a[i,i] )&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    f.close()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    &lt;b&gt;return&lt;/b&gt; x&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 85%;"&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;def &lt;b&gt;inverse_h5&lt;/b&gt;( a_filename, side_size ):&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    import h5py&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    import numpy as np&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    doolittle_h5( a_filename, side_size )&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    print "Done doing little."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    finv = h5py.File( 'ainv.h5', 'w' )&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    dinv = finv.create_dataset( u'data', ( side_size, side_size ), np.float32, chunks=(side_size,1) )&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    inv = finv[u'data']&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    &lt;b&gt;for&lt;/b&gt; i &lt;b&gt;in&lt;/b&gt; range( side_size ):&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; b = np.zeros((side_size,)) ; b[i] = 1.0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;        b.astype( np.float32 )&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;        y = solve_L_system_h5( 'l.h5', side_size, b )&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;        x = solve_U_system_h5( 'u.h5', side_size, y )&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;        inv[:,i] = x&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;        print "inverting: "+str(i/float(side_size))+"% done"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    finv.close()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    &lt;b&gt;return&lt;/b&gt; None&lt;/span&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;br style="color: #999999;" /&gt;&lt;span style="color: #666666; font-family: courier new;"&gt;#fa = h5py.File( 'a.h5', 'w' )&lt;/span&gt;&lt;br style="color: #666666;" /&gt;&lt;span style="color: #666666; font-family: courier new;"&gt;#d = fa.create_dataset( 'chunked', ( 3,3 ), np.float32 )&lt;/span&gt;&lt;br style="color: #666666;" /&gt;&lt;span style="color: #666666; font-family: courier new;"&gt;#a = fa['chunked']&lt;/span&gt;&lt;br style="color: #666666;" /&gt;&lt;br style="color: #666666;" /&gt;&lt;span style="color: #666666; font-family: courier new;"&gt;#da = [ [ 2,-1,-2 ], [ -4,6,3 ], [ -4,-2,8 ] ]&lt;/span&gt;&lt;br style="color: #666666;" /&gt;&lt;span style="color: #666666; font-family: courier new;"&gt;#for i in range( 3 ):&lt;/span&gt;&lt;br style="color: #666666;" /&gt;&lt;span style="color: #666666; font-family: courier new;"&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;    for j in range( 3 ):&lt;/span&gt;&lt;br style="color: #666666;" /&gt;&lt;span style="color: #666666; font-family: courier new;"&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;        a[i,j] = da[i][j]&lt;/span&gt;&lt;br style="color: #666666;" /&gt;&lt;br style="color: #666666;" /&gt;&lt;span style="color: #666666; font-family: courier new;"&gt;#fa.close()&lt;/span&gt;&lt;br style="color: #666666;" /&gt;&lt;br style="color: #666666;" /&gt;&lt;span style="color: #666666; font-family: courier new;"&gt;#inverse_h5('a.h5',3)&lt;/span&gt;&lt;br style="color: #666666;" /&gt;&lt;br style="color: #666666;" /&gt;&lt;span style="color: #666666; font-family: courier new;"&gt;# at command line: d0=date; nice -n -20 python doolittle.py xx.h5 250000; d1=date;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;inverse_h5( sys.argv[1], int( sys.argv[2] ) )&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-5753565753367727683?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/5753565753367727683/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2011/11/matrix-inversion-with-hdf5-files.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/5753565753367727683'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/5753565753367727683'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2011/11/matrix-inversion-with-hdf5-files.html' title='Matrix Inversion with HDF5 files'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-6390132124347093523</id><published>2011-10-19T11:36:00.001-07:00</published><updated>2011-10-19T11:42:43.255-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='bash'/><title type='text'>Deleting tons of files at once</title><content type='html'>Okay, suppose you have tons of files you need to delete.. so many that you can't open up the folder, or use ls to delete them in one fell swoop. Suppose further that your files are labeled like, "&lt;span style="font-family: courier new;"&gt;x_0_0_1_2.dat&lt;/span&gt;". Then you can write a loop in you bash terminal as follows:&lt;span style="font-family: courier new;"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-family: courier new;"&gt;$ for i in 0 1 2 ; do rm x_${i}_* ; done&lt;/span&gt;&lt;/blockquote&gt;The key thing to note here is the curly braces around the iterating variable. If you leave off the braces, it won't work.&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;blockquote style="font-family: courier new;"&gt;$ for i in 3 4 5 ; do rm x_$i_* ; done&lt;br /&gt;bash: /bin/rm: Argument list too long&lt;br /&gt;bash: /bin/rm: Argument list too long&lt;br /&gt;bash: /bin/rm: Argument list too long&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-6390132124347093523?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/6390132124347093523/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2011/10/deleting-tons-of-files-at-once.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/6390132124347093523'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/6390132124347093523'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2011/10/deleting-tons-of-files-at-once.html' title='Deleting tons of files at once'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-2800437967786069329</id><published>2011-04-22T12:59:00.000-07:00</published><updated>2011-04-22T13:01:07.613-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='physics'/><title type='text'>An Online Physics Textbook!</title><content type='html'>It claims to be a work in progress, but it seems pretty complete to me. You can find it &lt;a href="http://physics.info/"&gt;here&lt;/a&gt; at http://physics.info/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-2800437967786069329?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/2800437967786069329/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2011/04/online-physics-textbook.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/2800437967786069329'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/2800437967786069329'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2011/04/online-physics-textbook.html' title='An Online Physics Textbook!'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-1485350377479812459</id><published>2011-04-18T08:31:00.000-07:00</published><updated>2011-04-18T08:32:42.141-07:00</updated><title type='text'>PyCUDA Documentation</title><content type='html'>&lt;a href="http://documen.tician.de/pycuda/index.html"&gt;Here&lt;/a&gt; is the PyCUDA documentation.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-1485350377479812459?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/1485350377479812459/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2011/04/pycuda-documentation.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/1485350377479812459'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/1485350377479812459'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2011/04/pycuda-documentation.html' title='PyCUDA Documentation'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-2969059957729558134</id><published>2011-04-12T15:58:00.000-07:00</published><updated>2011-04-12T16:00:09.193-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='maxima'/><title type='text'>Maxima</title><content type='html'>Maxima is a free computer algebra system developed at MIT. &lt;a href="http://math-blog.com/2007/06/04/a-10-minute-tutorial-for-solving-math-problems-with-maxima/"&gt;Here&lt;/a&gt; is a great tutorial to get you up and running.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-2969059957729558134?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/2969059957729558134/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2011/04/maxima.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/2969059957729558134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/2969059957729558134'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2011/04/maxima.html' title='Maxima'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-330291637333367932</id><published>2011-04-07T12:39:00.000-07:00</published><updated>2011-04-07T12:41:46.817-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pil'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='fractals'/><title type='text'>L-System Fractals in Python using PIL</title><content type='html'>&lt;a href="http://code.activestate.com/recipes/577159-l-system-fractals/"&gt;Here&lt;/a&gt; is some code from ActiveState detailing some L-System fractal stuff&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-330291637333367932?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/330291637333367932/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2011/04/l-system-fractals-in-python-using-pil.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/330291637333367932'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/330291637333367932'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2011/04/l-system-fractals-in-python-using-pil.html' title='L-System Fractals in Python using PIL'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-7940441585206547510</id><published>2011-04-07T11:43:00.000-07:00</published><updated>2011-04-07T11:44:09.695-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fractals'/><title type='text'>Pretty neat site on fractals</title><content type='html'>Go &lt;a href="http://eldar.mathstat.uoguelph.ca/dashlock/ftax/index.html"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-7940441585206547510?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/7940441585206547510/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2011/04/pretty-neat-site-on-fractals.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/7940441585206547510'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/7940441585206547510'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2011/04/pretty-neat-site-on-fractals.html' title='Pretty neat site on fractals'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-7734476668576058522</id><published>2011-04-07T08:00:00.000-07:00</published><updated>2011-04-07T08:02:10.042-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pil'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>A good source for the Python Imaging Library</title><content type='html'>I've run across this site multiple times, but I don't think I've ever posted it here. Anyway, it has lots of stuff about the &lt;a href="http://effbot.org/"&gt;PIL&lt;/a&gt; module.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-7734476668576058522?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/7734476668576058522/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2011/04/good-source-for-python-imaging-library.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/7734476668576058522'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/7734476668576058522'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2011/04/good-source-for-python-imaging-library.html' title='A good source for the Python Imaging Library'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-745627103665921865</id><published>2011-04-05T11:01:00.000-07:00</published><updated>2011-04-05T11:02:55.126-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='sorting'/><title type='text'>Python Sorting</title><content type='html'>So... sort() sorts an interable in place, whereas sorted() returns a sorted copy. This also works on an iterable of objects! So, here's the &lt;a href="http://wiki.python.org/moin/HowTo/Sorting/"&gt;run-down&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-745627103665921865?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/745627103665921865/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2011/04/python-sorting.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/745627103665921865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/745627103665921865'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2011/04/python-sorting.html' title='Python Sorting'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-5870399792467906007</id><published>2011-03-30T12:27:00.000-07:00</published><updated>2011-03-30T12:28:55.725-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='opencv'/><title type='text'>PyOpenCV - Access OpenCV Through Python!</title><content type='html'>OpenCV is an open source computer vision library written in C/C++. &lt;a href="http://opencv.willowgarage.com/wiki/PythonInterface"&gt;Here&lt;/a&gt; is the Python module for it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-5870399792467906007?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/5870399792467906007/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2011/03/pyopencv-access-opencv-through-python.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/5870399792467906007'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/5870399792467906007'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2011/03/pyopencv-access-opencv-through-python.html' title='PyOpenCV - Access OpenCV Through Python!'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-6427227567411151685</id><published>2011-03-29T12:46:00.000-07:00</published><updated>2011-03-29T12:47:30.347-07:00</updated><title type='text'>Create Image with NumPy</title><content type='html'>&lt;a href="http://jehiah.cz/a/creating-images-with-numpy"&gt;This&lt;/a&gt; is a good resource. Apparently better than using PIL putpixel(), etc.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-6427227567411151685?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/6427227567411151685/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2011/03/create-image-with-numpy.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/6427227567411151685'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/6427227567411151685'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2011/03/create-image-with-numpy.html' title='Create Image with NumPy'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-7031309034157026748</id><published>2011-03-27T18:09:00.000-07:00</published><updated>2011-03-27T18:11:10.563-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='r'/><title type='text'>A Nice Introduction to R</title><content type='html'>&lt;a href="http://www.stat.pitt.edu/stoffer/tsa2/R_time_series_quick_fix.htm"&gt;Here&lt;/a&gt; is a really good R time series resource.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-7031309034157026748?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/7031309034157026748/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2011/03/nice-introduction-to-r.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/7031309034157026748'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/7031309034157026748'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2011/03/nice-introduction-to-r.html' title='A Nice Introduction to R'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-5890254175226830119</id><published>2011-03-27T03:00:00.000-07:00</published><updated>2011-03-27T18:09:39.163-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rpy'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='json'/><category scheme='http://www.blogger.com/atom/ns#' term='r'/><title type='text'>Some RPy Examples</title><content type='html'>&lt;a href="http://www.alyz.com/rates.xhtml"&gt;This&lt;/a&gt; is a pretty good resource for RPy. It has a lot of economics data. It also uses json, which is something I've never heard of.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.daimi.au.dk/%7Ebesen/TBiB2007/lecture-notes/rpy.html"&gt;This&lt;/a&gt; is another great introduction to RPy!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-5890254175226830119?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/5890254175226830119/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2011/03/some-rpy-examples.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/5890254175226830119'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/5890254175226830119'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2011/03/some-rpy-examples.html' title='Some RPy Examples'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-3692875553535157720</id><published>2011-03-25T19:47:00.000-07:00</published><updated>2011-03-25T19:50:05.202-07:00</updated><title type='text'>Installing Packages in R, using Ubuntu</title><content type='html'>R... is the unintuitive statistics "programming language". I'm being overly disdainful; just because you don't like something doesn't mean it isn't useful. It has a fractal dimension package, fdim, which you can read about on CRAN.&lt;br /&gt;&lt;br /&gt;I found &lt;a href="http://www.keittlab.org/node/158"&gt;this&lt;/a&gt; useful in getting fdim up and running, even though it has deprecated dependencies and everything.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-3692875553535157720?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/3692875553535157720/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2011/03/installing-packages-in-r-using-ubuntu.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/3692875553535157720'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/3692875553535157720'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2011/03/installing-packages-in-r-using-ubuntu.html' title='Installing Packages in R, using Ubuntu'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-1948726365386334993</id><published>2011-03-23T17:30:00.000-07:00</published><updated>2011-03-23T17:31:48.315-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>PCA in Python</title><content type='html'>&lt;a href="http://stackoverflow.com/questions/1730600/principal-component-analysis-in-python"&gt;Here&lt;/a&gt; is the stack-overflow page on PCA in Python.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-1948726365386334993?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/1948726365386334993/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2011/03/pca-in-python.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/1948726365386334993'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/1948726365386334993'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2011/03/pca-in-python.html' title='PCA in Python'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-3997648961407108312</id><published>2011-03-22T09:30:00.001-07:00</published><updated>2011-03-22T09:30:58.099-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='latex'/><title type='text'>Hypertext Help With LaTeX</title><content type='html'>&lt;a href="http://www.cs.cmu.edu/afs/cs/local/tex/common/teTeX-1.0/lib/texmf/doc/latex/latex2e-html/ltx-2.html"&gt;This&lt;/a&gt; is a great general site on LaTeX.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-3997648961407108312?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/3997648961407108312/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2011/03/hypertext-help-with-latex.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/3997648961407108312'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/3997648961407108312'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2011/03/hypertext-help-with-latex.html' title='Hypertext Help With LaTeX'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-8302735067139203262</id><published>2011-03-22T09:22:00.000-07:00</published><updated>2011-03-22T09:23:38.002-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='latex'/><title type='text'>LaTeX Standard Environments</title><content type='html'>&lt;a href="http://www.personal.ceu.hu/tex/environ.htm"&gt;Here&lt;/a&gt; is a good page on the LaTeX standard environments.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-8302735067139203262?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/8302735067139203262/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2011/03/latex-standard-environments.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/8302735067139203262'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/8302735067139203262'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2011/03/latex-standard-environments.html' title='LaTeX Standard Environments'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-5066053616344361549</id><published>2011-03-17T08:48:00.000-07:00</published><updated>2011-03-17T08:50:50.097-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='threading'/><title type='text'>Example of using threading using Python</title><content type='html'>&lt;span style="font-family: courier new;font-size:85%;" &gt;#!/usr/bin/env python&lt;br /&gt;&lt;br /&gt;import Queue&lt;br /&gt;import threading&lt;br /&gt;import mahotas&lt;br /&gt;import time&lt;br /&gt;import sys&lt;br /&gt;&lt;br /&gt;# this is the list where&lt;br /&gt;# the final data goes&lt;br /&gt;f = list()&lt;br /&gt;&lt;br /&gt;# create a Queue&lt;br /&gt;queue = Queue.Queue()&lt;br /&gt;&lt;br /&gt;# the code that needs to be executed&lt;br /&gt;# we override the init function in order to pass parameters to the threads&lt;br /&gt;class MyThread( threading.Thread ):&lt;br /&gt;    def __init__( self, f, queue ):&lt;br /&gt;        self.f = f&lt;br /&gt;        self.queue = queue&lt;br /&gt;        threading.Thread.__init__( self )&lt;br /&gt;    def run( self ):&lt;br /&gt;        while True:&lt;br /&gt;            task = self.queue.get()&lt;br /&gt;            self.f.append( mahotas.features.haralick( task ) )&lt;br /&gt;            self.queue.task_done()&lt;br /&gt;&lt;br /&gt;# reads the image and converts it to a numpy int ndarray&lt;br /&gt;img = mahotas.imread( sys.argv[1] )&lt;br /&gt;&lt;br /&gt;# chip size dimensions&lt;br /&gt;chipx = int( sys.argv[2] )&lt;br /&gt;chipy = int( sys.argv[3] )&lt;br /&gt;&lt;br /&gt;# figure out image size&lt;br /&gt;imgx, imgy, imgz = img.shape&lt;br /&gt;&lt;br /&gt;# the number of chips in each direction&lt;br /&gt;nbxchips = imgx/chipx&lt;br /&gt;nbychips = imgy/chipy&lt;br /&gt;&lt;br /&gt;start = time.time()&lt;br /&gt;&lt;br /&gt;# create some threads&lt;br /&gt;for i in range( 3 ):&lt;br /&gt;    t = MyThread( f, queue )&lt;br /&gt;    t.setDaemon( True )&lt;br /&gt;    t.start()&lt;br /&gt;&lt;br /&gt;# put chips into the queue&lt;br /&gt;for i in range( nbxchips ):&lt;br /&gt;    for j in range( nbychips ):&lt;br /&gt;        queue.put( img[i*chipx:(i+1)*chipx,j*chipy:(j+1)*chipy,:] )&lt;br /&gt;&lt;br /&gt;# wait for all the work to finish&lt;br /&gt;queue.join()&lt;br /&gt;&lt;br /&gt;print 'Elapsed Time: %s' % ( time.time() - start )&lt;br /&gt;&lt;br /&gt;print len( f )&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-5066053616344361549?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/5066053616344361549/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2011/03/example-of-using-threading-using-python.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/5066053616344361549'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/5066053616344361549'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2011/03/example-of-using-threading-using-python.html' title='Example of using threading using Python'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-2532522185991485871</id><published>2011-03-15T13:36:00.000-07:00</published><updated>2011-03-15T14:10:54.137-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='image processing'/><category scheme='http://www.blogger.com/atom/ns#' term='haralick texture'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Haralick Features, and other features, too!</title><content type='html'>I found &lt;a href="http://packages.python.org/mahotas/index.html#"&gt;this&lt;/a&gt; site that describes a Python module that calculates Haralick textures, SURF features, and others.&lt;br /&gt;&lt;br /&gt;Notable algorithms:&lt;dl class="docutils"&gt;&lt;dd&gt;&lt;ul class="first last simple"&gt;&lt;li&gt;watershed.&lt;/li&gt;&lt;li&gt;convex points calculations.&lt;/li&gt;&lt;li&gt;hit &amp;amp; miss. thinning.&lt;/li&gt;&lt;li&gt;Zernike &amp;amp; Haralick, LBP, and TAS features.&lt;/li&gt;&lt;li&gt;freeimage based numpy image loading (requires freeimage libraries to be installed).&lt;/li&gt;&lt;li&gt;Speeded-Up Robust Features (SURF), a form of local features.&lt;/li&gt;&lt;li&gt;thresholding.&lt;/li&gt;&lt;li&gt;convolution.&lt;/li&gt;&lt;li&gt;Sobel edge detection&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;a href="http://pythonvision.org/basic-tutorial"&gt;PythonVision&lt;/a&gt; is another good site.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-2532522185991485871?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/2532522185991485871/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2011/03/haralick-features-and-other-features.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/2532522185991485871'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/2532522185991485871'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2011/03/haralick-features-and-other-features.html' title='Haralick Features, and other features, too!'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-1284722858415435593</id><published>2011-03-15T09:25:00.000-07:00</published><updated>2011-03-15T09:26:35.735-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='statistics'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Python PCA (ii)</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;# Code from Chapter 10 of Machine Learning: An Algorithmic Perspective&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;# by Stephen Marsland (http://seat.massey.ac.nz/personal/s.r.marsland/MLBook.html)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;# You are free to use, change, or redistribute the code in any way you wish for&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;# non-commercial purposes, but please maintain the name of the original author.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;# This code comes with no warranty of any kind.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;# Stephen Marsland, 2008&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;# An algorithm to compute PCA. Not as fast as the NumPy implementation&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;from pylab import *&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;from numpy import *&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;def pca(data,nRedDim=0,normalise=1):&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    # Centre data&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    m = mean(data,axis=0)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    data -= m&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    # Covariance matrix&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    C = cov(transpose(data))&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    # Compute eigenvalues and sort into descending order&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    evals,evecs = linalg.eig(C) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    indices = argsort(evals)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    indices = indices[::-1]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    evecs = evecs[:,indices]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    evals = evals[indices]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    if nRedDim&gt;0:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        evecs = evecs[:,:nRedDim]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    if normalise:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        for i in range(shape(evecs)[1]):&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;            evecs[:,i] / linalg.norm(evecs[:,i]) * sqrt(evals[i])&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    # Produce the new data matrix&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    x = dot(transpose(evecs),transpose(data))&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    # Compute the original data again&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    y=transpose(dot(evecs,x))+m&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    return x,y,evals,evecs&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-1284722858415435593?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/1284722858415435593/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2011/03/python-pca-ii.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/1284722858415435593'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/1284722858415435593'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2011/03/python-pca-ii.html' title='Python PCA (ii)'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-4157107970400119733</id><published>2011-03-15T09:23:00.000-07:00</published><updated>2011-03-15T09:25:04.398-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='statistics'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Python PCA (i)</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;#!/usr/bin/env python &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;""" a small class for Principal Component Analysis &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;Usage: &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    p = PCA( A, fraction=0.90 ) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;In: &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    A: an array of e.g. 1000 observations x 20 variables, 1000 rows x 20 columns &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    fraction: use principal components that account for e.g. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        90 % of the total variance &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;Out: &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    p.U, p.d, p.Vt: from numpy.linalg.svd, A = U . d . Vt &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    p.dinv: 1/d or 0, see NR &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    p.eigen: the eigenvalues of A*A, in decreasing order (p.d**2). &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        eigen[j] / eigen.sum() is variable j's fraction of the total variance; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        look at the first few eigen[] to see how many PCs get to 90 %, 95 % ... &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    p.npc: number of principal components, &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        e.g. 2 if the top 2 eigenvalues are &gt;= `fraction` of the total. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        It's ok to change this; methods use the current value. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;Methods: &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    The methods of class PCA transform vectors or arrays of e.g. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    20 variables, 2 principal components and 1000 observations, &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    using partial matrices U' d' Vt', parts of the full U d Vt: &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    A ~ U' . d' . Vt' where e.g. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        U' is 1000 x 2 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        d' is diag([ d0, d1 ]), the 2 largest singular values &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        Vt' is 2 x 20.  Dropping the primes, &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    d . Vt      2 principal vars = p.vars_pc( 20 vars ) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    U           1000 obs = p.pc_obs( 2 principal vars ) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    U . d . Vt  1000 obs, p.obs( 20 vars ) = pc_obs( vars_pc( vars )) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        fast approximate A . vars, using the `npc` principal components &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    Ut              2 pcs = p.obs_pc( 1000 obs ) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    V . dinv        20 vars = p.pc_vars( 2 principal vars ) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    V . dinv . Ut   20 vars, p.vars( 1000 obs ) = pc_vars( obs_pc( obs )), &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        fast approximate Ainverse . obs: vars that give ~ those obs. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;Notes: &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    PCA does not center or scale A; you usually want to first &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        A -= A.mean(A, axis=0) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        A /= A.std(A, axis=0) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    with the little class Center or the like, below. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;See also: &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    http://en.wikipedia.org/wiki/Principal_component_analysis &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    http://en.wikipedia.org/wiki/Singular_value_decomposition &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    Press et al., Numerical Recipes (2 or 3 ed), SVD &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    PCA micro-tutorial &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    iris-pca .py .png &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;""" &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;from __future__ import division &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;import numpy as np &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;dot = np.dot &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    # import bz.numpyutil as nu &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    # dot = nu.pdot &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;__version__ = "2010-04-14 apr" &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;__author_email__ = "denis-bz-py at t-online dot de" &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;#............................................................................... &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;class PCA: &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    def __init__( self, A, fraction=0.90 ): &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        assert 0 &lt;= fraction &lt;= 1 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;            # A = U . diag(d) . Vt, O( m n^2 ), lapack_lite -- &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        self.U, self.d, self.Vt = np.linalg.svd( A, full_matrices=False ) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        assert np.all( self.d[:-1] &gt;= self.d[1:] )  # sorted &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        self.eigen = self.d**2 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        self.sumvariance = np.cumsum(self.eigen) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        self.sumvariance /= self.sumvariance[-1] &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        self.npc = np.searchsorted( self.sumvariance, fraction ) + 1 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        self.dinv = np.array([ 1/d if d &gt; self.d[0] * 1e-6  else 0 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;                                for d in self.d ]) &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    def pc( self ): &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        """ e.g. 1000 x 2 U[:, :npc] * d[:npc], to plot etc. """ &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        n = self.npc &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        return self.U[:, :n] * self.d[:n] &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    # These 1-line methods may not be worth the bother; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    # then use U d Vt directly -- &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    def vars_pc( self, x ): &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        n = self.npc &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        return self.d[:n] * dot( self.Vt[:n], x.T ).T  # 20 vars -&gt; 2 principal &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    def pc_vars( self, p ): &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        n = self.npc &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        return dot( self.Vt[:n].T, (self.dinv[:n] * p).T ) .T  # 2 PC -&gt; 20 vars &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    def pc_obs( self, p ): &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        n = self.npc &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        return dot( self.U[:, :n], p.T )  # 2 principal -&gt; 1000 obs &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    def obs_pc( self, obs ): &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        n = self.npc &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        return dot( self.U[:, :n].T, obs ) .T  # 1000 obs -&gt; 2 principal &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    def obs( self, x ): &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        return self.pc_obs( self.vars_pc(x) )  # 20 vars -&gt; 2 principal -&gt; 1000 obs &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    def vars( self, obs ): &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        return self.pc_vars( self.obs_pc(obs) )  # 1000 obs -&gt; 2 principal -&gt; 20 vars &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;class Center: &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    """ A -= A.mean() /= A.std(), inplace -- use A.copy() if need be &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        uncenter(x) == original A . x &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    """ &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        # mttiw &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    def __init__( self, A, axis=0, scale=True, verbose=1 ): &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        self.mean = A.mean(axis=axis) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        if verbose: &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;            print "Center -= A.mean:", self.mean &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        A -= self.mean &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        if scale: &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;            std = A.std(axis=axis) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;            self.std = np.where( std, std, 1. ) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;            if verbose: &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;                print "Center /= A.std:", self.std &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;            A /= self.std &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        else: &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;            self.std = np.ones( A.shape[-1] ) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        self.A = A &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    def uncenter( self, x ): &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        return np.dot( self.A, x * self.std ) + np.dot( x, self.mean ) &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;#............................................................................... &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;if __name__ == "__main__": &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    import sys &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    csv = "iris4.csv"  # wikipedia Iris_flower_data_set &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        # 5.1,3.5,1.4,0.2  # ,Iris-setosa ... &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    N = 1000 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    K = 20 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    fraction = .90 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    seed = 1 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    exec "\n".join( sys.argv[1:] )  # N= ... &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    np.random.seed(seed) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    np.set_printoptions( 1, threshold=100, suppress=True )  # .1f &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    try: &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        A = np.genfromtxt( csv, delimiter="," ) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        N, K = A.shape &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    except IOError: &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        A = np.random.normal( size=(N, K) )  # gen correlated ? &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    print "csv: %s  N: %d  K: %d  fraction: %.2g" % (csv, N, K, fraction) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    Center(A) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    print "A:", A &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    print "PCA ..." , &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    p = PCA( A, fraction=fraction ) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    print "npc:", p.npc &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    print "% variance:", p.sumvariance * 100 &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    print "Vt[0], weights that give PC 0:", p.Vt[0] &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    print "A . Vt[0]:", dot( A, p.Vt[0] ) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    print "pc:", p.pc() &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    print "\nobs &lt;-&gt; pc &lt;-&gt; x: with fraction=1, diffs should be ~ 0" &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    x = np.ones(K) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    # x = np.ones(( 3, K )) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    print "x:", x &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    pc = p.vars_pc(x)  # d' Vt' x &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    print "vars_pc(x):", pc &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    print "back to ~ x:", p.pc_vars(pc) &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    Ax = dot( A, x.T ) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    pcx = p.obs(x)  # U' d' Vt' x &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    print "Ax:", Ax &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    print "A'x:", pcx &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    print "max |Ax - A'x|: %.2g" % np.linalg.norm( Ax - pcx, np.inf ) &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    b = Ax  # ~ back to original x, Ainv A x &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    back = p.vars(b) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    print "~ back again:", back &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    print "max |back - x|: %.2g" % np.linalg.norm( back - x, np.inf ) &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;# end pca.py &lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-4157107970400119733?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/4157107970400119733/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2011/03/python-pca-i.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/4157107970400119733'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/4157107970400119733'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2011/03/python-pca-i.html' title='Python PCA (i)'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-8715679900561223848</id><published>2011-02-27T16:06:00.000-08:00</published><updated>2011-02-27T16:40:54.643-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='threading'/><title type='text'>Threading and Queues in Python!</title><content type='html'>&lt;a href="http://www.doughellmann.com/PyMOTW/Queue/"&gt;Here&lt;/a&gt; is a good site on the Queue module.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.devshed.com/c/a/Python/Basic-Threading-in-Python/"&gt;Here&lt;/a&gt; is a good site on the Threading module.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.ibm.com/developerworks/aix/library/au-threadingpython/"&gt;Here&lt;/a&gt; is the IBM site on Threading and Queues.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-8715679900561223848?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/8715679900561223848/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2011/02/threading-and-queues-in-python.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/8715679900561223848'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/8715679900561223848'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2011/02/threading-and-queues-in-python.html' title='Threading and Queues in Python!'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-2151729700079342891</id><published>2011-02-13T18:54:00.001-08:00</published><updated>2011-02-13T19:51:25.666-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='matlab'/><category scheme='http://www.blogger.com/atom/ns#' term='physics'/><category scheme='http://www.blogger.com/atom/ns#' term='numpy'/><title type='text'>Instantaneous Amplitude, Phase and Frequency</title><content type='html'>&lt;a href="http://mathforum.org/kb/message.jspa?messageID=947550&amp;amp;tstart=0"&gt;Here&lt;/a&gt; is a link to a good discussion on this with MATLAB code.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.dsprelated.com/groups/matlab/show/5198.php"&gt;Here&lt;/a&gt; is another place with a good discussion on doing a phase shift.&lt;br /&gt;The Hilbert transform is fft ---&gt; phase shift ---&gt; ifft.&lt;br /&gt;Doing fft and ifft are easy in numpy, and a phase shift is just multiplying each term in the signal by exp(j*p), where j is the imaginary unit, and p is the desired phase shift.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-2151729700079342891?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/2151729700079342891/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2011/02/instantaneous-amplitude-phase-and.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/2151729700079342891'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/2151729700079342891'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2011/02/instantaneous-amplitude-phase-and.html' title='Instantaneous Amplitude, Phase and Frequency'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-418952983342468925</id><published>2011-02-09T14:47:00.000-08:00</published><updated>2011-02-09T14:48:04.430-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='statistics'/><title type='text'>ROC Curves</title><content type='html'>&lt;a href="http://www.medcalc.org/manual/roc-curves.php"&gt;Here&lt;/a&gt; is a good site on ROC curves.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-418952983342468925?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/418952983342468925/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2011/02/roc-curves.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/418952983342468925'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/418952983342468925'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2011/02/roc-curves.html' title='ROC Curves'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-8541027966613375729</id><published>2011-02-06T10:44:00.001-08:00</published><updated>2011-02-06T10:59:31.433-08:00</updated><title type='text'>Project Results!</title><content type='html'>This is the raw data&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_4or8WOULESA/TU7uMnUjl4I/AAAAAAAAAE8/2a4DSpkb4mk/s1600/raw_8_inch_air1.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://2.bp.blogspot.com/_4or8WOULESA/TU7uMnUjl4I/AAAAAAAAAE8/2a4DSpkb4mk/s400/raw_8_inch_air1.png" alt="" id="BLOGGER_PHOTO_ID_5570651689584924546" border="0" /&gt;&lt;/a&gt;This is the data after subtracting the reference signal&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_4or8WOULESA/TU7uX43SoPI/AAAAAAAAAFE/4dVfSTChws8/s1600/subtracted_8_inch_air1.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://2.bp.blogspot.com/_4or8WOULESA/TU7uX43SoPI/AAAAAAAAAFE/4dVfSTChws8/s400/subtracted_8_inch_air1.png" alt="" id="BLOGGER_PHOTO_ID_5570651883272577266" border="0" /&gt;&lt;/a&gt;This is the data after each row has been differenced&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_4or8WOULESA/TU7uX43SoPI/AAAAAAAAAFE/4dVfSTChws8/s1600/subtracted_8_inch_air1.png"&gt;&lt;br /&gt;&lt;/a&gt;&lt;a href="http://3.bp.blogspot.com/_4or8WOULESA/TU7uqS9lK3I/AAAAAAAAAFM/RoWrkQInCMQ/s1600/differenced_8_inch_air1.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://3.bp.blogspot.com/_4or8WOULESA/TU7uqS9lK3I/AAAAAAAAAFM/RoWrkQInCMQ/s400/differenced_8_inch_air1.png" alt="" id="BLOGGER_PHOTO_ID_5570652199515925362" border="0" /&gt;&lt;/a&gt;This density function represents the sum of each column of the previous image&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_4or8WOULESA/TU7u8IQhJoI/AAAAAAAAAFU/QyfEIfJYO7Y/s1600/sums_8_inch_air1.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://2.bp.blogspot.com/_4or8WOULESA/TU7u8IQhJoI/AAAAAAAAAFU/QyfEIfJYO7Y/s400/sums_8_inch_air1.png" alt="" id="BLOGGER_PHOTO_ID_5570652505880209026" border="0" /&gt;&lt;/a&gt;This is the result of using a five point smoothing function on the previous data&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_4or8WOULESA/TU7vONBer_I/AAAAAAAAAFc/lEoYAPTGFUk/s1600/smooth5_sums_water1_8_inch.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://3.bp.blogspot.com/_4or8WOULESA/TU7vONBer_I/AAAAAAAAAFc/lEoYAPTGFUk/s400/smooth5_sums_water1_8_inch.png" alt="" id="BLOGGER_PHOTO_ID_5570652816396955634" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-8541027966613375729?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/8541027966613375729/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2011/02/project-results.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/8541027966613375729'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/8541027966613375729'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2011/02/project-results.html' title='Project Results!'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_4or8WOULESA/TU7uMnUjl4I/AAAAAAAAAE8/2a4DSpkb4mk/s72-c/raw_8_inch_air1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-653275432374211762</id><published>2011-01-26T18:47:00.000-08:00</published><updated>2011-01-26T18:58:43.421-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='stocks'/><title type='text'>NASDAQ, NYSE, AMEX Data</title><content type='html'>Here is a site that provides historical data over 10 years for three exchanges, the NYSE, NASDAQ and AMEX. Go to 'Stock Chart,' and then 'Historical Quotes' or something can be found in the sidebar. Link is &lt;a href="http://www.nasdaq.com/screening/company-list.aspx"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-653275432374211762?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/653275432374211762/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2011/01/nasdaq-nyse-amex-data.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/653275432374211762'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/653275432374211762'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2011/01/nasdaq-nyse-amex-data.html' title='NASDAQ, NYSE, AMEX Data'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-5704850166905167928</id><published>2011-01-26T06:17:00.000-08:00</published><updated>2011-01-26T07:07:24.603-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='latex'/><title type='text'>LaTeX Crashing Course</title><content type='html'>This is a good tutorial that walks through things pretty slowly. I have so far only used it to fill in fundamental gaps; I haven't perused it for anything fancy. &lt;a href="http://www.math.harvard.edu/texman/node1.html"&gt;Here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.andy-roberts.net/misc/latex/latextutorial4.html"&gt;This&lt;/a&gt; is a good tutorial on tables.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-5704850166905167928?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/5704850166905167928/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2011/01/latex-crashing-course.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/5704850166905167928'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/5704850166905167928'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2011/01/latex-crashing-course.html' title='LaTeX Crashing Course'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-4416129874300289042</id><published>2011-01-25T13:04:00.000-08:00</published><updated>2011-01-25T13:06:06.801-08:00</updated><title type='text'>Best Bash Tutorials Ever. Period.</title><content type='html'>I can stop looking for Bash tutorials forever now. This is better than the expensive book I bought on this topic.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.faqs.org/docs/abs/HTML/index.html"&gt;http://www.faqs.org/docs/abs/HTML/index.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-4416129874300289042?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/4416129874300289042/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2011/01/best-bash-tutorials-ever-period.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/4416129874300289042'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/4416129874300289042'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2011/01/best-bash-tutorials-ever-period.html' title='Best Bash Tutorials Ever. Period.'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-883105309447532612</id><published>2011-01-17T12:26:00.001-08:00</published><updated>2011-01-17T12:26:41.444-08:00</updated><title type='text'>Colors</title><content type='html'>&lt;a href="http://colorschemedesigner.com/"&gt;Here&lt;/a&gt; is a good color scheme designer.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-883105309447532612?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/883105309447532612/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2011/01/colors.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/883105309447532612'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/883105309447532612'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2011/01/colors.html' title='Colors'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-1005888805806373937</id><published>2011-01-06T10:46:00.000-08:00</published><updated>2011-01-06T10:51:30.448-08:00</updated><title type='text'>Paul McCartney II</title><content type='html'>Awesome opossum. Some selected tracks can be found, &lt;a href="http://www.ilictronix.com/2009/09/bobas-blast-from-past-4.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Coming Up, the album's single, can be found, &lt;a href="http://www.youtube.com/watch?v=ieEvOvdr2Fg"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-1005888805806373937?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/1005888805806373937/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2011/01/paul-mccartney-ii.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/1005888805806373937'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/1005888805806373937'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2011/01/paul-mccartney-ii.html' title='Paul McCartney II'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-5871971066354750403</id><published>2011-01-06T06:42:00.000-08:00</published><updated>2011-01-06T06:43:35.757-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='digital signal processing'/><title type='text'>Digital Signal Processing</title><content type='html'>A free book on digital signal processing (DSP) can be found, &lt;a href="http://www.dspguide.com/"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-5871971066354750403?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/5871971066354750403/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2011/01/digital-signal-processing.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/5871971066354750403'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/5871971066354750403'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2011/01/digital-signal-processing.html' title='Digital Signal Processing'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-2195873629899123757</id><published>2011-01-03T06:30:00.000-08:00</published><updated>2011-01-03T06:31:30.589-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GPU'/><title type='text'>Computing Talk</title><content type='html'>A page on Python software is found &lt;a href="http://www.scipy.org/Topical_Software"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-2195873629899123757?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/2195873629899123757/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2011/01/computing-talk.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/2195873629899123757'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/2195873629899123757'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2011/01/computing-talk.html' title='Computing Talk'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-1867700157737441116</id><published>2010-12-20T08:38:00.000-08:00</published><updated>2010-12-20T08:52:46.979-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cooking'/><title type='text'>Best Curry Yet.</title><content type='html'>Start some brown rice with mashed ginger. Chop some yams or sweet potatoes and carrots and roast them halfway. Lightly toast some cumin seeds in a skillet and then grind them in a mortar. Put the half-roasted root vegetables into the skillet with some minced onion and garlic. Add dried basil, cayenne, cinnamon, cardamom, corriander, and cumin. Cook until the onions are translucent and then add to the rice. Mix in siracha, green onions, peanuts, banana chips and raisins. (The peanuts should add enough salt.)&lt;br /&gt;&lt;br /&gt;I don't think Indians use cayenne, but instead rely on the combination of other spices and cinnamon to create a heat. Whatever. It was my birthday and I liked it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-1867700157737441116?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/1867700157737441116/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2010/12/best-curry-yet.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/1867700157737441116'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/1867700157737441116'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2010/12/best-curry-yet.html' title='Best Curry Yet.'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-518224941634241956</id><published>2010-12-20T08:37:00.000-08:00</published><updated>2011-01-03T06:30:10.220-08:00</updated><title type='text'>White/Pink/Red Noise Generation</title><content type='html'>This guy uses some scripts and sox to produce different kinds of noise, &lt;a href="http://unreasonable.org/node/303"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;This guy has some Matlab/Octave code to generate pink noise, &lt;a href="https://ccrma.stanford.edu/%7Ejos/sasp/Example_Synthesis_1_F_Noise.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The wikipedia article on spectral density is helpful. It is found &lt;a href="http://en.wikipedia.org/wiki/Spectral_density"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The scholarpedia (?) article on 1/f noise is &lt;a href="http://www.scholarpedia.org/article/1/f_noise"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;A python pink noise generator is &lt;a href="http://projects.scipy.org/scipy/browser/trunk/scipy/sandbox/rkern/pink.py?rev=3299"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;A Matlab script for pink noise is &lt;a href="http://www.mathworks.com/support/solutions/archived/1-16842.html"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-518224941634241956?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/518224941634241956/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2010/12/whitepinkred-noise-generation.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/518224941634241956'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/518224941634241956'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2010/12/whitepinkred-noise-generation.html' title='White/Pink/Red Noise Generation'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-3761269218409564436</id><published>2010-12-20T08:26:00.000-08:00</published><updated>2010-12-20T08:32:31.360-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GNU'/><title type='text'>Command Line Audio Manipulation</title><content type='html'>Sound eXchange can be found, &lt;a href="http://sox.sourceforge.net/"&gt;here&lt;/a&gt;. I think you need to convert ogg -&gt; wav using sox, and then wav -&gt; mp3 using lame.&lt;br /&gt;&lt;br /&gt;Soundconverter, a GNU GUI for translating between formats can be found, &lt;a href="http://soundconverter.berlios.de/"&gt;here&lt;/a&gt;. It appears to also have a command-line capability.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-3761269218409564436?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/3761269218409564436/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2010/12/command-line-audio-manipulation.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/3761269218409564436'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/3761269218409564436'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2010/12/command-line-audio-manipulation.html' title='Command Line Audio Manipulation'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-8085549504409907252</id><published>2010-12-13T13:22:00.000-08:00</published><updated>2010-12-13T13:23:50.320-08:00</updated><title type='text'>Create Windows Executables from Python Scripts</title><content type='html'>Py2exe is found &lt;a href="http://www.py2exe.org/"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-8085549504409907252?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/8085549504409907252/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2010/12/create-windows-executables-from-python.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/8085549504409907252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/8085549504409907252'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2010/12/create-windows-executables-from-python.html' title='Create Windows Executables from Python Scripts'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-1494094355983084589</id><published>2010-12-09T17:01:00.000-08:00</published><updated>2010-12-13T13:24:52.416-08:00</updated><title type='text'>Tutorial Ideas</title><content type='html'>+ Predator-Prey Modeling&lt;br /&gt;+ Other Dynamic Models&lt;br /&gt;+ Differential Equations&lt;br /&gt;+ Kalmann Filter&lt;br /&gt;+ Using Cyphers&lt;br /&gt;+ Image Processing&lt;br /&gt;+ Color Schemes&lt;br /&gt;+ Random Numbers and Chaos&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-1494094355983084589?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/1494094355983084589/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2010/12/tutorial-ideas.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/1494094355983084589'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/1494094355983084589'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2010/12/tutorial-ideas.html' title='Tutorial Ideas'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-7160327720512202188</id><published>2010-12-09T08:45:00.000-08:00</published><updated>2010-12-09T08:46:31.967-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='matplotlib'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Handling Images in Python via Matplotlib</title><content type='html'>This page describes how to use the matplotlib.image module to load and work with images. &lt;a href="http://matplotlib.sourceforge.net/users/image_tutorial.html"&gt;Here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-7160327720512202188?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/7160327720512202188/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2010/12/handling-images-in-python-via.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/7160327720512202188'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/7160327720512202188'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2010/12/handling-images-in-python-via.html' title='Handling Images in Python via Matplotlib'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-8307120461339213549</id><published>2010-12-06T13:54:00.001-08:00</published><updated>2010-12-06T13:54:56.651-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Something about Python GUI</title><content type='html'>&lt;a href="http://www.linux.com/archive/feature/145949"&gt;Har&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-8307120461339213549?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/8307120461339213549/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2010/12/something-about-python-gui.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/8307120461339213549'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/8307120461339213549'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2010/12/something-about-python-gui.html' title='Something about Python GUI'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-7823103798411241402</id><published>2010-12-01T06:47:00.001-08:00</published><updated>2010-12-01T09:15:30.014-08:00</updated><title type='text'>Micro-controllers</title><content type='html'>&lt;a href="http://focus.ti.com/mcu/docs/mcuprodmsptoolsw.tsp?sectionId=95&amp;amp;tabId=1203&amp;amp;familyId=342&amp;amp;toolTypeId=1"&gt;http://focus.ti.com/mcu/docs/mcuprodmsptoolsw.tsp?sectionId=95&amp;amp;tabId=1203&amp;amp;familyId=342&amp;amp;toolTypeId=1&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-7823103798411241402?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/7823103798411241402/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2010/12/micro-controllers.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/7823103798411241402'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/7823103798411241402'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2010/12/micro-controllers.html' title='Micro-controllers'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-8105879014300369037</id><published>2010-11-30T08:41:00.001-08:00</published><updated>2010-11-30T08:42:04.312-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>cat is for concatenate (tfw?)</title><content type='html'>I always forget how to use the cat utility. &lt;a href="http://www.linuxjournal.com/article/1322"&gt;Here&lt;/a&gt;'s how.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-8105879014300369037?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/8105879014300369037/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2010/11/cat-is-for-concatenate-tfw.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/8105879014300369037'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/8105879014300369037'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2010/11/cat-is-for-concatenate-tfw.html' title='cat is for concatenate (tfw?)'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-414749554371750129</id><published>2010-11-29T11:23:00.000-08:00</published><updated>2010-11-29T11:26:16.113-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dynamic modeling'/><category scheme='http://www.blogger.com/atom/ns#' term='octave'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Lotka-Volterra Predator-Prey Model in Three Part Harmony</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;#!/usr/bin/env python&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;import os&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;def system( u, v, w, uinit, vinit, winit, time ):&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    ut = list(); ut.append( uinit )&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    vt = list(); vt.append( vinit )&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    wt = list(); wt.append( winit )&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    for i in range( time ):&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        ut.append( u.update( ut[-1], vt[-1], wt[-1] ) )&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        vt.append( v.update( vt[-1], ut[-1], wt[-1] ) )&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        wt.append( w.update( wt[-1], ut[-1], vt[-1] ) )&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    return ( ut, vt, wt )&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;class Component:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    def __init__( self, a, b, g, h ):&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        self.alpha = a&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        self.beta  = b&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        self.gamma = g&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        self.step  = h&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    def update( self, x, y, z ):&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        self.body = self.alpha*x + self.beta*x*y + self.gamma*x*z&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        return x + self.step*self.body&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;step = 0.08&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;u = Component( -1.0,   0.025,   0.035, step )&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;v = Component( 1.5,   -0.45,   -0.024, step )&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;w = Component( 1.45,  -0.75,   0.026, step )&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;( ut, vt, wt ) = system( u, v, w, 5.0, 50.0, 20.0, 4000 )&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;ubuff = open( "ut.txt", "w" )&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;vbuff = open( "vt.txt", "w" )&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;wbuff = open( "wt.txt", "w" )&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;for i in range( len( ut ) ):&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    ubuff.write( str( ut[i] ) )&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    ubuff.write('\n')&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    vbuff.write( str( vt[i] ) )&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    vbuff.write('\n')&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    wbuff.write( str( wt[i] ) )&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    wbuff.write('\n')&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;ubuff.close(); vbuff.close(); wbuff.close()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;foo = list()&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;foo.append('#!/usr/bin/env octave\n')&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;foo.append('\n')&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;foo.append('load ut.txt ; load vt.txt ; load wt.txt ;\n')&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;foo.append('t = 0:4000 ; plot( t, ut, t, vt, t, wt ) ;\n')&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;foo.append('print -djpeg foo.jpeg;\n')&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;f = open( "foo.o", "w" )&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;f.writelines( foo )&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;f.close()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;os.system( 'octave -qf foo.o' )&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;os.system( 'evince foo.jpeg &amp;amp;' )&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;os.system( 'rm ut.txt' )&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;os.system( 'rm vt.txt' )&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;os.system( 'rm wt.txt' )&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;os.system( 'rm foo.o' )&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-414749554371750129?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/414749554371750129/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2010/11/lotka-volterra-predator-prey-model-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/414749554371750129'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/414749554371750129'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2010/11/lotka-volterra-predator-prey-model-in.html' title='Lotka-Volterra Predator-Prey Model in Three Part Harmony'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-910596371718481546</id><published>2010-11-24T10:46:00.000-08:00</published><updated>2010-11-24T10:50:46.671-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='genetic algorithm'/><title type='text'>Robot Scientist</title><content type='html'>A robot scientist, &lt;a href="http://www.wired.com/wiredscience/2009/04/robotscientist/"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Genetic algorithm equation maker, &lt;a href="http://www.wired.com/wiredscience/2009/04/newtonai/"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;"Distilling Free-Form Natural Laws from Experimental Data." By Michael Schmidt and Hod Lipson.  &lt;/em&gt;Science&lt;em&gt;, Vol. 324, April 3, 2009.&lt;/em&gt; &lt;p&gt;&lt;em&gt;"Automating Science." By David Waltz and Bruce Buchanan. &lt;/em&gt;Science&lt;em&gt;, Vol. 324, April 3, 2009.&lt;/em&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-910596371718481546?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/910596371718481546/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2010/11/robot-scientist.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/910596371718481546'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/910596371718481546'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2010/11/robot-scientist.html' title='Robot Scientist'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-8987422198720466934</id><published>2010-11-24T08:22:00.000-08:00</published><updated>2010-11-24T08:23:51.119-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pthreads'/><title type='text'>Pthreads!</title><content type='html'>A good introductory tutorial to pthreads can be found &lt;a href="https://computing.llnl.gov/tutorials/pthreads/"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-8987422198720466934?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/8987422198720466934/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2010/11/pthreads.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/8987422198720466934'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/8987422198720466934'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2010/11/pthreads.html' title='Pthreads!'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-8440179686568702859</id><published>2010-11-18T17:35:00.000-08:00</published><updated>2010-11-18T17:49:38.535-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='text mining'/><category scheme='http://www.blogger.com/atom/ns#' term='concept hierarchy'/><title type='text'>Sanderson and Croft, Deriving Concept Hierarchies from Text</title><content type='html'>Monothetic clusters: membership is based only on one feature.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Polythetic clusters: a document's membership to a given cluster is defined by its possession of a sufficient fraction of terms from that cluster. See Scatter/Gather.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The topic of a monothetic cluster is usually more intuitive than the topic of a polythetic cluster.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Five basic principles:&lt;/div&gt;&lt;div&gt;1) Terms in hierarchy extracted from documents, and reflect topics covered in documents&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-8440179686568702859?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/8440179686568702859/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2010/11/sanderson-and-croft-deriving-concept.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/8440179686568702859'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/8440179686568702859'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2010/11/sanderson-and-croft-deriving-concept.html' title='Sanderson and Croft, Deriving Concept Hierarchies from Text'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-6602533940668708367</id><published>2010-11-10T11:06:00.000-08:00</published><updated>2010-11-10T11:07:17.100-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='color'/><title type='text'>Color Schemes</title><content type='html'>&lt;a href="http://kuler.adobe.com/#"&gt;Kuler?&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-6602533940668708367?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/6602533940668708367/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2010/11/color-schemes.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/6602533940668708367'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/6602533940668708367'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2010/11/color-schemes.html' title='Color Schemes'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-7915266389323893325</id><published>2010-11-10T07:27:00.000-08:00</published><updated>2010-11-10T07:28:13.725-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>Misc Linux Commands</title><content type='html'>Commands found, &lt;a href="http://www.sikh-history.com/computers/unix/commands.html"&gt;here&lt;/a&gt;, banner and cal are pretty neat.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-7915266389323893325?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/7915266389323893325/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2010/11/misc-linux-commands.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/7915266389323893325'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/7915266389323893325'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2010/11/misc-linux-commands.html' title='Misc Linux Commands'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-1691942329913807368</id><published>2010-11-10T06:30:00.001-08:00</published><updated>2010-11-10T06:37:11.586-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GPU'/><title type='text'>GPU Gems 2</title><content type='html'>Book available in HTML format, &lt;a href="http://http.developer.nvidia.com/GPUGems2/gpugems2_part01.html"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-1691942329913807368?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/1691942329913807368/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2010/11/gpu-gems.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/1691942329913807368'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/1691942329913807368'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2010/11/gpu-gems.html' title='GPU Gems 2'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-1444581935961466497</id><published>2010-11-05T09:41:00.000-07:00</published><updated>2010-11-05T09:44:16.773-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GPGPU'/><title type='text'>GPGPU Shtuff</title><content type='html'>Supercomputing for the Masses can be found, &lt;a href="http://www.drdobbs.com/high-performance-computing/207200659"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-1444581935961466497?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/1444581935961466497/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2010/11/gpgpu-shtuff.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/1444581935961466497'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/1444581935961466497'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2010/11/gpgpu-shtuff.html' title='GPGPU Shtuff'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-7626055314303812244</id><published>2010-11-01T12:19:00.000-07:00</published><updated>2010-11-01T12:21:51.209-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='g++'/><category scheme='http://www.blogger.com/atom/ns#' term='stdint'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>stdint.h with g++ on Ubuntu</title><content type='html'>The header file stdint.h, needed for larger integer types, has at line 24:&lt;br /&gt;&lt;br /&gt;#include &lt;machine\types.h&gt;&lt;br /&gt;&lt;br /&gt;but on Ubuntu you need to change this to:&lt;br /&gt;&lt;br /&gt;#include &lt;sys/types.h&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-7626055314303812244?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/7626055314303812244/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2010/11/stdinth-with-g-on-ubuntu.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/7626055314303812244'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/7626055314303812244'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2010/11/stdinth-with-g-on-ubuntu.html' title='stdint.h with g++ on Ubuntu'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-5727086539572134376</id><published>2010-10-20T08:45:00.000-07:00</published><updated>2010-10-20T08:50:10.788-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='statistics'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='mathematics'/><title type='text'>Cheat Sheets</title><content type='html'>&lt;a href="http://www.johndcook.com/blog/2010/10/04/probability-and-statistics-cheat-sheet/"&gt;Here&lt;/a&gt; is a good place to find some math related cheat sheets.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.cheat-sheets.org/"&gt;Here&lt;/a&gt; is a fine place to get any cheat sheet you could want. Programming, math... just about everything.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-5727086539572134376?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/5727086539572134376/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2010/10/math-cheat-sheets.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/5727086539572134376'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/5727086539572134376'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2010/10/math-cheat-sheets.html' title='Cheat Sheets'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-588213044342799419</id><published>2010-10-15T07:57:00.000-07:00</published><updated>2010-10-15T07:59:04.657-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>C++ Sources</title><content type='html'>Cpluplus dot comma is found &lt;a href="http://www.cplusplus.com/"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-588213044342799419?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/588213044342799419/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2010/10/c-sources.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/588213044342799419'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/588213044342799419'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2010/10/c-sources.html' title='C++ Sources'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-3137159028766700250</id><published>2010-10-13T15:47:00.000-07:00</published><updated>2010-10-15T15:42:44.737-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GSL'/><title type='text'>GSL - GNU Scientific Library</title><content type='html'>A set of scientific libraries for C/C++ can be found&lt;a href="http://www.gnu.org/software/gsl/"&gt; here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Installation and compilation instructions found &lt;a href="http://www.econ.umn.edu/%7Esteve/gsl/"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-3137159028766700250?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/3137159028766700250/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2010/10/gsl-gnu-scientific-library.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/3137159028766700250'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/3137159028766700250'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2010/10/gsl-gnu-scientific-library.html' title='GSL - GNU Scientific Library'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-4533802904743024442</id><published>2010-10-13T12:07:00.000-07:00</published><updated>2010-10-13T12:09:01.018-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cython'/><title type='text'>Cython</title><content type='html'>The Cython documentation can be found &lt;a href="http://www.cython.org/#development"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-4533802904743024442?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/4533802904743024442/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2010/10/cython.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/4533802904743024442'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/4533802904743024442'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2010/10/cython.html' title='Cython'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-9382121973785860</id><published>2010-10-12T12:39:00.000-07:00</published><updated>2010-10-12T12:40:40.572-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open office'/><title type='text'>Gantt Chart in OpenOffice</title><content type='html'>Go &lt;a href="http://www.openofficetips.com/blog/archives/2005/10/charting_creati.html"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-9382121973785860?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/9382121973785860/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2010/10/gantt-chart-in-openoffice.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/9382121973785860'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/9382121973785860'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2010/10/gantt-chart-in-openoffice.html' title='Gantt Chart in OpenOffice'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-6097764968412384942</id><published>2010-10-11T15:43:00.000-07:00</published><updated>2010-10-11T15:44:34.152-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='ssh'/><category scheme='http://www.blogger.com/atom/ns#' term='scp'/><title type='text'>SSH and SCP</title><content type='html'>&lt;a href="http://www.linuxtutorialblog.com/post/ssh-and-scp-howto-tips-tricks"&gt;This&lt;/a&gt; is my ssh and scp goto page. (goto. lol.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-6097764968412384942?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/6097764968412384942/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2010/10/ssh-and-scp.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/6097764968412384942'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/6097764968412384942'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2010/10/ssh-and-scp.html' title='SSH and SCP'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-2723626460768362651</id><published>2010-10-08T10:47:00.000-07:00</published><updated>2010-10-11T15:45:08.180-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Microsoft fonts in Ubuntu</title><content type='html'>&lt;a href="http://embraceubuntu.com/2005/09/09/installing-microsoft-fonts/"&gt;Here&lt;/a&gt; is a good tutorial for loading the traditional Microsoft fonts into Ubuntu.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-2723626460768362651?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/2723626460768362651/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2010/10/microsoft-fonts-in-ubuntu.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/2723626460768362651'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/2723626460768362651'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2010/10/microsoft-fonts-in-ubuntu.html' title='Microsoft fonts in Ubuntu'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-7193913336082771289</id><published>2010-10-08T10:40:00.001-07:00</published><updated>2010-10-08T10:41:07.802-07:00</updated><title type='text'>Open Course Work from MIT</title><content type='html'>MIT's open course work website can be found &lt;a href="http://ocw.mit.edu/index.htm"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-7193913336082771289?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/7193913336082771289/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2010/10/open-course-work-from-mit.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/7193913336082771289'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/7193913336082771289'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2010/10/open-course-work-from-mit.html' title='Open Course Work from MIT'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-7101534441761731510</id><published>2010-10-08T10:37:00.000-07:00</published><updated>2010-10-08T10:38:18.402-07:00</updated><title type='text'>Call for Abstracts</title><content type='html'>A good resource for writing abstract can be found &lt;a href="http://www.ece.cmu.edu/%7Ekoopman/essays/abstract.html"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-7101534441761731510?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/7101534441761731510/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2010/10/call-for-abstracts.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/7101534441761731510'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/7101534441761731510'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2010/10/call-for-abstracts.html' title='Call for Abstracts'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-6696964517200417665</id><published>2010-10-07T15:27:00.000-07:00</published><updated>2010-10-08T10:42:51.876-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='statistics'/><category scheme='http://www.blogger.com/atom/ns#' term='octave'/><category scheme='http://www.blogger.com/atom/ns#' term='scipy'/><category scheme='http://www.blogger.com/atom/ns#' term='matlab'/><category scheme='http://www.blogger.com/atom/ns#' term='numpy'/><title type='text'>Variance</title><content type='html'>Different programs implement variance in different ways. This can lead to confusing results when you move from one set of functions to another.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;scipy.stats.cov()&lt;/span&gt; normalizes by (N-1), by default, &lt;span style="font-style: italic;font-family:courier new;" &gt;bias=False&lt;/span&gt;. By setting &lt;span style="font-style: italic;font-family:courier new;" &gt;bias=True&lt;/span&gt;, you will normalize by N.&lt;br /&gt;&lt;br /&gt;However, &lt;span style="font-family:courier new;"&gt;scipy.var()&lt;/span&gt; normalizes by N.&lt;br /&gt;&lt;br /&gt;In Octave, &lt;span style="font-family:courier new;"&gt;var( x, 0 )&lt;/span&gt; biases by N-1, and &lt;span style="font-family:courier new;"&gt;var( x, 1 )&lt;/span&gt; biases by N.&lt;br /&gt;&lt;br /&gt;Matlab and R, I think, do things slightly differently.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-6696964517200417665?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/6696964517200417665/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2010/10/variance.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/6696964517200417665'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/6696964517200417665'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2010/10/variance.html' title='Variance'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-3099135952586485983</id><published>2010-10-01T14:58:00.000-07:00</published><updated>2010-10-01T15:05:45.030-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='io'/><category scheme='http://www.blogger.com/atom/ns#' term='numpy'/><title type='text'>NumPy and Input/Output</title><content type='html'>Super dooper resource for NUmPy I/O can be found &lt;a href="http://www.scipy.org/Cookbook/InputOutput"&gt;here&lt;/a&gt;. Includes information on how to interpret binary data, and use the NumPy alias of the the MATLAB fread() function.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-3099135952586485983?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/3099135952586485983/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2010/10/numpy-and-inputoutput.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/3099135952586485983'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/3099135952586485983'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2010/10/numpy-and-inputoutput.html' title='NumPy and Input/Output'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-5758593225022700475</id><published>2010-10-01T12:47:00.000-07:00</published><updated>2010-10-08T10:43:38.873-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='octave'/><title type='text'>GNU Octave</title><content type='html'>GNU Octave Manual, version 3, is found &lt;a href="http://www.network-theory.co.uk/docs/octave3/index.html"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-5758593225022700475?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/5758593225022700475/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2010/10/gnu-octave.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/5758593225022700475'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/5758593225022700475'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2010/10/gnu-octave.html' title='GNU Octave'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-1151119543825868628</id><published>2010-09-29T12:28:00.000-07:00</published><updated>2010-09-29T12:33:38.164-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='penrose'/><category scheme='http://www.blogger.com/atom/ns#' term='aperiodic tilings'/><category scheme='http://www.blogger.com/atom/ns#' term='girih'/><title type='text'>Tilings</title><content type='html'>Girih tiles can be found &lt;a href="http://en.wikipedia.org/wiki/Girih_tiles"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Penrose tiles can be found &lt;a href="http://en.wikipedia.org/wiki/Penrose_tiles"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Aperiodic tiles in general are found &lt;a href="http://en.wikipedia.org/wiki/Aperiodic_tiling"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-1151119543825868628?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/1151119543825868628/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2010/09/tilings.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/1151119543825868628'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/1151119543825868628'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2010/09/tilings.html' title='Tilings'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-4993273072570675475</id><published>2010-09-27T07:05:00.000-07:00</published><updated>2010-11-29T11:26:41.135-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pygame'/><category scheme='http://www.blogger.com/atom/ns#' term='pycuda'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='cuda'/><category scheme='http://www.blogger.com/atom/ns#' term='pycublas'/><title type='text'>CUDA, PyCUDA, and PyCUBLAS</title><content type='html'>Andreas Klöckner's &lt;a href="http://mathema.tician.de/software/pycuda"&gt;PyCUDA&lt;/a&gt; page.&lt;br /&gt;&lt;br /&gt;Some &lt;a href="http://wiki.tiker.net/PyCuda"&gt;documentation&lt;/a&gt; for PyCUDA and PyOpenCL.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://helicity.wordpress.com/2009/05/28/moire-patterns-with-pycuda/"&gt;Moire Patterns using PyCUDA and PyGame&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Use &lt;a href="http://kered.org/blog/2009-04-13/easy-python-numpy-cuda-cublas/"&gt;PyCUBLAS&lt;/a&gt; to multiply matrices smaller than 65536-by-65536.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-4993273072570675475?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/4993273072570675475/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2010/09/pycuda.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/4993273072570675475'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/4993273072570675475'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2010/09/pycuda.html' title='CUDA, PyCUDA, and PyCUBLAS'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-1563026344997307869</id><published>2010-08-26T10:38:00.000-07:00</published><updated>2010-09-02T07:41:59.099-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='statistics'/><title type='text'>Statistics Examples</title><content type='html'>Some useful examples can be found at &lt;a href="http://www.stat.tamu.edu/%7Errhocking/stat636/"&gt;Dr. Hockings STAT 636 webpage&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Examples of &lt;a href="http://www.ats.ucla.edu/stat/"&gt;Statistical Computing&lt;/a&gt;, including R and SAS and SPLUS.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-1563026344997307869?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/1563026344997307869/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2010/08/statistics-examples.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/1563026344997307869'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/1563026344997307869'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2010/08/statistics-examples.html' title='Statistics Examples'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-6513249787911521342</id><published>2010-08-26T08:32:00.001-07:00</published><updated>2010-08-26T08:34:07.067-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gnuplot'/><title type='text'>Gnuplot</title><content type='html'>&lt;a href="http://t16web.lanl.gov/Kawano/gnuplot/index-e.html"&gt;Not So Frequently Asked Questions&lt;/a&gt; is a large and accessible set of examples for gnuplot.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-6513249787911521342?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/6513249787911521342/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2010/08/gnuplot.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/6513249787911521342'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/6513249787911521342'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2010/08/gnuplot.html' title='Gnuplot'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-5762085185226030082</id><published>2010-08-26T08:29:00.000-07:00</published><updated>2010-08-26T08:36:35.084-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='data set'/><category scheme='http://www.blogger.com/atom/ns#' term='machine learning'/><title type='text'>Data Sets</title><content type='html'>&lt;a href="http://archive.ics.uci.edu/ml/"&gt;UCI Machine Learning Repository&lt;/a&gt; has a wide variety of popular data sets and lists of publications that have used those data sets.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-5762085185226030082?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/5762085185226030082/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2010/08/data-sets.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/5762085185226030082'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/5762085185226030082'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2010/08/data-sets.html' title='Data Sets'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-2563695982911239341</id><published>2010-08-25T14:44:00.000-07:00</published><updated>2010-09-20T08:10:32.653-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='statistics'/><title type='text'>Statistics Websites</title><content type='html'>&lt;a href="http://www.statsoft.com/textbook/elementary-concepts-in-statistics/?button=1"&gt;StatSoft&lt;/a&gt; Electronic Statistics Textbook&lt;br /&gt;&lt;br /&gt;Social Research Methods &lt;a href="http://www.socialresearchmethods.net/kb/index.php"&gt;Knowledge Base&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.statisticssolutions.com/methods-chapter/statistical-data-analysis/"&gt;Statistics Solutions&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-2563695982911239341?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/2563695982911239341/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2010/08/two-statistics-websites.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/2563695982911239341'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/2563695982911239341'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2010/08/two-statistics-websites.html' title='Statistics Websites'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-4368341725736203613</id><published>2010-08-24T08:09:00.000-07:00</published><updated>2010-12-14T12:39:27.340-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='scipy'/><category scheme='http://www.blogger.com/atom/ns#' term='matplotlib'/><category scheme='http://www.blogger.com/atom/ns#' term='numpy'/><title type='text'>Scipy and NumPy Documentation</title><content type='html'>Python has modules several modules, &lt;a href="http://docs.scipy.org/doc/"&gt;Scipy and NumPy&lt;/a&gt;, that offer very similar functionality to the functions offered by Matlab. (This is not a conclusive list of math/science related Python modules, but this is a good place to start.)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;N.B.&lt;/span&gt; I found that to use &lt;span style="font-style: italic;"&gt;scipy.linalg.eig(A)&lt;/span&gt;, I needed to say: &lt;span style="font-style: italic;"&gt;import scipy; from scipy import linalg.&lt;/span&gt; That did the old tricking.&lt;br /&gt;&lt;br /&gt;The Tentative NumPy Tutorial may be found &lt;a href="http://www.scipy.org/Tentative_NumPy_Tutorial"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;NumPy for Matlab users may be found &lt;a href="http://www.scipy.org/NumPy_for_Matlab_Users"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-4368341725736203613?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/4368341725736203613/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2010/08/scipy-and-numpy-documentation.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/4368341725736203613'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/4368341725736203613'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2010/08/scipy-and-numpy-documentation.html' title='Scipy and NumPy Documentation'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-4344652170330688319</id><published>2010-03-28T18:12:00.000-07:00</published><updated>2010-03-28T18:13:58.370-07:00</updated><title type='text'>Self Organising Neural Networks for Remote Sensing</title><content type='html'>&lt;a href="http://www.alphagalileo.org/ViewItem.aspx?ItemId=71339&amp;amp;CultureCode=en"&gt;http://www.alphagalileo.org/ViewItem.aspx?ItemId=71339&amp;amp;CultureCode=en&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-4344652170330688319?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/4344652170330688319/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2010/03/self-organising-neural-networks-for.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/4344652170330688319'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/4344652170330688319'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2010/03/self-organising-neural-networks-for.html' title='Self Organising Neural Networks for Remote Sensing'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-8216852115378798338</id><published>2010-03-20T14:05:00.000-07:00</published><updated>2010-03-20T14:08:04.940-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='latex'/><title type='text'>LaTeX to Image</title><content type='html'>&lt;a href="http://rogercortesi.com/eqn/index.php"&gt;Roger's Online Equation Editor&lt;/a&gt; lets you create images from LaTeX code.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-8216852115378798338?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/8216852115378798338/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2010/03/latex-to-image.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/8216852115378798338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/8216852115378798338'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2010/03/latex-to-image.html' title='LaTeX to Image'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-2161207181452855131</id><published>2009-12-03T07:14:00.000-08:00</published><updated>2009-12-03T07:21:43.788-08:00</updated><title type='text'>Wavelet Coherence</title><content type='html'>Wavelet coherence website: &lt;a href="http://www.pol.ac.uk/home/research/waveletcoherence/"&gt;http://www.pol.ac.uk/home/research/waveletcoherence/&lt;/a&gt;&lt;br /&gt;Guide to wavelet analysis: &lt;a href="http://paos.colorado.edu/research/wavelets/"&gt;http://paos.colorado.edu/research/wavelets/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-2161207181452855131?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/2161207181452855131/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2009/12/wavelet-coherence.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/2161207181452855131'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/2161207181452855131'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2009/12/wavelet-coherence.html' title='Wavelet Coherence'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-8134207678128272747</id><published>2009-11-04T13:13:00.000-08:00</published><updated>2010-08-26T08:39:33.340-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='latex'/><category scheme='http://www.blogger.com/atom/ns#' term='gnuplot'/><category scheme='http://www.blogger.com/atom/ns#' term='fail'/><category scheme='http://www.blogger.com/atom/ns#' term='errata'/><title type='text'>Research Fiasco</title><content type='html'>Today, in the midst of organizing my data and images to send to Dr. Dai, I accidentally erased over half of my research. I still have the raw data, and the Fortran code to produce it, but I lost my images, sampled data, sampling scripts and gnuplot scripts for making the images possible. That &lt;span style="font-family:courier new;"&gt;rm &lt;span style="font-family:georgia;"&gt;utility really removes the shit out of things.&lt;/span&gt;&lt;/span&gt; I think I can redo all the scripts in three hours.&lt;br /&gt;&lt;br /&gt;%%%%%&lt;br /&gt;&lt;br /&gt;Scripts in three hours? Perhaps not so much. I wrote a better Ruby script this time for organizing the Fortran data. Its still not beautiful, or even homely, but its better.&lt;br /&gt;&lt;br /&gt;%%%%%&lt;br /&gt;&lt;br /&gt;Ok, its been about six  hours since I thought I could do this in three hours and I've (hopefully) finished writing my Ruby scripts for organizing the Fortran data... now to tackle the gnuplot scripts. &lt;a href="http://t16web.lanl.gov/Kawano/gnuplot/index-e.html"&gt;Not so frequently asked questions&lt;/a&gt; is a great resource for gnuplotery. &lt;a href="http://www.fnal.gov/docs/products/gnuplot/tutorial/"&gt;This&lt;/a&gt; is a good site for adding LaTeX magic to your gnuplots.&lt;br /&gt;&lt;br /&gt;%%%%%&lt;br /&gt;&lt;br /&gt;I just finished tweaking the gnuplot script. It is now 1:32 AM. Fantastic. Just in case something happens again, I'm going to paste my codes here. (I'm kind of embarassed. I know this code is ugly, I know that it can be prettified... but I can't spend time right now making it pretty/readable.)&lt;br /&gt;&lt;br /&gt;Ruby:&lt;br /&gt;&lt;br /&gt;#!/usr/bin/env ruby&lt;br /&gt;#&lt;br /&gt;#  This script takes the .dat files output by the Fortran codes and organizes them into&lt;br /&gt;#  several figure .dat files to be turned into figures by the figures.plt gnuplot script.&lt;br /&gt;#&lt;br /&gt;#  To run: ruby combine-data.rb&lt;br /&gt;#&lt;br /&gt;def process i1E, i2E, i3E, i1L, i2L, i3L&lt;br /&gt;r = /(\d*\.\d+)(\s+)(\d+\.\d+)/&lt;br /&gt;o1E = i1E.readlines; o1E.map!{|l| l.scan(r)}.flatten!(1);    o1E.each{|l| l.delete_at(1)}&lt;br /&gt;o2E = i2E.readlines; o2E.map!{|l| l.scan(r)}.flatten!(1);    o2E.each{|l| l.delete_at(1)}&lt;br /&gt;o3E = i3E.readlines; o3E.map!{|l| l.scan(r)}.flatten!(1);    o3E.each{|l| l.delete_at(1)}&lt;br /&gt;o1L = i1L.readlines; o1L.map!{|l| l.scan(r)}.flatten!(1);    o1L.each{|l| l.delete_at(1)}&lt;br /&gt;o2L = i2L.readlines; o2L.map!{|l| l.scan(r)}.flatten!(1);    o2L.each{|l| l.delete_at(1)}&lt;br /&gt;o3L = i3L.readlines; o3L.map!{|l| l.scan(r)}.flatten!(1);    o3L.each{|l| l.delete_at(1)}&lt;br /&gt;a = [o1E, o2E, o3E, o1L, o2L, o3L]&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;def print_data a, out1, out2, in1E, in2E, in3E, in1L, in2L, in3L&lt;br /&gt;(0..380).each do |i|&lt;br /&gt;    if i%12 == 0 then&lt;br /&gt;        out1.print a[0][i][0]+" "+a[0][i][1]+" "+a[1][i][1]+" "+a[2][i][1]+"\n"&lt;br /&gt;        out2.print a[3][i][0]+" "+a[3][i][1]+" "+a[4][i][1]+" "+a[5][i][1]+"\n"&lt;br /&gt;    else&lt;br /&gt;        out1.print a[0][i][0]+" "+a[0][i][1]+"\n"&lt;br /&gt;        out2.print a[3][i][0]+" "+a[3][i][1]+"\n"&lt;br /&gt;    end&lt;br /&gt;end&lt;br /&gt;in1E.close; in2E.close; in3E.close&lt;br /&gt;in1L.close; in2L.close; in3L.close&lt;br /&gt;out1.close; out2.close&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;idata1E = File.open "ord1_m201_te_results.dat", "r"&lt;br /&gt;idata2E = File.open "ord2_m51_te_results.dat", "r"&lt;br /&gt;idata3E = File.open "ord4_m21_te_results.dat", "r"&lt;br /&gt;idata1L = File.open "ord1_m201_tl_results.dat", "r"&lt;br /&gt;idata2L = File.open "ord2_m51_tl_results.dat", "r"&lt;br /&gt;idata3L = File.open "ord4_m21_tl_results.dat", "r"&lt;br /&gt;out1 = File.open "fig-1.dat", "w"&lt;br /&gt;out2 = File.open "fig-2.dat", "w"&lt;br /&gt;a = process idata1E, idata2E, idata3E, idata1L, idata2L, idata3L&lt;br /&gt;print_data a, out1, out2, idata1E, idata2E, idata3E, idata1L, idata2L, idata3L&lt;br /&gt;&lt;br /&gt;idata1E = File.open "ord1_m201_te_dim_results.dat", "r"&lt;br /&gt;idata2E = File.open "ord2_m51_te_dim_results.dat", "r"&lt;br /&gt;idata3E = File.open "ord4_m21_te_dim_results.dat", "r"&lt;br /&gt;idata1L = File.open "ord1_m201_tl_dim_results.dat", "r"&lt;br /&gt;idata2L = File.open "ord2_m51_tl_dim_results.dat", "r"&lt;br /&gt;idata3L = File.open "ord4_m21_tl_dim_results.dat", "r"&lt;br /&gt;out1 = File.open "fig-3.dat", "w"&lt;br /&gt;out2 = File.open "fig-4.dat", "w"&lt;br /&gt;a = process idata1E, idata2E, idata3E, idata1L, idata2L, idata3L&lt;br /&gt;print_data a, out1, out2, idata1E, idata2E, idata3E, idata1L, idata2L, idata3L&lt;br /&gt;&lt;br /&gt;idata2E = File.open "ord2_te_peak_results.dat", "r"&lt;br /&gt;idata2L = File.open "ord2_5ps_tl_results.dat", "r"&lt;br /&gt;out1 = File.open "fig-5b.dat", "w"&lt;br /&gt;out2 = File.open "fig-6b.dat", "w"&lt;br /&gt;a = idata2E.readlines&lt;br /&gt;a.each_with_index{|x,i| if i%6 == 0 then out1.print x+"\n" end }&lt;br /&gt;a = idata2L.readlines&lt;br /&gt;a.each_with_index{|x,i| if i%6 == 0 then out2.print x+"\n" end }&lt;br /&gt;&lt;br /&gt;idata1E = File.open "ord2_m26_te_results.dat", "r"&lt;br /&gt;idata2E = File.open "ord2_m51_te_results.dat", "r"&lt;br /&gt;idata3E = File.open "ord2_m101_te_results.dat", "r"&lt;br /&gt;idata1L = File.open "ord2_m26_tl_results.dat", "r"&lt;br /&gt;idata2L = File.open "ord2_m51_tl_results.dat", "r"&lt;br /&gt;idata3L = File.open "ord2_m101_tl_results.dat", "r"&lt;br /&gt;out1 = File.open "fig-7.dat", "w"&lt;br /&gt;out2 = File.open "fig-8.dat", "w"&lt;br /&gt;a = process idata1E, idata2E, idata3E, idata1L, idata2L, idata3L&lt;br /&gt;print_data a, out1, out2, idata1E, idata2E, idata3E, idata1L, idata2L, idata3L&lt;br /&gt;&lt;br /&gt;idata1E = File.open "ord4_m21_te_results.dat", "r"&lt;br /&gt;idata2E = File.open "ord4_m41_te_results.dat", "r"&lt;br /&gt;idata3E = File.open "ord4_m51_te_results.dat", "r"&lt;br /&gt;idata1L = File.open "ord4_m21_tl_results.dat", "r"&lt;br /&gt;idata2L = File.open "ord4_m41_tl_results.dat", "r"&lt;br /&gt;idata3L = File.open "ord4_m51_tl_results.dat", "r"&lt;br /&gt;out1 = File.open "fig-9.dat", "w"&lt;br /&gt;out2 = File.open "fig-10.dat", "w"&lt;br /&gt;a = process idata1E, idata2E, idata3E, idata1L, idata2L, idata3L&lt;br /&gt;print_data a, out1, out2, idata1E, idata2E, idata3E, idata1L, idata2L, idata3L&lt;br /&gt;&lt;br /&gt;Gnuplot:&lt;br /&gt;&lt;br /&gt;#&lt;br /&gt;#  This is a gnuplot script to produce the .ps and .tex files&lt;br /&gt;#  for use in LaTeX. It must be run in the same folder as the&lt;br /&gt;#  figure .dat files.&lt;br /&gt;#&lt;br /&gt;#  To run: gnuplot figures.plt&lt;br /&gt;#&lt;br /&gt;&lt;br /&gt;set term pslatex auxfile&lt;br /&gt;&lt;br /&gt;set style line 1 lt -1 lw 1&lt;br /&gt;set style line 2 lt 3 pt 6 ps 2&lt;br /&gt;set style line 3 lt 3 pt 10 ps 2&lt;br /&gt;&lt;br /&gt;set output "fig-1.tex"&lt;br /&gt;set size 1,1&lt;br /&gt;set xtics nomirror; set ytics nomirror&lt;br /&gt;set format x "$%g$"; set format y "$%g$"&lt;br /&gt;set xlabel 'Time, (ps)'; set ylabel '$T_{e}\;(K)$'&lt;br /&gt;set xrange [0.1:2]; set yrange [300:1400]&lt;br /&gt;plot "fig-1.dat" u 1:2 t "1st Order, M = 201" w l ls 1, \&lt;br /&gt; "fig-1.dat" u 1:3 t "2nd Order, M = 51" w p ls 2, \&lt;br /&gt; "fig-1.dat" u 1:4 t "4th Order, M = 21" w p ls 3&lt;br /&gt;&lt;br /&gt;set output "fig-2.tex"&lt;br /&gt;set size 1,1&lt;br /&gt;set xtics nomirror; set ytics nomirror&lt;br /&gt;set format x "$%g$"; set format y "$%g$"&lt;br /&gt;set xlabel 'Time, (ps)'; set ylabel '$T_{l}\;(K)$'&lt;br /&gt;set xrange [0.1:2]; set yrange [300:310]&lt;br /&gt;plot "fig-2.dat" u 1:2 t "1st Order, M = 201" w l ls 1, \&lt;br /&gt; "fig-2.dat" u 1:3 t "2nd Order, M = 51" w p ls 2, \&lt;br /&gt; "fig-2.dat" u 1:4 t "4th Order, M = 21" w p ls 3&lt;br /&gt;&lt;br /&gt;set output "fig-3.tex"&lt;br /&gt;set size 1,1&lt;br /&gt;set xtics nomirror; set ytics nomirror&lt;br /&gt;set format x "$%g$"; set format y "$%g$"&lt;br /&gt;set xlabel 'Time, (ps)'; set ylabel '$T_{e}/(\Delta T_{e})_{max}\;(K)$'&lt;br /&gt;set xrange [0.1:2]; set yrange [0:1.1]&lt;br /&gt;plot "fig-3.dat" u 1:2 t "1st Order, M = 201" w l ls 1, \&lt;br /&gt; "fig-3.dat" u 1:3 t "2nd Order, M = 51" w p ls 2, \&lt;br /&gt; "fig-3.dat" u 1:4 t "4th Order, M = 21" w p ls 3&lt;br /&gt;&lt;br /&gt;set output "fig-4.tex"&lt;br /&gt;set size 1,1&lt;br /&gt;set xtics nomirror; set ytics nomirror&lt;br /&gt;set format x "$%g$"; set format y "$%g$"&lt;br /&gt;set xlabel 'Time, (ps)'; set ylabel '$T_{l}/(\Delta T_{l})_{max}\;(K)$'&lt;br /&gt;set xrange [0.1:2]; set yrange [0:1.4]&lt;br /&gt;plot "fig-4.dat" u 1:2 t "1st Order, M = 201" w l ls 1, \&lt;br /&gt; "fig-4.dat" u 1:3 t "2nd Order, M = 51" w p ls 2, \&lt;br /&gt; "fig-4.dat" u 1:4 t "4th Order, M = 21" w p ls 3&lt;br /&gt;&lt;br /&gt;set output "fig-5.tex"&lt;br /&gt;set size 1,1&lt;br /&gt;set xtics nomirror; set ytics nomirror&lt;br /&gt;set format x "$%g$"; set format y "$%g$"&lt;br /&gt;set xlabel '$r$, (mm)'; set ylabel '$T_{e}\;(K)$'&lt;br /&gt;set xrange [0:0.0001]; set yrange [750:1400]&lt;br /&gt;plot "fig-5a.dat" u 1:2 t "1st Order, M = 201" w l ls 1, \&lt;br /&gt; "fig-5b.dat" u 1:2 t "2nd Order, M = 51" w p ls 2, \&lt;br /&gt; "fig-5c.dat" u 1:2 t "4th Order, M = 21" w p ls 3&lt;br /&gt;&lt;br /&gt;set output "fig-6.tex"&lt;br /&gt;set size 1,1&lt;br /&gt;set xtics nomirror; set ytics nomirror&lt;br /&gt;set format x "$%g$"; set format y "$%g$"&lt;br /&gt;set xlabel '$r$, (mm)'; set ylabel '$T_{l}\;(K)$'&lt;br /&gt;set xrange [0:0.0001]; set yrange [306:310]&lt;br /&gt;plot "fig-6a.dat" u 1:2 t "1st Order, M = 201" w l ls 1, \&lt;br /&gt; "fig-6b.dat" u 1:2 t "2nd Order, M = 51" w p ls 2, \&lt;br /&gt; "fig-6c.dat" u 1:2 t "4th Order, M = 21" w p ls 3&lt;br /&gt;&lt;br /&gt;set output "fig-7.tex"&lt;br /&gt;set size 1,1&lt;br /&gt;set xtics nomirror; set ytics nomirror&lt;br /&gt;set format x "$%g$"; set format y "$%g$"&lt;br /&gt;set xlabel 'Time, (ps)'; set ylabel '$T_{e}\;(K)$'&lt;br /&gt;set xrange [0.1:2]; set yrange [300:1400]&lt;br /&gt;plot "fig-7.dat" u 1:2 t "2nd Order, M = 101" w l ls 1, \&lt;br /&gt; "fig-7.dat" u 1:3 t "2nd Order, M = 51" w p ls 2, \&lt;br /&gt; "fig-7.dat" u 1:4 t "2nd Order, M = 26" w p ls 3&lt;br /&gt;&lt;br /&gt;set output "fig-8.tex"&lt;br /&gt;set size 1,1&lt;br /&gt;set xtics nomirror; set ytics nomirror&lt;br /&gt;set format x "$%g$"; set format y "$%g$"&lt;br /&gt;set xlabel 'Time, (ps)'; set ylabel '$T_{l}\;(K)$'&lt;br /&gt;set xrange [0.1:2]; set yrange [300:310]&lt;br /&gt;plot "fig-8.dat" u 1:2 t "2nd Order, M = 101" w l ls 1, \&lt;br /&gt; "fig-8.dat" u 1:3 t "2nd Order, M = 51" w p ls 2, \&lt;br /&gt; "fig-8.dat" u 1:4 t "2nd Order, M = 26" w p ls 3&lt;br /&gt;&lt;br /&gt;set output "fig-9.tex"&lt;br /&gt;set size 1,1&lt;br /&gt;set xtics nomirror; set ytics nomirror&lt;br /&gt;set format x "$%g$"; set format y "$%g$"&lt;br /&gt;set xlabel 'Time, (ps)'; set ylabel '$T_{e}\;(K)$'&lt;br /&gt;set xrange [0.1:2]; set yrange [300:1400]&lt;br /&gt;plot "fig-9.dat" u 1:2 t "4th Order, M = 51" w l ls 1, \&lt;br /&gt; "fig-9.dat" u 1:3 t "4th Order, M = 41" w p ls 2, \&lt;br /&gt; "fig-9.dat" u 1:4 t "4th Order, M = 21" w p ls 3&lt;br /&gt;&lt;br /&gt;set output "fig-10.tex"&lt;br /&gt;set size 1,1&lt;br /&gt;set xtics nomirror; set ytics nomirror&lt;br /&gt;set format x "$%g$"; set format y "$%g$"&lt;br /&gt;set xlabel 'Time, (ps)'; set ylabel '$T_{l}\;(K)$'&lt;br /&gt;set xrange [0.1:2]; set yrange [300:310]&lt;br /&gt;plot "fig-10.dat" u 1:2 t "4th Order, M = 51" w l ls 1, \&lt;br /&gt; "fig-10.dat" u 1:3 t "4th Order, M = 41" w p ls 2, \&lt;br /&gt; "fig-10.dat" u 1:4 t "4th Order, M = 21" w p ls 3&lt;br /&gt;&lt;br /&gt;%%%%%&lt;br /&gt;&lt;br /&gt;Like I said, its not pretty.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-8134207678128272747?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/8134207678128272747/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2009/11/research-fiasco.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/8134207678128272747'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/8134207678128272747'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2009/11/research-fiasco.html' title='Research Fiasco'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5150084882015979368.post-5473895614195187623</id><published>2009-11-03T10:34:00.000-08:00</published><updated>2010-08-26T08:40:36.465-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='image classification'/><category scheme='http://www.blogger.com/atom/ns#' term='errata'/><title type='text'>CSC-579 Image Classification Project</title><content type='html'>I'm going to cluster the features of each image and take the medioid of the clusters to be representative features. If need be, I'll take a few random outliers to complete the set. I've made a  csv list of the cleaned keys, the keys of the images that had between 300 and 1200 keypoints. I'm going to take that list and break it up into 300 individual parts so that it can be clustered by Matlab. I might figure out some batch method in Weka and use that to cluster the features for each image.&lt;br /&gt;&lt;br /&gt;%%%%%&lt;br /&gt;&lt;br /&gt;Dude, omg. I found &lt;a href="http://www.rubyforscientificresearch.blogspot.com/"&gt;Ruby for Scientific Computing&lt;/a&gt; and I think it might save my balls on this project. There's a post about using jRuby and WEKA and I think I might go that route. I just unistalled WEKA. I was having trouble accessing it by `java -jar weka.jar`. I had originally downloaded via my synaptic package manager, and I think it installed it so that I could pull it up with just `weka`, but all the code snippets online use the java route. I don't know, I think this will work. I'm not really sure what's going on. Anyway, I'm going to have to figure out what jRuby is all about, but that doesn't look too hard.&lt;br /&gt;&lt;br /&gt;%%%%%&lt;br /&gt;&lt;br /&gt;Bingo. Downloading from the site made everything better. One day I'm going to be a Linux baller and just figure this stuff out in like a minute or something.&lt;br /&gt;&lt;br /&gt;%%%%%&lt;br /&gt;&lt;br /&gt;I have 300 images. Each image has 300 features. Each feature is a 132-tuple.&lt;br /&gt;&lt;br /&gt;I can't handle all of this information at once. I can't reduce the number of images. Thus, I must reduce the number of features. I can do the following: (1) feature subset selection (3) discrete wavelet transform (2) principal component analysis. I might do some sort of tree grouping thing like DIANA or something, but I can't remember where that is in the book.&lt;br /&gt;&lt;br /&gt;%%%%%&lt;br /&gt;&lt;br /&gt;Attribute selection in Weka is in the "Filter" button. &lt;a href="http://www.laps.ufpa.br/aldebaro/weka/feature_selection.html"&gt;Here&lt;/a&gt; is a good site to start with.&lt;br /&gt;&lt;br /&gt;%%%%%&lt;br /&gt;&lt;br /&gt;I did the attribute selection on one of my arff files that contained the 300 keypoints for an image, and it returned the 7 best attributes - which corresponded to the columns. Basically, the 7 best dimensions for each keypoint, not the 7 best keypoints for the whole image. The solution: transpose the arff file so that the keypoints are the attributes listed (@attr... k1, k2, k3,...,k300), and the instances are the features of each keypoint.&lt;br /&gt;&lt;br /&gt;%%%%%&lt;br /&gt;&lt;br /&gt;I think I'm going to use Java to process the images for key features. This &lt;a href="http://www.hakank.org/weka/"&gt;site&lt;/a&gt; has some Java/Weka codes and applets, and miscellaneous machine learning data sets. Here is a &lt;a href="http://weka.wikispaces.com/Using+WEKA+from+Jython"&gt;page&lt;/a&gt; from  the Weka site concerned with using Jython with Weka. This &lt;a href="http://eaglek1.wordpress.com/2009/10/15/using-weka-api-in-matlab/"&gt;page&lt;/a&gt; talks about calling the Weka API from Matlab. Apparently Matlab is built up from the JVM, I had no idea.&lt;br /&gt;&lt;br /&gt;%%%%%&lt;br /&gt;&lt;br /&gt;I've tried all day to run use Weka in an automated fashion. I'm going to try using it from Matlab, and then I'm going to just do it by... by hand. I had a the jruby.jar and weka.jar file in the directory, and some APIs just wouldn't work. I got some kind of exception like this:&lt;br /&gt;&lt;br /&gt;Exception in thread "main" java.lang.NoClassDefFoundError: weka/filters/supervised/attribute/AttributeSelection&lt;br /&gt;Caused by: java.lang.ClassNotFoundException: weka.filters.supervised.attribute.AttributeSelection&lt;br /&gt;at java.net.URLClassLoader$1.run(URLClassLoader.java:200)&lt;br /&gt;at java.security.AccessController.doPrivileged(Native Method)&lt;br /&gt;at java.net.URLClassLoader.findClass(URLClassLoader.java:188)&lt;br /&gt;at java.lang.ClassLoader.loadClass(ClassLoader.java:307)&lt;br /&gt;at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)&lt;br /&gt;at java.lang.ClassLoader.loadClass(ClassLoader.java:252)&lt;br /&gt;at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)&lt;br /&gt;Could not find the main class: weka.filters.supervised.attribute.AttributeSelection.  Program will exit.&lt;br /&gt;&lt;br /&gt;I don't know what any of that means... it looks like it can't find the classes I need? I don't know. I ran the kmeans script from Scientifice Computing with Ruby, but I couldn't figure out how to adapt that to attribute selection, or even filtering.&lt;br /&gt;&lt;br /&gt;I'm going to spend the rest of the night (a) writing a filtering script (b) mining all of my 300 classes by hand. Fortunately I have plenty of Diet Coke.&lt;br /&gt;&lt;br /&gt;%%%%%&lt;br /&gt;&lt;br /&gt;The other group got awesome results by averaging all of their descriptor vectors into one vector per image? Did I hear that right? What the fuck?&lt;br /&gt;&lt;br /&gt;%%%%%&lt;br /&gt;&lt;br /&gt;Okay, I found this &lt;a href="http://www.cs.waikato.ac.nz/%7Eml/weka/index_documentation.html"&gt;site&lt;/a&gt; that has a bunch of Weka links including manuals and powerpoints. I think I finished scripting everything. I think that all we have to do now is figure out how to use weka effectively.&lt;br /&gt;&lt;br /&gt;%%%%%&lt;br /&gt;&lt;br /&gt;Here's a &lt;a href="http://weka.wikispaces.com/Use+WEKA+in+your+Java+code"&gt;page&lt;/a&gt; that shows you how to use Weka in your Java code.&lt;br /&gt;&lt;br /&gt;%%%%%&lt;br /&gt;&lt;br /&gt;I was having a lot of trouble with exceptions in the Java code I used in the above website. Also, apparently in JRuby arrays come in two flavors: Ruby, and Java. I needed to pass a Java String[] array to a Weka API thingy, but I couldn't figure out how to declare a strictly Java array as opposed to a Ruby array. Eventually I found this wonderful &lt;a href="http://kenai.com/projects/jruby/pages/CallingJavaFromJRuby"&gt;site&lt;/a&gt;, the JRuby wiki. I don't know how I didn't find it earlier. Anyway, to Javafy something in JRuby, just do thing.to_java.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5150084882015979368-5473895614195187623?l=connor-the-great.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connor-the-great.blogspot.com/feeds/5473895614195187623/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://connor-the-great.blogspot.com/2009/11/csc-579-image-classification-project.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/5473895614195187623'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5150084882015979368/posts/default/5473895614195187623'/><link rel='alternate' type='text/html' href='http://connor-the-great.blogspot.com/2009/11/csc-579-image-classification-project.html' title='CSC-579 Image Classification Project'/><author><name>Connor the Great</name><uri>http://www.blogger.com/profile/00710696274788748676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_4or8WOULESA/SeFeJf7eD_I/AAAAAAAAAAM/hx8Mr5U8tCk/S220/IMG_7694.JPG'/></author><thr:total>0</thr:total></entry></feed>
