Skip to content
postbis

postbis

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
Relationships
See Also
rdkit
vector
pg_similarity
smlar
pg_trgm
pgcontext
vectorize
imgsmlr

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

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.

Last updated on