h1. pfile-tools: GE P-File Utilities

This package provides a library refrence to GE's proprietary P-file format for their MR scanners. This is not a translation of their copyrighted header files, but a re-implementation. It's designed to let you catalog and anonymize your raw data, and hopefully provide enough information to run your own reconstruction.

In addition to the library, pfile-tools provides small scripts to display pfile header values and do an anomymization.

h2. Status

Header support is limited to stuff we've needed in-house or stuff that's really obvious. If you need something added, let me know.

Also, we currently only support reading revision 20 of the files. I suspect that it'll also effectively work on other revisions (particularly 22), but I don't know for sure which. Let me know!

h2. Installation

<pre>
  $ easy_install pfile_tools
  $ cd pfile-tools
  $ python setup.py install
</pre>

Installation via easy_install and pip is coming.

h2. API Usage

<pre>
  >>> from pfile_tools import headers
  >>> pfile = headers.Pfile.from_file('/path/to/PXXXX.7')
  >>> print(pfile.revision)
  20
  >>> print(pfile.header.exam_number)
  5313
  >>> print(pfile.header.exam_datetime)
  datetime(2012, 3, 6, 10, 47, 42)
</pre>

Pfile.header is a Python "ctypes Structure":http://docs.python.org/library/ctypes.html#ctypes.Structure.

h2. dump_pfile_header

Does what it says on the tin -- dumps a p-file's header to standard out, in a delimited (by default, tab-delimited) format.

<pre>
  Usage: dump_pfile_header [OPTIONS] pfile

  Dumps header information from a GE P-file

  Options:
    -h, --help            show this help message and exit
    -r REVISION, --revision=REVISION
                          Force a header revision (available: 20)
    --offsets             Show offsets to data elements
    --sizes               Show data element sizes
    --show-padding        Print unknown 'padding' elements
    --separator=SEPARATOR
                          Output field separator (default: \t)
</pre>

h2. anonymize_pfile

Strips personally-identifying information from a p-file.

<pre>
  Usage: anonymize_pfile.py [OPTIONS] pfile pfile_out

  Removes personally-identifying information from a GE P-file

  Options:
    -h, --help            show this help message and exit
    -r REVISION, --revision=REVISION
                          Force a header revision (available: 20)
    --inplace             Edit file in-place. Ignores pfile_out.
    -v, --verbose         Print lots of extra debugging.

    Anonymization options:
      --name=yes/no       Set patient name to 'ANONYMIZED' (yes)
      --id=yes/no         Set patient ID to 'ANONYMIZED' (yes)
      --dateofbirth=yes/no
                          Set date of birth to '' (yes)
      --age=yes/no        Set age to 0 (yes)
      --weight=yes/no     Set weight to 0 (yes)
      --sex=yes/no        Set sex to 0 (yes)
</pre>

h2. License

pfile_tools is provided under the short-and-sweet BSD license. See LICENSE.txt for more information.