Skip to content

postbis

Adds compressed DNA, RNA, amino-acid, and aligned sequence types with casts, operators, indexes, and bioinformatics functions.

postbis : Adds compressed DNA, RNA, amino-acid, and aligned sequence types with casts, operators, indexes, and bioinformatics functions.

Overview

ID Extension Package Version Category License Language
3760 postbis postbis 1.0 TYPE PostgreSQL C
Attribute Has Binary Has Library Need Load Has DDL Relocatable Trusted
--s-d-r No Yes No Yes yes no
The packaged repository is an untagged copy of PostBIS, inactive since 2019; Pigsty pins commit ce454ebf and patches PostgreSQL 14-18 compatibility plus alphabet output and indexed slice correctness.

Packages

Type Repo Version PG Major Compatibility Package Pattern Dependencies
EXT PIGSTY 1.0 18 17 16 15 14 postbis -
RPM PIGSTY 1.0 18 17 16 15 14 postbis_$v -
DEB PIGSTY 1.0 18 17 16 15 14 postgresql-$v-postbis -
Linux / PG PG18 PG17 PG16 PG15 PG14
el8.x86_64 PIGSTY 1.0 PIGSTY 1.0 PIGSTY 1.0 PIGSTY 1.0 PIGSTY 1.0
el8.aarch64 PIGSTY 1.0 PIGSTY 1.0 PIGSTY 1.0 PIGSTY 1.0 PIGSTY 1.0
el9.x86_64 PIGSTY 1.0 PIGSTY 1.0 PIGSTY 1.0 PIGSTY 1.0 PIGSTY 1.0
el9.aarch64 PIGSTY 1.0 PIGSTY 1.0 PIGSTY 1.0 PIGSTY 1.0 PIGSTY 1.0
el10.x86_64 PIGSTY 1.0 PIGSTY 1.0 PIGSTY 1.0 PIGSTY 1.0 PIGSTY 1.0
el10.aarch64 PIGSTY 1.0 PIGSTY 1.0 PIGSTY 1.0 PIGSTY 1.0 PIGSTY 1.0
d12.x86_64 PIGSTY 1.0 PIGSTY 1.0 PIGSTY 1.0 PIGSTY 1.0 PIGSTY 1.0
d12.aarch64 PIGSTY 1.0 PIGSTY 1.0 PIGSTY 1.0 PIGSTY 1.0 PIGSTY 1.0
d13.x86_64 PIGSTY 1.0 PIGSTY 1.0 PIGSTY 1.0 PIGSTY 1.0 PIGSTY 1.0
d13.aarch64 PIGSTY 1.0 PIGSTY 1.0 PIGSTY 1.0 PIGSTY 1.0 PIGSTY 1.0
u22.x86_64 PIGSTY 1.0 PIGSTY 1.0 PIGSTY 1.0 PIGSTY 1.0 PIGSTY 1.0
u22.aarch64 PIGSTY 1.0 PIGSTY 1.0 PIGSTY 1.0 PIGSTY 1.0 PIGSTY 1.0
u24.x86_64 PIGSTY 1.0 PIGSTY 1.0 PIGSTY 1.0 PIGSTY 1.0 PIGSTY 1.0
u24.aarch64 PIGSTY 1.0 PIGSTY 1.0 PIGSTY 1.0 PIGSTY 1.0 PIGSTY 1.0
u26.x86_64 PIGSTY 1.0 PIGSTY 1.0 PIGSTY 1.0 PIGSTY 1.0 PIGSTY 1.0
u26.aarch64 PIGSTY 1.0 PIGSTY 1.0 PIGSTY 1.0 PIGSTY 1.0 PIGSTY 1.0
Package Version OS ORG SIZE File URL
postbis_18 1.0 el8.x86_64 pigsty 65.4 KiB postbis_18-1.0-2PIGSTY.el8.x86_64.rpm
postbis_18 1.0 el8.aarch64 pigsty 61.7 KiB postbis_18-1.0-2PIGSTY.el8.aarch64.rpm
postbis_18 1.0 el9.x86_64 pigsty 61.8 KiB postbis_18-1.0-2PIGSTY.el9.x86_64.rpm
postbis_18 1.0 el9.aarch64 pigsty 59.8 KiB postbis_18-1.0-2PIGSTY.el9.aarch64.rpm
postbis_18 1.0 el10.x86_64 pigsty 63.6 KiB postbis_18-1.0-2PIGSTY.el10.x86_64.rpm
postbis_18 1.0 el10.aarch64 pigsty 60.5 KiB postbis_18-1.0-2PIGSTY.el10.aarch64.rpm
postgresql-18-postbis 1.0 d12.x86_64 pigsty 152.2 KiB postgresql-18-postbis_1.0-2PIGSTY~bookworm_amd64.deb
postgresql-18-postbis 1.0 d12.aarch64 pigsty 147.1 KiB postgresql-18-postbis_1.0-2PIGSTY~bookworm_arm64.deb
postgresql-18-postbis 1.0 d13.x86_64 pigsty 153.2 KiB postgresql-18-postbis_1.0-2PIGSTY~trixie_amd64.deb
postgresql-18-postbis 1.0 d13.aarch64 pigsty 147.8 KiB postgresql-18-postbis_1.0-2PIGSTY~trixie_arm64.deb
postgresql-18-postbis 1.0 u22.x86_64 pigsty 162.7 KiB postgresql-18-postbis_1.0-2PIGSTY~jammy_amd64.deb
postgresql-18-postbis 1.0 u22.aarch64 pigsty 160.9 KiB postgresql-18-postbis_1.0-2PIGSTY~jammy_arm64.deb
postgresql-18-postbis 1.0 u24.x86_64 pigsty 160.6 KiB postgresql-18-postbis_1.0-2PIGSTY~noble_amd64.deb
postgresql-18-postbis 1.0 u24.aarch64 pigsty 157.8 KiB postgresql-18-postbis_1.0-2PIGSTY~noble_arm64.deb
postgresql-18-postbis 1.0 u26.x86_64 pigsty 160.4 KiB postgresql-18-postbis_1.0-2PIGSTY~resolute_amd64.deb
postgresql-18-postbis 1.0 u26.aarch64 pigsty 157.3 KiB postgresql-18-postbis_1.0-2PIGSTY~resolute_arm64.deb
Package Version OS ORG SIZE File URL
postbis_17 1.0 el8.x86_64 pigsty 65.4 KiB postbis_17-1.0-2PIGSTY.el8.x86_64.rpm
postbis_17 1.0 el8.aarch64 pigsty 61.7 KiB postbis_17-1.0-2PIGSTY.el8.aarch64.rpm
postbis_17 1.0 el9.x86_64 pigsty 61.8 KiB postbis_17-1.0-2PIGSTY.el9.x86_64.rpm
postbis_17 1.0 el9.aarch64 pigsty 59.9 KiB postbis_17-1.0-2PIGSTY.el9.aarch64.rpm
postbis_17 1.0 el10.x86_64 pigsty 63.6 KiB postbis_17-1.0-2PIGSTY.el10.x86_64.rpm
postbis_17 1.0 el10.aarch64 pigsty 60.5 KiB postbis_17-1.0-2PIGSTY.el10.aarch64.rpm
postgresql-17-postbis 1.0 d12.x86_64 pigsty 152.1 KiB postgresql-17-postbis_1.0-2PIGSTY~bookworm_amd64.deb
postgresql-17-postbis 1.0 d12.aarch64 pigsty 147.2 KiB postgresql-17-postbis_1.0-2PIGSTY~bookworm_arm64.deb
postgresql-17-postbis 1.0 d13.x86_64 pigsty 153.1 KiB postgresql-17-postbis_1.0-2PIGSTY~trixie_amd64.deb
postgresql-17-postbis 1.0 d13.aarch64 pigsty 147.9 KiB postgresql-17-postbis_1.0-2PIGSTY~trixie_arm64.deb
postgresql-17-postbis 1.0 u22.x86_64 pigsty 168.9 KiB postgresql-17-postbis_1.0-2PIGSTY~jammy_amd64.deb
postgresql-17-postbis 1.0 u22.aarch64 pigsty 167.0 KiB postgresql-17-postbis_1.0-2PIGSTY~jammy_arm64.deb
postgresql-17-postbis 1.0 u24.x86_64 pigsty 160.6 KiB postgresql-17-postbis_1.0-2PIGSTY~noble_amd64.deb
postgresql-17-postbis 1.0 u24.aarch64 pigsty 157.8 KiB postgresql-17-postbis_1.0-2PIGSTY~noble_arm64.deb
postgresql-17-postbis 1.0 u26.x86_64 pigsty 160.4 KiB postgresql-17-postbis_1.0-2PIGSTY~resolute_amd64.deb
postgresql-17-postbis 1.0 u26.aarch64 pigsty 157.2 KiB postgresql-17-postbis_1.0-2PIGSTY~resolute_arm64.deb
Package Version OS ORG SIZE File URL
postbis_16 1.0 el8.x86_64 pigsty 65.4 KiB postbis_16-1.0-2PIGSTY.el8.x86_64.rpm
postbis_16 1.0 el8.aarch64 pigsty 61.7 KiB postbis_16-1.0-2PIGSTY.el8.aarch64.rpm
postbis_16 1.0 el9.x86_64 pigsty 61.8 KiB postbis_16-1.0-2PIGSTY.el9.x86_64.rpm
postbis_16 1.0 el9.aarch64 pigsty 59.9 KiB postbis_16-1.0-2PIGSTY.el9.aarch64.rpm
postbis_16 1.0 el10.x86_64 pigsty 63.6 KiB postbis_16-1.0-2PIGSTY.el10.x86_64.rpm
postbis_16 1.0 el10.aarch64 pigsty 60.5 KiB postbis_16-1.0-2PIGSTY.el10.aarch64.rpm
postgresql-16-postbis 1.0 d12.x86_64 pigsty 152.1 KiB postgresql-16-postbis_1.0-2PIGSTY~bookworm_amd64.deb
postgresql-16-postbis 1.0 d12.aarch64 pigsty 147.2 KiB postgresql-16-postbis_1.0-2PIGSTY~bookworm_arm64.deb
postgresql-16-postbis 1.0 d13.x86_64 pigsty 153.2 KiB postgresql-16-postbis_1.0-2PIGSTY~trixie_amd64.deb
postgresql-16-postbis 1.0 d13.aarch64 pigsty 148.0 KiB postgresql-16-postbis_1.0-2PIGSTY~trixie_arm64.deb
postgresql-16-postbis 1.0 u22.x86_64 pigsty 169.0 KiB postgresql-16-postbis_1.0-2PIGSTY~jammy_amd64.deb
postgresql-16-postbis 1.0 u22.aarch64 pigsty 166.9 KiB postgresql-16-postbis_1.0-2PIGSTY~jammy_arm64.deb
postgresql-16-postbis 1.0 u24.x86_64 pigsty 160.6 KiB postgresql-16-postbis_1.0-2PIGSTY~noble_amd64.deb
postgresql-16-postbis 1.0 u24.aarch64 pigsty 157.8 KiB postgresql-16-postbis_1.0-2PIGSTY~noble_arm64.deb
postgresql-16-postbis 1.0 u26.x86_64 pigsty 160.3 KiB postgresql-16-postbis_1.0-2PIGSTY~resolute_amd64.deb
postgresql-16-postbis 1.0 u26.aarch64 pigsty 157.2 KiB postgresql-16-postbis_1.0-2PIGSTY~resolute_arm64.deb
Package Version OS ORG SIZE File URL
postbis_15 1.0 el8.x86_64 pigsty 66.4 KiB postbis_15-1.0-2PIGSTY.el8.x86_64.rpm
postbis_15 1.0 el8.aarch64 pigsty 62.4 KiB postbis_15-1.0-2PIGSTY.el8.aarch64.rpm
postbis_15 1.0 el9.x86_64 pigsty 63.3 KiB postbis_15-1.0-2PIGSTY.el9.x86_64.rpm
postbis_15 1.0 el9.aarch64 pigsty 61.3 KiB postbis_15-1.0-2PIGSTY.el9.aarch64.rpm
postbis_15 1.0 el10.x86_64 pigsty 64.9 KiB postbis_15-1.0-2PIGSTY.el10.x86_64.rpm
postbis_15 1.0 el10.aarch64 pigsty 61.5 KiB postbis_15-1.0-2PIGSTY.el10.aarch64.rpm
postgresql-15-postbis 1.0 d12.x86_64 pigsty 153.6 KiB postgresql-15-postbis_1.0-2PIGSTY~bookworm_amd64.deb
postgresql-15-postbis 1.0 d12.aarch64 pigsty 148.4 KiB postgresql-15-postbis_1.0-2PIGSTY~bookworm_arm64.deb
postgresql-15-postbis 1.0 d13.x86_64 pigsty 154.6 KiB postgresql-15-postbis_1.0-2PIGSTY~trixie_amd64.deb
postgresql-15-postbis 1.0 d13.aarch64 pigsty 149.1 KiB postgresql-15-postbis_1.0-2PIGSTY~trixie_arm64.deb
postgresql-15-postbis 1.0 u22.x86_64 pigsty 170.6 KiB postgresql-15-postbis_1.0-2PIGSTY~jammy_amd64.deb
postgresql-15-postbis 1.0 u22.aarch64 pigsty 168.0 KiB postgresql-15-postbis_1.0-2PIGSTY~jammy_arm64.deb
postgresql-15-postbis 1.0 u24.x86_64 pigsty 161.3 KiB postgresql-15-postbis_1.0-2PIGSTY~noble_amd64.deb
postgresql-15-postbis 1.0 u24.aarch64 pigsty 158.6 KiB postgresql-15-postbis_1.0-2PIGSTY~noble_arm64.deb
postgresql-15-postbis 1.0 u26.x86_64 pigsty 161.7 KiB postgresql-15-postbis_1.0-2PIGSTY~resolute_amd64.deb
postgresql-15-postbis 1.0 u26.aarch64 pigsty 158.2 KiB postgresql-15-postbis_1.0-2PIGSTY~resolute_arm64.deb
Package Version OS ORG SIZE File URL
postbis_14 1.0 el8.x86_64 pigsty 66.4 KiB postbis_14-1.0-2PIGSTY.el8.x86_64.rpm
postbis_14 1.0 el8.aarch64 pigsty 62.5 KiB postbis_14-1.0-2PIGSTY.el8.aarch64.rpm
postbis_14 1.0 el9.x86_64 pigsty 63.7 KiB postbis_14-1.0-2PIGSTY.el9.x86_64.rpm
postbis_14 1.0 el9.aarch64 pigsty 61.4 KiB postbis_14-1.0-2PIGSTY.el9.aarch64.rpm
postbis_14 1.0 el10.x86_64 pigsty 64.5 KiB postbis_14-1.0-2PIGSTY.el10.x86_64.rpm
postbis_14 1.0 el10.aarch64 pigsty 61.7 KiB postbis_14-1.0-2PIGSTY.el10.aarch64.rpm
postgresql-14-postbis 1.0 d12.x86_64 pigsty 153.7 KiB postgresql-14-postbis_1.0-2PIGSTY~bookworm_amd64.deb
postgresql-14-postbis 1.0 d12.aarch64 pigsty 148.3 KiB postgresql-14-postbis_1.0-2PIGSTY~bookworm_arm64.deb
postgresql-14-postbis 1.0 d13.x86_64 pigsty 154.5 KiB postgresql-14-postbis_1.0-2PIGSTY~trixie_amd64.deb
postgresql-14-postbis 1.0 d13.aarch64 pigsty 149.2 KiB postgresql-14-postbis_1.0-2PIGSTY~trixie_arm64.deb
postgresql-14-postbis 1.0 u22.x86_64 pigsty 170.5 KiB postgresql-14-postbis_1.0-2PIGSTY~jammy_amd64.deb
postgresql-14-postbis 1.0 u22.aarch64 pigsty 168.0 KiB postgresql-14-postbis_1.0-2PIGSTY~jammy_arm64.deb
postgresql-14-postbis 1.0 u24.x86_64 pigsty 161.3 KiB postgresql-14-postbis_1.0-2PIGSTY~noble_amd64.deb
postgresql-14-postbis 1.0 u24.aarch64 pigsty 158.6 KiB postgresql-14-postbis_1.0-2PIGSTY~noble_arm64.deb
postgresql-14-postbis 1.0 u26.x86_64 pigsty 161.7 KiB postgresql-14-postbis_1.0-2PIGSTY~resolute_amd64.deb
postgresql-14-postbis 1.0 u26.aarch64 pigsty 158.2 KiB postgresql-14-postbis_1.0-2PIGSTY~resolute_arm64.deb

