DNAScript: an easy-to-edit open source genetics utility
For a present version under development, see DNAScriptc.html.
The way I've tried designing this is "page-oriented": global variables are implemented as fields within HTML elements that are literally visible on the page. The eventual design should involve having a separate page or tab for each group of functions depending on a sequence.
Support for early-version browsers, especially for early Internet Explorer, has not been tested and is likely quite spotty. Though I've tried to rely on more established HTML features that work in "all browsers" and are not HTML5 or CSS3 per se, I'm not using JQuery nor do I want to bulk up the script with tests and alternate notations to support early IE browsers. My honest feeling is that the early IEs are so insecure that the only thing you should be doing with, say, IE6 if you are running it is using it to download another browser, and my feeling about 7 and 8 isn't that much better.
- Cleanup sequence
- Reverse complement
- Randomize sequence for control plots
- Accepts degenerate sequence
- Offers unusual genetic codes including selenocysteine
- Accepts degenerate sequence (Minor todo: right now it only evaluates it 'optimistically', scoring a full hit if any match is possible)
- Supplements the linear graph with three color channels
- Asynchronous processing with timeouts to support long sequences
- Magnification feature (mildly useful) and resolution (not particularly necessary) supported
- Also a function to assess GC periodicity (experimental idea, badly done, needs conceptual reevaluation)
Dot plot DNA
- Accepts degenerate sequence
- Scoring matrix allows specific transitions and transversions to be scored differently
- Accepts special sequence-dependent rules such as a lower score for variation at CpG
- Linked to an extremely simple JSONP server (returns function "callback" with one parameter "data" containing whatever the parameters supplied will pull out of EFetch) at msserfas.appspot.com to support citing sequences by GI number. (Minor todo: distinguish nucleotide from protein GI's and throw an error if the GI is the wrong type) Note the server is set ONLY to access EFetch to head off mischief.
- Cosmetic redesign into five sections for navigation (these pseudo-frames just use display:none and a little CSS markup)
- Nucleotide composition utility. Creates a plot of one parameter (such as "s" for G+C content, or "cg" for CpG islands) and colors it according to three additional rules for color channels. (Minor todo: support Booleans)
- Fixed bad link in save URL.
- Converted some additional output functions to full DOM.
- Split the script into more pages with popups to create new windows for each function.
- Create an undo file (perhaps shown as a div or window) with a new save link after each function.
- Do more work on internal object-orientation (treatment of "sequence" has been improved, but there is still a lot of ad hoc code).
- Allow entry of multinucleotide rules. Preprocess sequence like 1:"CNNNG" to "1NNNG" , then allow a rule to be set for 1->A, A->1 etc.
- Use two-bp rules for RNAfold to create a "poor man's RNAfold" dot plot.
- Dot plots for proteins
- "tdotplotx" style: nucleotide dot plots using all possible translations
- Combine nucleotide and "tdotplotx" using separate color channels to visualize Ka/Ks ratios.
- Implement at least the Wikipedia list of enzymes and search for them (preprocess special rules as for dot blots, perhaps). Later NEB... (probably need to use urllib2 just to crawl all that content - should be sure about what might be copyrightable by NEB)
- Devise a display mechanism for cut fragments and vectors (may require HTML5 dependency).
Alignments, MP/ML (feasibility assessment)
- ProbCons offers a state-of-the-art alignment, but involves a substantial amount of data.