Re: [XMLPipeDB-developer] GenMAPP multitaxon support - CMSI 486T
Brought to you by:
kdahlquist,
zugzugglug
From: Richard B. <rbr...@gm...> - 2011-07-19 22:00:42
|
Thanks will review later this afternoon. Sorry got hung up on this but continuing forward comments in code should speed this way up. Rb Sent from my iPhone On Jul 19, 2011, at 12:04 AM, "John David N. Dionisio" <do...@lm...> wrote: > Greetings, > > OK, my responses are committed. As noted in my "Dondi -" comments, you were fairly close. The main miss was how AbstractListModel was to be used. Give it a gander and holler if anything else remains unclear. > > At this point, you'll need to start managing what should happen as the user selects/deselects species. You'll also want that little informational panel on the right that summarizes (for tech types) whether the selected species will be using a customized species profile or the generic one. > > Carry on, see how this goes. :) > > John David N. Dionisio, PhD > Associate Professor, Computer Science > Loyola Marymount University > > > On Jul 18, 2011, at 10:14 AM, Richard Brous wrote: > >> Ok , took the code as far as I could and submitted export 1 - unfortunately broken code even though I made a point not to by commenting out unfinished blocks. Take a look at the commit comments for info. >> >> I look forward to your comments which I'm sure will help straighten this out! >> >> Rb >> >> Sent from my iPhone >> >> On Jul 12, 2011, at 6:35 PM, "John David N. Dionisio" <do...@lm...> wrote: >> >>> Hi there, >>> >>> A code-oriented session is OK with me, though this particular question I can take a stab at via e-mail. >>> >>> The trick with full control of a JList is to implement its model (a ListModel). For this, I usually create a subclass of AbstractListModel and implement the missing methods. This AbstractListModel subclass should be able to see the list of species found. Then, the implementations of its missing methods would be based on that list of species. >>> >>> With this ListModel class in hand, keeping the JList up to date is a matter of instantiating the JList with this model: >>> >>> SpeciesListModel speciesListModel = new SpeciesListModel(); >>> speciesCheckList = new JList(speciesListModel); >>> >>> If the species list changes, have the species list model fire the appropriate list change event (the JavaDoc API has a bunch of fire* methods). To keep things simple, there is a "full update" event which just says "rebuild the entire JList." That one should be OK. There are finer-grained ones like "something got inserted" and "something got removed," but that really is more for optimization purposes. >>> >>> As for the text display, the simplest approach is to implement the toString method of the SpeciesProfile class so that they return something that is appropriate for a JList. Sometimes that is too limiting though. If you want greater flexibility, you will want to implement a ListCellRenderer. There is a class called DefaultListCellRenderer that you can extend. Typically the subclass would call the superclass's method, which returns a JLabel. You can then change the content of the JLabel according to the list item that you are trying to display. >>> >>> See if these leads are enough to go on. If not, I can talk you through them more during the call. >>> >>> John David N. Dionisio, PhD >>> Associate Professor, Computer Science >>> Loyola Marymount University >>> >>> >>> On Jul 12, 2011, at 6:00 PM, Richard Brous wrote: >>> >>>> Update for tomorrow 7/13/11: >>>> >>>> Clear on what I need to do but can't seem to figure out a way to do it. I think the best use of our time tomorrow is to make it a code discussion session (giving Dr. Dahlquist the opportunity to bow out if so inclined) >>>> >>>> 1. In regard to the JList, I have been working on the best way to implement it but am getting stuck on how to populate it and where to do so in the code. >>>> >>>> I'm currently working in ExportPanel1.java and have done the following so far: >>>> >>>> imported JList; >>>> imported javax.swing.event.*; >>>> >>>> >>>> public class ExportPanel1 extends JPanel { >>>> added: private JList speciesCheckList; >>>> >>>> private JPanel getContentPanel () { >>>> underneath the species combo box entry // species | JComboBox | speciesFound |JLabel | Description | ... >>>> >>>> added: speciesCheckList = new JList ( speciesProfilesFound ); >>>> >>>> // registered the listeners >>>> speciesCheckList.addListSelectionListener ( new ListSelectionListener () { >>>> // handle list selection >>>> public void valueChanged ( ListSelectionEvent e ) { >>>> // get selected indices >>>> int [] indices = speciesCheckList.getSelectedIndices (); >>>> } >>>> }); >>>> >>>> added: //leftPanel.add ( speciesComboBox ); >>>> leftPanel.add ( speciesCheckList ); >>>> >>>> The real issue here is how to populate the JList... I took a look at the constructors but can't determine a way to populate it after instantiation... maybe using abstract class somehow? >>>> >>>> So instead I have been working to add the speciesProfilesFound [] ArrayList as a constructor argument. Then I can pre-populate it prior to the contentPanel being initialized???... or possibly similar to the init() method which pre-populates the Database profileComboBox? >>>> >>>> Once the initital population of the JList is done we can modify it for the later methods which dynamically alter content in databaseProfileSelected() and speciesProfileSelected(). This will effect the selectedSpeciesProfile() method usage and its getter and setter. >>>> >>>> Also we can then work on the text indication which dynamically shows the selected species and whether a custom or generic profile has been associated. >>>> >>>> Dondi - I'm looking forward to your suggestions and assistance!!! >>>> >>>> Richard >>>> >>>> >>>> >>>> On Wed, Jul 6, 2011 at 10:58 PM, John David N. Dionisio <do...@lm...> wrote: >>>> Hi Rich, >>>> >>>> OK, thanks for the discussion setup. We'll work through this during the call. >>>> >>>> John David N. Dionisio, PhD >>>> Associate Professor, Computer Science >>>> Loyola Marymount University >>>> >>>> >>>> >>>> On Jul 6, 2011, at 7:37 PM, Richard Brous wrote: >>>> >>>>> Update on status: >>>>> >>>>> Over the past two weeks I have spent time doing the following: >>>>> >>>>> 1. Reviewed the taxon id code changes which Don Murphy coded and were merged to create version 2.0 b64 >>>>> 2. Reviewed the UniprotDatabaseProfile, UniprotSpeciesProfile, SpeciesProfile, Profile and DatabaseProfile files >>>>> 3. Reviewed and discussed the process by which GenMAPP matches single taxon ids found in a Postgres db with the known species profiles. >>>>> >>>>> Current actions: >>>>> >>>>> During the last few days I have started coding in the ability for the species matching functionality to surface multiple taxon ids from within a Postgres db. >>>>> >>>>> The process being the following steps: >>>>> >>>>> 1. Grab all the taxon ids from the Postgres db >>>>> The current iteration of the software already does this. In the checkRequirements method in UniprotDatabaseProfile.java, a query of the Postgres db acquires all taxon id's and stores them in ResultSet result variable. >>>>> >>>>> 2. Check to find match between the taxon ids from Postgres against existing species profiles for known species. >>>>> >>>>> The current iteration compares each taxon id in ResultSet result variable. >>>>> First taxon id from result: >>>>> If match was found, then that species profile with associated taxon id was added to the speciesProfilesFound arraylist. >>>>> If no match was found, a generic species profile associated with the current taxon id was added to the speciesProfilesFound arraylist. >>>>> >>>>> Next taxon id from result >>>>> If match was found, then that species profile with associated taxon id was added to the speciesProfilesFound arraylist. >>>>> If no match was found, a generic species profile associated with the current taxon id was added to the speciesProfilesFound arraylist. >>>>> >>>>> Repeat until no more taxon ids are found in ResultSet result variable. >>>>> >>>>> 3. Replace the JComboBox with a JList to allow the user to choose a selection of multiple species to export. >>>>> >>>>> Use the getSelectedIndices method for JList to determine which species have been selected for export. >>>>> >>>>> 4. Modify the export process to run a pass for each species selected to generate a multispecies gdb. >>>>> details to be determined. >>>>> >>>>> ----------------------------------------------------------------------------------------------------------------------------------------------------------- >>>>> >>>>> >>>>> Discussion for tomorrows call: >>>>> >>>>> >>>>> We previously discussed allowing user input to manually add taxon ids and associate them to the generic profile. >>>>> >>>>> Unless I don't really understand the reasoning behind this, it seems to me that it is unnecessary. Why would we add a taxon id during the export process that isn't already in the Postgres data? >>>>> >>>>> The current implementation already captures every taxon id in speciesProfilesFound regardless if its a known species or not. So it seems that we don't need to make any modifications in surfacing taxon ids from a Postgres db. >>>>> >>>>> Then we can go directly to #3 above which I have mostly coded, but can't seem to figure out how and where to populate the JList. In reviewing constructor documentation it indicates 4 ways to instantiate. >>>>> >>>>> My first choice was to create an empty JList [ JList () ] and populate it later but I don't see a method to do so such as addItems or something similar. >>>>> >>>>> I then tried to instantiate with speciesProfileFound as an array argument: JList ( SpeciesProfile[] speciesProfilesFound ) but can't resolve. >>>>> >>>>> >>>>> Anyway, I look forward to our call at 9am tomorrow. >>>>> >>>>> Richard >>>>> <ATT00001..txt><ATT00002..txt> >>>> >>>> >>>> ------------------------------------------------------------------------------ >>>> All of the data generated in your IT infrastructure is seriously valuable. >>>> Why? It contains a definitive record of application performance, security >>>> threats, fraudulent activity, and more. Splunk takes this data and makes >>>> sense of it. IT sense. And common sense. >>>> http://p.sf.net/sfu/splunk-d2d-c2 >>>> _______________________________________________ >>>> xmlpipedb-developer mailing list >>>> xml...@li... >>>> https://lists.sourceforge.net/lists/listinfo/xmlpipedb-developer >>>> >>>> <ATT00001..txt><ATT00002..txt> >>> >>> >>> ------------------------------------------------------------------------------ >>> AppSumo Presents a FREE Video for the SourceForge Community by Eric >>> Ries, the creator of the Lean Startup Methodology on "Lean Startup >>> Secrets Revealed." This video shows you how to validate your ideas, >>> optimize your ideas and identify your business strategy. >>> http://p.sf.net/sfu/appsumosfdev2dev >>> _______________________________________________ >>> xmlpipedb-developer mailing list >>> xml...@li... >>> https://lists.sourceforge.net/lists/listinfo/xmlpipedb-developer >> >> ------------------------------------------------------------------------------ >> AppSumo Presents a FREE Video for the SourceForge Community by Eric >> Ries, the creator of the Lean Startup Methodology on "Lean Startup >> Secrets Revealed." This video shows you how to validate your ideas, >> optimize your ideas and identify your business strategy. >> http://p.sf.net/sfu/appsumosfdev2dev >> _______________________________________________ >> xmlpipedb-developer mailing list >> xml...@li... >> https://lists.sourceforge.net/lists/listinfo/xmlpipedb-developer > > > ------------------------------------------------------------------------------ > Magic Quadrant for Content-Aware Data Loss Prevention > Research study explores the data loss prevention market. Includes in-depth > analysis on the changes within the DLP market, and the criteria used to > evaluate the strengths and weaknesses of these DLP solutions. > http://www.accelacomm.com/jaw/sfnl/114/51385063/ > _______________________________________________ > xmlpipedb-developer mailing list > xml...@li... > https://lists.sourceforge.net/lists/listinfo/xmlpipedb-developer |