Source

pig build pkg postbis;		# build rpm/deb

Install

Make sure PGDG and PIGSTY repo available:

pig repo add pgsql -u   # add both repo and update cache

Install this extension with pig:

pig install postbis;		# install via package name, for the active PG version

pig install postbis -v 18;   # install for PG 18
pig install postbis -v 17;   # install for PG 17
pig install postbis -v 16;   # install for PG 16
pig install postbis -v 15;   # install for PG 15
pig install postbis -v 14;   # install for PG 14

Create this extension with:

CREATE EXTENSION postbis;

Usage

Sources:

postbis 1.0 provides compact native types for DNA, RNA, amino-acid, and aligned sequences. It also provides configurable alphabets and type modifiers, casts, sequence operations, biological transformations, comparison operators, and B-tree and hash operator classes.

Store typed sequences

CREATE EXTENSION postbis;

CREATE TABLE specimen (
  specimen_id bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
  dna dna_sequence(SHORT, FLC, CASE_SENSITIVE) NOT NULL,
  rna rna_sequence(IUPAC, CASE_SENSITIVE),
  protein aa_sequence(IUPAC, CASE_SENSITIVE)
);

INSERT INTO specimen (dna, rna, protein)
VALUES ('AACCGGTT', 'AACGUU', 'ACDEFG');

