Team:Berkeley Software/JoannaNotebook
From 2009.igem.org
Back to Berkeley Software notebook index
Joanna's iGEM 2009 Notebook
Hi there, my name is Joanna Chen. Welcome to my notebook for iGEM 2009. I am on the UC Berkeley Computational Tools team. This summer we will be working on improving and adding to Clotho, a tool last year's team started making. I'm excited to be working on this project, and hope the team will have plenty to show by the end of iGEM. When school starts in the fall, I will be a senior majoring in Bioengineering at UC Berkeley.
Contents |
Week of June 1, 2009
Monday was the first day of iGEM. We met as a team at 9am. Then, we went to a lab safety training, so we can go into the wet lab to work with the Berkeley experimental iGEM team when necessary. Following that, we had a pizza lunch with (almost) everyone at Berkeley involved with iGEM this summer. There, the computational and wetlab teams got to meet each other and hear both team leaders talk briefly about plans for the upcoming weeks. In the afternoon, Doug gave the computational team a brief overview of EDA (Electronic Design Automation) - his area of research - before showing us two webpages about Clotho and having each of us get an account on Bugzilla, the bug tracking tool we will be using. He then gave an overview of projects we could work on this summer to improve Clotho. We ended the day by setting up CVS with Netbeans so we could download the current source code for Clotho.
Tuesday morning, we had a long team meeting where Doug introduced us to editing this wiki, gave us a Clotho tutorial, and briefly discussed the Ptolemy coding standards which we will be using. Doug also assigned each of us a Clotho help file or two to be in charge of and edit by the end of the week. Mine was the Features Library. I spent the afternoon playing with Clotho, finding bugs in Clotho, and improving the help file.
Wednesday Doug gave us a tutorial on the Clotho Data Model. Later, I had my meeting with Doug to talk about my project area for the summer. I will be working on Visualization with Richard. We also decided my short term project would be to make a plugin with drag and drop functionality for icons (more on these shortly). Afterward, I spent a little more time playing with Clotho and looking for bugs.
Project description: Visualization
3 Areas we could work on:
- Design
- Several levels of abstraction, from DNA sequence to icons of features (which ideally can be dragged and dropped in the window) to parts and even systems(??)
- Data Management
- Be able to visually represent the relationships between data
- Simulation
Some existing visualization tools to look at:
Tool | Location | Area |
[http://gcat.davidson.edu/VizABrick/ Viz-a-brick] | Davidson | Data Management |
[http://web.mit.edu/jagoler/www/biojade/ BioJADE] | MIT | Design |
[http://www.tinkercell.com/Home TinkerCell] | UW | Simulation/Design |
GeneDesigner | DNA 2.0 | Design |
[http://www.genocad.org/genocad/ GenoCAD] | VA Tech | Design |
[http://endy.openwetware.org/Notebook/BioBrick_Open_Graphical_Language.html BOGL] | OpenWetWare | Icons |
Short-Term Task - 1st Plugin: Drag and Drop Icons
- Create a new plugin in Views menu of Clotho's Main Toolbar
- Have some icons and some connectors
- Allow user to drag icons around and connect them
- Talk to Richard about plugins
- First assess what is already available with regard to Java and GUIs
- [http://platform.netbeans.org/tutorials/nbm-visual_library.html NetBeans Visual Library]?
- Take a look at BioJADE and ProMoT source code
Thursday
- More playing with Clotho and bug-finding, including testing the Parts Manager by adding random (and malformed) information for parts
- Committed the changes I made in the Features Library help file
- Looked into BioJADE (haven't found much that was useful)
- Group meeting
- Decided on meeting times for each of the project areas
- Everyone reported the bugs they found to Doug
Friday
- Adding more content to this page
- Followed the [http://platform.netbeans.org/tutorials/nbm-visual_library.html NetBeans Visual Library tutorial] to learn the basics about the NetBeans Visual Library API and to create a NetBeans module with drag and drop functionality
Week of June 8, 2009
Monday
- Group meeting in the morning
- Project area presentations next week, 10-15 minutes long
- Visualization is on Monday 6/15
- Tried to do something similar to Friday's NetBeans module exercise in a JFrame in a Java Application
- Not as easy at it sounds, didn't get it to work yet
- Tried to run BioJADE to reference what they did (maybe easier alternative??)
- Not working either
- Clotho Plugin Tutorial by Doug and Richard
Tuesday
- Still messing around with BioJADE, still not working
- Checked Clotho Features Library again, closed bugs are indeed gone
- Set up the framework for my plugin
Wednesday
- Went back to modifying the NetBeans module exercise to try to get it to work as a Java plugin to Clotho
- Possibly just need to copy org-netbeans-api-visual.jar into the library
- Need more work here
- Early this afternoon, the campus wireless internet stopped working and I couldn't reconnect... annoying...
- Movie social tonight with the team, we watched Goonies
Thursday
- Still trying to get NetBeans module exercise to work as a Java plugin to Clotho
- Visualization meeting with Doug and Richard
- Still not much luck getting any drag and drop things to work
- Things to look into:
- Me:
- Dig through BioJADE source to see what they did -> hard to pinpoint the useful pieces
- AWT canvas (in Java) -> nope, it's just a rectangular area to paint stuff on
- Icons in Swing -> maybe: icons can be inserted into labels, labels can be moved by writing handling code for mouse actions, labels not moving as I want them to though, also seems like it would be tedious to write an entire GUI this way
- Richard:
- Jython Tk
- JavaFX -> might work
- QT with Java
- Me:
- Group meeting
Friday
- Trying some more things with moving icons in labels
- Using JavaFX in Java demo that Richard found online runs successfully
- Trying to modify to work as a Clotho plugin to see if we would be able to use JavaFX with Clotho
- Not successful yet, Richard and I are still trying to track down the source of the problem(s)
- Some key piece may be missing or somehow Clotho can't access it
Sunday
- Prepare slides for visualization presentation with Richard
- Useful link: http://syntheticbiology.org/Abstraction_hierarchy.html
Week of June 15, 2009
Monday
- Group meeting - presentations from Data Model, Plug-ins, and Visualization (Richard and me!)
- Richard discovered there was a new Substance.jar library (for the skins) that might possibly work with JavaFX
- We spent the afternoon trying to get Clotho to work with the new Substance.jar
- Got Clotho working
- But JavaFX plugin still crashes Clotho
Tuesday
- Did some searching for other toolkits for making drag and drop GUI's in Java
- Turned up an example of a drag and drop GUI made with Java AWT at http://www.java2s.com/Code/Java/Swing-JFC/Draganddrop.htm
- Drag and drop GUI definitely doable in Java AWT, but cumbersome
- We (Doug, Richard, and I) decided at the end of the day that we would just make the visualization piece as a standalone using JavaFX and somehow connect it to Clotho
Wednesday
- Learning JavaFX
- GUI applications with JavaFX tutorial: http://java.sun.com/javafx/1/tutorials/ui/
- Got an icon to drag and drop
- Designing the layout of our visualization piece
Thursday
- Visualization meeting
- Concluded that connecting a JavaFX piece to Clotho would be more troublesome that it is worth
- Richard discovered that the NetBeans Visual Library API could be used outside of a NetBeans Module
- Concluded that would be the best way to go, keeps the visualization piece as a Clotho plugin
- Things to work on
- Thumbnail drag (me)
- Grid scheme (Richard)
- Listeners (for mouse events)
- Object to picture relationships
- Visual library as plugin to Clotho
- Group meeting - presentations from Language, Robot, and Kepler
Thursday & Friday
- Working on drag and drop from a thumnail to a workspace
- Reference code from [http://platform.netbeans.org/tutorials/nbm-visual_library.html NetBeans Visual Library tutorial] and [http://bluemarine.tidalwave.it/ BlueMarine]
Week of June 22, 2009
I spent most of this week trying to make a working thumbnail drag. That is, I wanted to be able to have a pane with thumbnails and another working pane. When the user drags a thumbnail image from the thumbnail pane to the working pane, a copy of the thumbnail image would appear on the working pane where the user let go of the mouse. However, this turned out to be a very difficult task in Java/Netbeans Visual Library. Netbeans Visual Library uses ImageWidgets to attach images to Scenes. Each pane that I had was its own Scene. Conceptually, I wanted an ImageWidget to detect a mouse drag gesture and make a copy of itself, then the Scene of the working pane to detect where the drag was released to place the ImageWidget there. However, there is no easy way to do that with the Visual Library.
After spending a good portion of the week trying to do the above, I tried ways of mimicking the drag and drop behavior by storing information about the thumbnail the mouse was pressed on and then retrieving that information to create a new ImageWidget when the mouse was released over the other Scene. However, I also ran into several problems with that. One was that the mouse released mouse listener didn't seem to work for some reason. I also had trouble storing the information for the new widget somewhere such that the other Scene could access it.
I finally had limited success on Thursday afternoon. I was able to double-click on a thumbnail and have it pop up a new ImageWidget in a default location on the working pane. (The mouse listener for the double-click actually creates the new ImageWidget in the other Scene, so I didn't need to worry about storing information.)
Friday morning Richard told me about the MoveProvider class in org.netbeans.api.visual.action, which allowed me to create the ImageWidget in the working pane after the mouse was dragged from a thumbnail and released. However, the ImageWidget will be dropped regardless of the ending location of the mouse, so even if the mouse is dropped outside of the visualization window, an ImageWidget will still be created. Another unintended behavior is that simply clicking on a thumbnail will trigger the creation of a new ImageWidget in the working pane. These should be fixed so that ImageWidgets are only dropped when the mouse is released in the working pane.
Friday afternoon, Richard merged the code he had been working on this week with what I had come up with for the thumbnail "drag". We now have a visualization piece in which one can click/drag thumbnails to create new ImageWidgets in the working pane and reorder them on a grid.
Back to Berkeley Software notebook index