  md5s integer,
  level integer
 );
-#COPY job_lcas (version,job,lca,abundance,exp_avg,exp_stdv,len_avg,len_stdv,ident_avg,ident_stdv,md5s,level) FROM 'FILE' WITH NULL AS '';
+-- COPY job_lcas (version,job,lca,abundance,exp_avg,exp_stdv,len_avg,len_stdv,ident_avg,ident_stdv,md5s,level) FROM 'FILE' WITH NULL AS '';
 CREATE UNIQUE INDEX job_lcas_key ON job_lcas (version, job, lca);
 CREATE INDEX job_lcas_level ON job_lcas (level);
 
 DROP TABLE IF EXISTS functions;
 CREATE TABLE functions (
- _id SERIAL PRIMARY KEY,
+ _id integer PRIMARY KEY,
  name text NOT NULL
 );
 CREATE INDEX functions_name ON functions (name);
 
 DROP TABLE IF EXISTS organisms_ncbi;
 CREATE TABLE organisms_ncbi (
- _id SERIAL PRIMARY KEY,
+ _id integer PRIMARY KEY,
  name text NOT NULL,
  tax_domain text,
  tax_kingdom text,

## index notes:
# for md5 table
# 1. param / cutoff lookup: version, job, exp_avg, len_avg, ident_avg
# for annotation tables
# 1. param / cutoff lookup: version, job, exp_avg, len_avg, ident_avg, source
# 2. annotation searching: version, name, source

CREATE OR REPLACE FUNCTION update_timestamp()
RETURNS TRIGGER AS $$

 md5s char(32)[],
 source text NOT NULL
);
CREATE UNIQUE INDEX job_rep_organisms_key ON job_rep_organisms (version, job, id, source);

DROP TABLE IF EXISTS job_ontologies;
CREATE TABLE job_ontologies (
