Giter VIP home page Giter VIP logo

genomalysis's People

Contributors

hyperfitz avatar wolfgangmeyers avatar

Watchers

 avatar  avatar  avatar  avatar

genomalysis's Issues

Save sets of filter configurations

After using this tool again for the first time in years, I was surprised to find out that there is no way to save the configuration for a set of protein sequence filters - which means that once the program is shut down, configurations need to be set up from scratch each time. Should be easy enough to save and restore the configurations.

SignalP vs. PrediSi

89 human defensin precursors:

SignalP: 88 pass the filter; 98.88% pass

PrediSi: 76 pass the filter; 85.39% pass

User interface redesign

Before porting the user interface to SWT, a redesign needs to take place - the current user interface is more of a bare-bones necessity kind, and could use a lot of improvements in terms of how easy and intuitive it is to use.

MultiCLUSTAL analysis tool

It would be really useful if one could align all the sequences in an entire fasta file to a specific sequence using CLUSTAL and have all of the alignments displayed simultaneously in the output. It would also be very handy to be able to align all the sequences in a fasta file to more than one sequence, separately, and have all the alignments displayed at once.

Clustal filter configuration improvements

Adding this on behalf of @hyperfitz :

Would be nice to have the clustal filter parameters be inclusive or exclusive; for example, if I say I want at least 75% weak groups, then I could make that 75% including strong groups and identities as well or excluding either or both of the other two. Also, it would be nice to be able to specify hard numbers rather then percentages or both: 20 identities and 75% identities; 20 or 75%; etc.

Sequence count in view sequences tab

When you open a fasta file in the view sequences tab, the field that shows the sequence id lists the id's and paginates after some number of sequences. Down at the bottom of the window it shows which page you are on and the number of pages. It would be very useful if it also displayed the number of sequences.

Net charge calculator

Would be very useful to have a net charge calculator for the linear sequences. This would simply look at the amino acid sequence and sum up the positive and negative charges. It would then tell you sum. This could be a filter tool and an analysis tool.

ClustalFilterConfig

New design is exactly the kind of thing I was suggesting. Additionally, and/or options would be good.

For example: "combination of weak 'and/or' strong 'and/or' identity"; "percent 'and/or' total count"; "less than 'or' equal to 'or' greater than."

Color coded sequences

It would be very useful to have color coded amino acid sequences such that positively charged amino acids were one color, say red, negatively charged amino acids were another color, say blue, polar (hydrophilic) amino acids were a third color, say turquoise, and non-polar (hydrophobic) amino acids were a fourth color, probably black, but maybe an actual color.

Python filters

Ability to leverage Jython to plug in scripts that are able to filter protein sequences. This would allow easy addition of new filters without needing to compile any code - may need to add a simple way to add libraries to the classpath in case the jython scripts require additional libraries to run. This would open up the possibility of easily integrating any number of tools into Genomalysis without the need for a compiler.

CLUSTAL output misaligned

The CLUSTAL analysis tool produces results that are not aligned properly in the output display. That is, the two sequences and the symbols designating conservation of groups are not oriented properly in the display that is produced by the tool.

AutoBLAST

It would be extremely useful to have a function where Genomalysis would take all sequences in a loaded fasta file and BLAST them on the NCBI website; when the blast was complete for all sequences, Genomalysis would then return the BLAST results to the user. Ideally, the user could specify criteria for the returned results, for example, the top ten matches or all matches that have a particular confidence value. It would be a requirement of such a function that it be able to specify the type of BLAST to be executed and which databases/genomes to perform the blast against.

A web parsing approach may be the way to do all of this. It is possible to set up a local BLAST database but I am not sure that is worth the work.

Compare results tool

Would be very useful to have a simple tool to compare two fasta files: how much the same and how much different they are. In the most basic implementation it would take file A, compare it to file B and result with X number of sequences the same and Y number of sequences not represented.

Multiple workers for sequence filtering, dynamic worker allocation

Certain filters may represent a bottleneck in filtering fasta files - it might be good to refactor the filtering process to optionally use multiple processor cores for certain filters. The most user-friendly approach to this would probably be to benchmark the filters during the first chunk of the file and adjust the number of threads per filter as needed to eliminate bottlenecks where possible.

Port of the TMAP algorithm to java

The TMAP algorithm used for prediction of transmembrane segments of proteins currently uses a separately compiled executable (implemented in C). This is ok, but having a pure java implementation might be more efficient, avoiding the need to start up a new process for each protein sequence.

Clustal filter not working

When clustalo filter attempts to execute genomalysis throws an error "unexpected error when initializing ClustalWFilter_2"

