Oh Most Grandiose and Majestic Emacs, please be in -*- outline -*- mode! * [BUG] Phylogenetic browsing appears to be broken. Fixed: 2002-10-27. Do 'ale demo-data/demo.gb demo-data/demo.phylo', then try to browse the tree. See how nothing works. For example, Mouse-1 on any organism gets: "wrong number of args to `select-range' request". * [BUG] Can't insert a sequence at the end of the alignment. As Jim points out, in an alignment of N sequences, there are N+1 places where you might want to put a new sequence. * [BUG] `gene-do-window-sync' call maybe fails silently? The `gene-do-window-sync' call at the end of `gene-process-args' is maybe failing silently in an error-protection wrapper? * [FEATURE] undo should notice search-match highlights and undo them too. Means we need to have a new form of undo record for those overlays. * [TASK] remove needless `confirm' tmp var able The `confirm' tmp var in the `let' in gene-io-save-sequences-as is pointless; just put the confirmation code in the body of the let. * [BUG] Reverse Display doesn't work *quite* as advertised. Try reversing GDE colors to see what I mean. * [HUH?] flipcase ops can be undone by calling flipcase again. This is so cute it's probably worth going back and changing them. * [BUG] save atomically Jim's point about atomicity in saving: we should write to the tmp file and then mv it, not mv the real file and then write to it, restoring it only if there's an error. * [HUH?] (gene-menu-popup-cb-all-remove-menu): ought to display clipboard contents somehow... * [TASK] we can use `intern-soft' and `unintern' now When 19.29 comes out, we can use `intern-soft' and `unintern' to determine and set whether sequences are present in the alignment or not. See especially how we have to t-prop search to set the tmp var `already-here' in gene-io.el:`gene-setup-plists'. But note that Emacs 21 also has a hash-table type. * [BUG] online manual loses place if you hide it and later come back Wouldn't it be nice if the online manual preserved your place when you hid it? Right now, means you'll jump back to the Top node if you look at the manual again. * [TASK] decide how to record format facts We don't have a variable `gene-io-current-source-format' right now, because the code seems to assume that it can deduce formats. However, note that `gene-io-set-source-file' func *takes* a format arg. Maybe we should decide whether we want to always deduce the format, or record it when we set the source file. * [BUG] bug from Will Fischer, apparently hard to reproduce From: wfischer@walrus.bio.indiana.edu (Will Fischer) To: guppy-bug@cyclic.com Date: Fri, 17 Mar 1995 13:44:28 -0500 Guppy version: 0.1.120 on walrus Okay, a real bug this time -- after I had an allignment open, (~20 sequences, most of them ~20 nt long, 3 of them ~700 nt) I read in a new sequence, then saved-all-to-one-file, and the new sequence got broken up into 2 sequences (each with the same name) of 480 nt each (the second one was padded with ~s in the genbank output file (the input file in this case had been a genbank-format file created by GDE). This also happened earlier, under slightly different circumstances that I unfortunately cannot recall in detail -- but I think that in both cases, the sequences that were affected were selected at the time that the file was saved -- I'll check this out now. [ Note: unable to duplicate. -Karl ] * [HUH?] complementifying assumes RNA (i.e.: "u") not DNA (i.e.: "t"). ? * [TASK] use `gene-organism-seq-data' Would be nice if everyone used `gene-organism-seq-data', now that it exists... * [HUH?] Hmmm. Inserting chars in or before a line of a selection doesn't behave the same way as sliding them, because the former uses `insert-char', while the latter uses `gene-shift-region-leave-properties'. Is this desireable? Maybe; think about it. * [HUH?]The watch doesnt go away after 'insert sequences' and maybe other operations (must move pointer out into background to see it). * [TASK] File I/O could be sped up a lot, now that we have simplified its semantics. For example, there's no need to gather up lists of sequences (gene-io-compile-sequence-files) anymore, because all the sequences go to the same file. Just write ids, seqs, and anns to temp files and call gene-io-coerce-from-tabl, and you're essentially done. Annotations will need to be ordered correctly, though. * [BUG] clear menu bar only in gene buffers, not in all of Emacs. * [TASK] The Accumulated Error code should be rethought. Why keep two data structures (list and buffer), when one (buffer) is sufficient to hold all the errors messages? Some errors generate real lisp errors, some are problems that won't signal an error. Find some more examples, generalize. Write a condition-case clone that will handle certain errors in a custom way, and simply pass on (i.e.: signal) others. The important thing is that those errors which need to be fatal remain fatal, and those which don't need to be are simply displayed to the user in some easily-noticeable way. Right now, the "*Non-Fatal Errors*" frame that pops up on startup is usually covered by the alignment frame which pops up after it! Timing is kinda crucial here. * [FEATURE] phylo browser feature request from Niels From: Niels Larsen To: kfogel@floss.life.uiuc.edu Date: Thu, 2 Mar 1995 14:23:42 -0600 should the phylo-browser help be accessible in the phylo-browser? think so. Can info be asked to jumb to the place in the manual with browser description? * (Niels) Question: With gdbm file and everything selected in phylo browser, it says 'Placing data...' for maybe 40-80 seconds. Is that expected? what happens during that time? * (Niels) Forgot to mention, I think there should be more keyboard equivalents listed in menus, like for bringing up other frames etc * need keyboard equivalents to the items in the views and searches menus, maybe more places. This is so its easy to rebind to a one-press function key or something. * (Niels) Change of fonts in the settings menu makes Number, Group, etc -frame vary wildly in size. (Another question is, should a font change in one frame affect other frames?). A friend of mine wanted better control over fonts and sizes, and I told him that C-Mouse-3 still works, which lists all fonts available; and changing fonts that way only affects current frame. Comments? * Should subst-char be case-insensitive? Talk to Niels. * `gene-monitor-position', a function for .ale files which takes &rest IDs (strings) and monitors them by default when pos-mon is on. * posmon buffer should grow & shrink according to # of sequences. * Why does gene-seq-display-column-stats-internal need the length passed to it? It can determine that for itself. * Make a goto-same-char-in-this-column command. * Some Phylo Browser stuff from Niels: Wouldnt it be reasonable to put up a wrist-watch symbol where predictably slow things may happen? When this works correctly, and is documented, then we have 0.1 and it should be given to 5-10 people for use. MS-Word has got a lot better since I saw it last: See v 6.0 for PC which is a bit ahead of latest Mac version (5.1). Try the outline view, very convenient (notice the 1,2,3,4,5.. buttons, which set the level you want to look at). I especially like their way of moving things around, it might also inspire you, what that time comes (we once agreed there should be some simple drag/drop interface, so curator can change p-list from editor). Convenience will save us $: Short learning how to use, i.e. newly hired people quickly get productive. Question: At our last meeting I think you mentioned that Emacs has mechanism for displaying only certain lines. Were you thinking of the ^J --> ^M substitution, or? How well does it work? is this a feasible way to get stronger connection between phylo frame and alignment? (so show and hide groups content affects alignment, say) I dont think it is really important to have it that way, it seems possible to work fine without. Just curious. Pooo - quite some writing again.. bye. * if recording undo's takes major proportions of time during common editing, then I would propose to have a settings option to switch it off (assuming thats not hard to do). * In gdbm storage, couldnt there be a .ale which stores all settings and things one would like to preserve between sessions? groups should be re-created at startup, as well as selections of organisms made by the phylo-browser. Jim, couldnt there be a panel (maybe in the style of Karls group list) where the phylo index frame (or phylo browser, what to call it) presents choices between save sequence sets to bring into the editor? One could then build (I mean RDP could pre-build and release) interesting subsets of sequences. If gdbm on command line, pygup would ignore .fish and look to gdbm instead (?) Keep thinking. * Start up ale with no arguments. Type '{'. The error message complains that it can't get locking info --- this is counter-intuitive. There are many commands that require a sequence to operate on, and require a certain locking state, so it would be cool to write one helper function that: 1) makes sure the cursor is on a sequence, not at the end of the buffer or in an empty buffer, else displays a comprehensible error message 2) makes sure that the locking level is appropriate, else displays a comprehensible error message This helper function could then be called upon entry to every command that needs it. [ Alternatively, the existing locking code could just check for unusual circumstances like an empty buffer. This would be cheap: the check wouldn't happen unless we were about to error because of lock protection anyway. -K ] * Is cut/paste slower than it has to be? Find out, see if significant speedups are possible. [ Cut one of the bottom sequences, then paste it. Veery slow, I suspect something isnt right. Native Kill/yank of single 3000 long lines in a buffer of 2600 lines has no visible delay, in no part of buffer. (Minibuffer messages have backslashitis during paste). ] [ It certainly is slow -- even more so now that it has to record undo data separately. Will profile this after release. -Karl ] * Is there any sel-undo recording code that's still recording with markers instead of numbers? If so, correct it individually, or if the problem is large enough, rewrite some of the basic recording code. Particularly check out gene-sel-drag-selection-or-base-group, gene-sel-drag-base-group. A basic speed-up in the selection code might be: if one already has done the text property searching (for, say, undo recording purposes), then it's a waste to do it again for the purpose of resetting the selection's segment list. There should be a way to use the previously obtained information in resetting the segment list... sort of a deep copy-sequence that changes some things to markers... * If one has a selection line reaching to the end of the alignment, say: AAAAAAAAAAAARGH...............~~~~~~~~~ and you drag it to the end and then back somewhere else, the ~'s will be replaced with .'s. Even when you undo the drag, the new .'s don't get undone. Probably the solution to this is to make dragging not bulldoze midstream gap-character changes, rather than changing any undo code... or is that possible? * gene-seq-self-insert-char: the current solution to the eol insertion problem is not satisfactory. The problem: inserting chars at eol failed to push the end-marker (i.e.: (nth 1 (gene-get-here-property 'gene-seq-posn))) forward. It would be nice just to write gene-insert-char-before-markers (or even better, have that in the dist!), but then insertions at *bol* would screw up the bol marker. The current solution (resetting the `gene-seq-posn' property every time) is too slow and wastful allocation-wise. Think about this some more. One possibility is to use set-marker-position instead of creating a whole new marker each time. * Mail bug report frame (this one): Shouldnt the menubar be Hide__Send___________ rather than Headers___Mail_____ ? [ Well, I think it's okay the way it is. If one pulls down the mail menu, then it's obvious what to do. -Karl ] Need for status bar and minibuffer? [ I think so. There's no particular reason to hide the fact that this is Emacs; perhaps some people will even be able to take advantage of it. Minibuffer is useful to make this behave like the Emacs they're used to, should they choose to use it that way. The difference between this and the rest of the editor is that here we're using a native Emacs mode, so we should try to be consistent with Emacs, not Ale, I think. -Karl ] * `gene-get-here-source' needs to do a better job of making up a source. * `gene-get-here-sym' still does a little more than it needs to. After getting this version stable, go back and reorganize it. It is even perhaps buggy, because it assumes (in the second clause of the `or') that object is a buffer, and that pos is non-nil. * Big Drag group select needs to deal with it if drag is ended in the sequence window. If this doesn't make sense to you, ask Karl what he meant when he wrote that. :-) Dragging in id-buffer into minibuffer, and back up, offsets buffers and causes recentering. * [BUG] Chuck Delwiche writes: I just launched guppy with a phylip format file, then got up to do something else. When I came back I discovered the "is this file going to be used with fastDNAml?" dialog box on my screen. I tried to click 'yes' but got no response. I eventually killed the process and restarted it, this time waiting to answer the question rather than letting it sit around for 10 minutes. Second time it worked normally. * [FEATURES] Sogin's thoughts about Groups: I have sent more comments about grouping to Niels. I am very glad to learn that you are receptive to suggestions-all too often developers are defensive. I actually like the way grouping is defined and listed in gde-Dragging through taxa names but preventing overlap is a good way to go unless one wants to explicitly define an overlap for example using a meta key to link to groups or parts of two groups into a third group. The best way to select groups in my opinion is to have the cursor define the selected group unless there is an overlap between two groups which in effect defines a third group. Under that circumstance, the selection of that overlapping group would be implicit e.g. once again a meta or control key. The most powerful aspect of your editor include the group drag functions which I do like. Finally, if the default for operating on a group is define by the line that the cursor is one and its group relatives, there should be the option to hold down a key or toggle a key which allows that sequence or block of sequences if one is selected to be manipulated without effecting others in the group. In other words it is often desireable to change alignments within a group without changing the definetiion of the group. -*- This is what he sent to Niels: -*- I have spent a bit more time with the editor-My biggest complaint at the moment is when working with groups and the requirement to point or click on the abbreviations to select entire group. This is just to slow a mechanism. Also defining twelve groups took much too long. I want to drag and form groups instantly. Renaming them and dealing with group overlaps is a pain. -*- Niels' response: -*- I wish I was sitting next to you, so I knew exactly .. we may well redesign groups, but let me first make sure you know the current functionality. You can define a group by dragging (left-mouse) across the short-ID's you wish to include. If groups are not overlapping, then a left-mouse click on a given 'dimmed' short-ID (to the left of screen) makes the group active, to which that short-ID belongs. If they overlap, then I usually click on the group name in the group frame - it then activates that group and scrolls to nearest representative. To de-select sequences from a given group, you can drag too. Assuming you know this, we could perhaps discuss over the phone so I learn more about the trouble. We are certainly interested in making it better for you. I would like if you CC Karl (kfogel@floss.life.uiuc.edu) with comments to the editor. -Niels