Ushuffle version 1.00
=====================

A Perl interface to uShuffle, a library for shuffling sequences while
preserving their k-let counts (Jiang, Anderson, Gillespie and Mayne, BMC
Bioinformatics 9:192, 2008). Such shuffles are the usual null model when
assessing the significance of a feature of a biological sequence.

    use Ushuffle qw(shuffle set_seed);

    # one shuffle that keeps all dinucleotide counts of the input
    my $shuffled = shuffle('ACACGUAGAUGGGGA', 2);

    # many shuffles of the same sequence
    my $shuffler = Ushuffle::Shuffler->new('ACACGUAGAUGGGGA', 2);
    print $shuffler->shuffle, "\n" for 1 .. 100;

    # reproducible output
    set_seed(42);

After installation, "perldoc Ushuffle" and "perldoc Ushuffle::Shuffler"
show the full documentation.

INSTALLATION

To install this module type the following:

   perl Makefile.PL
   make
   make test
   make install

DEPENDENCIES

Perl 5.10.1 or later, a C compiler, and a C library providing random() and
srandom(). No Perl modules outside the core are needed.

BUNDLED LIBRARY

ushufflelib/ contains ushuffle.c and ushuffle.h, unmodified, from the
master branch of https://github.com/s-will/ushuffle at commit 2c4b8f3
(1 October 2026): release 1.2.2 plus the fix for an integer overflow in the
hash function that was merged there as pull request #1.

SUPPORT

Please report bugs through the issue tracker at
https://github.com/mtw/ushuffle-perl/issues

COPYRIGHT AND LICENCE

The Perl interface is Copyright (c) 2026 Michael T. Wolfinger.
The uShuffle library is Copyright (c) 2007 Minghui Jiang, James Anderson,
Joel Gillespie, and Martin Mayne.

Both are distributed under the BSD licence in the file LICENSE.
