|
| This is the developers' to-do list. There are several sections,
with earlier ones being higher priority than later ones. Tasks
within each section are also ordered approximately by priority.
We are slowly changing over to use
sourceforge's trackers;
those are becoming our primary record of outstanding tasks, so please
check there first. In particular, new tasks should be submitted to
a tracker rather than added to this list.
- Tasks to be addressed for the upcoming 1.0 release
-
What the developers are working on most actively right now.
- Things we hope to take care of eventually
-
Tasks of lower priority; if you would like to see one of these tasks
completed any time soon, please volunteer (even if a developer is
already assigned)!
- Ongoing work
-
Long-term tasks that are underway, and tasks that the developers might
currently be investigating: work with uncertain finishing times.
By each task, initials in parentheses typically indicate the main
person working on an item, but others may also be involved. Items
with no initials are not (yet) assigned to a specific developer (so
please feel free to volunteer!!!!). Dates indicate when the item was
first added to the list, or a change was made.
ALERTs in topo.base
Priorities:
8: release 1.0
3: release someday
0: remove alert
* (8) boundingregion.py cleanup
* (8) sheetviews: release 1.0 (JAB)
* cf.py
(8) learning rate moves to learning function rather than cfprojection (CEB)
(8) where mask created (by cfprojection/cf) (CEB)
(8) learning rate a parameter of CFPLearningFn (CEB)
(8) CFPOutputFn mask parameter could be dropped now a masked iterator
can be passed in (CEB)
(8) JCALERT! We might want to change the default value of the
### input value to self.src.activity; but it fails, raising a
### type error. It probably has to be clarified why this is
### happening (CEB)
(3) calculation of no. of units (internal)
* functionfamily.py
(8) OutputFn: rename norm_value (CEB)
(8) LearningFn should have learning_rate param
(see same alert in cf.py) (CEB)
* projection.py
(8) other SheetMask + subclasses cleanup
* Slice
(8) M[slice]-style syntax (first figuring out performance implications
of attribute access) (CEB)
(8) general cleanup (CEB)
* PatternGenerator
(8) needs to support plasticity of output functions (after fixing
Pipeline's plasticity support)
* Simulation
(3) EPConnectionEvent always deepcopying data: does it need to?
(8) SomeTimer (also #1432101)
(8) the mess inside run(); how Forever etc is implemented
(3) PeriodicEventSequence
## JPHACKALERT: This should really be refactored into a
## PeriodicEvent class that periodically executes a single event,
## then the user can construct a periodic sequence using a
## combination of PeriodicEvent and EventSequence. This would
## change the behavior if the sequence length is longer than the
## period, but I'm not sure how important that is, and it might
## actually be useful the other way.
(8) gc alert in simulation.__new__ (CEB)
* Parameters
(8) FixedPoint doesn't work properly with Number (removing fixedpoint
anyway?) (CEB)
(3) logging: use python's instead of our own?
(3) script_repr:
# JABALERT: Only partially achieved so far -- objects of the same
# type and parameter values are treated as different, so anything
# for which instantiate == True is reported as being non-default.
(8) ParamOverrides should check_params() (CEB)
Tasks to be addressed by release 1.0
2008/09/30 (CB): clean up python code for slow-tests
2008/09/30 (CB): coordinates in GUI
2007/10/03 (CB): Urgent param/tk cleanup
Cleanup + doc of param/tk.py. Includes fixing 'from param import tk'.
2007/10/03 (CB): Urgent plotgroup cleanup
Cleanup + doc of plotgroup.py
CB: Idle branch
Merge or abandon idle branch.
pylint: deal with or ignore all warnings
For make lint-base
2008/03/31: private/protected attributes
Check that we have _ and __ as we want them, at least for base
2007/10/26: Update tutorial
Update the lissom_oo_or tutorial page to include fresh figures; some
are a bit out of date. Add a section about plotting 'Orientation
tuning fullfield' tuning curves. CB: would the tutorial benefit from
being split up a little more? Maybe it's getting daunting?
CB: c++ comparisons
or/oo_or: Some BaseRN/BaseN combinations don't match. oo_dr: input
parameters don't match - need to adjust c++ lissom.
ConnectionField tests
no guarantee that code in/related to connectionfield is valid at all
densities (tied to c++ comparisons task).
2008/01/25 (JB): Organization of examples/
The examples directory is getting quite big and confusing, at least in
SVN. We should consider how we want people to keep track of their
code; should it be in the main SVN repository? A separate "contrib"
or "inprogress" branch? We have to consider at least three types of
examples, which may need three different locations: trivial
(tiny.ty, cfsom_or.ty, hierarchical.ty), published
(at least lissom_oo_or.ty, lissom_oo_dr.ty, lissom_or.ty,
lissom_photo_or.ty, lissom_whisker_barrels.ty, obermayer_pnas90.ty,
goodhill_network90.ty, som_retinotopy.ty), and ongoing research (by
us, but also by people unaffiliated with Topographica but want their
changes to track with SVN or be tied to a specific SVN version?)
2008/08/15 (JB): Cleanup of examples, especially for afferent radii
Once Kateryna's project completes, should systematically examine the
example files (see above task) and eliminate as many as possible;
several should now be able to be replicated using her master file. At
the same time, should update most of the examples to use explicit
parameters for v1aff_radius and lgnaff_radius, so that the sizes of
the LGN and retina sheets can be calculated appropriately. Currently
many of them have a size that includes a term 0.25 as a buffer, yet
the relevant radius to be buffered against is 0.27083. There is no
difference in the resulting matrix sizes at the default densities, but
for high enough LGN densities we would expect that a few CFs around
the edge would be cut off slightly using the current values.
option to clean up external/
add an option to clean up external/ once topographica has been
built, to free up some space for users while still leaving it
updatable
Base class of Number that allows a value of None
Move test data files into subdirectories of topo/tests
Things we hope to take care of eventually
Cleanup + doc of *panel.py files
2007/10/03 (CB): Less-urgent tkgui cleanup
- Use parametersframe/tkparameterizedobject in more places
(topoconsole, right click menus...)
- Restriction on operations in parallel? (E.g. run and map
measurement.)
(CB) cleanup test_pattern_present
(or wherever I tried to add test for not-run simulation before
presenting patterns/saving generators)
gui: test fullfield x and y work
test that shows sim.time() can't be float
test for recent run() problems - to catch problems with other future
number types
Mac
Have someone else get OS X 10.5 X11 (rather than aqua) working
parameters out
to different package
2008/07/14 (CB): replace internal name mangling for parameters
with a dict, so e.g. _x_param_value is instead _params['x']. (And decide
whether or not to do this elsewhere e.g. the attributes added to
dynamic generators.)
2006/11/09 (JA): optimizations from c++
Need to implement more of the optimizations from the C++ LISSOM code.
2007/03/29: Makefiles to python scripts
Control tests from a python file rather than the Makefile. Can then
include more tests of examples, by specifying sheet to look at etc.
And importantly, can easily run tests on Windows version.
2007/03/26: Support for optimization
Do we need our own simple timing functions to make it easier for users
to optimize their components (as opposed to the overall Topographica
framework, for which the current profile() commands are appropriate)?
A facility for reporting the approximate time spent in methods of each
EventProcessor? In any case, provide more guide for the user for
doing optimization, focusing on the components we expect to be the
bottlenecks. Add general advice for optimization to the manual pages.
2007/03/26: developer page about efficient array computations.
Measurement of numpy.sum(X)/X.sum()/sum(X) performance. Difference
between simulation results on different platforms (for slow-tests in
Makefile).
alternatives to allow users to include optimized code
pyrex/cython, ...
some kind of global time_fn manager?
defaults to something like lambda:0; the gui could set
to topo.sim.time. Rather than having a default of topo.sim.time
in places that don't know about simulations. In parameterclasses?
2007/12/23: who's tracking the results of...
- examples/joublin_bc96.ty
- examples/lissom_whisker_barrels.ty
- examples/ohzawa_science90.ty
And others...
2007/07/07: more tests
We need a test with non-square input sheets, non-square LISSOM sheets,
etc., with both types of non-squareness...and we also need to test
whatever map measurement that we can (e.g. or maps). Could also add
coverage testing, e.g. using
figleaf
or coverage.py.
2007/02/26: consider an alternative debugger
http://www.digitalpeers.com/pythondebugger/.
2007/02/28 (CB): OneDPowerSpectrum & Audio PatternGenerators
Finish the two classes. Make a demo with Audio. Both currently don't work
with test pattern window because plotting expects 2d arrays.
2005/01/01: components from external packages
Could consider using or taking components from: SciPy,
ScientificPython, Chaco, Pyro (the robotics package), g, logger
(instead of our custom messaging functions).
2007/02/23: which version of libraries is numpy using?
- numpy.__config__.show()
- warn users if they're using a slow version?
- http://www.scipy.org/Numpy_Example_List?highlight=%28example
%29#head-c7a573f030ff7cbaea62baf219599b3976136bac
>>>
>>> import numpy
>>> if id(dot) == id(numpy.core.multiarray.dot):
# A way to know if you use fast blas/lapack or not.
... print "Not using blas/lapack!"
2006/04/20 (JB): Composite & Image test files.
Complete test file for Composite and Image. investigate failing test
in testimage.py (that uses sheet functions). Currently commented out;
may not be a problem.
2005/01/01: porting other simulations from c++ lissom
Finish porting all categories of simulations from parts II and III of
the LISSOM book (i.e. orientation maps, ocular dominance maps,
direction maps, combined maps, face maps, and two-level maps) to
Topographica.
2007/05/29 (JP) Mac (aqua) GUI cleanup
The Mac GUI needs a variety of things to make it more Mac-like.
- Various window styles need to be tweaked: e.g. EntryFields
should be sunken, backgrounds, light grey (not white), etc.
- Tooltip timing is screwed up.
(Note that some of these might be fixed automatically when we take
advantage of tk 8.5's themes. We have the bigger problem anyway of the
fact that no other Mac apps use a series of separate windows (as
topographica does).
2007/06/07: plotgrouppanel's plots
Maybe should be one canvas with bitmaps drawn on. Then we'd get
canvas methods (eg postscript()). But right-click code will need
updating. Should be easy to lay out plots on a canvas, just like
the grid() code that we have at the moment.
Run tkgui in its own thread?
2007/05/09: topoconsole workspace
Can we have a matlab-like workspace?
2006/02/21: read-only objects
Might someday be interesting to have read-only objects, aiming at
copy-on-write semantics, but this seems quite difficult to achieve in
Python.
Ongoing work
2006/04/10: optional external packages on platforms other than
linux
Optional packages (e.g. mlabwrap, pyaudio) on Windows and OS X.
2006/02/23 (all): Making more things be Parameters
And writing doc strings at the same time. E.g. the x and y widgets in
the Unit Weights window can be Numbers with bounds, etc.
2006/02/23 (all): ensuring classes are declared abstract if they
are abstract
Plus making sure base and simple classes are imported into packages
(i.e. Sheet into topo/sheets/, Projection into topo/projections/,
Constant into topo/patterns/, and so on).
2006/02/21 (all): documentation, unit tests
Improving both, plus eliminating ALERTs. Could use Sphinx instead of
epydoc for Reference Manual; apparently searchable.
2007/03/14 (CB): gnosis.xml.pickle
Needs to be updated for numpy. I'm working with module's author at the
moment.
2007/03/14: building scipy
how to build scipy without requiring any of the external linear
algebra libraries, etc? Then scipy would at least build easily, and
users could install the optimized versions if they wished.
Investigate garnumpy.
2007/07/24 (JB): Matlab Toolbox for Dimensionality Reduction
Consider interfacing to this toolbox, which contains Matlab
implementations of twenty techniques for dimensionality reduction. A
number of these implementations were developed from scratch, whereas
other implementations are based on software that is already available
on the Web. http://www.cs.unimaas.nl/l.vandermaaten/dr CB: or
consider a python/numpy alternative?
E.g. http://mdp-toolkit.sourceforge.net/
2007/07/24 (JB): Digital Embryo Workshop
Consider interfacing to this toolbox, which is handy for generating
novel 3D objects, e.g. to use as training stimuli (perhaps for
somatosensory simulations?).
http://www.psych.ndsu.nodak.edu/brady/downloads.html
|