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 ------------ - All code is written in Python 3. - Some code depends on the 'numpy' library: - show_database_time.py - solve_linear_sequence.py - Some code depends on the 'matplotlib' library: - show_database_time.py Description of files -------------------- Non-Python files: filename | description ----------------------------------|------------------------------------------------------------------------------------ README.md | Text file (markdown format) description of the project. catalog_files/*.json | Catalog files, describing parametrized sequence generating functions. Python scripts files: filename | description ----------------------------------|------------------------------------------------------------------------------------ fetch_oeis_database.py | Fetch and refresh data from the remote OEIS database to a local sqlite3 database. show_database_time.py | Visualize time stamps in a given local sqlite3 OEIS database. parse_oeis_database.py | Parse a local sqlite3 database and produce a local pickle database. find_sequences.py | Probe a local pickle database for a given sequence (work in progress). pickle_to_json.py | Read a local pickle database and write a JSON version. solve_linear_sequence.py | Find linear sequences in a local 'pickle' database. check_database.py | Perform a number of checks on the data in a local pickle database. verify_oeis_catalog.py | Verify the catalog. Python modules: filename | description ----------------------------------|------------------------------------------------------------------------------------ fraction_based_linear_algebra.py | Perform matrix inversion without loss of precision using the Fraction type. charmap.py | Defines lists of acceptable characters for the OEIS directives. OeisEntry.py | Defines a simple class that contains (most of) the data of a single OEIS sequence. timer.py | Simplifies timing lengthy operations using a context manager. fetch_remote_oeis_entry.py | Fetches a single sequence's data from the OEIS website (www.oeis.org). catalog.py | Access the local catalog. How it all fits together ------------------------ Overview of OEIS tools