The shell output reads:

Aug 16, 2014 7:14:02 PM org.genomalysis.ui.FilterDialog btnStartActionPerformed
SEVERE: null
org.genomalysis.proteintools.InitializationException
at org.genomalysis.control.FilterControl.start(FilterControl.java:78)
at org.genomalysis.ui.FilterDialog.btnStartActionPerformed(FilterDialog.java:269)
at org.genomalysis.ui.FilterDialog.access$1100(FilterDialog.java:35)
at org.genomalysis.ui.FilterDialog$5.actionPerformed(FilterDialog.java:197)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$200(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.WaitDispatchSupport$2.run(Unknown Source)
at java.awt.WaitDispatchSupport$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.WaitDispatchSupport.enter(Unknown Source)
at java.awt.Dialog.show(Unknown Source)
at java.awt.Component.show(Unknown Source)
at java.awt.Component.setVisible(Unknown Source)
at java.awt.Window.setVisible(Unknown Source)
at java.awt.Dialog.setVisible(Unknown Source)
at org.genomalysis.ui.FilterDialog.showDialog(FilterDialog.java:66)
at org.genomalysis.ui.FrmMain.btnExecuteFiltersActionPerformed(FrmMain.java:1267)
at org.genomalysis.ui.FrmMain.access$2100(FrmMain.java:72)
at org.genomalysis.ui.FrmMain$25.actionPerformed(FrmMain.java:741)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$200(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

Multiple output files

It would be good to be able to specify a separate output file for each filter if wanted. That way, in particular, when you get to the end of a filter set and you are interested in, "this result or that result," then you can have them already separated into files. Additionally, if you want to look at the results from each filter in a set separately you can then do that.

If passed, the filter would pass the sequence to the next filter and write the passed sequence to a file. You could also specify a "rejected sequence" file if wanted.

Persistent filter results

Adding this on behalf of @hyperfitz :

when the filtering process is happening, the dialog that shows reports total number of sequences tested, past, percentage pass rate, etc. It would be nice if that dialog was persistent: it vanishes as soon as filters are complete. Would be sweet if it was cached somewhere and if there was an "OK" button you pressed before it vanished, or something like that.

A final java genomalysis installment

Since genomalysis is going to be migrated to a python django web interface, as a final step in the current version, I think it would be good to remove all extraneous and/or incomplete functionality: in effect, just make it a straight filtering tool with the existing filters, as all the other interface elements are incomplete and/or not functional.

Proteomic filtering was its original conception and it has worked brilliantly for that. That would also make it a completed tool for what I originally used it for. I could then write a short manual for it and we would have completed this project; I could present it to my colleagues and I could write up a paper describing the work.

That would also lend itself to a simple interface redesign that would make the presentation much more straight forward.

Clustal integration

Going to at least test out clustal omega with the existing clustal W filter and diagnostics tool - code changes will probably entail a rename of the tool being used by the plugins.

Configuration redesign

Currently configuration of plugins is completely based on either a configurator annotation or set of property annotations on a java class - this doesn't allow python or other script-based plugins to be configurable. I think the configuration should move into an interface, with ability to specify a schema (for a generic property editor), a specific property editor, existing configuration and accept new configuration.

Code cleanup

At one point the source code to this project was lost, and we only had the compiled version. Much of the source code that is present in the repository is the result of a decompilation - which wasn't optimal. Need to go through, clean up the logic and add comments.

Export diagnostic results

I noticed that I can see pretty graphs from the hydropathy plot generator, but it's very hard to read, and I can't do anything with it - like export a jpeg. It would be nice to at least export text and images, but more ideally I'd like to be able to export RTF or .docx files.

Save input/output files from last filter execution

Currently I have to enter the input/output file manually if I restart Genomalysis. I think that Genomalysis should remember the last input/output files, as well as the last directory that the input/output files came from when I browse for a different one. The only exception to this should be if the files/directories don't exist anymore.

Cannot set up diagnostics

Creating instances of diagnostic tools causes an error.

Caused by: java.lang.ArrayIndexOutOfBoundsException: 2 > 0
        at java.util.Vector.insertElementAt(Unknown Source)
        at javax.swing.DefaultListModel.add(Unknown Source)
        at org.genomalysis.plugin.configuration.ui.InstancePanel$1.update(Instan
cePanel.java:87)
        at org.genomalysis.plugin.PluginInstanceManager.notifyObservers(PluginIn
stanceManager.java:48)
        at org.genomalysis.plugin.PluginInstanceManager.addPluginInstance(Plugin
InstanceManager.java:140)
        ... 40 more

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.