To Do: issues, problems and bugs
(updated February 2001)
(This list is not entirely written for public consumption)
Issues and problems in core libraries and basic modules
General
- Threading, synchronization & locking -- Mesquite is not designed around multiple threads and reentrancy in its analytical routines. This may not be a big concern, given that the threads on which commands are executed are queued, so that only one thing can occur at a time (with the exception of painting). Painting is intended to use isolated routines (i.e. not involving substantive results).
- Exception handling and throwing -- currently, Mesquite does not have its own exceptions. If a calculation fails, it returns instead "unassigned" values and may display an alert dialog or output a warning to the console. This may be the best behavior in many cases, since it will be common enough that calculations are incompatible with some situation (e.g. polytomies) that throwing exceptions may become burdensome. On the other hand, for other purposes exception handling could be important. (see modules that crash or hang)
- Modules that crash or hang -- is there a way for employers to discover the crash and get out of it gracefully? would seem to require (a) module to each have their own threads, and employers to query occasionally to see if thread is in trouble or (b) all module calls should throw exception if any problem, that if caught would cause employee to be fired
- Memory management: There do seem to be memory leaks as files are opened and closed. Memory overflows not caught well. Memory leaks etc. need to be sought using some of the tools for that purpose.
- Messages and errors to user are under the MesquiteMessage class, or via the alert method of modules, or via System.out.println directly. Need to formulate consistent rules when each message/warning is used (as some present dialog boxes, others just to console)
- Preferences/Settings: need to devise user interface (e.g. common place where settings dlog can be evoked for any module? -- possibly (1) any menu item chosen with shift key held down doesn't send command to Commandable, but stores command in Commandable's preference list to be sent to it at instantiation. dialog could be presented to user confirming that preference is to be stored; or (2) each module can have preference panel, and a unified window with chosable preference panels is made
- make preferences be passed automatically as script to module (i.e as commands)
- Authors and versions: perhaps all library classes, not just modules, should implement a special interface for indicating version etc. (since classes might be upgraded separately)
- String getVersion()
- String getAuthor()
- Have exceptions passed through to log (via printstream???)
- make uniform method names for cleanUp, turnOff, etc. for various objects (e.g., TreeDecorator, ???)
- Have ID's of objects across files? identity of taxa and other blocks in separate files:-- have id # written into taxa block etc. and repeat save in all files depending on it; file reading will see that it doesn't need to reread taxa block by seeing ID same as one already saved
Strings & parsing
- Tokens and parsing in commands: currently there is much inconsistency in use of detokenize vs. unquote and tokenize vs. quote especially in snapshotting and interpretting commands. Quote and unquote should be replaced by new versions of tokenize and detokenize that handle both spaces and quots.
- Strings: there are some places where Strings are used too much. use StringBuffer where possible
- Untitled numbering system for ListableVectors so that Taxa, characters, trees etc. can have names Untitled1 Untitled2, etc. (i.e. automaticallys finds new unique Untitled name
- RENAME: NexusUtil or NexusParser instead of ParseUtil
- Parse utilities started as all static, but now that there is a Parser, should more of the old use of static methods (which force more String instantiations) be changed to the new Parser:?
Modules
- suggested new methods:
- MesquiteModule.getPackage -- name of package
- MesquiteModule.getPackageURL -- package URL?
- MesquiteModule.getWebReferenceURL -- URL?
- getAcknowledgments()
- getNumberOfEmployees
- getNumberOfEmployeesWithName
- getEmployee(String name, int index)
- review "replaceEmployee" methods to see that they work properly
- warning if employeeQuit called and not overriden
- place outputInvalid where needed
- parametersChanged/employeeParametersChanged -- pass integer or object as code to what happened
- employeeCalculationCancelled -- pass up through employer hierarchy like parametersChanged. Can be used to decide if calculation is shut down.
Projects and files
- User interface and rules for saving files: When a single file is open, the behavior is straightforward. But when several linked (not included) files are open at once, there are various questions: When "Save" is chosen, do all of the files get saved, or only one? Where does the MesquiteBlock get written -- in the home file of the project, or does each file receive a MesquiteBlock that concerns the objects wiithin that file? The problem with the latter suggestion is that a snapshot may refer to objects in different files. It may be that the only sensible way is for Save to have only one choice, and that choice saves the home file AND all linked files together, with the only automatically generated Mesquite block belonging to the home file, and this block would contain instructions to link all the other files. (Currently one can save linked files separately; linkages are saved in the home file).
- have project listeners that listen for changes in file element names, deletion, etc.; otherwise, how does the column in the data set list showing taxa block know that a particular taxa block has changed its name???
- SaveAs needs to be enabled when files linked
- Need a good project management window to show what files linked, what sets of taxa and data matrices are available
- isFileOpen(pathname)
- BUG: with 02-example.nex, add second set of taxa, save: data files change order!
- NEXUS file reading is limited -- no transpose
Logging, stamping & Documentation
- log window not window of any module -- make module for logging!
- Documentation in source code:
- fill in getParameters, getAuthors, getVersion; getCitation methods of modules
- javadoc documentation of classes incomplete
- notes for users of particular systems
- modules.html should have anchors at dutyClasses given so other manuals can jump to modules performing a duty
- possibly distinguish getProgramCitation from getMethodCitation
- showManual() (final method of Modules; assumes manual is manual.html in module directory; this can link to website)
- review whether defineMenus is a needed method or whether an open ended getDocumentationString method might be added to MesquiteModule
Numbers
- MesquiteNumber etc add, multiply, --protect for overflow
- MesquiteNumber should allow mean, variance, SE, min, max? (e.g., for use by Map Continuous, Fels. Contrasts)
- Numbers, NumberArrays should perhaps have explanation strings built in to get rid of need for MesquiteStrings passed into calculateNumber routines????
Taxa
- excluded taxa as specs set tied to Taxa objects?
- PARTITION_CHANGED listen event
- BUG: merge taxa sets: tree window changes to other list number
Trees
- nodelet ring mimicking (test with Constellation)
- locking of clades, perhaps to allow taxa designated as outgroup; see PAUP communication
- allow saving/reading of UTREEs as unrooted
- BUG: when Tree Block stored, should change submenu for Tree List
- BUG: Reticulate trees not saved to file properly
- Tree source ideas:
- jackknifing by taxon or clade (could also be taxon source)
- all possible trees
- random resolutions of unresolved tree
- MCMC trees (Larget and Simon, Bambe)
- constrained (e.g. to have certain clades) markovian speciation (cf. Martins)
- randomly varying branch lengths (within constraints) around single starting tree
- Tree Block source ideas
- tree blocks from series of files (pointed from a single text file)
- trees obtained from varying parameters of search
- gamma in MLE
- stepmatrix weights?
- bootstrap from PAUP (requests PAUP to do it; doesn't need to do anything on Mesquite end)
- population genetics simulators with varying parameters:
- simulate under different population structures
- NumbersForNodes ideas:
- (for species tree containing gene tree): depth to *first* coalescence within containing tree across node
Tree Window
- branch move : reform branch lengths handling. pay attention to where on branch dropped and place lengths proportionally
- Leaves and Holiday to Ornamental package
- ideas for modules:
- tree window module to touch on branch and query all trees in tree source if node exists
- tree window tool to invent taxa!!! (build taxa in tree window, not just in list window or data editor)
- tool to select taxa in clade (selects *taxa* in clade, not nodes)
- magic wand tool for tree window makes drop down menu like Branch Info; selecting item will be like asking to select all branches whose value in that extra are equal to, greater than, or less than (according to current criteria).
Tree Drawing
- Plot Tree:
- PlotTree need to show highlights
- plot tree invert polarity of axes
- plot tree: if external nodes only, shouldn't trace internal
- SquareTree need to show highlights
- text output as consistent alternative (writeOnTree)
- Balls & Sticks spot size (optionally) should vary with taxonspacing unless set
- DrawTree ideas:
- Felsenstein's unrooted trees
- Eurogram
Characters
- CharacterData / CharacterDistribution reform???? Should CharacterData be passed directly instead of MCharacterDistrubiton's??? or should we go to a purer interface style as with trees
- excluded characters -- many calculations fail to pay attention to exclusion
- weighting of characters not supported
- Asssociate with each character a number that amounts to number of replicates of that character pattern. would be used as additional weight in calculations. Would save time in likelihood calcuations (pack matrix into patterns first) and bootstrap.
- Codon positions not supported
- PARTITION_CHANGED listen event
- pass getCharacterDistribution a CharacterDistribution to save instantiations
- BUG: missing data/inapplicable characters -- not all calculations work, esp. likelihood
- BUG: need methods in CharacterData to say if character state is legal for assignment in general, and to particular character & taxon
- BUG: all binary distributions: characters don't have names
- BUG: in ContinuousDistribution, CategoricalDistribution and such, need to protect if request for taxon or character is out of bounds
- CharMatrixSource ideas:
- jackknife
- random character states
- simulate with tree simulation:
- population genetics simulators:
- simulate with recombination, within population
- simulate under different population structures (gene tree location, depths simulated & mutation added)
- speciation: characters affect speciation itself
- possibly have special subclasses of matrix sources: CharacterRandomization (reshuffling, jackknife, bootstrap, simulating) and CharacterTransformation (logTransform of conts)
- BUG: string to state with e and - in ContinuousState
- have some special number (checksum?) associated with a data matrix such that it is likely to change if the data are changed, and report it somewhere prominently to user. This would help user know if same data version was used, and also if file reading/writing is working.
- New Data types
- FrequencyData -- have Likelihood pass back FrequencyCharDistribution or some such
- DistanceData
- Geographic locality data (special version of ContinuousData)
- Meristic data -- fix entry of ? and -
- Developmental trajectories
- Stratigraphic data (special version of ContinuousData)
Reconstructions
- need dutyclass NumberForCharacterHistory and other such to report statistics for reconstructions (e.g., number of changes of particular sorts; likelihood of reconstruction; etc.)
- need ReconstructionContext??
- TraceCharacterAllTrees -- shows, for any nodes in more than 50% of trees in source, what states are found there over all the trees (cf. Lutzoni et al)
SpecsSets
- have SpecsSet.readList and writeList to handle char set, char model set, etc. in a single place instead of in the managers!
Parsimony
- polytomies
- missing data, inapplicable data
- BUG: parsimony unordered - polytomy - ancestor should show equiv, shows one state; missing descendant of poly should show equiv, shows one state (e.g. look at Bembidion data set, polytomy, unord and ord)
- BUG: linear and squared with missing data, polytomies
Simulations
- simultaneous character/tree simulations
Character Data Editor
- data assistant: touch on cell; if toggle on, menu drops down with states to choose
- UNDO
- window to set state symbols
- tab delimited text output
- means and variances as NumberForCharacter's
- get info in Data menu or in Text view -- #character, taxa, type of data, specs sets
- BUG:paste matrix requiring taxa change into simple example file with char traced; causes error messages
- BUG: move characters! (if move beyond end, arrayIndexOutofbounds exception)
Character models
- creation of new model from script
- unassigned instead of infinity in step matrices
Commands & Scripting & Buttons & tools
- touch out of table, deselect
- fast to end in Miniscroll if not indefinite
- Stored Characters etc. setDataMatrix commands use name instead of number if unique
- likewise for setTaxa
List Windows
- delete tree block
- charset shouldn't have store /replace
- charset selecting!!!
- BUG: command select in list window flashes but doesn't hold
- BUG: delete character matrix; menus not updated
- package lists
- BUG: change taxa name or character data name in list; should update menus
Display Units
- in PanelsAtNodes that have setOffsetAll & for individual
Printing
- charts clip problem on MacOS 8/9
Charts
- statistics on charts, including assistant (e.g. for curve fitters) and number calculators (e.g., for sig tests)
- BUG: histogram - first switch to moving window, if leave at 5/1, doesn't do correctly (switcht o 6/1 then back to 5/1)
- if chart is not live, don't save snapshot for it
- live/not live chart system with visible toggle
- charts in paup macro should each have appropriate messages
- move charts together in folder (package charts)
Tables
- table field should be separate panel from matrixpanel to allow separate background colors
- BUG: if attempt to paste and last line doesn't have carriage return, not counted as right size
- allow change of row names size in table
Windows
- log window disappears from Windows menu after closed (is it disposed???)
- show manual in info bar should go to info page (autogenerated)
- Menu refresh item in help menu
OS-specific problems
- matrices chart change tree, updates twice in Win95
- scroll in legends doesn't update fully - ???e in Win95
- SOLARIS: editable text height not enough
- SOLARIS: window positions and heights overridden by some windows managers
- LINUX -- no reg on linux, cancel, crash (Korbinian)
Specific packages and modules
Associations
- what association??? - user choice when more than one
Coalescence
- SUM over genes of deep coalescence cost
- deep coalescence cost at a branch
- contained coalescence has problems if branch length is zero at root
Rhetenor
- landmark to distance-between-landmark characters
- example file: linear vs. square
- example file: tree search on ordination
- BUG: warning if polytomies in ordination
DRAWHierarchy
- BUG: screwed up -resizing in Paint is the culprint
- BUG: -- employee panel not update when trace turned off
File comment
- BUG: second request to open comment (e.g. second file omment in file, second request in Mesquite block) should append comment to existing window & text (not open another, leaving first stranded)
Character Values Chart
- if more than one taxa block, query which one first
- if value calculated has constraints (e.g., continuous characters only?), then pass constraints to character source as condition?
Tree context
- if more than one context, have menu to allow switches! (check each tree to see that compatible taxa!)
Likelihood
- have toggle as to whether reported as -ln L or L
Circle Tree
- BUG: expanded tree screwed up for circular tree; hard to reExpand (magnifier menu drop down that includes show whole tree)
Node Locs Oval
- allow centering on midpoint
- stick version instead of constellation
MirrorTreeWindow
- allow treeDisplayAssistantD in MirrorTreeWindow
PAUP Interaction
- send to paup - have one version that by default uses stored matrix at front (i.e., from Data Window!)
- PAUPSearchScripter duty class that composes search and among which user can choose
- basic parsimony search
- likelihood: estimate parameters search
- have designated outgroup if one branch selected in tree window for sending to PAUP?
- PAUP should quit after simple Trees from PAUP or after Tree Blocks From PAUP
Projector
- link pictures to taxa blcok, characters, etc.
Scattergram
- if colors of scattergram no longer used e.g. because character type not available, then don't have legend with boxes
- resolve colorItems vs. numbertaskZ in itemsBiplot
- if matrix available before showcolors, send for compatibility with employee
© W. Maddison & D. Maddison 1999-2001