In this assignment, you will make modifications to a Topographica model to get experience in building and testing models. You will also write a short research proposal to get experience with locating and understanding scholarly neuroscientific and computational literature, and selecting research topics. The goal is to end the course in a good position to start constructing novel and feasible visual cortex models using Topographica.
You are encouraged to work in pairs of your choosing. Just submit one copy of the assignment, listing your partner, and the mark will be allocated equally to each. It is ok to work together just on Part 1 if you prefer; in that case, one of the pair should submit Part 1, listing both partners, and the other should submit only Part 2 plus a list of the two partners.
First, tell Topographica where you want your output files to go by default, by setting up a ~/.topographicarc file:
cp /group/teaching/cnv/topographica/sample_.topographicarc ~/.topographicarcYou can edit ~/.topographicarc if you want your output files put into some directory other than ~/cnv; if so, be sure that directory exists.
Then copy
/group/teaching/cnv/topographica/asst2.ty to your own directory, e.g. ~/cnv
, and launch it:
mkdir ~/cnv cd ~/cnv cp /group/teaching/cnv/topographica/asst2.ty . ln -s /group/teaching/cnv/topographica/topographica . ./topographica -g asst2.tyThe asst2.ty file is a slightly modified copy of examples/lissom_oo_or.ty, with a lower V1 density, four input patterns per iteration instead of two, and no noise on the initial weight values (to avoid covering up the effects of other noise). You should run it for a few iterations in the GUI and look at the various plots to verify that it works ok. You can ignore any "unused variable" or "ignoring #pragma" warnings you see on the terminal.
Then run asst2.ty in batch mode to establish a baseline for how the network behaves, before you make any changes. Sample batch mode command for running to simulation time 2500 and analysing the map at times 100, 1000, and 2500:
./topographica -a -c "run_batch('asst2.ty',times=[100,1000,2500])" -c "save_snapshot()"This command takes 4.5 minutes on my 3GHz Pentium 4 machine, but could be more if your machine is slower or heavily loaded. The output will be a set of .png images in
~/cnv/Output/200803131631_asst2
, where 200803131631 is
the year, month, hour, and minute when the command was started (to
provide a unique tag to keep track of results).
You can use your favorite image viewer to see the results,
e.g. gthumb *.png
. For gthumb, it works better if you
go to the Preferences and set the Viewer options to have a
Zoom quality
of Low
(to avoid smoothing)
and After loading an image
to Fit image to
window
(so that it's large enough to see).
You can also load the saved snapshot if you want, to explore the final map:
./topographica -g -c "load_snapshot('$HOME/cnv/Output/200803131631_asst2/200803131631_asst2_002500.00.typ')"(using the appropriate path to your copy of the simulation output).
Always be sure to examine the .out file in the batch output directory, so that you can detect any warnings that might be important (such as parameters that you thought you changed but the code warns you were not actually changed due to typos).
This model is idealized in many ways, and the goal of this assignment will be to determine how adding various types of noise or other variability will affect the results. Topographica allows noise to be added easily to nearly every major computation, as described in Adding noise to Topographica.
For this assignment, choose four different types or locations of noise or variability, and rigorously evaluate how these affect the function and the development of the map.
For each type of noise:
Describe (i) what type of noise you are adding, (ii) where you are adding it, (iii) what such noise might represent biologically, (iv) why such noise might be an interesting or important case to consider, and (v) list the changes to the code that you had to make to model such noise.
For instance, if you decide to look at the effect of
having noisy input patterns, a very brief sketch of an answer
might state that you will investigate zero-mean Gaussian noise
added to photoreceptor activations, representing variability of
photoreceptor activations, and that that you assume it to be
additive and Gaussian in nature (and explain why). Doing so might
be important because it can help establish how much of the
variability in cortical responses could be due to variability in
activations in the periphery. You would then list
the change that you made to the code, e.g. changing
output_fn=IdentityOF()
in the definition of
topo.sim['Retina'] to:
output_fn=PatternCombine(generator=topo.patterns.random.\ GaussianRandom(scale=0.1,offset=-0.05),operator=numpy.add)
Systematically adjust the amount of noise, until the overall behavior of the network is affected clearly enough that the results are easily visible (if that is possible). Considering this level of noise and also an intermediate level with less obvious effects, demonstrate and explain:
What is the effect of this type of noise on the overall response of the network to an input pattern (i.e., disregarding development, how does the noise change what happens in V1)?
What is the effect of this type of noise on the development of the map, such as the emergence of selectivity for orientation and the overall arrangement into a map?
How sensitive is the network to this type of noise? Phrase your response in terms of whatever you are adding noise to. E.g. if adding noise to the input pattern, how strong does the noise have to be compared to the input pattern itself before you see significant effects?
Explain why the network is or is not very sensitive to this type of noise, preferably by referring to specific equations (by number) in chapter 4 of the CMVC text, but at least at a qualitative level.
Your work must be submitted by 10am on the deadline,
Thursday, 3 April, using the
submit
command on Informatics DICE machines (type
man submit
for more details). Your work should be in the
form of one plain PDF file per problem, plus one .ty file where
appropriate, each named as listed below. Late submissions will not be
accepted without good reason, and will be penalized according to the
standard university policy of 5% penalty per working day or part
of a day.
Example of submit command:
submit msc cnv 2 1_1.pdf 1_1.ty 1_2.pdf 1_2.ty 1_3.pdf 1_3.ty 1_4.pdf 1_4.ty 2.pdf
Since adding the noise is easy to try, you could also simply considering trying out lots of different options, and then focusing on the four that seem most interesting or informative.
Note that because this network uses firing-rate neurons, we cannot investigate spike-timing dependent variability directly, only the corresponding variation in average firing rate that results from variable spike times.
/group/teaching/cnv/topographica/topographica -a -c "run_batch('asst2.ty',analysis_fn=default_analysis_function,times=[100,1000,2500],default_density=30)" -c "save_snapshot()"
This runs the default_analysis_function
(defined in
topo/commands/basic.py) at each of the specified simulation times.
You can copy that function to your own .ty file, change the function's
name, and add any code inside it that you want to run repeatedly for
the simulation.
Any parameter that you add at the end of the run_batch command, like default_density=30, will be set before running your .ty file, and will be put into the filename of the output directory. You can use this mechanism to keep track of the various configurations that you run. For each parameter you want to control like this, just put in code like locals().get('some_parameter',0.25) wherever the value 0.25 appeared in your .ty file. That way Python will first check if some_parameter has been defined, and if not it will use the value 0.25. See the code for default_density in asst2.ty for an example.
Be sure that you provide evidence that you did each part of this assignment. I can only judge what is actually submitted, so you should make sure that the files you submit make it clear that you have done everything, and thought about everything.
Be sure to cite any information that you use that is not from the course material or your own experience. Including such information is encouraged, but it must be properly cited. You can use the CMVC book Bibliography database for citation information for any paper cited in the CMVC text.
Submissions must be in PDF except by prior approval with the instructor. I can be sure to be able to read PDF; others like .doc or .sxw have a certain probability of working properly, but the probability is far from 1.0. Naming the files as I suggest will make my job a lot easier, because I will be able to see exactly what you are submitting for each problem.
Read and follow my list of writing tips.
Last update: assignment2.html,v 1.8 2009/02/23 11:23:41 jbednar Exp
Informatics Forum, 10 Crichton Street, Edinburgh, EH8 9AB, Scotland, UK
Tel: +44 131 651 5661, Fax: +44 131 651 1426, E-mail: school-office@inf.ed.ac.uk Please contact our webadmin with any comments or corrections. Logging and Cookies Unless explicitly stated otherwise, all material is copyright © The University of Edinburgh |