1.030 September 9th More minor changes in text for CD - final version. new bvackup/archiving system 1.027 September 1st 2000 almost final version for the CD. 1.026 August 27th 2000 RatWorld - spike and synaptic weight recording handled by PolyNetPopulation and displayed by RatGridView. rat/network running threads reworked. Trajectories now work in rat lab, with the trajectory for the main rat set in the RatLab window. New buttons on RatLabEditor, some preformance improvements with ne threads. Profile handling included in PolyNet but not tested properly for modulation of synaptic transmission ***. Works for spike time dependent plasticity. Most book applets reworked, text partly reworded. New component - MultiLinearCell, with editor intended to replace cvapp for morphology editing/conversion and interface easily to whole cell models. 3-D operations included in GraphCanvas. 1.025 August 17th 2000 Revised documentation (part of it copyedited by CRC) bugs fixed in ReacDiff2 where permeability of boundaries was too low by a factor of two. Also, intersection of internal boundary with the outer boundary is handled properly. ResultsListener interface eliminated. JPython scripting ammended for new Sys object and documentation updated. 1.024 August 8th 2000 New main programs: modeler, appletviewer and ratworld. modeler is like the old catacomb, appletviewer just shows applets defined in loaded models, and ratworld starts up ratworld without the catacomb window. New components RatGridView, RatScrollView for rat network output, each with own display. (NB, RatGrid doesn't show connectivity or synaptic weights yet). Removed most of own interfaces, except ColorUser and DataListener - that is, ResultsListener, ListListener, SelectionListener. All now done by catching DataEents of type structure. Seems OK but may have broken a few things. Many name changes (~ 200) to bring naming into line with java conventions, and to make internal structure clearer. In particular "enob" becomes "CcmbSelection" and "monovec" "CcmbList", "vObPointer", "CcmbReference", "vPar" becomes "CcmbField", and "vOb", "EventPropagatingObject". "Editor" is now reserved for object editors: GUI subcomponents are called eg StringGA, BooleanGA and they all extend FieldGA. ("GA" is due to change when something comes to mind). There is a new class NameEquivalence to provide compatibility with models using the old names. Any old name detected (by failing to find the class for an object) triggers testing of name updates throughout. Spearated components that need the awt (canvasses, editors, panels) from those that define model structrure and calculations. The latter sould compile without a windowing system. All static references to Catacomb top object now via a Sys class which uses an Interactor to talk to the user: the simple Interactor does nothing, the GUIInteractor uses the windowing system. The main method chooses which to use: without the GUI one, no reference is made to any of the gui components, and so no ref to awt. modelRunner eliminated in favour of a multiRun method in CataCalc which handles all the possible threads that might want to run its methods (so far: watcher, slowRunner, repainter). new method exposed in EventPropagatingObject which calls parent.exposed() etc when an object is first examined. new system object to contain all standard components AppletConfig list moved to top objects system as a lost+found list which accumulates objects in files which no longer fit, IO routines attempt to place them in suitable places once the new ojbect is loaded. Missing fields now replaced with right type and name by instantiating and validating a whole new object and copying in the fields missing in the original. PolyNet etc now work for synaptic modification rules, and run most IaFNetworks properly - still needs checing. NetView has option of contiguous grid display, and all populations can optionally specifiy that they should be laid out in a grid. New place input for RatNetwork, as displayed in RatEnvironment, giving direct activation of place cells. Parameters in the Rat object. 1.0236 Bug in iafTools: the patterend stim input didnt have a factor of dt in its conductance, so the number of spikes resulting from a brief stimulus was timestep dependent. There is another problem too, in the definition of bi-exponential inputs. At present it uses Trise and Tfall to get the current as g = exp(-t/Tfall) - exp(-t/Trise) If Tfall < Trise, it uses the alpha function forhte limit Tfall -> Trise. These only correspond to the real rise and fall rates if Trise << Tfall. Should probably use time to peak and time to decay to half peak? 1.0234 Waveform phase now works properly, and remains constant when the amplitude is changed. 1.0232 Thurs July 13 Changed ccmbNet privateInit so that identified pools are caught on initialisation, and the one later in the list always points to the earlier one, independent of hte direction of hte link. Few changes in reation-diffusion displays and updating to bring them into line with the new data events. New CcmbThread obhect to use multiRun methods in CcmbObject, as used in RatLab for moving/painting/running the network 1.0231 Weds July 12 DataEvent reporting reworked to make it possible to work out what is going on (set debugLevel to 3 to get events printed) with indentation to show event history and path. Propagation rules for list pointers modified, and much unnecessary dataListening removed (maybe too much??). 1.023 Tues July 11 new object DataEvent passed around whenever anything changes, containing small set of static type fields. All calls to dataChange, ownDataChange, flagDataChange changed. modelRunner eliminated in favour of a simple thread using cataCalc which now implements Runnable. RatWorld - PolyNet code complete but still awkward to run. 1.0224 Fri July 7 RatWorld - new PolyNet object to handle all network calculations, not completed. Slight reorganisation of components (again) to clarify event propagation. Minor modifications to canvasses to make them work properly with Wacom graphire graphics tablets (strongly reccommended) under linux. 1.0223 Weds Jul 5 Fixed a few bugs in reaction diffusion calculations, to do with correctly identifying injection boundaries where two such boundaries cross. Tested cylindrical symmetry - seems to be working correctly. The region no longer has to intersect the axis of rotation. Version statement on startup, catch clause for old style Errors thrown by Class.forName(). toggle Box option on all graphs (top right menu, or b key) to put an ugly box around the data are (at request of C.A.Tout). 1.021 Tue Jul 4 Stellar evolution tutorial. Site reorganised slightly to build root containing catacomb and other stuff - so far just jdks and a few notes. Windows bug loading jar files changed from zip workaround to renaming ccmb.jar as ccmb.txt. Stellar evolution components extended - colored HR diagrams, saving/loading sequences of models. Slight changes in default parameters, restarting from anteprevious model with user-definable next step et al. New interface for boolean subset lists. RatWorld: multiple rats, more of the RatWorldEditor filled in. new PolyNet object and subvcomponents, changing content of iafTools to full OO structure (undre linux, the overhead on an Object seems to be 20 bytes, compared with 8 for arrays. Object reference takes 4 bytes, just like an int, so keeping arrays of object references (cells, connections etc) is actually quicker than bing int[][] tables to look things up in. Memory usage added in CatacombEditor, and restrictions on object lookup by name lifted. Appletizer puts names of windows in now, and compound applet builder actually pays attention to original size of frames. 1.02 Mon 19th June RatWorld reorganised. What was RatWorld is now RatEnvironment, with a new RatWorld top component. Many new objects under RatNetwork which treats iafNetwork, NeuralNet and others as linkable modules. RatWorld has its own interface (only just started) for running one or more rats in an environment. RatEnvironmentEditor now allows recording saving and exporting trajectories. JPython interface now loads modules from anywhere and puts the directory containing the module in the Python search path. ksChannle has two new fields: Erev for its reversal potential and a selector for whether to use that or the full calculation via an ivLaw. If the ivLaw or solutions are not defined it reverts to using Erev so it is easier to make a model which does something. extensive changes in star object, documented elsewhere. included Jama matrix package for doing linear algebra. 1.018 Fri Jun 9 JPython: added facility for interaction with JPython. If the JPython jar file is in the classpath at startup, will add a jpython wrapper object letting you import modules. If a module contains a string array "callable" containing function names it defines buttons are provided to run these functions. functions may register themselves as data listeners to any object so they get called again when the data changes. There is an "activate terminal" option to connect the embedded jpython interperter tothe terminal from which catacomb was started. This gives you direct access to the interpreter, just as if you'd started jputhon first and then imported catacomb. Except for running off-line, this is probably the bet way to run JPython with catacomb. new NeuralNet component, still being tested. AnalysisTools as a utility class for JPython scripts, and ultimately for its own analysis object. Star object major revision of internal structure and running. bug fixes in graphDataCanvas for constraining plot range to prevent problems with off canvas lines. 1.014 Fri jun 2 brief forray into inner classes canceled since they worked fin under linux jdk1.1.7 but failed uner 1.2, windows 1.3 et al. same operations effected with new FillerPanel class. 1.012 Thurs Jun 1 new ProgressDisplay interfacea and ProgressBar component in rd2Calc, meshedDrawing, iafCalc et al. modified layout of cmbNetEditor (subclasses for iafNet, cfNet, ksChannel etc) so all components in node and link panels are visible - inner class panels to take up remaining space. Menus and key actions on all canvasses! you get a menu by clicking the little triangle in the top right, the capital letters in the options show which keys that do the same thing. keepSnapshot option to keep an image of a window on the screen - you can't do anything with it except look at it and close the window. To save an image use the menu option on the thing that made it. extra editing options in labelledDrawing, meshedDrawing et al left mouse just moves points, right mouse moves whole thing, mouse over and "d" key deletes a point. 1.011 Weds May 31 rd2Calc: fixed bug in calculation of coupling constants in meshTools where membrane permeability calculation left out the area factor. 1.01 Tues May 30 iafNetwork: synaptic normalisation and saving trained networks RatWorkd extended to allow more sensory input, and waveform or binaryControl of lights, sounds. Attached to moviePlayer for playback. new function accClickableBoxedText in graphDataCanvas, does just that, with the mouse response applying to the whole button. Feedback package with local server, applet and panel within catacomb for submitting bugs, questions, feature requests. Possility of attaching sameple models to submission. scripts, m4 include files and makefile to compose submissions and responses into a FAQ, bug list etc. New enob flag, autoSelectable for those which whould set themselves to the first available elt if they are null. GNU style reference card for user interface (model and developer cards to come) 0.99 Wed May 24 19:54:06 GMT 2000 readDiff2 calculations extended and debugged. Waveform inputs are integrated properly irrespective of where sample times fall (can even step right over an input and it should give the right integral). more subtle algorithm to identify sites and species of injection (may still fail under certain circumstances?) display of samples on waveforms fixed. rsCalc cleaned up, with less redundant calculation which was resulting in irrelevant error messages. upgrade option in main file menu, checks home site for latest version and gives option of downloading it. PopGrower object for artificial cell populations HistogramSet object with editor for displaying results. Scripting with Jpython - new methods for easing script access to internal variables, methods. Documentation on using JPython. javadoc documentation included as part of make. 0.98 16 May 2000 reacDiff2: extensive changes in mesh generation, with a more robust initial triangulation and options for fourfold mesh refinement. Boundaries with reduced permeability incorporated by splitting points in two and specifying f_perm, effectively the conductance between the cells on either side. Options on calcResults3 for saving images and raw data. New reaction-diffusion tutorial. PopGrower and Histogram classes for analysis of dendritic trees. Added new options "set to new default" for boolean enobs, and made the edit function target the right component (instead of just the right vector) into the. Removed the auto-setting property of enobs, since sometimes you really want them to stay null. 0.97 12 May 2000 More models in chapter 11. New display style, "points" in calcResultsEditor. Other styles given final static integer types with iuntelligible names. New save options on calcResultsEditor: image using color table, and raw data, with getRawData, getIntImage methods in calcResults. PPMEncoder class removed and replaced by static methods in ccmbUtils followed by a call the fileString to write raw data. Make proces no longer looks for files itself, but expects ccmb/moidels to have a directories.txt file telling it which directories to process, and each of these should have a files.txt file telling it which files to process into the final docs. iafCalc: fiexd buyg with sign of synaptic depression CFCalc, added code to curtail calculation when things blow up 0.96 10 May 2000 Much cleaning up, new models for various chapters in the models sectins. GIFEncoder class removed, and replaced by own PPMEncoder. Documentation heavily revised. Fixed bug in electrocal connections in iafCalc which meant that currents only flowed one way. RatWorld now has oval boundaries, and options for specifying whether boundaries are visible or not, should be drawn filled or open, and are solid. Options for solid currently "yes", "semi", and "no". "yes" should prevent any part of the rat crossing the boundary but currently does the same as "semi".**** So, eg, to constrain the rat to a platform, set visible false, filled true and solid to yes". Then the boundary of the platform will not appear in the visual field, but it wont be able to leave it either. The editable option selectes whether to allow editing of the envorinment. When on, the line and region markers are drawn, and points can be moved around. ksCalc now handles waveforms with their own sampling specification, preconditioner waveforms, and those with extended "breaks" in them. 0.95 5 May 2000 new CFNet, CFCalc, etc replacing cfNet et al. Using the same structure as iafNet. That is, cfNodeType, cfLinkType vectors eliminated in favour of direct access to nodes and links each with all their own parameters. Modulation of transmission by attaching waveforms to links and stimulation with CFStimNodes as in iafNet. Handles sinusoidal waveforms properly, uses netView component for output, and defaults to colormapped image display for node activities. Color table defaults to a range of 0 to 10. Some ambiguity here as to whether node values are activities (>= 0.) or analagous to membrane potential. The default assumes activities... not sure what is best. New option in calcResultsEditor to "save visible as atf" This allows you to save only the currently displayed section of the data as an ATF file. To get precice control of the limits, use "edit config" in the same menu, and set the x_min, x_max fields with the sliders or keyboard. new "break" copmponent in waveform, intended to make it easier to construct waveforms with brief periods of activity separated by long periods of constant values - the latter can be done by inserting a break point of the appropriate duaration. sliders on waveform editor to set the x or y step sizes, break duration and x sampling interval. The latter is only used in certain calc methods. It defaults to 0 meaning that the current interval should use the same sample interval as the last one. waveformEditor allows access to step fields for all points independently and has an extra field for the desired sampling interval. wfTools uses these to generate a siutabal timebase for a series of steps satisfying all sampling criteria. This is probably only useful with ksCalc as yet. ksCalc currently broken: half way to implementing preconditioner waveform with variable sampling throughout (seems to work, but needs testing) 0.94 1 May 2000 new objects RatWorld, RatWorldEditor, Rat, forming a virtual world with region and line marking. Output consists of the contents of the rat's visual field and proximity indicators to marksre in the field. This will need a FeatureEncoder object to turn these outputs into suitable input for a network. At present the RatWorld object lives under the "devel" object in the objects menu. There is an example nder "rcc" in models. Fixed bug in iafTools which failed to catch the end of a sinusoidal input waveform till one point too late. Added frequency and phase controlls for sinusoidal sections of waveforms replacing usual x and y sliders if any of first three points defining a sinusoidal section is selected. waveform objects now have prefLims array, recording the last range specified by the user. This sets the default view when changing target object in waveformEditor. rd2Calc: reaction diffusion on 2-d meshes. Various problems with mesh generation, but reaction-diffusion system works graphDataCanvas has scrollbars for easier scaling. Scrollbars can be moved and stretched or squashed at either end. They show the fraction of the current useful area (max of data area and current view) visible in the current view. Also now has a legend at the upper right Default content of info boxes changed to be a little more informative netView has option for showing populations and connections of highlighted cells, or a full connectivity matrix. In either case, can play through the last run, with color coding for membrane potential and synaptic weights. spikeCount object in iafCalc which counts the spikes in each population and plots either a running average of the spike rate or the spike counts in various bins defined by a binaryControll object. Bins default to the whole run if there is no binaryControl set. calcResults editor now understands histogram type data for plotting the results, and has a "show text" option in the data menu to select a display of the results as columns of numbers instead of the graph. New make target, tex, for latex documentation containing all text in catacomb. Spell checked web pages, model documentation, class documentation. 0.93 Bug fixed whereby iafLinkGJ nop longer reported the right type to iafCalc so electrical connections were handled wrong. New netView object in iafCalc, intended to replace iafCalcResults, but for now they bothe are there. netView has access to the membrane potentials as well as synaptic weights and connectivity. So far it works like iafCalcResults, but also shows connectivity. *** no display fo synaptic weights yet. New documentation for iafSynPars explaining synaptic modification scheme in detail. Found out why saving a .jar file with netscape under windows doesn't work. Netscape treats it as text and converts all newlines to carriage return;newline If someone knows how to stop this I'd be delighted to hear. However, downloading with Internet Explorer works, and the full build also now makes a .zip file which can be downloaded uncorrupted by netscape and unpacked to teh .jar file. black on white option moved to graphDataCanvas, and added to all vObjectEditors. Now controlled from "utils" menu on all windows. iafNetwork: New code for 1-to-1 connections in iafTools. Applies whether source and target populations are the same or different. stimNode template moved to top left, new metaWaveform node at top right. This can be connected to a link to modulate synaptic transmission. removed iafSynModRule object entirely, and some paramters from iafLinkSC, iafLinkDf. Replaced with an iafSynPars object which takes a waveform to define windows for synaptic modification w.r.t. preceding and following spikes. iafNetworkEditor layout reverted to one columen each side now there are fewer variables. Waveform object extended to allow sinusoidal sections, and waveformEditor modified to display them. iafTools understands such waveforms, other components will treat them predictably but incorrectly until fixed. Sinusoidal waveform option replaces sine option in iafStimNode, so that has been removed too. patternedStim and its GUI extended to allow copy and paste of sections, and to put up a text representation of the active channel which can be edited by hand and reread. Format described in binaryControllEditor documentation. readDiff2 object for 2-D reaction diffusion systems, with plane or axisymmetric geometry. uses meshedDrawing to set up geometry and reactionScheme to specify reactions but no calc method yet *** new options on calcResultsEditor, "save as text" and "save as atf". The first writes an ascii text file, the second an AXON atf file. 0.92 Wed Apr 5 15:19:22 GMT 2000 Fixed bug in ksCalc which hadn't caught up with changes in packaging results in calcResults object. Just had to call super.privateInit() at the end of privateInit(). ****All objects which extend cataCalc should do this***** 0.91 Mon Apr 3 20:36:01 GMT 2000 Began putting empty screen with instructions in custom list editors which haven't yet got a target object. (paint method should just call emptyPaint() if the target is null) eliminated customModelExplorer: modelExplorer now has an option whether to try to find an object specific editor or just use the default, now called namedObjectEditor. dataChange event propagation and now propagates the source object and the last namedObject to pass on the event. May malfunction at present in a few places where the source object was tested for the need to update. Changed calls made by modelRunner to cataCalc to the following: exportStructure() after calling structureInit exportData() after calcInit dataUpdate() when partial results available and want repaint dataComplete() when it is all there. cataCalc now has a new namedObject to contain the results calcResults with its own editor calcResultsEditor this completely replaces the modelResultsViewer et al. getting rid of the mess with multiple editors of a single object and allows the state information of calcResults to be saved with the model (which lines are visible, log/lin axes etc). rationalised applet panel construction. now first calles makeFreeAppletComponents, then assembles the required panels instead of duplicating part of makeFreeAppletComponents. 0.90 Tue Mar 7 16:55:06 GMT 2000 Fixed bug with frequency from iafStimNode where the frequency was divided by 2*PI instead of multiplied. Added phase. Eliminated unnecessary repaints that were causing the display to flicker by repainting when ther was no data. Save option, "save and write applet html", writes html files for all applets and sessions defined in the model. See appletConfigEditor for details. Empty windows should not now appear when applets are loaded. New numerics object which implements simple numerical algorithms on a second order DE. Began examples for chapter 1. added option in diffMeasure to extract its onw comparison data from the current calculation object. Detailed Changes to iafNetwork phase variable added to iafStimNode, put it in the getDbls method which is used to package the data. in iafTools, where it handles the stim nodes, used added the phase before taking its sine, and shifted indices of the voltage range (now 2 and 3 isntead of 1 and 2). Layout of synapse parameters on the right hand side - added line ccmbLe.setMspLayout (0, 2); in the p[ublic initializer of iafNetworkEditor. This tels the modelSliderPanel it inherits from ccmbNetEditor to lay out the linkEditor with 2 columns and however many rows are needed. Added new variables G_0 and G_rest to iafLinkDF and iafLinkSC. Put brief descriptions in getFieldInfo() for the text at the top of the window. ?? maybe these parameters should be moved out of here to a iafLinkType object, with just a pointer in iafLinkDF? or into iafSynModRule? Added G_0 and G_rest at indices 2 and 3 in getDbls NOTE that this shifts the rest up 1 so all references in iafTools will have to change, but they'd be messy at the end. Changed references to dlink[i][2,3,4,etc] in iafTools - dlink is what ccmbNet packs the results of getDbls on hte links into. - about 8 references to change in total. [ implementation note: it could be written so this was unnecessary: dlink[i] could be an object with properly named members, used by name in iafTools. At present it it uses flat arrays for performance reasons since instantiating objects can be expensive, depending on the vm. It also means that if in future iafTools is compiled to native methids in c there should be very little work to do. Also, dlink contains data from very different objects, so there would be a far bit of casting to do. But on balance, it may well be worth changing to object member references in the interests of readability. - need a few trials to see how performance goes, but is suspect it would be almost no different now ] Extended the argument list of synMod in iafTools. It used just to take the single value of G or P, now it gets G_max, and G_rest. Since these extra values aren't parametersed for Pprop, pass 1. as Pmax, and Pprop as P_rest; (maybe G_0 is unnecessary? could always start with G=G_rest?) in synMod, ipar are the results of getInts in the synModRule. add test for dpar[0] = tau_decay > 0 and only apply the decay if true. Otherwise, set xnew to xcur. (xcur is current value) Nothing else needs touching except near the end the line xnew = xnew * (1. + delta/xrest); is applied in the case of logarithmic modification. Now we want it to saturate at xmax, so we could take delta as the fraction of the way towards max achieved in one step, but then delta > 1 should be equivalent to delta = 1 which could be confusing since changing delta above 1 would not have any effect. Instead, map delta to f = -1 + 2/(1+ exp(-delta)) so as delta goes from -inf to +inf, f goes from -1 to 1. Then, for positive f, xnew moves a fraction f towards xmax; for negative f, xnew moves a fraction f towards 0; the test in ipar[1] = 1 (the logarithmic option in iafSynModRule is now effectively redundant: that is, physically all modifications should be logarithmic, and to get a linear effect one should just set the saturation value very high. The above changes should not stop an old model loading and running OK but the behaviour will not be identical because of the changed meanings of parameters. Proposals to check with Mike: 1) scrap explicit logarithmic option in iafSynModRule - make everything logaraitmic in effect. 2) scrap anything but waveform control of modification 3) move synaptic parameters into iafSynPars object, which contains a link to a waveform for their modification rule. 4) this would mean fewer parameters in iafLinkSC etc so can revert in iafNetworkEditor to single column mode. 0.89 Thu Mar 2 16:15:34 GMT 2000 Fixed synaptic modification bug in iafTools. The test for being the first postsynaptic spike to a presynaptic spike compared the pre->post time to 0 instead of to the last firing of the postsynaptic cell. Fixed array bounds bug in iafCalcResults 0.88 Tue Feb 29 19:02:12 GMT 2000 started making the examples directory. Real models coming soon... new layout for numerous web pages, inline applets eliminated in favour of javascript functions. much GUI documentation rewritten. Mouse button equivalents added for 1 and 2 button mice. m4 libraries reationalised to a single file. On loading a builtin model, if it is a recorded session, the instanceInfo for that session is shown otherwise if it contains appletConfigs, the first of these is used to set an initial view and its instanceInfo is shown. If loaded from a web page, this is not done. as it is assumed the page contains supporting documentation. Window closing events from the window manager are now caught and acted upon, including recording in sessions. Started testing under windows jdk1.2.2 and ie. (ie behaviour is crazy, and probably wont get fixed as there is a java plugin available for windows which works). Rewritten much of the non-class non-gui docs to reflect current status. CLASSINFO eliminated throughout in favour of first para of CLASSDOC range and color buttons in calcResults3Editor. 0.87 Wed Feb 16 18:27:58 GMT 2000 Now quits on last visible window being closed, as well as quit option. waveform editor sets range appropriate to current target, and adds components at hte prevailing scale. session recording now works. (and very differently from last time). a recordedSession object contains two string arrays, one with the model at the start of the recording just as in a save file, the other with subsequent actions. Widget identification is only performed when events have to be deliverd. manedObjectIO now copes with saving sessions, escaping quotes in strings with backslashes. For builtin models, saving such files to modelData.java for subsequent compilation necessitates even more backslashes: in bash, the following takes place: b="${a//\\\\n\\\\/\\\\n\\\\}" c="${b//\\\\\"/\\\\\"}" d="${c//\"/\\\"}" echo "\"${d}\"," > source file. The only sesion so far is chapter8/recipdemo.ccm Documentation build extracts text from the instanceInfo of the recorded session and links to a page with a loader applet button. resultsCanvas has options for black on white graphs. Many methods moved around - static to ccmbUtils, others to catacomb. editObject now doesn't recruit visible eidtors of a different type but makes a new one if none of the right type is available. 0.86 Wed Feb 9 18:29:55 GMT 2000 File IO problem fixed where large or small numbers get written as eg 1.234E-7 but the stream tokenizer doesn't recognise the E as part of the number. Nowe namedObjectIO checks tokens following all numbers for E+ or E-. Applet config uses the get/setSCDoubles and SCints in editors to restore window state information. Reframe on construction now in resultsCanvases, waiting for the first dataChange event. cluster applet now generates a dataChange event in any calc objects on construction to ensure models get run when loaded in applets (this is a netscape/jdk discrepancy which shouldnt be needed). reactionDiffusion updated to new reactionScheme format. Seems to work, but needs more testing. Added initial profile options in rsPool. x-log and y-log options in modelResultsPanels but not yet saved in getSCInts. modeldoc build fiddles window and applet sizes to cope with unnecessary margins. Compound applets are now always loaded in a new window (cf co-op bank applet) from a javscrip[t program in the header of a window which contains only the applet docs. 0.85 Wed Feb 2 19:21:11 GMT 2000 cleaned up and simplified most of the documentation building new makefiles, bash scripts in ./bin for everything that used to use yorick (!). Applet access streamlined to prevent unnecessary activity. Some documentaiton extended, but lots more needed. Eliminated classInfo in favour of first paragreaph of CLASSDOC comments. meshing algorithm almost complete for meshedDrawing. Still a few problems triangulating strange shapes, but refinement and smoothing works fine. Building model pages now fairly robust, and construction of internal documentation and model classes gretly simplified. 0.84 Tue Jan 25 17:10:57 GMT 2000 Changed order of synaptic update so modifications are made before the postsynaptic effect is calculated. New field in binaryControl to allow setting the block size. Minor bugs fixed in diffMeasure which overrode privateInit in namedObject. Documentation for iafSynModRule rewritten to accurately reflect code in iafTools. Slight progress in meshedDrawing. 0.83 warning - a lot has changed: things may be broken or behave in unexpected ways. major change in internal structure, separating AWT aware classes from the rest, in preparation for non-interactive operation. All windows that can appear extend vObjectEditor, with the exception of the applet preview panel. Documentation build much simplified into customGui and standardGui with their own makefiles. Load button eliminated, with the cluster applet performing all applet tasks, and not actually loading a catacomb object untill necessary. Catcomb itself new extends namedObject and what was the main window is now just the custom editor for objects of type catacomb. ** model documentation ommitted for now: build imcomplete. Most applet functionality moved to catacomb itself - hdBrowser class eliminated. Several new functions for interrogating catacomb objects to find objects by name or class. On line documentation browser uses this to probvide links to loaded instances in class documentation. Many new objects and editors to encapsulate state information - errorLog, infoMessage, helpTarget, et al, so these get saved with the current model and can be restored. This allows models to be saved so they load particular help pages on startup, or, partioculary instructions to accompany applets. appletConfig objects to store applet configuratiopn - no longer uses saved screenConfig, or vObjectEditors. 0.82 phaseDiffMeasure and its editor, for phase plane differences new object optimisation which contains this, a simple diff measure and a parameter dependence tool so far. Various problems fixed with saving and restoring object pointers from files. "copy as" in lists now works. If you want to make a new model based on an earlier one, using "copy as" instead of "new" will create an entirely new object with the same structure and values as the first. That is, data is copied rather than linked just as in saving and restoring a model. In fact, that is how it works - the original object is converted to a string representation which is parsed by the usual loader to make the new one. There is a new "use as default" option on list editors, and in node-and-link editors. This marks the current element as the default for future new instances. When an element is added its primitive fields are copied from the default, if set, but nothing else: if it contains objects or arrays which should be copied, use "copy as". On trial: when an element is added to a list which doesnt already contain a default element of that class, it automatically becomes the default for further instances until a different default is explicitly set. I don't see any problems with this, but it may have undesirable conseequences somewhere? The patterend stim options for iafNetworks is now connected in and appears to work. modelResultsViewers have been separated from modelExplorers - they now needn't know about each other. Viewers just wathch their own object for resultsChamge events, which should be of the various types "structure", "complete", "data", "update", etc and indicate how much needs updating. 0.81 Thu Dec 16 16:05:06 GMT 1999 synaptic modification options in iafNetworks patterend stim option in iafNetworks, using new binaryControl object and binaryControlEditor. Effectively a set of switches with on/off time histories. As yet, editing options are minimal, waiting to see what is useful. reaction schemes moved to the ccmbNet interface. Most names changed, fields documented, and rsCalc partially rewritten. ***RSDcalc not migrated - broken at present. Upi's models converted and saved as models/chapter2 ksCalc now has the pre-run relaxation time as a paramter, for setting the initial state equilibrium. new components labelledDrawing, meshedDrawing and their guis. Only partially complete, minimal editing, but sufficient to set up a diffusion space for later gridding. Documentation build simplified, using lists of target objects in the docs directory rather than deducing what needs documenting by grepping in the source. 0.80 bugs fixed in iafNetwork editor (getInts arguments had changed in ccmbNode but not subclasses), brief tutorial on current state of play. New basic catacomb component (there are three now) vObPointer allowing structured reference to any other vOb in the model, and vObPointer accepting dropped on components of appropriate type only. New components diffMeasure, multiDiffMeasure with coresponding interface components for single valued model-data comparison and plotting the diffMeasure against individual model parameters. hdBrowserPanel rewrite, getting rid of reflection, adding possibility of displaying individual fields, and allowing dragging of any component to other windows for dropping on vObPointers. *** Drag from multiple continuous list selections not yet implemented. 0.791 Thu Nov 25 16:06:09 GMT 1999 drag and drop of ABF waveform objects from clipboard to waveformEditor now imports the waveform. new options sstruct, lstruct (Strict and Loose) structuring to link points that probaboy ought to be linked to make a waveform easier to handle. dbgUtils class, for debugging utilities - just dumping arrays so far. mlDate extended to case that each line has its own timebase, new variable multipleTimeBase indictes whether this is so. overwritten privateInit in ksChannel corrected. ivLaw, ksCalc, ksTools modified to allow ivLaw permeability to multiple ions. 0.79 Wed Nov 24 19:29:42 GMT 1999 ksChannel - new type of allowed transition, multKsRate which has aponter to another transition and forward and reverse rate multipliers. new components: mlData, clipboad and mlDataEditor. mlData (multi line Data) objects can be saved from simple graph windows or read from files. They appear on the clipboard and can be dragged and dropped (pick up with a right click) onto other windows. Dropping on a graph window puts the data in the background. Other drop actions (eg converting to a waveform) will be added later. ABF (axon Binary Format) input. the import option on the clipboard imports abf files, splitting them into a waveform and the data. These are best "sparsified" with the mlData editor, and can then be dragged onto other windows for comparison / analysis. 0.78 Mon Nov 22 19:13:39 GMT 1999 cfNetwork completely moved to new scheme (ccmbNet) including calculation methods (cfCalc). waveform nodes (cfInput) may now be linked to nodes or links. In the latter case, they scale the weight of a link. Option inf cfNetworkEditor for showing nodes in their own colors, or the colors of the nodeType they belong to. Clicking on a node or link brings the nodeType or linkType it corresponds to into the type panels. Waveform editor modified to allow relization of proto points between each pair of real points. Notes added at head of documentaion page. 0.77 Thu Nov 18 19:03:10 GMT 1999 new objects ipCheckbox, ipButton which put their info text in the nearest info window. popLabel does this too. Waveform editor uses these with buttons documented and puts point positions in two rfSliders. New documentation on waveformEditor. ccmbNet had broken various parts of the automatic documentation make. Largely fixed, though old names are still used in docs in places so dont get linked. Catacomb error window and timestamped error log. Reporting only by list selections and checked only by ksNetCalc so far. 0.76 major name changes for kinetic scheme based models. ksNetEditor migrated to new ccmbNet format and shows details of coresponding cell and synapse types for each node. NB ksNetCalc has not migrated so is currently broken. artCell tutorial covers code so far for growing cells. fieldVisibility options: each object now has an array of ints betweeen 0 and 10 corresponding to its public field which are used in constructing the gui: they are compared with the variable fieldVisLevel in the clobal preferences and a control for a field is constructed if the corresponding int is lower than fieldVisLevel. The latter defaults to 5, and objects have default values such that everything is accessible. Where custom editors provide acces to fields, these default to being hidden in the generic interface. A new gui component, fieldTool accessible under the "util" menu on most windows allows setting of field visibility on an object by object basis. This is primarily intended for making cut-down demos for the web. Note that changing visibility (either through the global preferences or the fieldTool) does _not_ cause a dynamic update: it is only applied to new components. 0.74 12/November/99 New generic network structure for all node-and-link type structures, ccmbNet, with ccmbNetEditor to handle most of the interaction. iafNetwork and KSchannel migrated to new form. ccmbNet also does generic data extraction from components. Information bar added at the top of each window showing field information where available (String[] getFieldInfo()) and object info in custom editors. Bar belongs in voedPanel which all top panels should extend. New interface InfoProvider for dynamic content. elementary editors now listen for mouse events and request focus, exporting their info when gained. Kinetic scheme channels recast to use new form and with all rates internally stored in terms of forward and reverse rates at 0 membrane potential, instead of Vhalf. ***ecScNetwork calc haven't caught up. waveform objects have new output option as a double[] to conform with ccmbNet packing expectations. New object artCell for growth rules of neurons (Jaap van Pelt). Single cell growth implemented, still need multiple cells and analysis of their structures. graphDataCanvas now draws dendrograms (*** but "find" wont work yet). KStools contains new array comparison methods for buffering. Fixed bug in eigenvector routine in matrix class (still only mediocre approximation to evec). new partial set of models in models/guiDemo since almost all the old ones were broken with ccmbNet et al. TODO list extended considerably after neuroscience meeting in Miami. minor bug fixes in IAFcalc. Still many to go.... new make targets fdarc and fdunarc to archive/unpack the whole of catacomb on a floppy disk as a zip file. 0.71 8/October/99 Some source documentation caught up with 0.70 doccheck.i, and makefile doccheck target to highlight the most serious absences. 0.70 6/October/99 IAFcalc methods in IAFtools.java, in particulr makeNet for instantiatig a set of statistical properties in a real network. and runNet for running the thing. IAFcalcResults provides extended display of IAFcalc output - movie and single cell potential. colorTables for displaying results of IAFcalc, and branchedCell transforms. branchedCellEditor now reads swc files and operates in two modes: 1) fully editable (but not as versatile as cvapp), 2) point selection only. The first is for simple stylized cells and aimed at the passiveProp calculations, the second for more realistic ones and aimed at the moprhoelectrotonic transform calcs. makefile: make arc now archives a sufficient set of files for recreating the whole site. (tmp models in ccmb/src are not kept) default list editors are no longer provided where a custom editor exists - they can be acessed with the "show list" menuItem. CHANGELOG and TODO added to download page. preferences option under misc menu of main window. only the debugLevel is operational as yet. new site - muon.physiol.ucl.ac.uk previous machine loki.neuro.soton.ac.uk offline permanently. custom results display implemented via ...Results objets and custom editors (see, eg, IAFcalcResults). No other custom results display should be necessary. Incomplete default instantiation of several minor objects fixed for the doc scripts which use reflection. code format changing to andersl-java-font-lock defaults 0.68 changelog started "config" option added to graph displays, allowing one to set ranges by hand (TAB and space bar work for navigation under linux) also options for max points per line: - if data exceeds this only the first maxPoints are drawn maxRows in a table mouseRescaling - can be used to switch off all mouse interaction on graphs, (good for big plots that are slow to redraw) cfNetwork - smoothing in thresholds is now attached to to the linkType objects (*** why linkType, not nodeType?) and is governed by a single variable dA_smooth, which sets the range over which the threshold is smoothed. DA_smooth = 0 means no smoothing. - cfNetworkEditor now has an option for attaching a waveform object to a node. drag anorange box over the target node. Right button detaches it. Set the corresponding waveform on the bottom right. This requires using hte waveformEditor, which is a bit overthe top for this problem. (*** need simplified cut down waveform Editor). CFcalc - calc methods accomodate waveform inputs. new field dt_rec to set the recording interval. For long calculations, returning a point for every bogs down the results display. (*** CFcalc still uses numerical derivatives - move to analytic derivatives once it is settled). iafNEtwork - more bookkeeping - ready for calculation method itself colorTable objectand editor for color indexed displays. (unused as yet) arcana: customEditor components eliminated from most customEditors - replaced by modelSliderPanels which provide cleaner layout. (may be problems in some cases?) 0.67 online help, branchedCell object