DNA

  • Flat file
  • DNA in 60 seconds or less
  • A-T G-C "Gattaca"
  • Very efficient from a biological perspective
  • Not binary

Next


 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 


CREATE OR REPLACE FUNCTION good_dna(VARCHAR)
  RETURNS BOOLEAN AS '
BEGIN
IF length(substring($1 FROM \'[^ATGC]\')) THEN
  RAISE EXCEPTION \'DNA must be one of A, T, G, C\';
END IF;
RETURN true;
END;
' LANGUAGE plpgsql;

Next


 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 


CREATE DOMAIN dnabasepair VARCHAR CHECK (good_dna(VALUE));

Next


 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Operators

 
  • Operators <= 60 seconds
  • Left and right: + = - ^ & >>

Next


 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 


CREATE OR REPLACE FUNCTION complement_dna(dnabasepair)
RETURNS dnabasepair AS'
DECLARE
 original ALIAS FOR $1;
BEGIN
RETURN TRANSLATE(original, \'ATCG\',\'TAGC\');
END;
' LANGUAGE plpgsql;

oscon=> SELECT complement_dna('ATCG');

 complement_dna
----------------
 TAGC

 
oscon=> SELECT complement_dna('ATCGZ');
ERROR:  DNA must be one of A, T, G, C

Next


 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

CREATE OPERATOR ~ (
rightarg = dnabasepair,
procedure = complement_dna
);

Next


 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

oscon=> SELECT ~'AAATTT'::dnabasepair;

 ?column?
----------
 TTTAAA

 
oscon=> SELECT ~ 'AAATTT';

 ?column?
----------
 TTTAAA


      Last             TOC             Next