Adaptive Networks Tutorial Software by Vince Ramey - UC Berkeley, Nogales Lab e-mail : vince_ramey at berkeley dot edu phone : (510) 666-3335 ------------------------- Needed source code: Edge.cpp Edge.h Node.cpp Node.h imagic.h Adapt.cpp makfile ------------------------- Compiling: Unpack the above files into a directory and use the 'make' command (linux and mac) to build the binary. This requires the g++ compiling tool, or you can build the source by yourself however you want... ------------------------- Using the program: The default binary name is CAN (for Classification by Adaptive Networks). Run it with no arguments to get a usage message. The parameters are as follows: : name of the 'REAL', 4 byte imagic stack whose particles you wish to classify ************NOTE: the input is expected WITHOUT suffix, so 'myImagicStack' works but 'myImagicStack.img' doesn't************************* : this will be the base filename for all output files (network images, average images, class membership select files, and connection map file) : Number of times data points will be presented to the network. ~15 times your particle number is sufficient. : Fraction of the distance a network node will move towards a presented data point. 0.01 works very well. Higher values will make the learning more noisy but possibly explore more of "image space". Low values may prevent the network from accurately capturing your data. Feel free to experiment! : Fraction of the distance a network node connected to the highest scoring node will move toward that data point. This effect gives the network interesting "cohesive" properties and helps with classification. 0.0005 is recommended. Same goes for this value as the one above. : This is the number of iterations a connection between nodes will be maintained while unused before it's abolished. Higher values lead to a more connected network, but over connection can lead to inhibition of correct classification as the network will be over constrained. Low values will make an almost unconnected network, which can also hurt learning. Values from 10 to 40 have been used. I usually use 20-25. Experiment here as well... : Final number of points in the network. This also means that the data will be represented in this many "classes", although because the averaging is different you may overshoot here and be fine. Use a similar number here as to what you would ask from an MSA classfication. ------------------------- Output of the program: (output_name).hed/.img - Final locations of each network point in image space after classification. Use these images as references for alignment as they have the lowest noise (output_name)_avg.hed/.img - After classification, each data point is assigned to a network point based on distance. These are then averaged and these images are generated. These are directly comparable to other methods since these are actual averages of the data. (output_name)_class***.spi - SPIDER select files for the averages generated above. This is here if you want to do something with individual classes, (use them with tilted data for a Random Conical Tilt reconstruction or maybe edit out bad particles IDed with classification method). ------------------------ Sample run of the program: > CAN myImagicStack outStack 70000 .01 .005 20 200 This would classify the images in myImagicStack.hed/.img, putting the results in outStack*.