Skip to main content

Compact Bit-Sliced Signature Index (COBS)

Project description

Compact Bit-Sliced Signature Index (COBS)

CI

COBS (COmpact Bit-sliced Signature index) is a cross-over between an inverted index and Bloom filters. Our target application is to index k-mers of DNA samples or q-grams from text documents and process approximate pattern matching queries on the corpus with a user-chosen coverage threshold. Query results may contain a number of false positives which decreases exponentially with the query length and the false positive rate of the index determined at construction time. COBS' compact but simple data structure outperforms other indexes in construction time and query performance with Mantis by Pandey et al. in second place. However, unlike Mantis and other previous work, COBS does not need the complete index in RAM and is thus designed to scale to larger document sets.

cobs-architecture

COBS has two interfaces: ( Coverage Status )

More information about COBS is presented in our current research paper: Timo Bingmann, Phelim Bradley, Florian Gauger, and Zamin Iqbal. "COBS: a Compact Bit-Sliced Signature Index". In: 26th International Symposium on String Processing and Information Retrieval (SPIRE). pages 285-303. Spinger. October 2019. preprint arXiv:1905.09624.

If you use COBS in an academic context or publication, please cite our paper

@InProceedings{bingmann2019cobs,
  author =       {Timo Bingmann and Phelim Bradley and Florian Gauger and Zamin Iqbal},
  title =        {{COBS}: a Compact Bit-Sliced Signature Index},
  booktitle =    {26th International Conference on String Processing and Information Retrieval (SPIRE)},
  year =         2019,
  series =       {LNCS},
  pages =        {285--303},
  month =        oct,
  organization = {Springer},
  note =         {preprint arXiv:1905.09624},
}

Installation and First Steps

Installation

COBS requires CMake, a C++17 compiler or the Boost.Filesystem library.

Linux

To download and install COBS run:

git clone --recursive https://github.com/iqbal-lab-org/cobs.git
mkdir cobs/build
cd cobs/build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j4

and optionally run make test to check the build. Note that to download submodules, --recursive has to be provided.

OS X compilation

Using clang:

  1. Install boost-1.76: brew install boost@1.76
  2. Compile COBS with boost: cmake ..

Troubleshooting

Several issues might arise from your specific configuration.

Problems with openMP on Mac OS X

If installing OpenMP does not work, add -DNOOPENMP=1 argument to the cmake command.

Problems with python bindings

Skip python bindings compilation by adding -DSKIP_PYTHON=1 argument to the cmake command.

Problems with finding boost

Define BOOST_ROOT env variable and then compile:

export BOOST_ROOT="/usr/local/opt/boost@1.76"  # use your boost root path - this would be the path if installing boost using brew on Mac OS X
cmake  ..

Building an Index

COBS can read FASTA files (*.fa, *.fasta, *.fna, *.ffn, *.faa, *.frn, *.fa.gz, *.fasta.gz, *.fna.gz, *.ffn.gz, *.faa.gz, *.frn.gz), FASTQ files (*.fq, *.fastq, *.fq.gz., *.fastq.gz), "Multi-FASTA" and "Multi-FASTQ" files (*.mfasta, *.mfastq), McCortex files (*.ctx), or text files (*.txt). See below on details how they are parsed.

You can either recursively scan a directory for all files matching any of these files, or pass a *.list file which lists all paths COBS should index.

To check the document list to be indexed, run for example

src/cobs doc-list tests/data/fasta/

To construct a compact COBS index from these seven example documents run

src/cobs compact-construct tests/data/fasta/ example.cobs_compact

Or construct a compact COBS index from a list of documents by running

src/cobs compact-construct tests/data/fasta_files.list example.cobs_compact

The paths in the file list can be absolute or relative to the file list's path. Note that *.txt files are read as verbatim text files. You can force COBS to read a .txt file as a file list using --file-type list.

Check --help for many options.

Query an Index

COBS has a simple command line query tool:

src/cobs query -i example.cobs_compact AGTCAACGCTAAGGCATTTCCCCCCTGCCTCCTGCCTGCTGCCAAGCCCT

or a fasta file of queries with

src/cobs query -i example.cobs_compact -f query.fa

Multiple indices can be queried at once by adding more -i parameters.

Python Interface

COBS also has a Python frontend interface which can be used to construct and query an index. See https://bingmann.github.io/cobs-python-docs/ for a tutorial.

Experimental Results

In our paper we compare COBS against seven other k-mer indexing software packages. These are the main results, scaling by number of documents in the index, and in the second diagram shown per document.

cobs-experiments-scaling cobs-experiments-scaling-per-documents

More Details

File Types and How They Are Parsed

