Package Description

There are conceptually three modules which form the DNA system - the data collection module (DCM), the expert system (ES) and the data processing module (DPM). The actual packages are best thought of as contributing towards each module thus:

Module/Package
ProDC
pxgen
expert
scheduler
Mosflm
DCM
yes
yes
no
no
no
ES
no
no
yes
slightly
no
DPM
no
no
partly
mostly
yes

Since the number of programs which will be needed for the DPM will increase (at the moment we are considering including SCALA and TRUNCATE, CCP4 programs, and XDS, another data processing package), the scheduler has been written in such a way that the inclusion of new programs will require a dimishing amount of work. Both the expert and scheduler have been written in Python, and share a substantial amount of common code.

The communications between modules is achieved by passing xml documents in HTTP packets through sockets. This was chosen because it allows maximum platform independance, and has no particular language bias. There may be some effort made into grid enabling the dna project, to allow the data processing modules and expert system to be geographically distinct from the beamline.

Very shortly module by module descriptions will be appearing here.

DPM

The data processing module, and in particular the "scheduler", are currently under reconstruction. Until now there has been an implicit assumption throughout the code that only one task will be performed at a time. This is a limitation, since it prevents concurrent data collection and processing, and parallel processing of different tasks. The new scheduler will be written in a (hopefully) program neutral way, so that there are the basic components to extend it to almost any (CCP4) program.

In addition to the parallelisation of the scheduler, there must also be the ability to stop all running tasks, and implement a nice "reset".

The last change, and possibly the most fundamental, is to remove the "grep"ing mechanism from the code and instead rely on specific formatted files being written by the programs. This will make the system much easier to maintain between program revisions.