Leginon Developer Guide » History » Revision 6
Revision 5 (Jim Pulokas, 08/27/2013 02:22 PM) → Revision 6/23 (Jim Pulokas, 08/27/2013 02:33 PM)
h1. Leginon Developer Guide h2. Overview of the code repository Over the years, Leginon has grown and divided. With the addition of the Appion processing pipeline, several components that were once subsystems of Leginon were broken out to be used as a common tool set for both Leginon and Appion. The top level master package that now contains the entire software suite developed at AMI is called _myami_. Inside of myami you will find leginon, appion and all of these common packages. Here is a brief description of the contents of the AMI software repository: * *myami* - the complete suite of software ** *appion* - the processing pipeline ** *comarray* - Python extension to retrieve COM SafeArrays into NumPy arrays (deprecated, see [[Installing comtypes]] instead) ** *dbschema* - If you are running your myami system out of a sandbox and frequently pulling changes from the repository, then your database schema is generally kept up to date automaticall. But most production installations update only between major revisions. The dbschema directory summarizes all of the database schema updates between revisions, which can be applied in sequence when doing a major jump in revisions. ** *imageviewer* - this is a newer image viewer widget for wx meant to replace the old ImageViewer widget in the Leginon GUI. So far only the tomography node uses it. ** *install* - adds automation to the installation process ** *leginon* - microscope control and automation ** *modules* - python extensions that must be compiled *** *libcv* - key point detection and matching *** *numextension* - misc image functions *** *radermacher* - functions for tilt picker, see http://emg.nysbc.org/projects/tiltpicker/wiki/TiltPicker_Installation ** *myamiweb* ** *programs* ** *pyami* ** *pyscope* ** *redux* ** *sinedon* h2. Brief description of some of the core code components * *leginondata.py* and *event.py* contain the definitions of all classes of data that are passed around between nodes and/or stored in the database. * *node.py* defines *Node*, the base class for all nodes. You will find a lot of the basic node functionality here, like passing events, storing user preferences, etc. h2. Brief description of some of the nodes * *targetwatcher.py* defines the class *TargetWatcher* which includes basic functionality for processing targets that were produced by another node. The input is target list, which is handled by the *processTargetListData* method. This method loops over the targets, calling *processTargetData* on each one. The *processTargetData* method must be defined in a subclass. * *acquisition.py* defines the *Acquisition* class, which is a subclass of *TargetWatcher*. It defines the *processTargetData* function such that an acquisition sequence happens at each target. More info, see: [[acquisition.py]] h2. Useful diagonosis scripts * [[testing pyscope instrument]] functions.