This is a pre-production deployment of Warehouse. Changes made here affect the production instance of PyPI (pypi.python.org).
Help us improve Python packaging - Donate today!
Project Description

Fortran library and Python module to calculate continuous-time quantum walks

This is intended to provide a framework to quickly and easily work with quantum walkers, take advantage of high performance computing, and allow easy visualisation.

For more information on how to use this package, please see the online documentation

Features

  • Fortran and Python bindings (in the form of a library and module respectively)
  • Supports MPI through the use of the PETSc and SLEPc high-performance sparse matrix libraries (CUDA support planned)
  • Has in-built support for infinite-line hamiltonians
  • Import and export matrices/states in binary or text
  • Can import custom adjancency matrices
  • Supports both one and two walkers (non-interacting)
  • Import and export matrices/states in binary, text or matlab format
  • Python module supports plotting and visualisation using matplotlib and networkx
  • Entanglement calculations
  • Ability to place diagonal defects/barriers on graph vertices
  • MPI graph isomorphism methods, for both 2 and 3 interacting particles

TODO

  • CUDA support
  • Calculation of transmission
  • Add fallback modes when PETSc/SLEPc are not present

Dependencies

In addition to an MPI implementation (e.g. MPICH or Open MPI), the python pyCTQW.MPI module depends on the following components:

Installation using pip

After ensuring NumPy and petsc4py are installed (and all PETSc, SLEPc and MPI environment variables are properly set), pyCTQW can be installed using pip:

$ pip install pyCTQW

Installation from source code

Alternatively, the source code can be downloaded and compiled manually:

  1. Ensure all dependencies required above are installed

  2. Extract the pyCTQW folder, and cd into the extracted directory:

    $ tar xvzf pyctqw-1.1.0.tar.gz
    $ cd pyctqw-1.1.0
    
  3. Ensure that your PETSc and SLEPc environment variables are correctly set; for example,

    $ export PETSC_DIR=/path/to/petsc
    $ export PETSC_ARCH=linux-gnu
    $ export SLEPC_DIR=/path/to/slepc
    

    If you are unsure what your PETSc or SLEPc variables should be, please refer to their documentation.

    Important

    If you plan to install pyCTQW.MPI using root to a system directory, the PETSc and SLEPc environment variables must be available to the root user.

  4. Compile the Python module pyCTQW.MPI by running

    $ python setup.py build
    
  5. System-wide install:

    $ sudo -E python setup.py install
    

    where the command -E ensures that the environment variables set in step 3 are passed to the root.

    Note

    If you do not have root access, or the above command does not appear to work, you can install the package locally by running

    $ python setup.py install --user
    

    Now, have a go running some of the examples!

Optional: compiling libctqwMPI

In addition to an MPI implementation (e.g. MPICH or Open MPI), the Fortran library libctqwMPI depends on the following components: - PETSc >= 3.4.2 - SLEPc >= 3.4.1

Once these dependencies are installed, simply open a terminal in the root directory of pyCTQW-X.Y and run

$ make fortran [options]

where available options include

Option Values Description
shared_lib 0 (default), 1

whether to build libctqwMPI as a shared library (shared_lib=1, producing libctqwMPI.so) or a static library (shared_lib=0 (default), producing libctqwMPI.a).

If built as a shared library, compiled programs will be smaller, but libctqwMPI.so will need to be added to a directory used by ld (either by setting the environment variable LD_LIBRARY_PATH or by placing libctqwMPI.so in /usr/local/lib etc).

The fortran library (libctqwMPI.so or libctqwMPI.a) can be found in the pyCTQW-X.Y/lib directory, with required module files found in the pyCTQW-X.Y/include directory.

Optional: build documentation

If Sphinx is installed, the documentation can be compiled by running

$ pip install -r docs/requirements.txt
$ make docs

Documentation

For more information on how to use this package, please see the online documentation

Acknowledgements

The graph isomorphism subroutine GraphISCert uses the external subroutine d_refsor, a highly optimised Fortran sorting implementation written by Michel Olagnon and part of the ORDERPACK 2.0 suite of ranking and sorting algorithms for Fortran 90.

Release History

Release History

1.1.0

This version

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

1.0.0

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

dev

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

Download Files

Download Files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
pyCTQW-1.1.0.tar.gz (1.7 MB) Copy SHA256 Checksum SHA256 Source May 13, 2014

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting