Differences between revisions 8 and 9
Revision 8 as of 2012-04-17 21:37:15
Size: 1500
Editor: JohnFlanagan
Comment:
Revision 9 as of 2012-04-17 21:50:56
Size: 2456
Editor: JohnFlanagan
Comment:
Deletions are marked like this. Additions are marked like this.
Line 14: Line 14:
 * method: ''launchScript(cmd)'', this method actually starts the EMAN2 child process from the program+arg string ''cmd''. If you want to alter child process behavior this method is the place to do it.
 * method: ''loadUsage(program)'', this method loaded the ''Usage'' information from an e2program. If you change how this information in the e2programs, you'll need to modify this method. I realize this makes to too much coupling, but I don't see anyway around this issue.
 * method: ''loadTree(filename, treename)'', this method loads in a mode JSON file to populate its workflow QTreeWidget. This method also sets all properties related to each e2program that this mode workflow runs. These properties include things such as ''wizard'' file location, ''expert'' mode availability, etc. If you want to add additional properties, this function is the place to start. This function calls ''_add_children(toplevel, widgetitem), a recursive function.
 

This page illustrates the working of e2projectmanager.py

The new GUI for EMAN2 is known as e2projectmanager.py and is mainly used to organize electron microscopy projects, and execute e2programs. The projectmanager can be run in two modes, SPR(single particle reconstruction) and tomo (tomogramphic). Other modes can be added and this page describes how to do that. Each mode has a JSON file describing the workflow of a mode. The workflow is a tree that describes a flow of data from raw to final form, and traversing this tree describes the data flow(approximately, as some deviations are allowed). These JSON files can be easily modified to allow workflow modification without needing to touch the source code(a vast improvement over e2workflow.py).

Design of e2projectmanager.py

The projectmanager itself is implemented as a class named: EMProjectManager that inherits from QtGui.QMainWindow This class is quite large and has many methods.

  • method: makeStackedWidget(), this adds tree widgets to the workflow widget stack(the SPR and tomo workflow trees are inserted into a QWidgetStack). If you want to add a new mode to the projectmanager, add to this method the line:

   1 self.tree_stacked_widget.addWidget(self.makeTreeWidget(os.getenv("EMAN2DIR")+'/lib/pmconfig/myjsonfile.json', 'name'))

where myjsonfile.json is the JSON file for this mode and name is the name of this mode(will be displayed in the mode combobox).

  • method: launchScript(cmd), this method actually starts the EMAN2 child process from the program+arg string cmd. If you want to alter child process behavior this method is the place to do it.

  • method: loadUsage(program), this method loaded the Usage information from an e2program. If you change how this information in the e2programs, you'll need to modify this method. I realize this makes to too much coupling, but I don't see anyway around this issue.

  • method: loadTree(filename, treename), this method loads in a mode JSON file to populate its workflow QTreeWidget. This method also sets all properties related to each e2program that this mode workflow runs. These properties include things such as wizard file location, expert mode availability, etc. If you want to add additional properties, this function is the place to start. This function calls _add_children(toplevel, widgetitem), a recursive function.

Eman2ProgramingPM (last edited 2012-04-17 22:47:15 by JohnFlanagan)