Project

General

Profile

Leginon Developer Guide » History » Version 6

Jim Pulokas, 08/27/2013 02:33 PM

1 1 Jim Pulokas
h1. Leginon Developer Guide
2
3 4 Jim Pulokas
h2. Overview of the code repository
4
5
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:
6
7
* *myami* - the complete suite of software
8
** *appion* - the processing pipeline
9
** *comarray* - Python extension to retrieve COM SafeArrays into NumPy arrays (deprecated, see [[Installing comtypes]] instead)
10
** *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.
11 5 Jim Pulokas
** *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.
12 6 Jim Pulokas
** *install* - adds automation to the installation process
13 1 Jim Pulokas
** *leginon* - microscope control and automation
14 6 Jim Pulokas
** *modules* - python extensions that must be compiled
15
*** *libcv* - key point detection and matching
16
*** *numextension* - misc image functions
17
*** *radermacher* - functions for tilt picker, see http://emg.nysbc.org/projects/tiltpicker/wiki/TiltPicker_Installation
18 4 Jim Pulokas
** *myamiweb*
19
** *programs*
20
** *pyami*
21
** *pyscope*
22
** *redux*
23
** *sinedon*
24
25
26 1 Jim Pulokas
h2. Brief description of some of the core code components
27
28
* *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.
29
* *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.
30
31
h2. Brief description of some of the nodes
32
33 2 Jim Pulokas
* *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.
34
* *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]]
35 3 Anchi Cheng
36
h2. Useful diagonosis scripts
37
38
* [[testing pyscope instrument]] functions.