
PIPATH README

Pipath is a Python program that finds alpha-helical assignments and 
associated structures for an unlabeled or partially labeled PISEMA data 
set. For more on the design and implementation of the code, please
see the artical "PIPATH: An Optimized Algorithm for Generating Alpha-Helical 
Strcutures from PISEMA Data." by T. Asbury, S.Achuthan, J. Hu, J.R. Quine, 
M.S. Chapman, T.A. Cross and R. Bertram.

===============================================================================
Execution Prerequisites

Python v2.1 or later version.

===============================================================================
Installation Instructions

1. Download and untar into a local install directory.

> tar xvf pipath.tar

2. Set your local environment to use the python code.
Follow the instructions for (A) or (B) depending on your shell type.

A) For csh, (Bourne-derived shells), modify the PIPATH_INSTALL_DIR variable in the file sourcePythonPath_csh:

	setenv PIPATH_INSTALL_DIR "yourInstallDirectoryPath"

Source the file:
> source sourcePythonPath_csh

B) For sh (Korn-derived shells), modify the PIPATH_INSTALL_DIR variable in the file sourcePythonPath_sh:

	export PIPATH_INSTALL_DIR "yourInstallDirectoryPath"

Source the file:
> source sourcePythonPath_sh

3. You are now set to run the pipath code from any directory within the current shell.

> pipath.py -h

for the help documentation. The default behavior of pipath runs with the command-line arguments:

> pipath.py -i INPUT_DATA

where INPUT_DATA is an input data set of PISEMA data points. Type 

> pipath.py -H

to view an example input data file and its format.


================================================================================

Pipath Examples

1. There are three examples sets in the examples directory: 

6res_uniform

6res_selective

20res_uniform


2. To run the example 6res_uniform

> cd examples/6res_uniform
> pipath.py -i pipath.in

pipath.py creates an output directory (which defaults to "pipath/" but can
be modified with the "-o" flag) and places all assignments and structures there.
You can compare your output log file with the file "pipath.log.out" to verify results.

3. Notes concerning the example 6res_selective which handles the selective-labeling case.

The reason for the rejection of many of the paths is that
this is "post-processing" done to ensure correct positioning
of resonances due to the selective labeling.

If you look at the pipath.in file:

IALIHV
187.363697439  7.77843774835
174.319556319  3.8192466478
203.187137802  8.77385721618  0 3 # I labeled
174.064608767  8.8666434290  0 3 # I labeled
185.195987227  11.2607388798
0.0 0.0  4 # no data for H

The Isoleucines resonance values (here arbitrarily listed as data points 2 and 3)
have been selectively labeled and therefore must appear at the 0th and 3rd
positions in the final structure (corresponding to their position in the primary sequence).
Thus, all index paths must be of the form

2xx3xx
3xx2xx

In the example, there are only 2 paths out of the 100 returned that
meet the crieria. You can increase the number returned
by using the '-M' flag, e.g.:

pipath -M 200 -i pipath.in

returns 200 paths of which only 5 meet the criteria.

==================================================================================
