From f7766fc079bf4be63da357f8dd41d099f80dc7ef Mon Sep 17 00:00:00 2001 From: Eddie Belter Date: Tue, 16 Jan 2018 22:43:47 +0000 Subject: [PATCH] Add TenX Assemblies --- db/mysql/deploy/create_tenx_assemblies.sql | 16 ++++++++++ db/mysql/revert/create_tenx_assemblies.sql | 7 +++++ db/mysql/sqitch.plan | 1 + db/mysql/verify/create_tenx_assemblies.sql | 10 ++++++ db/sqlite/deploy/create_tenx_assemblies.sql | 16 ++++++++++ db/sqlite/revert/create_tenx_assemblies.sql | 7 +++++ db/sqlite/sqitch.plan | 1 + db/sqlite/verify/create_tenx_assemblies.sql | 10 ++++++ lib/Tenx/Assembly.pm | 29 +++++++++++++++++ lib/Tenx/Assembly/Command.pm | 16 ++++++++++ t/Tenx-Assembly.t | 33 ++++++++++++++++++++ t/data/test.db | Bin 10240 -> 12288 bytes t/data/test_sqitch.db | Bin 21504 -> 23552 bytes 13 files changed, 146 insertions(+) create mode 100644 db/mysql/deploy/create_tenx_assemblies.sql create mode 100644 db/mysql/revert/create_tenx_assemblies.sql create mode 100644 db/mysql/verify/create_tenx_assemblies.sql create mode 100644 db/sqlite/deploy/create_tenx_assemblies.sql create mode 100644 db/sqlite/revert/create_tenx_assemblies.sql create mode 100644 db/sqlite/verify/create_tenx_assemblies.sql create mode 100644 lib/Tenx/Assembly.pm create mode 100644 lib/Tenx/Assembly/Command.pm create mode 100644 t/Tenx-Assembly.t diff --git a/db/mysql/deploy/create_tenx_assemblies.sql b/db/mysql/deploy/create_tenx_assemblies.sql new file mode 100644 index 0000000..f6e62c9 --- /dev/null +++ b/db/mysql/deploy/create_tenx_assemblies.sql @@ -0,0 +1,16 @@ +-- Deploy tenx:create_tenx_assemblies to sqlite +-- requires tenx_reads + +BEGIN; + +CREATE TABLE IF NOT EXISTS tenx_assemblies ( + id VARCHAR(32), + directory VARCHAR(256), + reads_id VARCHAR(256), + status VARCHAR(16), + + CONSTRAINT tenxassemblies_pk PRIMARY KEY(id), + CONSTRAINT tenxassemblies_reference_fk FOREIGN KEY(reads_id) REFERENCES tenx_reads(id) +); + +COMMIT; diff --git a/db/mysql/revert/create_tenx_assemblies.sql b/db/mysql/revert/create_tenx_assemblies.sql new file mode 100644 index 0000000..522d103 --- /dev/null +++ b/db/mysql/revert/create_tenx_assemblies.sql @@ -0,0 +1,7 @@ +-- Revert tenx:create_tenx_assemblies from sqlite + +BEGIN; + +DROP TABLE IF EXISTS tenx_assemblies; + +COMMIT; diff --git a/db/mysql/sqitch.plan b/db/mysql/sqitch.plan index dba63ff..518e183 100644 --- a/db/mysql/sqitch.plan +++ b/db/mysql/sqitch.plan @@ -5,3 +5,4 @@ create_tenx_references 2017-06-07T21:31:02Z Eddie Belter # Create TenX References! create_tenx_reads 2017-06-07T21:40:30Z Eddie Belter # Create TenX Reads! create_tenx_alignments 2017-06-07T21:42:54Z Eddie Belter # Add TenX Alignments! +create_tenx_assemblies 2018-01-16T22:31:39Z ebelter # Create 10X Assemblies! diff --git a/db/mysql/verify/create_tenx_assemblies.sql b/db/mysql/verify/create_tenx_assemblies.sql new file mode 100644 index 0000000..27a7842 --- /dev/null +++ b/db/mysql/verify/create_tenx_assemblies.sql @@ -0,0 +1,10 @@ +-- Verify tenx:create_tenx_assemblies on sqlite + +BEGIN; + +SELECT + id, directory, reads_id, status +FROM tenx_assemblies +WHERE 0; + +ROLLBACK; diff --git a/db/sqlite/deploy/create_tenx_assemblies.sql b/db/sqlite/deploy/create_tenx_assemblies.sql new file mode 100644 index 0000000..f6e62c9 --- /dev/null +++ b/db/sqlite/deploy/create_tenx_assemblies.sql @@ -0,0 +1,16 @@ +-- Deploy tenx:create_tenx_assemblies to sqlite +-- requires tenx_reads + +BEGIN; + +CREATE TABLE IF NOT EXISTS tenx_assemblies ( + id VARCHAR(32), + directory VARCHAR(256), + reads_id VARCHAR(256), + status VARCHAR(16), + + CONSTRAINT tenxassemblies_pk PRIMARY KEY(id), + CONSTRAINT tenxassemblies_reference_fk FOREIGN KEY(reads_id) REFERENCES tenx_reads(id) +); + +COMMIT; diff --git a/db/sqlite/revert/create_tenx_assemblies.sql b/db/sqlite/revert/create_tenx_assemblies.sql new file mode 100644 index 0000000..522d103 --- /dev/null +++ b/db/sqlite/revert/create_tenx_assemblies.sql @@ -0,0 +1,7 @@ +-- Revert tenx:create_tenx_assemblies from sqlite + +BEGIN; + +DROP TABLE IF EXISTS tenx_assemblies; + +COMMIT; diff --git a/db/sqlite/sqitch.plan b/db/sqlite/sqitch.plan index e98b59a..c2576cf 100644 --- a/db/sqlite/sqitch.plan +++ b/db/sqlite/sqitch.plan @@ -5,3 +5,4 @@ create_tenx_references 2017-06-06T18:45:22Z Eddie Belter # Create TenX References! create_tenx_reads 2017-06-06T23:25:06Z Eddie Belter # Create TenX Reads! create_tenx_alignments 2017-06-06T23:27:18Z Eddie Belter # Add TenX Alignments! +create_tenx_assemblies 2018-01-16T22:00:59Z ebelter # Create TenX Assemblies! diff --git a/db/sqlite/verify/create_tenx_assemblies.sql b/db/sqlite/verify/create_tenx_assemblies.sql new file mode 100644 index 0000000..27a7842 --- /dev/null +++ b/db/sqlite/verify/create_tenx_assemblies.sql @@ -0,0 +1,10 @@ +-- Verify tenx:create_tenx_assemblies on sqlite + +BEGIN; + +SELECT + id, directory, reads_id, status +FROM tenx_assemblies +WHERE 0; + +ROLLBACK; diff --git a/lib/Tenx/Assembly.pm b/lib/Tenx/Assembly.pm new file mode 100644 index 0000000..51cb67a --- /dev/null +++ b/lib/Tenx/Assembly.pm @@ -0,0 +1,29 @@ +package Tenx::Assembly; + +use strict; +use warnings 'FATAL'; + +class Tenx::Assembly { + table_name => 'tenx_assemblies', + id_generator => '-uuid', + id_by => { + id => { is => 'Text', }, + }, + has => { + directory => { is => 'Text', doc => 'File system location.', }, + reads => { + is => 'Tenx::Reads', + id_by => 'reads_id', + doc => 'The reads that are assembled.', + }, + }, + has_optional => { + status => { + is => 'Text', + doc => 'The status of the assembly: running, succeeded, failed, etc.', + }, + }, + data_source => Tenx::Config::get('tenx_ds'), +}; + +1; diff --git a/lib/Tenx/Assembly/Command.pm b/lib/Tenx/Assembly/Command.pm new file mode 100644 index 0000000..60297b9 --- /dev/null +++ b/lib/Tenx/Assembly/Command.pm @@ -0,0 +1,16 @@ +package Tenx::Assembly::Command; + +use strict; +use warnings 'FATAL'; + +use UR::Object::Command::Crud; +UR::Object::Command::Crud->create_command_subclasses( + target_class => 'Tenx::Assembly', + target_name => 'alignment', + namespace => 'Tenx::Assembly::Command', + sub_command_configs => { + copy => { skip => 1, }, + }, +); + +1; diff --git a/t/Tenx-Assembly.t b/t/Tenx-Assembly.t new file mode 100644 index 0000000..6f2614c --- /dev/null +++ b/t/Tenx-Assembly.t @@ -0,0 +1,33 @@ +#!/usr/bin/env perl + +use strict; +use warnings 'FATAL'; + +use TenxTestEnv; + +use Test::More tests => 1; + +subtest "create" => sub{ + plan tests => 8; + + my $pkg = 'Tenx::Assembly'; + use_ok($pkg) or die; + use_ok('Tenx::Reads') or die; + + my $assembly = $pkg->create( + directory => '/tmp', + reads => Tenx::Reads->__define__(directory => '/tmp/', sample_name => 'TEST-TESTY-MCTESTERSON'), + status => 'running', + ); + ok($assembly, 'create tenx assembly'); + + ok($assembly->id, 'assembly id'); + ok($assembly->directory, 'assembly directory'); + is($assembly->reads_id, $assembly->reads->id, 'assembly reads'); + ok($assembly->status, 'assembly status'); + + ok(UR::Context->commit, 'commit'); + +}; + +done_testing(); diff --git a/t/data/test.db b/t/data/test.db index 8d3b9e5df3eb30f2c3c9d173d8f436d436adf2c0..18ab68f0add2ca3f56db82a1f0417ce167e0286a 100644 GIT binary patch delta 213 zcmZn&Xh@hKEy%*az`z5nGZ4~GESY? z=mb8~|@dK~?|& delta 60 zcmZojXb6}fEy&Ekz`zB>Fu*)f$C#CwLH8Nc#+13ryg*@Q#ybp*cbEj34{mHc$GG{9 HstOYTJdh0A diff --git a/t/data/test_sqitch.db b/t/data/test_sqitch.db index 49803add152bc89763bca193dfdf3a7ac96f7303..9a8226a00f229b0a034eabf5afc678bb6b0207b9 100644 GIT binary patch delta 1271 zcmds%&ubGw6vtdC5^MYZy_eOB?9lMj)xj9BEoKWHOKfLWkNe z518<{ZwuhUQbL3tXHEzX1L=bcw#Ab}DrMl?)Rks@AbidxQ+@|j4;nq#ec4dmE6TF4+54?q6<4=?5Hm2*it}R+LNrH#lgV?F%UW1@Fe|{u6)E z$JoLzCeb^+e~;8F3$s6S@mv;+rDjPMh4V*}Y$C3Cv1FDd>Fl(z{hnkq@q-CELfF)w zX`}zGExx{-6sTbbVP_Hz`Ejk#dM0f6#U!uCl$5YPOKdbIH D){<+f delta 148 zcmZqJ!Pu~Zae_1}8v_G_=tKp3Mz)O!OT@XD866my1(|dh9X2)^F>ZE{Ji^4q%v{C5 ze1*A+dHKf19A*|B=2*tb{*oG#m&wNg<+2%=&oj?u&feG<%e*;Td8!H@FVIM4#<>j4 y225Fub2m2jGj5(6n#?pwhJ}rp*@%I8&t^WKSxgfr^s&0I#9D*R+8pn{kOcsst0qnW