Home

Awesome

OEIS Tools

This repository contains scripts to download, process, and analyze data from the Online Encyclopedia of Integer Sequences (OEIS), as hosted on http://www.oeis.org.

Overview

Our tools handle OEIS data from three sources:

  1. remote: the OEIS database residing on the oeis.org server. The remote database can be accessed via HTTP or HTTPS requests.
  2. local sqlite3: a replica of the remote database as a local SQLite3 database file.
  3. local pickle: the OEIS database a a local pickle-format file, used for local analysis. The "pickle" format is Python-specific.

The local sqlite3 database is obtained from the remote database by an automatic web-crawler called 'fetch_oeis_database.py'. It contains the sequence metadata in the internal format as it is used on the remote side, as well as so called 'b-file' data that contain sequence data a(n) up to high values of n.

The local pickle format database is obtained from the local_sqlite3 database by parsing the data and turning it into OeisEntry instances. The pickled list of all OeisEntry instances can be read in its entirety within a few seconds.

Apart from these sources that describe the OEIS data, we also use the "catalog", which is a Python module that contains implementations of sequence generating functions.

Dependencies

Description of files

Non-Python files:

filenamedescription
README.mdText file (markdown format) description of the project.
catalog_files/*.jsonCatalog files, describing parametrized sequence generating functions.

Python scripts files:

filenamedescription
fetch_oeis_database.pyFetch and refresh data from the remote OEIS database to a local sqlite3 database.
show_database_time.pyVisualize time stamps in a given local sqlite3 OEIS database.
parse_oeis_database.pyParse a local sqlite3 database and produce a local pickle database.
find_sequences.pyProbe a local pickle database for a given sequence (work in progress).
pickle_to_json.pyRead a local pickle database and write a JSON version.
solve_linear_sequence.pyFind linear sequences in a local 'pickle' database.
check_database.pyPerform a number of checks on the data in a local pickle database.
verify_oeis_catalog.pyVerify the catalog.

Python modules:

filenamedescription
fraction_based_linear_algebra.pyPerform matrix inversion without loss of precision using the Fraction type.
charmap.pyDefines lists of acceptable characters for the OEIS directives.
OeisEntry.pyDefines a simple class that contains (most of) the data of a single OEIS sequence.
timer.pySimplifies timing lengthy operations using a context manager.
fetch_remote_oeis_entry.pyFetches a single sequence's data from the OEIS website (www.oeis.org).
catalog.pyAccess the local catalog.

How it all fits together

<img alt="Overview of OEIS tools" src="docs/oeis-tools.png" width="75%">