COBS can read FASTA files (*.fa, *.fasta, *.fa.gz, *.fasta.gz), FASTQ files (*.fq, *.fastq, *.fq.gz., *.fastq.gz), "Multi-FASTA" and "Multi-FASTQ" files (*.mfasta, *.mfastq), McCortex files (*.ctx), or text files (*.txt). Each file type is parsed slightly differently into q-grams or k-mers.

FASTA files are parsed as one document each. If a FASTA file contains multiple sequences or reads then they are combined into one document. Multiple sequences (separated by comments) are NOT concatenated trivially, instead the k-mers are extracted separately from each sequence. This means there are no erroneous k-mers from the beginning or end of crossing sequences. All newlines within a sequence are removed.

The k-mers from DNA sequences are automatically canonicalized (the lexicographically smaller is indexed). By adding the flag --no-canonicalize this process can be skipped. With canonicalization only ACGT letters are indexed, every other letter is mapped to binary zeros and index with the other data. A warning per FASTA/FASTQ file containing a non-ACGT letter is printed, but processing continues. With the flag --no-canonicalize any letters or text can be indexed.

FASTQ files are also parsed as one document each. The quality information is dropped and effectively everything is parsed identical to FASTA files.

Multi-FASTA or Multi-FASTQ files are parsed as many documents. Each sequence in the FASTA or FASTQ file is considered a separate document in the COBS index. Their names are append with _### where ### is the index of the subdocument.

McCortex files (*.ctx) contain a list of k-mers and these k-mers are indexes individually. The graph information is ignored. Only k=31 is currently supported.

Text files (*.txt) are parsed as verbatim binary documents. All q-grams are extracted, including newlines and other whitespace.

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

cobs_reloaded-0.1.1.tar.gz (2.1 MB view details)

Uploaded Source

Built Distributions

