gpureproj

Overview

gpureproj is a command-line application that takes a 3D reconstruction and a model tilt series and generates another tilt series which is a reprojection of the 3D reconstruction and has the same tilt angles as the model tilt series. The x and y dimensions of the generated tilt series are the same as the x and y dimensions of the reconstruction. gpureproj is basically the same as reproj but uses one or more servers with graphics cards to perform the projection calculations and expects the input reconstruction to be stored in xyz order rather than the xzy order expected by reproj. The command-line syntax for gpureproj is (optional parts are in brackets)

    rgemt_autostart recon_name model_series_name series_name [-missingx=xhw:xpos] [-missingz=zhw:zpos] [-nomissing] [-res=i] [-rscale=i] [-multires] [-server=address [-server=address ...]] -rgemt_client=gpureproj [rgemt_autostart_options]

or

    gpureproj recon_name model_series_name series_name [-missingx=xhw:xpos] [-missingz=zhw:zpos] [-nomissing] [-res=i] [-rscale=i] [-multires] [-server=address [-server=address ...]]

The first form can start and stop the server software which communicates with the graphics cards; it also has options to better integrate with queueing software. The "GPU Parallel Settings" topic in Parallel.html describes how to use rgemt_autostart and the options it takes. The second form assumes that the server software, used to communicate with the graphics cards, is already running.

The three arguments to gpureproj are

recon_name
Is the name of the MRC file containing the 3D reconstruction. The reconstruction is assumed to be in the orientation (xyz) generated by Priism's gpurecon module.
model_series_name
Is the name of the MRC file containing the model tilt series. gpureproj only uses the header of this file.
series_name
Is the name of the MRC file that gpureproj will generate. gpureproj will not work correctly if series_name refers to the same file as model_series_name.

The seven options for gpureproj are

-missingx=xhw:xpos
By default, gpureproj assumes that the reconstruction is part of a uniform slab. gpureproj then rescales the reprojection result from the reconstruction to account for the material beyond the reconstruction bounds Use -missingx to change the half width in x of the slab to be xhw and the x position of the slab's center to be xpos. Both are in units of the reconstruction samples. The position is relative to the reconstruction sample coordinate, 0.5 * reconstruction_x_size. By default, the slab's half width in x is 1e38 before accounting for resolution factors, and its position is zero. -nomissing overrides the effect of this option.
-missingz=zhw:zpos
Is like -missingx but sets the half width and center position of the slab in z. The units for both are reconstruction samples, and the position is relatvie to the reconstruction sample coordinate, 0.5 * reconstruction_z_size. By default, the slab's half width in z, after accounting for resolution factors, is one half of the reconstruction z size, and its position is zero. -nomissing overrides the effect of this option.
-nomissing
Causes gpureproj to assume that there is no material beyond the bounds of the reconstruction. This option overrides the effects of -missingx and -missingz.
-res=i
Causes gpureproj to read from the ith resolution of the reconstruction. i must be a non-negative integer less than the number of resolutions in the reconstruction. If you do not specify the -res option, reproj will use the highest resolution (i.e. act as if you gave it the option -res=0).
-rscale=i
gpureproj will divide the half widths and positions set via -missingx and -missingz by i. i must be a positive integer. You would normally use this option if the input reconstruction was computed at a lower resolution, but you specified the slab characteristics for a higher resolution (usually so that you could switch resolutions and only change -rscale or -res options without changing all of the other options that depend on the resolution). By default, i will be two raised to an exponent equal to the resolution level, as set by -res.
-multires
Causes gpureproj to add lower resolutions to the generated tilt series if the x and y dimensions are sufficiently large. If you do not specify this option, gpureproj will generate a tilt series with a single resolution.
-server=address
Specifies the name of a server to use. You can use multiple -server options to have the calculations performed on more than one server. If you do not specify any -server options, gpureproj will look at the environment variable RGEMT_SERVER_LIST. The value of the variable should be a comma-separated list of the addresses to use. If you use rgemt_autostart, keep in mind that it, depending on what options you use, can override any servers you set with -server options. An address is usually just the host name (for instance, msg.ucsf.edu) or IP number (for instance, 169.230.30.46) of the server to contact. If the server does not use the default port number, 20248, you should add a colon followed by the port number to use at the end of the address (as an example, msg.usf.edu:20000, would contact port 20000 on msg.ucsf.edu). The address may also contain a specification of the protocol to use immediately before the host name or IP number. Currently one protocol is understood:
rgemt1://
This protocol routes all communication between the client and server over a single TCP connection. This is the default protocol when the address does not include a protocol specification.

Related Priism Topics

Priism | Reconstruction coordinate system | rgemt_autostart | gpurecon | Iterative alignment + reconstruction | Refine alignment