Perl 4 Science

doing science in our favorite language

Modules and Projects

On of the key features of Perl is CPAN, the Comprehensive Perl Archive Network. CPAN is a huge collection of modules published by authors all over the world, there is a module availble to do almost any task! There are several front end search engines to CPAN, including the vernerable search.cpan.org and the newer metacpan.org.

There are of course other scientific Perl projects which are not hosted on CPAN. We hope to highlight these on this site, but we also want to encourage all module authors to consider publishing to CPAN, not only for the free testing, but to allow easy code reuse in the typical Perl way. If you would like help packaging your module for CPAN please let us know, we would love to help get you started.

So CPAN or not here are a list of useful modules and projects, perhaps a blurb about what they do and a link to relevant repositories and documentation. If you have more to add, let us know, or send a pull request.

Pure Mathematics

Numerical Modules/Libraries

Plotting

Statistics

  • PDL::Stats - Many useful routines for doing statistical analysis using PDL. Note that the docs might render better on its project site
  • Statistics::R - A bridge between Perl and the statistical language R

Units

Symbolic Mathematics

Physics

Astrophysics

Electron Microscopy

Experiment Analysis

  • Demeter - a comprehensive system for processing and analyzing X-ray Absorption Spectroscopy data.

High Energy

  • SOOT - Perl interface to CERN’s ROOT system

Optics

  • Physics::RayTransfer - Object-oriented ray transfer analysis. Designed with special attention to laser cavity stability analysis. (If you are looking for graphic rendering, this probably isn’t what you are looking for.)

Biology

  • biodiverse - a tool for the spatial analysis of biological and related diversity
  • BioPerl - a community effort to produce Perl code which is useful in biology

Artificial Intelligence/Machine Learning

  • PerlGP - “The Open Source Perl Genetic Programming System”
  • Darwin Tunes - “evolutionary music engine”, uses both PDL and PerlGP to evolve music. Source: github, Articles: PNAS, New Scientist
  • Clairlib - “The Clair library is a suite of open-source Perl modules intended to simplify a number of generic tasks in natural language processing (NLP), information retrieval (IR), and network analysis (NA).”
  • Algorithm::LibLinear - A Perl binding for LIBLINEAR, a library for classification/regression using linear SVM and logistic regression

Parallel Computing

  • MCE - Many-Core Engine for Perl. Provides parallel processing capabilities. Several examples are provided in this thread.

MPI

GPU Computing

Simple fork-based Parallelization

  • perlfork - Perl’s built-in fork (and fork emulation on Windows)
  • forks - drop-in replacement for Perl’s threads module that uses forks; only works on Unixish systems
  • Parallel::ForkManager - simpler way to manage parallel tasks using forks
  • Parallel::Loops - wrapper over Parallel::ForkManager that also provides a simple means for shared data; communicates data back to parent using Storable and shared file handles, so not designed for large exchanges of data

Simple Perl thread-based Parallelization

  • perlthrtut - Perl’s built-in threads
  • forks - drop-in replacement for Perl’s threads module that uses forks; only works on Unixish systems
  • Thread:: - many thread-related modules on CPAN are in the Thread:: namespace

Hardware

Lab::Measurement - access measurement hardware for testing using lab hardware