Skip to main content

A toolkit for quickly calculating longest common substrings with specific relevance to non-parametric entropy estimation.

Project description

FastMatch

A package for quickly calculating longest common substrings with a fixed starting location of one substring. Once the two strings, $s_1$ and $s_2$ are defined, this package can be used to find the length of the longest substring that starts in the range $s2[0..j)$ and matches a prefix of the string $s1[i..n)$. This prefix must begin at index $i$ in $s_1$ and must end before index $j$ in $s_2$. The indices $(i,j)$ are passed as a list of tuples with increasing $i,j$, allowing many of these matches to be computed at a time.

This algorithm employs properties of a sorted suffix array to allow the longest match length to be found in O(1) with O(N) precomputation.

This function is designed to be used within a modified Kontoyannis Shannon entropy estimator, to improve computational speed. This implementation is currently provided in the ProcessEntropy package.

Example Usage

# load packages
import LCSFinder as lcs
import numpy as np

# initialise strings
list_source = np.random.randint(1,10,100)
list_target = np.random.randint(1,10,100)

# set up objects
source = lcs.Vector1D([int(x) for x in ([np.floor(x) for x in test1])])
target = lcs.Vector1D([int(x) for x in ([np.floor(x) for x in test2])])
ob = lcs.LCSFinder(source,target)

# set up indices to search from
l_t =  lcs.Vector2D(tuple((i,i+1) for i in range(len(list_source))))

ob.ComputeAllLCSs(l_t)

Requirements

  • C++ compiler C++11 or greater

  • Python 3.x

Installation

pip install LCSFinder

Project details


Download files

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

Source Distribution

LCSFinder-0.1.0.tar.gz (54.6 kB view hashes)

Uploaded Source

Built Distributions

LCSFinder-0.1.0-pp39-pypy39_pp73-win_amd64.whl (71.4 kB view hashes)

Uploaded PyPy Windows x86-64

