A roadmap for work at Stony Brook
Here are some thoughts for a way to proceed at Stony Brook.
We should keep in mind the C coding conventions described
in Sec. 1.4. The subroutine
libraries can draw inspiration from
the code of Anton Barty's 3dmpi program (Sec. 4.2),
and Pierre
Thibault's retriever (Sec. 4.1) program.
Characteristics we'd like to have for our libraries include:
- The ability to compile on both Apple OS X and Linux
systems, with and without MPI capabilities,
with changes only in a Makefile or by adding
something like an environment variable or a -D__MPI__
type argument with the cc command.
- Generation of better Makefiles using rules to simplify
them.
- Work with the "/adi", "/spt"
"/itn", and .3da files described in
Sec. 2.2.
- Have testing programs provided to verify/demonstrate the
correctness of major operations. These should go into
a subdirectory test below the directory of the
routines they are to test.
Things to be done:
- I think the style in which the first few MPI-enabled routines are
written is very important for establishing the standards for the
package. If the first routines are well written, then we will be in
good shape for building the package further. Therefore we should
get Nick D'Imperio to help with tweking the first, simple
routines in dm_array.c before going too much farther.
- Finish programming and testing the
routines for reading and writing
assembled diffraction intensity or "/adi" files
(Sec. 2.2.2). Add to the documentation of "/adi"
files the text strings that are added in to track operations on a
file. Jan Steinbrener.
- Once this is done, go on and do the same for support mask
"/adi", "/spt"
(Sec. 2.2.6) files, and iterate amplitude
"/itn" files (Sec. 2.2.7). Perhaps Huijie and
Xiaojing should each tackle one of these formats to make sure
they understand the details of file I/O?
- The routine dm_array_test.c in
CVS diffmic/c/util/test is meant to exercise
dm_array_fft() and verify its output.
I don't think the PNG images of slices taken out of
the diffraction cube look right. This needs to be looked into.
- We need to add the code into dm_array_fft() to
properly invoke the Apple dist_fft routines, and
test it.
- We should have a routine that is the equivalent
to shift(array,nx/2,ny/2,nz/2) in IDL.
It might already exist in dist_fft?
- We want routines like dm_pi_modulus,
dm_pi_support, and dm_dmap_delta
to calculate the modulus and support constraints, and
calculate the difference
in the difference map
algorithm. The routine dm_dmap_delta should
return the error measure
.
Microscope User
2008-11-25