SELECT specimen_id,
       char_length(dna) AS bases,
       substr(dna, 3, 4)::text AS fragment
FROM specimen;

Input validation depends on the selected alphabet, case-sensitivity, and type modifiers. Verify that casts reject symbols outside the required biological convention and that aligned and unaligned types are not mixed accidentally.

Transform and translate sequences

SELECT complement('ACGTN'::dna_sequence)::text;
-- TGCAN

SELECT reverse_complement('ACGTN'::dna_sequence)::text;
-- NACGT

SELECT transcribe('AACGTT'::dna_sequence)::text;
-- AACGUU

SELECT translate('AUGGCCUAA'::rna_sequence)::text;
-- MA

The extension also exposes reverse_transcribe(), six_frame(), get_alphabet(), entropy(), gc_content(), and sequence generators. The translation functions accept explicit translation tables when the standard genetic code is not appropriate.

Inspect compression and add indexes

SELECT char_length(sequence) AS symbols,
       octet_length(sequence) AS storage_bytes,
       compression_ratio(sequence) AS storage_ratio
FROM (
  SELECT repeat('ACGT', 256)::dna_sequence AS sequence
) AS sample;

CREATE INDEX specimen_dna_btree ON specimen USING btree (dna);
CREATE INDEX specimen_dna_hash  ON specimen USING hash  (dna);

Equality, ordering, concatenation, substring, search, and length functions are available for the sequence types. Check plans and realistic data distributions before relying on an index for a production workload.

Packaging and durability risk

Pigsty applies a downstream compatibility patch and packages PostBIS 1.0 for PostgreSQL 14–18. That packaging result does not change the upstream lifecycle: the project is inactive and has no extension upgrade path beyond 1.0.

The custom types use native compressed on-disk representations. Treat stored values and indexes as tied to an exact tested build. Before adoption or migration, prove dump and restore, binary and logical upgrades, replication, driver decoding, index rebuilds, malformed input handling, and large-sequence memory behavior.

Functions such as reverse(), char_length(), and substr() overload familiar names, so schema qualification and controlled search_path settings matter. For new durable datasets, prefer maintained sequence tooling or plain PostgreSQL types unless the extension has been locally audited, packaged, and assigned an explicit long-term migration owner.