LCSFinder-0.1.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (99.9 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

LCSFinder-0.1.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (105.7 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

LCSFinder-0.1.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl (72.2 kB view hashes)

Uploaded PyPy macOS 10.9+ x86-64

LCSFinder-0.1.0-pp38-pypy38_pp73-win_amd64.whl (71.4 kB view hashes)

Uploaded PyPy Windows x86-64

LCSFinder-0.1.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (99.9 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

LCSFinder-0.1.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (105.7 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

LCSFinder-0.1.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl (72.2 kB view hashes)

Uploaded PyPy macOS 10.9+ x86-64

LCSFinder-0.1.0-pp37-pypy37_pp73-win_amd64.whl (71.3 kB view hashes)

Uploaded PyPy Windows x86-64

LCSFinder-0.1.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (101.0 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

LCSFinder-0.1.0-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (106.6 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

LCSFinder-0.1.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl (72.2 kB view hashes)

Uploaded PyPy macOS 10.9+ x86-64

LCSFinder-0.1.0-cp311-cp311-win_amd64.whl (71.3 kB view hashes)

Uploaded CPython 3.11 Windows x86-64

LCSFinder-0.1.0-cp311-cp311-win32.whl (57.9 kB view hashes)

Uploaded CPython 3.11 Windows x86

LCSFinder-0.1.0-cp311-cp311-musllinux_1_1_x86_64.whl (1.2 MB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.1+ x86-64

LCSFinder-0.1.0-cp311-cp311-musllinux_1_1_i686.whl (1.2 MB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.1+ i686

LCSFinder-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (690.4 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

LCSFinder-0.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (668.4 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

LCSFinder-0.1.0-cp311-cp311-macosx_10_9_x86_64.whl (78.4 kB view hashes)

Uploaded CPython 3.11 macOS 10.9+ x86-64

LCSFinder-0.1.0-cp310-cp310-win_amd64.whl (71.4 kB view hashes)

Uploaded CPython 3.10 Windows x86-64

LCSFinder-0.1.0-cp310-cp310-win32.whl (57.9 kB view hashes)

Uploaded CPython 3.10 Windows x86

LCSFinder-0.1.0-cp310-cp310-musllinux_1_1_x86_64.whl (1.2 MB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.1+ x86-64

LCSFinder-0.1.0-cp310-cp310-musllinux_1_1_i686.whl (1.2 MB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.1+ i686

LCSFinder-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (679.1 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

LCSFinder-0.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (660.9 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

LCSFinder-0.1.0-cp310-cp310-macosx_10_9_x86_64.whl (78.3 kB view hashes)

Uploaded CPython 3.10 macOS 10.9+ x86-64

LCSFinder-0.1.0-cp39-cp39-win_amd64.whl (71.4 kB view hashes)

Uploaded CPython 3.9 Windows x86-64

LCSFinder-0.1.0-cp39-cp39-win32.whl (57.9 kB view hashes)

Uploaded CPython 3.9 Windows x86

LCSFinder-0.1.0-cp39-cp39-musllinux_1_1_x86_64.whl (1.2 MB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.1+ x86-64

LCSFinder-0.1.0-cp39-cp39-musllinux_1_1_i686.whl (1.2 MB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.1+ i686

LCSFinder-0.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (678.9 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

LCSFinder-0.1.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (660.7 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

LCSFinder-0.1.0-cp39-cp39-macosx_11_0_arm64.whl (64.0 kB view hashes)

Uploaded CPython 3.9 macOS 11.0+ ARM64

LCSFinder-0.1.0-cp39-cp39-macosx_10_9_x86_64.whl (78.3 kB view hashes)

Uploaded CPython 3.9 macOS 10.9+ x86-64

LCSFinder-0.1.0-cp38-cp38-win_amd64.whl (71.5 kB view hashes)

Uploaded CPython 3.8 Windows x86-64

LCSFinder-0.1.0-cp38-cp38-win32.whl (58.0 kB view hashes)

Uploaded CPython 3.8 Windows x86

LCSFinder-0.1.0-cp38-cp38-musllinux_1_1_x86_64.whl (1.2 MB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.1+ x86-64

LCSFinder-0.1.0-cp38-cp38-musllinux_1_1_i686.whl (1.2 MB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.1+ i686

LCSFinder-0.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (668.1 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

LCSFinder-0.1.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (650.6 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

LCSFinder-0.1.0-cp38-cp38-macosx_10_9_x86_64.whl (78.6 kB view hashes)

Uploaded CPython 3.8 macOS 10.9+ x86-64

LCSFinder-0.1.0-cp37-cp37m-win_amd64.whl (71.5 kB view hashes)

Uploaded CPython 3.7m Windows x86-64

LCSFinder-0.1.0-cp37-cp37m-win32.whl (58.1 kB view hashes)

Uploaded CPython 3.7m Windows x86

LCSFinder-0.1.0-cp37-cp37m-musllinux_1_1_x86_64.whl (1.2 MB view hashes)

Uploaded CPython 3.7m musllinux: musl 1.1+ x86-64

LCSFinder-0.1.0-cp37-cp37m-musllinux_1_1_i686.whl (1.2 MB view hashes)

Uploaded CPython 3.7m musllinux: musl 1.1+ i686

LCSFinder-0.1.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (663.9 kB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.17+ x86-64

LCSFinder-0.1.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (646.4 kB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

LCSFinder-0.1.0-cp37-cp37m-macosx_10_9_x86_64.whl (78.4 kB view hashes)

Uploaded CPython 3.7m macOS 10.9+ x86-64

LCSFinder-0.1.0-cp36-cp36m-win_amd64.whl (80.5 kB view hashes)

Uploaded CPython 3.6m Windows x86-64

LCSFinder-0.1.0-cp36-cp36m-win32.whl (64.1 kB view hashes)

Uploaded CPython 3.6m Windows x86

LCSFinder-0.1.0-cp36-cp36m-musllinux_1_1_x86_64.whl (1.2 MB view hashes)

Uploaded CPython 3.6m musllinux: musl 1.1+ x86-64

LCSFinder-0.1.0-cp36-cp36m-musllinux_1_1_i686.whl (1.2 MB view hashes)

Uploaded CPython 3.6m musllinux: musl 1.1+ i686

LCSFinder-0.1.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (664.5 kB view hashes)

Uploaded CPython 3.6m manylinux: glibc 2.17+ x86-64

LCSFinder-0.1.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (647.0 kB view hashes)

Uploaded CPython 3.6m manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

LCSFinder-0.1.0-cp36-cp36m-macosx_10_9_x86_64.whl (78.1 kB view hashes)

Uploaded CPython 3.6m macOS 10.9+ x86-64

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page