cobs_reloaded-0.1.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (954.2 kB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

cobs_reloaded-0.1.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl (490.4 kB view details)

Uploaded PyPy macOS 11.0+ ARM64

cobs_reloaded-0.1.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl (526.5 kB view details)

Uploaded PyPy macOS 10.15+ x86-64

cobs_reloaded-0.1.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (954.1 kB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

cobs_reloaded-0.1.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl (490.2 kB view details)

Uploaded PyPy macOS 11.0+ ARM64

cobs_reloaded-0.1.1-pp39-pypy39_pp73-macosx_10_15_x86_64.whl (526.4 kB view details)

Uploaded PyPy macOS 10.15+ x86-64

cobs_reloaded-0.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (954.2 kB view details)

Uploaded CPython 3.13 manylinux: glibc 2.17+ x86-64

cobs_reloaded-0.1.1-cp313-cp313-macosx_11_0_arm64.whl (492.3 kB view details)

Uploaded CPython 3.13 macOS 11.0+ ARM64

cobs_reloaded-0.1.1-cp313-cp313-macosx_10_15_x86_64.whl (529.5 kB view details)

Uploaded CPython 3.13 macOS 10.15+ x86-64

cobs_reloaded-0.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (954.3 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

cobs_reloaded-0.1.1-cp312-cp312-macosx_11_0_arm64.whl (492.2 kB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

cobs_reloaded-0.1.1-cp312-cp312-macosx_10_15_x86_64.whl (529.4 kB view details)

Uploaded CPython 3.12 macOS 10.15+ x86-64

cobs_reloaded-0.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (954.7 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

cobs_reloaded-0.1.1-cp311-cp311-macosx_11_0_arm64.whl (492.0 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

cobs_reloaded-0.1.1-cp311-cp311-macosx_10_15_x86_64.whl (528.1 kB view details)

Uploaded CPython 3.11 macOS 10.15+ x86-64

cobs_reloaded-0.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (953.4 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

cobs_reloaded-0.1.1-cp310-cp310-macosx_11_0_arm64.whl (490.6 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

cobs_reloaded-0.1.1-cp310-cp310-macosx_10_15_x86_64.whl (526.8 kB view details)

Uploaded CPython 3.10 macOS 10.15+ x86-64

cobs_reloaded-0.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (953.7 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

cobs_reloaded-0.1.1-cp39-cp39-macosx_11_0_arm64.whl (490.7 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

cobs_reloaded-0.1.1-cp39-cp39-macosx_10_15_x86_64.whl (526.8 kB view details)

Uploaded CPython 3.9 macOS 10.15+ x86-64

File details

Details for the file cobs_reloaded-0.1.1.tar.gz.

File metadata

  • Download URL: cobs_reloaded-0.1.1.tar.gz
  • Upload date:
  • Size: 2.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for cobs_reloaded-0.1.1.tar.gz
Algorithm Hash digest
SHA256 09a0c481110c764a2f867bb9eebe40a443576029f6db8e0ec7e11c8f6ed663a3
MD5 5675574321a112861c8f0b0a26717c24
BLAKE2b-256 37cc907b89367c80c0baa789fdf0620536ba2890bf24f36318eee464786da4a8

See more details on using hashes here.

File details

Details for the file cobs_reloaded-0.1.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cobs_reloaded-0.1.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c2e2e72de9a02586e3ea9ace9f6d98cd9d4315ae6f6ba4864492aade2681acb2
MD5 ef9335f344b86d0b6f762d03e7b77de7
BLAKE2b-256 13c8febf0fd9d22846d8f51f5cdbe58bb4b0ccae983f94ea1fa46d5bbe4878f0

See more details on using hashes here.

File details

Details for the file cobs_reloaded-0.1.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cobs_reloaded-0.1.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ea4a2db751f4fa745a3303393dba35ab01240715d0c258b723e69a8ef988ea1e
MD5 4a0814d7773be3546a9175d27e97edd0
BLAKE2b-256 cf7d9c50114379a3ee3a5b4e8db18c80ab1fe4b1873e557b15bdacd3a02862e1

See more details on using hashes here.

File details

Details for the file cobs_reloaded-0.1.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for cobs_reloaded-0.1.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 b89b2d8a836793b8f0118fbef01585b5653e6a6844316b562cc1e3787dabc36b
MD5 79f7b08b959eef0d824a12e96c13b5b0
BLAKE2b-256 8dfc427dbefa5a95ffd8f052e137ef32b0dca70639f44adb14b508326dd92086

See more details on using hashes here.

File details

Details for the file cobs_reloaded-0.1.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cobs_reloaded-0.1.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1dd1ca4ef3ca94257709a928243f1941a292dc8f8e93085bcbbc462153104f1e
MD5 79abe0951dbb8eaec1b6fcd67e18c620
BLAKE2b-256 92b6aef699f5c1f331d23fa5434e9f8597eb4b033b6c6d4ec1e336a80020ff66

See more details on using hashes here.

File details

Details for the file cobs_reloaded-0.1.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cobs_reloaded-0.1.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 30ae9fe1c3dd8f65f0d02f95ba34188dcbb5908d170718e29864f37ecf41d4f8
MD5 85b346426ca3d59ef20ea040c0b438e7
BLAKE2b-256 9c52066a5065c184229c05a2996d23fd93af9044ee038215361587ee5ad5228d

See more details on using hashes here.

File details

Details for the file cobs_reloaded-0.1.1-pp39-pypy39_pp73-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for cobs_reloaded-0.1.1-pp39-pypy39_pp73-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 85fdbbe06edaadcc6686a8823921e3a55a583f44c2f65022a1b774994fdd5ff8
MD5 e9d98df124bc8ecc1328799072e9f285
BLAKE2b-256 5ca27a7b055f4f1c39f835f8dc55452861c1c42b9da11b3dc24f4dd31e955043

See more details on using hashes here.

File details

Details for the file cobs_reloaded-0.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cobs_reloaded-0.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 767a68cb4be60de5099bf734d459ee6887cbbf8d6f616722522dea704b0afbd0
MD5 deb99ea6eb7478eb166828ee0d78bd07
BLAKE2b-256 fba0131ad809660e63c7deabd9eb372912bf59646ecbb20f11464b3f3cbf12fb

See more details on using hashes here.

File details

Details for the file cobs_reloaded-0.1.1-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cobs_reloaded-0.1.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ab72c2fff4f618220e9c7d89ff7a62e2b0e52fae6f50c62b03bd1ddf407d5b62
MD5 9bc932bdb940c02c7d64f0967de38514
BLAKE2b-256 3a00c9ac19a9b9a6b1ac43025857c0649de9f9b2b66202f42b1ad7852241ac65

See more details on using hashes here.

File details

Details for the file cobs_reloaded-0.1.1-cp313-cp313-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for cobs_reloaded-0.1.1-cp313-cp313-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 8dc430a813cf1ab5cf8922fd4c2f0a63054931f47378f5979476ce4a54957529
MD5 d567171cf007f445701e203d0f3ec273
BLAKE2b-256 b5cd7eba0dd658580f541a8eb80c4ef6c57d3d948f5d7b2b8b72650b4e586bf6

See more details on using hashes here.

File details

Details for the file cobs_reloaded-0.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cobs_reloaded-0.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4dcacff381a0d434e0866a770989ec8a76b4814d4deb976cafa886116cc3bb61
MD5 746ff59828b9940b902ccec83f6d734a
BLAKE2b-256 2215e2514f2a08eedf920f5ce29ffdb55d0afa6f142e2d5f307a222b4d8628ad

See more details on using hashes here.

File details

Details for the file cobs_reloaded-0.1.1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cobs_reloaded-0.1.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9ae0b9ef55e622247413076281953536ef253b187322308dbbe6d2236b91a33d
MD5 f6249d4226f064454b6e81b355a93a4a
BLAKE2b-256 7e638b817ecabe98160f8b05df455e2d7017527cad8e9e01f3321a4d0664832c

See more details on using hashes here.

File details

Details for the file cobs_reloaded-0.1.1-cp312-cp312-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for cobs_reloaded-0.1.1-cp312-cp312-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 4387265213d9ddcff2860530322da832af21654c510241336f73aad366b338b9
MD5 2ce5feb4f9e5170b84312a4a7ceb5653
BLAKE2b-256 f1a40065e0341b45ecd299a5f3df4a13386000cd886e8f25f0ce93c741cc9ac4

See more details on using hashes here.

File details

Details for the file cobs_reloaded-0.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cobs_reloaded-0.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 960e758cd26d3cec35b1f8070e009ea24b016de43ebcb34adb875ed3ef4833e6
MD5 a202c6952fb094bcc3c2ff1f87c1b6e4
BLAKE2b-256 05edfe056df562d5461ce5fc390691259c15d97fe40298574436d66c19c443fc

See more details on using hashes here.

File details

Details for the file cobs_reloaded-0.1.1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cobs_reloaded-0.1.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fc2d922c08ffc45b6c5c841a82dba8816b96918557a90ea3553a6c4ce0a74151
MD5 2bf9dd553b00f14735de656f4589c76d
BLAKE2b-256 4d5662f642e75d03d297f57c770ce064621aba8700743eb4bbc761cd845ae6b7

See more details on using hashes here.

File details

Details for the file cobs_reloaded-0.1.1-cp311-cp311-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for cobs_reloaded-0.1.1-cp311-cp311-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 c8f688b39664e49c5ad9d483dbc2fe1e7c99bc664ae1021c4817f5c9e833fbe2
MD5 c0af59ca0eb14f702960eccb9c478669
BLAKE2b-256 6721f53dc8c55423bb9123a6ea062b6868c925427bba8dcf47b00e4e6cd4bdc0

See more details on using hashes here.

File details

Details for the file cobs_reloaded-0.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cobs_reloaded-0.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 66d7758d03baff39eefe19b03a83741dbacde01ec5c2671a959595021419d26a
MD5 124e8ff1beb35c456a46175f2cf777b8
BLAKE2b-256 3b34302c3427418a38377f8cba25fcbe0fd3dab10beb229d1385c713c96add45

See more details on using hashes here.

File details

Details for the file cobs_reloaded-0.1.1-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cobs_reloaded-0.1.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2a753f3c41e5e9b656ccdac29343f2b947a161438e0c6e34aa51372ee24f5af2
MD5 e31b36731c9c0f85472d3229c66f30cb
BLAKE2b-256 0a152fc2588a3b365012c81dbb49dd74358c907c57927f654cdcc48eb148ad04

See more details on using hashes here.

File details

Details for the file cobs_reloaded-0.1.1-cp310-cp310-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for cobs_reloaded-0.1.1-cp310-cp310-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 74e8a8452f5df610e69a1250486073a434bfd94c59e01f206081dc5bac143db3
MD5 c02ef54a0cab2aefe3a69f61ef00ea58
BLAKE2b-256 d277293872eb10fac72ace0983251d59aca9ee5fd14ae0b4e71d4c99ac9ae07f

See more details on using hashes here.

File details

Details for the file cobs_reloaded-0.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cobs_reloaded-0.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a80c137c923b7c17a2c72da1428bbb66fb587d6a3c311fef2166d87b3eff66db
MD5 e87d75aa958249f7ae635f6a902b7b31
BLAKE2b-256 d64ca10642790183833db5d19de68e25e6c4f79b6cb4601c206eec1c7a1d3d67

See more details on using hashes here.

File details

Details for the file cobs_reloaded-0.1.1-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cobs_reloaded-0.1.1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5c6b650352db8179adfe87489fae70093904c6f925bfd90c53cd64e0a5328fb6
MD5 0daa4b6aecaf7fcf3a001cc22169be78
BLAKE2b-256 f883d0a164e6c19259fe4e95e83248e328bc86400416894e04f01523621f1a6f

See more details on using hashes here.

File details

Details for the file cobs_reloaded-0.1.1-cp39-cp39-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for cobs_reloaded-0.1.1-cp39-cp39-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 5489bcfd5013f9f0a178786c1811d350fc0b7763cfbb5d9f2248a92baba11109
MD5 b3539a2a08fa355a17e35e3bb87eb304
BLAKE2b-256 d22703bb4db543e7f45834931f137e0153c3834fc6667668daf66488cfa779c1

See more details on using hashes here.

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