1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825
|
-- $Id: mage.sql,v 1.3 2008-03-19 18:32:51 scottcain Exp $
-- ==========================================
-- Chado mage module
--
-- =================================================================
-- Dependencies:
--
-- :import feature from sequence
-- :import cvterm from cv
-- :import pub from pub
-- :import organism from organism
-- :import contact from contact
-- :import dbxref from general
-- :import tableinfo from general
-- :import project from project
-- :import analysis from companalysis
-- =================================================================
-- ================================================
-- TABLE: mageml
-- ================================================
create table mageml (
mageml_id serial not null,
primary key (mageml_id),
mage_package text not null,
mage_ml text not null
);
COMMENT ON TABLE mageml IS 'This table is for storing extra bits of MAGEml in a denormalized form. More normalization would require many more tables.';
-- ================================================
-- TABLE: magedocumentation
-- ================================================
create table magedocumentation (
magedocumentation_id serial not null,
primary key (magedocumentation_id),
mageml_id int not null,
foreign key (mageml_id) references mageml (mageml_id) on delete cascade INITIALLY DEFERRED,
tableinfo_id int not null,
foreign key (tableinfo_id) references tableinfo (tableinfo_id) on delete cascade INITIALLY DEFERRED,
row_id int not null,
mageidentifier text not null
);
create index magedocumentation_idx1 on magedocumentation (mageml_id);
create index magedocumentation_idx2 on magedocumentation (tableinfo_id);
create index magedocumentation_idx3 on magedocumentation (row_id);
COMMENT ON TABLE magedocumentation IS NULL;
-- ================================================
-- TABLE: protocol
-- ================================================
create table protocol (
protocol_id serial not null,
primary key (protocol_id),
type_id int not null,
foreign key (type_id) references cvterm (cvterm_id) on delete cascade INITIALLY DEFERRED,
pub_id int null,
foreign key (pub_id) references pub (pub_id) on delete set null INITIALLY DEFERRED,
dbxref_id int null,
foreign key (dbxref_id) references dbxref (dbxref_id) on delete set null INITIALLY DEFERRED,
name text not null,
uri text null,
protocoldescription text null,
hardwaredescription text null,
softwaredescription text null,
constraint protocol_c1 unique (name)
);
create index protocol_idx1 on protocol (type_id);
create index protocol_idx2 on protocol (pub_id);
create index protocol_idx3 on protocol (dbxref_id);
COMMENT ON TABLE protocol IS 'Procedural notes on how data was prepared and processed.';
-- ================================================
-- TABLE: protocolparam
-- ================================================
create table protocolparam (
protocolparam_id serial not null,
primary key (protocolparam_id),
protocol_id int not null,
foreign key (protocol_id) references protocol (protocol_id) on delete cascade INITIALLY DEFERRED,
name text not null,
datatype_id int null,
foreign key (datatype_id) references cvterm (cvterm_id) on delete set null INITIALLY DEFERRED,
unittype_id int null,
foreign key (unittype_id) references cvterm (cvterm_id) on delete set null INITIALLY DEFERRED,
value text null,
rank int not null default 0
);
create index protocolparam_idx1 on protocolparam (protocol_id);
create index protocolparam_idx2 on protocolparam (datatype_id);
create index protocolparam_idx3 on protocolparam (unittype_id);
COMMENT ON TABLE protocolparam IS 'Parameters related to a
protocol. For example, if the protocol is a soak, this might include attributes of bath temperature and duration.';
-- ================================================
-- TABLE: channel
-- ================================================
create table channel (
channel_id serial not null,
primary key (channel_id),
name text not null,
definition text not null,
constraint channel_c1 unique (name)
);
COMMENT ON TABLE channel IS 'Different array platforms can record signals from one or more channels (cDNA arrays typically use two CCD, but Affymetrix uses only one).';
-- ================================================
-- TABLE: arraydesign
-- ================================================
create table arraydesign (
arraydesign_id serial not null,
primary key (arraydesign_id),
manufacturer_id int not null,
foreign key (manufacturer_id) references contact (contact_id) on delete cascade INITIALLY DEFERRED,
platformtype_id int not null,
foreign key (platformtype_id) references cvterm (cvterm_id) on delete cascade INITIALLY DEFERRED,
substratetype_id int null,
foreign key (substratetype_id) references cvterm (cvterm_id) on delete set null INITIALLY DEFERRED,
protocol_id int null,
foreign key (protocol_id) references protocol (protocol_id) on delete set null INITIALLY DEFERRED,
dbxref_id int null,
foreign key (dbxref_id) references dbxref (dbxref_id) on delete set null INITIALLY DEFERRED,
name text not null,
version text null,
description text null,
array_dimensions text null,
element_dimensions text null,
num_of_elements int null,
num_array_columns int null,
num_array_rows int null,
num_grid_columns int null,
num_grid_rows int null,
num_sub_columns int null,
num_sub_rows int null,
constraint arraydesign_c1 unique (name)
);
create index arraydesign_idx1 on arraydesign (manufacturer_id);
create index arraydesign_idx2 on arraydesign (platformtype_id);
create index arraydesign_idx3 on arraydesign (substratetype_id);
create index arraydesign_idx4 on arraydesign (protocol_id);
create index arraydesign_idx5 on arraydesign (dbxref_id);
COMMENT ON TABLE arraydesign IS 'General properties about an array.
An array is a template used to generate physical slides, etc. It
contains layout information, as well as global array properties, such
as material (glass, nylon) and spot dimensions (in rows/columns).';
-- ================================================
-- TABLE: arraydesignprop
-- ================================================
create table arraydesignprop (
arraydesignprop_id serial not null,
primary key (arraydesignprop_id),
arraydesign_id int not null,
foreign key (arraydesign_id) references arraydesign (arraydesign_id) on delete cascade INITIALLY DEFERRED,
type_id int not null,
foreign key (type_id) references cvterm (cvterm_id) on delete cascade INITIALLY DEFERRED,
value text null,
rank int not null default 0,
constraint arraydesignprop_c1 unique (arraydesign_id,type_id,rank)
);
create index arraydesignprop_idx1 on arraydesignprop (arraydesign_id);
create index arraydesignprop_idx2 on arraydesignprop (type_id);
COMMENT ON TABLE arraydesignprop IS 'Extra array design properties that are not accounted for in arraydesign.';
-- ================================================
-- TABLE: assay
-- ================================================
create table assay (
assay_id serial not null,
primary key (assay_id),
arraydesign_id int not null,
foreign key (arraydesign_id) references arraydesign (arraydesign_id) on delete cascade INITIALLY DEFERRED,
protocol_id int null,
foreign key (protocol_id) references protocol (protocol_id) on delete set null INITIALLY DEFERRED,
assaydate timestamp null default current_timestamp,
arrayidentifier text null,
arraybatchidentifier text null,
operator_id int not null,
foreign key (operator_id) references contact (contact_id) on delete cascade INITIALLY DEFERRED,
dbxref_id int null,
foreign key (dbxref_id) references dbxref (dbxref_id) on delete set null INITIALLY DEFERRED,
name text null,
description text null,
constraint assay_c1 unique (name)
);
create index assay_idx1 on assay (arraydesign_id);
create index assay_idx2 on assay (protocol_id);
create index assay_idx3 on assay (operator_id);
create index assay_idx4 on assay (dbxref_id);
COMMENT ON TABLE assay IS 'An assay consists of a physical instance of
an array, combined with the conditions used to create the array
(protocols, technician information). The assay can be thought of as a hybridization.';
-- ================================================
-- TABLE: assayprop
-- ================================================
create table assayprop (
assayprop_id serial not null,
primary key (assayprop_id),
assay_id int not null,
foreign key (assay_id) references assay (assay_id) on delete cascade INITIALLY DEFERRED,
type_id int not null,
foreign key (type_id) references cvterm (cvterm_id) on delete cascade INITIALLY DEFERRED,
value text null,
rank int not null default 0,
constraint assayprop_c1 unique (assay_id,type_id,rank)
);
create index assayprop_idx1 on assayprop (assay_id);
create index assayprop_idx2 on assayprop (type_id);
COMMENT ON TABLE assayprop IS 'Extra assay properties that are not accounted for in assay.';
-- ================================================
-- TABLE: assay_project
-- ================================================
create table assay_project (
assay_project_id serial not null,
primary key (assay_project_id),
assay_id int not null,
foreign key (assay_id) references assay (assay_id) INITIALLY DEFERRED,
project_id int not null,
foreign key (project_id) references project (project_id) INITIALLY DEFERRED,
constraint assay_project_c1 unique (assay_id,project_id)
);
create index assay_project_idx1 on assay_project (assay_id);
create index assay_project_idx2 on assay_project (project_id);
COMMENT ON TABLE assay_project IS 'Link assays to projects.';
-- ================================================
-- TABLE: biomaterial
-- ================================================
create table biomaterial (
biomaterial_id serial not null,
primary key (biomaterial_id),
taxon_id int null,
foreign key (taxon_id) references organism (organism_id) on delete set null INITIALLY DEFERRED,
biosourceprovider_id int null,
foreign key (biosourceprovider_id) references contact (contact_id) on delete set null INITIALLY DEFERRED,
dbxref_id int null,
foreign key (dbxref_id) references dbxref (dbxref_id) on delete set null INITIALLY DEFERRED,
name text null,
description text null,
constraint biomaterial_c1 unique (name)
);
create index biomaterial_idx1 on biomaterial (taxon_id);
create index biomaterial_idx2 on biomaterial (biosourceprovider_id);
create index biomaterial_idx3 on biomaterial (dbxref_id);
COMMENT ON TABLE biomaterial IS 'A biomaterial represents the MAGE concept of BioSource, BioSample, and LabeledExtract. It is essentially some biological material (tissue, cells, serum) that may have been processed. Processed biomaterials should be traceable back to raw biomaterials via the biomaterialrelationship table.';
-- ================================================
-- TABLE: biomaterial_relationship
-- ================================================
create table biomaterial_relationship (
biomaterial_relationship_id serial not null,
primary key (biomaterial_relationship_id),
subject_id int not null,
foreign key (subject_id) references biomaterial (biomaterial_id) INITIALLY DEFERRED,
type_id int not null,
foreign key (type_id) references cvterm (cvterm_id) INITIALLY DEFERRED,
object_id int not null,
foreign key (object_id) references biomaterial (biomaterial_id) INITIALLY DEFERRED,
constraint biomaterial_relationship_c1 unique (subject_id,object_id,type_id)
);
create index biomaterial_relationship_idx1 on biomaterial_relationship (subject_id);
create index biomaterial_relationship_idx2 on biomaterial_relationship (object_id);
create index biomaterial_relationship_idx3 on biomaterial_relationship (type_id);
COMMENT ON TABLE biomaterial_relationship IS 'Relate biomaterials to one another. This is a way to track a series of treatments or material splits/merges, for instance.';
-- ================================================
-- TABLE: biomaterialprop
-- ================================================
create table biomaterialprop (
biomaterialprop_id serial not null,
primary key (biomaterialprop_id),
biomaterial_id int not null,
foreign key (biomaterial_id) references biomaterial (biomaterial_id) on delete cascade INITIALLY DEFERRED,
type_id int not null,
foreign key (type_id) references cvterm (cvterm_id) on delete cascade INITIALLY DEFERRED,
value text null,
rank int not null default 0,
constraint biomaterialprop_c1 unique (biomaterial_id,type_id,rank)
);
create index biomaterialprop_idx1 on biomaterialprop (biomaterial_id);
create index biomaterialprop_idx2 on biomaterialprop (type_id);
COMMENT ON TABLE biomaterialprop IS 'Extra biomaterial properties that are not accounted for in biomaterial.';
-- ================================================
-- TABLE: biomaterial_dbxref
-- ================================================
create table biomaterial_dbxref (
biomaterial_dbxref_id serial not null,
primary key (biomaterial_dbxref_id),
biomaterial_id int not null,
foreign key (biomaterial_id) references biomaterial (biomaterial_id) on delete cascade INITIALLY DEFERRED,
dbxref_id int not null,
foreign key (dbxref_id) references dbxref (dbxref_id) on delete cascade INITIALLY DEFERRED,
constraint biomaterial_dbxref_c1 unique (biomaterial_id,dbxref_id)
);
create index biomaterial_dbxref_idx1 on biomaterial_dbxref (biomaterial_id);
create index biomaterial_dbxref_idx2 on biomaterial_dbxref (dbxref_id);
-- ================================================
-- TABLE: treatment
-- ================================================
create table treatment (
treatment_id serial not null,
primary key (treatment_id),
rank int not null default 0,
biomaterial_id int not null,
foreign key (biomaterial_id) references biomaterial (biomaterial_id) on delete cascade INITIALLY DEFERRED,
type_id int not null,
foreign key (type_id) references cvterm (cvterm_id) on delete cascade INITIALLY DEFERRED,
protocol_id int null,
foreign key (protocol_id) references protocol (protocol_id) on delete set null INITIALLY DEFERRED,
name text null
);
create index treatment_idx1 on treatment (biomaterial_id);
create index treatment_idx2 on treatment (type_id);
create index treatment_idx3 on treatment (protocol_id);
COMMENT ON TABLE treatment IS 'A biomaterial may undergo multiple
treatments. Examples of treatments: apoxia, fluorophore and biotin labeling.';
-- ================================================
-- TABLE: biomaterial_treatment
-- ================================================
create table biomaterial_treatment (
biomaterial_treatment_id serial not null,
primary key (biomaterial_treatment_id),
biomaterial_id int not null,
foreign key (biomaterial_id) references biomaterial (biomaterial_id) on delete cascade INITIALLY DEFERRED,
treatment_id int not null,
foreign key (treatment_id) references treatment (treatment_id) on delete cascade INITIALLY DEFERRED,
unittype_id int null,
foreign key (unittype_id) references cvterm (cvterm_id) on delete set null INITIALLY DEFERRED,
value float(15) null,
rank int not null default 0,
constraint biomaterial_treatment_c1 unique (biomaterial_id,treatment_id)
);
create index biomaterial_treatment_idx1 on biomaterial_treatment (biomaterial_id);
create index biomaterial_treatment_idx2 on biomaterial_treatment (treatment_id);
create index biomaterial_treatment_idx3 on biomaterial_treatment (unittype_id);
COMMENT ON TABLE biomaterial_treatment IS 'Link biomaterials to treatments. Treatments have an order of operations (rank), and associated measurements (unittype_id, value).';
-- ================================================
-- TABLE: assay_biomaterial
-- ================================================
create table assay_biomaterial (
assay_biomaterial_id serial not null,
primary key (assay_biomaterial_id),
assay_id int not null,
foreign key (assay_id) references assay (assay_id) on delete cascade INITIALLY DEFERRED,
biomaterial_id int not null,
foreign key (biomaterial_id) references biomaterial (biomaterial_id) on delete cascade INITIALLY DEFERRED,
channel_id int null,
foreign key (channel_id) references channel (channel_id) on delete set null INITIALLY DEFERRED,
rank int not null default 0,
constraint assay_biomaterial_c1 unique (assay_id,biomaterial_id,channel_id,rank)
);
create index assay_biomaterial_idx1 on assay_biomaterial (assay_id);
create index assay_biomaterial_idx2 on assay_biomaterial (biomaterial_id);
create index assay_biomaterial_idx3 on assay_biomaterial (channel_id);
COMMENT ON TABLE assay_biomaterial IS 'A biomaterial can be hybridized many times (technical replicates), or combined with other biomaterials in a single hybridization (for two-channel arrays).';
-- ================================================
-- TABLE: acquisition
-- ================================================
create table acquisition (
acquisition_id serial not null,
primary key (acquisition_id),
assay_id int not null,
foreign key (assay_id) references assay (assay_id) on delete cascade INITIALLY DEFERRED,
protocol_id int null,
foreign key (protocol_id) references protocol (protocol_id) on delete set null INITIALLY DEFERRED,
channel_id int null,
foreign key (channel_id) references channel (channel_id) on delete set null INITIALLY DEFERRED,
acquisitiondate timestamp null default current_timestamp,
name text null,
uri text null,
constraint acquisition_c1 unique (name)
);
create index acquisition_idx1 on acquisition (assay_id);
create index acquisition_idx2 on acquisition (protocol_id);
create index acquisition_idx3 on acquisition (channel_id);
COMMENT ON TABLE acquisition IS 'This represents the scanning of hybridized material. The output of this process is typically a digital image of an array.';
-- ================================================
-- TABLE: acquisitionprop
-- ================================================
create table acquisitionprop (
acquisitionprop_id serial not null,
primary key (acquisitionprop_id),
acquisition_id int not null,
foreign key (acquisition_id) references acquisition (acquisition_id) on delete cascade INITIALLY DEFERRED,
type_id int not null,
foreign key (type_id) references cvterm (cvterm_id) on delete cascade INITIALLY DEFERRED,
value text null,
rank int not null default 0,
constraint acquisitionprop_c1 unique (acquisition_id,type_id,rank)
);
create index acquisitionprop_idx1 on acquisitionprop (acquisition_id);
create index acquisitionprop_idx2 on acquisitionprop (type_id);
COMMENT ON TABLE acquisitionprop IS 'Parameters associated with image acquisition.';
-- ================================================
-- TABLE: acquisition_relationship
-- ================================================
create table acquisition_relationship (
acquisition_relationship_id serial not null,
primary key (acquisition_relationship_id),
subject_id int not null,
foreign key (subject_id) references acquisition (acquisition_id) on delete cascade INITIALLY DEFERRED,
type_id int not null,
foreign key (type_id) references cvterm (cvterm_id) on delete cascade INITIALLY DEFERRED,
object_id int not null,
foreign key (object_id) references acquisition (acquisition_id) on delete cascade INITIALLY DEFERRED,
value text null,
rank int not null default 0,
constraint acquisition_relationship_c1 unique (subject_id,object_id,type_id,rank)
);
create index acquisition_relationship_idx1 on acquisition_relationship (subject_id);
create index acquisition_relationship_idx2 on acquisition_relationship (type_id);
create index acquisition_relationship_idx3 on acquisition_relationship (object_id);
COMMENT ON TABLE acquisition_relationship IS 'Multiple monochrome images may be merged to form a multi-color image. Red-green images of 2-channel hybridizations are an example of this.';
-- ================================================
-- TABLE: quantification
-- ================================================
create table quantification (
quantification_id serial not null,
primary key (quantification_id),
acquisition_id int not null,
foreign key (acquisition_id) references acquisition (acquisition_id) on delete cascade INITIALLY DEFERRED,
operator_id int null,
foreign key (operator_id) references contact (contact_id) on delete set null INITIALLY DEFERRED,
protocol_id int null,
foreign key (protocol_id) references protocol (protocol_id) on delete set null INITIALLY DEFERRED,
analysis_id int not null,
foreign key (analysis_id) references analysis (analysis_id) on delete cascade INITIALLY DEFERRED,
quantificationdate timestamp null default current_timestamp,
name text null,
uri text null,
constraint quantification_c1 unique (name,analysis_id)
);
create index quantification_idx1 on quantification (acquisition_id);
create index quantification_idx2 on quantification (operator_id);
create index quantification_idx3 on quantification (protocol_id);
create index quantification_idx4 on quantification (analysis_id);
COMMENT ON TABLE quantification IS 'Quantification is the transformation of an image acquisition to numeric data. This typically involves statistical procedures.';
-- ================================================
-- TABLE: quantificationprop
-- ================================================
create table quantificationprop (
quantificationprop_id serial not null,
primary key (quantificationprop_id),
quantification_id int not null,
foreign key (quantification_id) references quantification (quantification_id) on delete cascade INITIALLY DEFERRED,
type_id int not null,
foreign key (type_id) references cvterm (cvterm_id) on delete cascade INITIALLY DEFERRED,
value text null,
rank int not null default 0,
constraint quantificationprop_c1 unique (quantification_id,type_id,rank)
);
create index quantificationprop_idx1 on quantificationprop (quantification_id);
create index quantificationprop_idx2 on quantificationprop (type_id);
COMMENT ON TABLE quantificationprop IS 'Extra quantification properties that are not accounted for in quantification.';
-- ================================================
-- TABLE: quantification_relationship
-- ================================================
create table quantification_relationship (
quantification_relationship_id serial not null,
primary key (quantification_relationship_id),
subject_id int not null,
foreign key (subject_id) references quantification (quantification_id) on delete cascade INITIALLY DEFERRED,
type_id int not null,
foreign key (type_id) references cvterm (cvterm_id) on delete cascade INITIALLY DEFERRED,
object_id int not null,
foreign key (object_id) references quantification (quantification_id) on delete cascade INITIALLY DEFERRED,
constraint quantification_relationship_c1 unique (subject_id,object_id,type_id)
);
create index quantification_relationship_idx1 on quantification_relationship (subject_id);
create index quantification_relationship_idx2 on quantification_relationship (type_id);
create index quantification_relationship_idx3 on quantification_relationship (object_id);
COMMENT ON TABLE quantification_relationship IS 'There may be multiple rounds of quantification, this allows us to keep an audit trail of what values went where.';
-- ================================================
-- TABLE: control
-- ================================================
create table control (
control_id serial not null,
primary key (control_id),
type_id int not null,
foreign key (type_id) references cvterm (cvterm_id) on delete cascade INITIALLY DEFERRED,
assay_id int not null,
foreign key (assay_id) references assay (assay_id) on delete cascade INITIALLY DEFERRED,
tableinfo_id int not null,
foreign key (tableinfo_id) references tableinfo (tableinfo_id) on delete cascade INITIALLY DEFERRED,
row_id int not null,
name text null,
value text null,
rank int not null default 0
);
create index control_idx1 on control (type_id);
create index control_idx2 on control (assay_id);
create index control_idx3 on control (tableinfo_id);
create index control_idx4 on control (row_id);
COMMENT ON TABLE control IS NULL;
-- ================================================
-- TABLE: element
-- ================================================
create table element (
element_id serial not null,
primary key (element_id),
feature_id int null,
foreign key (feature_id) references feature (feature_id) on delete set null INITIALLY DEFERRED,
arraydesign_id int not null,
foreign key (arraydesign_id) references arraydesign (arraydesign_id) on delete cascade INITIALLY DEFERRED,
type_id int null,
foreign key (type_id) references cvterm (cvterm_id) on delete set null INITIALLY DEFERRED,
dbxref_id int null,
foreign key (dbxref_id) references dbxref (dbxref_id) on delete set null INITIALLY DEFERRED,
constraint element_c1 unique (feature_id,arraydesign_id)
);
create index element_idx1 on element (feature_id);
create index element_idx2 on element (arraydesign_id);
create index element_idx3 on element (type_id);
create index element_idx4 on element (dbxref_id);
COMMENT ON TABLE element IS 'Represents a feature of the array. This is typically a region of the array coated or bound to DNA.';
-- ================================================
-- TABLE: element_result
-- ================================================
create table elementresult (
elementresult_id serial not null,
primary key (elementresult_id),
element_id int not null,
foreign key (element_id) references element (element_id) on delete cascade INITIALLY DEFERRED,
quantification_id int not null,
foreign key (quantification_id) references quantification (quantification_id) on delete cascade INITIALLY DEFERRED,
signal float not null,
constraint elementresult_c1 unique (element_id,quantification_id)
);
create index elementresult_idx1 on elementresult (element_id);
create index elementresult_idx2 on elementresult (quantification_id);
create index elementresult_idx3 on elementresult (signal);
COMMENT ON TABLE elementresult IS 'An element on an array produces a measurement when hybridized to a biomaterial (traceable through quantification_id). This is the base data from which tables that actually contain data inherit.';
-- ================================================
-- TABLE: element_relationship
-- ================================================
create table element_relationship (
element_relationship_id serial not null,
primary key (element_relationship_id),
subject_id int not null,
foreign key (subject_id) references element (element_id) INITIALLY DEFERRED,
type_id int not null,
foreign key (type_id) references cvterm (cvterm_id) INITIALLY DEFERRED,
object_id int not null,
foreign key (object_id) references element (element_id) INITIALLY DEFERRED,
value text null,
rank int not null default 0,
constraint element_relationship_c1 unique (subject_id,object_id,type_id,rank)
);
create index element_relationship_idx1 on element_relationship (subject_id);
create index element_relationship_idx2 on element_relationship (type_id);
create index element_relationship_idx3 on element_relationship (object_id);
create index element_relationship_idx4 on element_relationship (value);
COMMENT ON TABLE element_relationship IS 'Sometimes we want to combine measurements from multiple elements to get a composite value. Affymetrix combines many probes to form a probeset measurement, for instance.';
-- ================================================
-- TABLE: elementresult_relationship
-- ================================================
create table elementresult_relationship (
elementresult_relationship_id serial not null,
primary key (elementresult_relationship_id),
subject_id int not null,
foreign key (subject_id) references elementresult (elementresult_id) INITIALLY DEFERRED,
type_id int not null,
foreign key (type_id) references cvterm (cvterm_id) INITIALLY DEFERRED,
object_id int not null,
foreign key (object_id) references elementresult (elementresult_id) INITIALLY DEFERRED,
value text null,
rank int not null default 0,
constraint elementresult_relationship_c1 unique (subject_id,object_id,type_id,rank)
);
create index elementresult_relationship_idx1 on elementresult_relationship (subject_id);
create index elementresult_relationship_idx2 on elementresult_relationship (type_id);
create index elementresult_relationship_idx3 on elementresult_relationship (object_id);
create index elementresult_relationship_idx4 on elementresult_relationship (value);
COMMENT ON TABLE elementresult_relationship IS 'Sometimes we want to combine measurements from multiple elements to get a composite value. Affymetrix combines many probes to form a probeset measurement, for instance.';
-- ================================================
-- TABLE: study
-- ================================================
create table study (
study_id serial not null,
primary key (study_id),
contact_id int not null,
foreign key (contact_id) references contact (contact_id) on delete cascade INITIALLY DEFERRED,
pub_id int null,
foreign key (pub_id) references pub (pub_id) on delete set null INITIALLY DEFERRED,
dbxref_id int null,
foreign key (dbxref_id) references dbxref (dbxref_id) on delete set null INITIALLY DEFERRED,
name text not null,
description text null,
constraint study_c1 unique (name)
);
create index study_idx1 on study (contact_id);
create index study_idx2 on study (pub_id);
create index study_idx3 on study (dbxref_id);
COMMENT ON TABLE study IS NULL;
-- ================================================
-- TABLE: study_assay
-- ================================================
create table study_assay (
study_assay_id serial not null,
primary key (study_assay_id),
study_id int not null,
foreign key (study_id) references study (study_id) on delete cascade INITIALLY DEFERRED,
assay_id int not null,
foreign key (assay_id) references assay (assay_id) on delete cascade INITIALLY DEFERRED,
constraint study_assay_c1 unique (study_id,assay_id)
);
create index study_assay_idx1 on study_assay (study_id);
create index study_assay_idx2 on study_assay (assay_id);
COMMENT ON TABLE study_assay IS NULL;
-- ================================================
-- TABLE: studydesign
-- ================================================
create table studydesign (
studydesign_id serial not null,
primary key (studydesign_id),
study_id int not null,
foreign key (study_id) references study (study_id) on delete cascade INITIALLY DEFERRED,
description text null
);
create index studydesign_idx1 on studydesign (study_id);
COMMENT ON TABLE studydesign IS NULL;
-- ================================================
-- TABLE: studydesignprop
-- ================================================
create table studydesignprop (
studydesignprop_id serial not null,
primary key (studydesignprop_id),
studydesign_id int not null,
foreign key (studydesign_id) references studydesign (studydesign_id) on delete cascade INITIALLY DEFERRED,
type_id int not null,
foreign key (type_id) references cvterm (cvterm_id) on delete cascade INITIALLY DEFERRED,
value text null,
rank int not null default 0,
constraint studydesignprop_c1 unique (studydesign_id,type_id,rank)
);
create index studydesignprop_idx1 on studydesignprop (studydesign_id);
create index studydesignprop_idx2 on studydesignprop (type_id);
COMMENT ON TABLE studydesignprop IS NULL;
-- ================================================
-- TABLE: studyfactor
-- ================================================
create table studyfactor (
studyfactor_id serial not null,
primary key (studyfactor_id),
studydesign_id int not null,
foreign key (studydesign_id) references studydesign (studydesign_id) on delete cascade INITIALLY DEFERRED,
type_id int null,
foreign key (type_id) references cvterm (cvterm_id) on delete set null INITIALLY DEFERRED,
name text not null,
description text null
);
create index studyfactor_idx1 on studyfactor (studydesign_id);
create index studyfactor_idx2 on studyfactor (type_id);
COMMENT ON TABLE studyfactor IS NULL;
-- ================================================
-- TABLE: studyfactorvalue
-- ================================================
create table studyfactorvalue (
studyfactorvalue_id serial not null,
primary key (studyfactorvalue_id),
studyfactor_id int not null,
foreign key (studyfactor_id) references studyfactor (studyfactor_id) on delete cascade INITIALLY DEFERRED,
assay_id int not null,
foreign key (assay_id) references assay (assay_id) on delete cascade INITIALLY DEFERRED,
factorvalue text null,
name text null,
rank int not null default 0
);
create index studyfactorvalue_idx1 on studyfactorvalue (studyfactor_id);
create index studyfactorvalue_idx2 on studyfactorvalue (assay_id);
COMMENT ON TABLE studyfactorvalue IS NULL;
--
-- studyprop and studyprop_feature added for Kara Dolinski's group
--
-- Here is her description of it:
--Both of the tables are used for our YFGdb project
--(http://yfgdb.princeton.edu/), which uses chado.
--
--Here is how we use those tables, using the following example:
--
--http://yfgdb.princeton.edu/cgi-bin/display.cgi?db=pmid&id=15575969
--
--The above data set is represented as a row in the STUDY table. We have
--lots of attributes that we want to store about each STUDY (status, etc)
--and in the official schema, the only prop table we could use was the
--STUDYDESIGN_PROP table. This forced us to go through the STUDYDESIGN
--table when we often have no real data to store in that table (small
--percent of our collection use MAGE-ML unfortunately, and even fewer
--provide all the data in the MAGE model, of which STUDYDESIGN is a vestige).
--So, we created a STUDYPROP table. I'd think this table would be
--generally useful to people storing various types of data sets via the
--STUDY table.
--
--The other new table is STUDYPROP_FEATURE. This basically allows us to
--group features together per study. For example, we can store microarray
--clustering results by saying that the STUDYPROP type is 'cluster' (via
--type_id -> CVTERM of course), the value is 'cluster id 123', and then
--that cluster would be associated with all the features that are in that
--cluster via STUDYPROP_FEATURE. Adding type_id to STUDYPROP_FEATURE is
-- fine by us!
--
--studyprop
create table studyprop (
studyprop_id serial not null,
primary key (studyprop_id),
study_id int not null,
foreign key (study_id) references study (study_id) on delete cascade,
type_id int not null,
foreign key (type_id) references cvterm (cvterm_id) on delete cascade,
value text null,
rank int not null default 0,
unique (study_id,type_id,rank)
);
create index studyprop_idx1 on studyprop (study_id);
create index studyprop_idx2 on studyprop (type_id);
--studyprop_feature
CREATE TABLE studyprop_feature (
studyprop_feature_id serial NOT NULL,
primary key (studyprop_feature_id),
studyprop_id integer NOT NULL,
foreign key (studyprop_id) references studyprop(studyprop_id) on delete cascade,
feature_id integer NOT NULL,
foreign key (feature_id) references feature (feature_id) on delete cascade,
type_id integer,
foreign key (type_id) references cvterm (cvterm_id) on delete cascade,
unique (studyprop_id, feature_id)
);
create index studyprop_feature_idx1 on studyprop_feature (studyprop_id);
create index studyprop_feature_idx2 on studyprop_feature (feature_id);
|