Advertisement
Guest User

ru.so/778781/ - full DB script

a guest
Feb 10th, 2018
324
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 11.42 KB | None | 0 0
  1. CREATE SCHEMA `test` DEFAULT COLLATE utf8_bin;
  2.  
  3.  
  4. USE `test`;
  5.  
  6.  
  7. CREATE TABLE `genes-g38-201505`
  8. (
  9.   `id` int(11) NOT NULL AUTO_INCREMENT,
  10.   `chr` varchar(2) NOT NULL,
  11.   `left` int(11) NOT NULL,
  12.   `right` int(11) NOT NULL,
  13.   `Complement` int(11) NOT NULL,
  14.   `Name` tinytext NOT NULL,
  15.   `source` tinytext NOT NULL,
  16.   `ENSEMBL` tinytext NOT NULL,
  17.   `gene_version` tinytext NOT NULL,
  18.   `gene_name` tinytext NOT NULL,
  19.   `gene_source` tinytext NOT NULL,
  20.   `gene_biotypeid` tinytext NOT NULL,
  21.   PRIMARY KEY (`id`),
  22.   INDEX `ix_chr_left` (`chr`, `left`)
  23. ) ENGINE=MyISAM;
  24.  
  25.  
  26. CREATE TABLE `repeats-g38-201505`
  27. (
  28.   `id` int(11) NOT NULL AUTO_INCREMENT,
  29.   `chr` varchar(2) DEFAULT NULL,
  30.   `left` int(11) DEFAULT NULL,
  31.   `right` int(11) DEFAULT NULL,
  32.   `name` tinytext,
  33.   PRIMARY KEY (`id`),
  34.   INDEX `ix_chr_left` (`chr`, `left`)
  35. ) ENGINE=MyISAM;
  36.  
  37.  
  38. CREATE TABLE `47k-80-80-ignore-random-noreverse`
  39. (
  40.   `id` int(11) NOT NULL AUTO_INCREMENT,
  41.   `chr` varchar(2) NOT NULL,
  42.   `left` int(11) NOT NULL,
  43.   `right` int(11) NOT NULL,
  44.   `count` int(11) NOT NULL,
  45.   PRIMARY KEY (`id`),
  46.   INDEX `chr_left` (`chr`, `left`)
  47. ) ENGINE=MyISAM;
  48.  
  49.  
  50. CREATE TABLE `51k-80-80-ignore-random-noreverse`
  51. (
  52.   `id` int(11) NOT NULL AUTO_INCREMENT,
  53.   `chr` varchar(2) NOT NULL,
  54.   `left` int(11) NOT NULL,
  55.   `right` int(11) NOT NULL,
  56.   `count` int(11) NOT NULL,
  57.   PRIMARY KEY (`id`),
  58.   INDEX `chr_left` (`chr`, `left`)
  59. ) ENGINE=MyISAM;
  60.  
  61.  
  62. CREATE TABLE `pk47-pk51-gene-repeat`
  63. (
  64.   `id` int(11) NOT NULL AUTO_INCREMENT,
  65.   `chr` varchar(2) NOT NULL,
  66.   `left` int(11) NOT NULL,
  67.   `right` int(11) NOT NULL,
  68.   `count_k51` int(11) DEFAULT '0',
  69.   `count_p51` int(11) DEFAULT '0',
  70.   `count_p47` int(11) DEFAULT '0',
  71.   `count_k47` int(11) DEFAULT '0',
  72.   `name_left` varchar(30) NOT NULL,
  73.   `name_right` varchar(30) NOT NULL,
  74.   PRIMARY KEY (`id`),
  75.   UNIQUE INDEX `pos_name` (`chr`, `left`, `right`, `name_left`, `name_right`),
  76.   INDEX `ix_compare` (`chr`, `left`, `right`, `count_k47`, `count_k51`, `name_left`, `name_right`)
  77. ) ENGINE=MyISAM;
  78.  
  79.  
  80. CREATE TABLE `pk47-pk51-gene-repeat-compare`
  81. (
  82.   `id` int(11) NOT NULL AUTO_INCREMENT,
  83.   `chr` varchar(2) NOT NULL,
  84.   `left` int(11) NOT NULL,
  85.   `right` int(11) NOT NULL,
  86.   `count_k51` int(11) DEFAULT '0',
  87.   `count_p51` int(11) DEFAULT '0',
  88.   `count_p47` int(11) DEFAULT '0',
  89.   `count_k47` int(11) DEFAULT '0',
  90.   `name_left` varchar(30) NOT NULL,
  91.   `name_right` varchar(30) NOT NULL,
  92.   PRIMARY KEY (`id`),
  93.   UNIQUE INDEX `pos_name` (`chr`, `left`, `right`, `name_left`, `name_right`),
  94.   INDEX `ix_compare` (`chr`, `left`, `right`, `count_k47`, `count_k51`, `name_left`, `name_right`)
  95. ) ENGINE=MyISAM;
  96.  
  97.  
  98. CREATE TABLE `unwind-genes`
  99. (
  100.   `id` int(11) NOT NULL AUTO_INCREMENT,
  101.   `chr` varchar(2) NOT NULL,
  102.   `hkey` int(11) NOT NULL,
  103.   `gene_id` int(11) NOT NULL,
  104.   `left` int(11) NOT NULL,
  105.   `right` int(11) NOT NULL,
  106.   PRIMARY KEY (`id`),
  107.   UNIQUE INDEX (`chr`, `hkey`, `gene_id`)
  108. ) ENGINE=MyISAM;
  109.  
  110.  
  111. CREATE TABLE `unwind-repeats`
  112. (
  113.   `id` int(11) NOT NULL AUTO_INCREMENT,
  114.   `chr` varchar(2) NOT NULL,
  115.   `hkey` int(11) NOT NULL,
  116.   `repeat_id` int(11) NOT NULL,
  117.   `left` int(11) NOT NULL,
  118.   `right` int(11) NOT NULL,
  119.   PRIMARY KEY (`id`),
  120.   UNIQUE INDEX (`chr`, `hkey`, `repeat_id`)
  121. ) ENGINE=MyISAM;
  122.  
  123.  
  124. DELIMITER $$
  125. CREATE PROCEDURE `proc_unwind_genes`()
  126. BEGIN
  127.     DECLARE fetched INT DEFAULT TRUE;
  128.     DECLARE v_chr VARCHAR(2);
  129.     DECLARE v_left INT;
  130.     DECLARE v_right INT;
  131.     DECLARE v_id INT;
  132.     DECLARE hkey INT;
  133.     DECLARE hkey_max INT;
  134.     DECLARE cur_genes CURSOR FOR
  135.         SELECT `chr`, `left`, `right`, `id`
  136.         FROM `genes-g38-201505`;
  137.     DECLARE CONTINUE HANDLER FOR NOT FOUND SET fetched = FALSE;
  138.  
  139.     TRUNCATE TABLE `unwind-genes`;
  140.  
  141.     OPEN cur_genes;
  142.     FETCH cur_genes INTO v_chr, v_left, v_right, v_id;
  143.  
  144.     WHILE (fetched) DO
  145.         SET hkey = v_left div 10000;
  146.         SET hkey_max = v_right div 10000;
  147.  
  148.         WHILE (hkey <= hkey_max) DO
  149.             INSERT INTO `unwind-genes`
  150.             ( `chr`, `hkey`, `left`, `right`, `gene_id` )
  151.             VALUES
  152.             ( v_chr, hkey, v_left, v_right, v_id );
  153.  
  154.             SET hkey = hkey + 1;
  155.         END WHILE;
  156.  
  157.         FETCH cur_genes INTO v_chr, v_left, v_right, v_id;
  158.     END WHILE;
  159.  
  160.     CLOSE cur_genes;
  161. END$$
  162. DELIMITER ;
  163.  
  164.  
  165. DELIMITER $$
  166. CREATE PROCEDURE `proc_unwind_repeats`()
  167. BEGIN
  168.     DECLARE fetched INT DEFAULT TRUE;
  169.     DECLARE v_chr VARCHAR(2);
  170.     DECLARE v_left INT;
  171.     DECLARE v_right INT;
  172.     DECLARE v_id INT;
  173.     DECLARE hkey INT;
  174.     DECLARE hkey_max INT;
  175.     DECLARE cur_repeats CURSOR FOR
  176.         SELECT `chr`, `left`, `right`, `id`
  177.         FROM `repeats-g38-201505`;
  178.     DECLARE CONTINUE HANDLER FOR NOT FOUND SET fetched = FALSE;
  179.  
  180.     TRUNCATE TABLE `unwind-repeats`;
  181.  
  182.     OPEN cur_repeats;
  183.     FETCH cur_repeats INTO v_chr, v_left, v_right, v_id;
  184.  
  185.     WHILE (fetched) DO
  186.         SET hkey = v_left div 10000;
  187.         SET hkey_max = v_right div 10000;
  188.  
  189.         WHILE (hkey <= hkey_max) DO
  190.             INSERT INTO `unwind-repeats`
  191.             ( `chr`, `hkey`, `left`, `right`, `repeat_id` )
  192.             VALUES
  193.             ( v_chr, hkey, v_left, v_right, v_id );
  194.  
  195.             SET hkey = hkey + 1;
  196.         END WHILE;
  197.  
  198.         FETCH cur_repeats INTO v_chr, v_left, v_right, v_id;
  199.     END WHILE;
  200.  
  201.     CLOSE cur_repeats;
  202. END$$
  203. DELIMITER ;
  204.  
  205.  
  206. DELIMITER $$
  207. CREATE PROCEDURE `run_query_authors`()
  208. BEGIN
  209.     TRUNCATE TABLE `pk47-pk51-gene-repeat`;
  210.  
  211.     INSERT INTO `pk47-pk51-gene-repeat`
  212.     ( `chr`, `left`, `right`, `count_k47`, `name_left`, `name_right` )
  213.     SELECT
  214.         a.`chr`, a.`left`, a.`right`, a.`count` as `count_k47`,
  215.         g.`name` as `name_left`,
  216.         r.`name` as `name_right`
  217.     FROM
  218.         `47k-80-80-ignore-random-noreverse` a,
  219.         `genes-g38-201505` g,
  220.         `repeats-g38-201505` r
  221.     WHERE
  222.         a.`chr`=g.`chr` and a.`chr`=r.`chr` and
  223.         a.`left` < g.`right` and a.`left` > g.`left` and
  224.         a.`right` < r.`right` and a.`right` > r.`left` and
  225.         ( a.`id` between 10000 and 10100 )
  226.     ON DUPLICATE KEY
  227.     UPDATE `pk47-pk51-gene-repeat`.`count_k47`=a.`count`;
  228.  
  229.     INSERT INTO `pk47-pk51-gene-repeat`
  230.     ( `chr`, `left`, `right`, `count_k51`, `name_left`, `name_right` )
  231.     SELECT
  232.         a.`chr`, a.`left`, a.`right`, a.`count` as `count_k51`,
  233.         g.`name` as `name_left`,
  234.         r.`name` as `name_right`
  235.     FROM
  236.         `51k-80-80-ignore-random-noreverse` a,
  237.         `genes-g38-201505` g,
  238.         `repeats-g38-201505` r
  239.     WHERE
  240.         a.`chr`=g.`chr` and a.`chr`=r.`chr` and
  241.         a.`left` < g.`right` and a.`left` > g.`left` and
  242.         a.`right` < r.`right` and a.`right` > r.`left` and
  243.         ( a.`id` between 10000 and 10100 )
  244.     ON DUPLICATE KEY
  245.     UPDATE `pk47-pk51-gene-repeat`.`count_k51`=a.`count`;
  246. END$$
  247. DELIMITER ;
  248.  
  249.  
  250. DELIMITER $$
  251. CREATE PROCEDURE `run_query_hkeys`()
  252. BEGIN
  253.     TRUNCATE TABLE `pk47-pk51-gene-repeat-compare`;
  254.  
  255.     INSERT INTO `pk47-pk51-gene-repeat-compare`
  256.     ( `chr`, `left`, `right`, `count_k47`, `name_left`, `name_right` )
  257.     SELECT
  258.         a.`chr`, a.`left`, a.`right`, a.`count` as `count_k47`,
  259.         sg.`name` as `name_left`,
  260.         sr.`name` as `name_right`
  261.     FROM
  262.         `47k-80-80-ignore-random-noreverse` a
  263.         INNER JOIN `unwind-genes` g ON
  264.             ( a.`chr` = g.`chr` ) and
  265.             ( a.`left` div 10000 = g.`hkey` ) and
  266.             ( g.`left` < a.`left` ) and ( a.`left` < g.`right` )
  267.         INNER JOIN `unwind-repeats` r ON
  268.             ( a.`chr` = r.`chr` ) and
  269.             ( a.`right` div 10000 = r.`hkey` ) and
  270.             ( r.`left` < a.`right` ) and ( a.`right` < r.`right` )
  271.         INNER JOIN `genes-g38-201505` sg ON
  272.             ( g.`gene_id` = sg.`id` )
  273.         INNER JOIN `repeats-g38-201505` sr ON
  274.             ( r.`repeat_id` = sr.`id` )
  275.     WHERE
  276.         ( a.`id` between 10000 and 10100 )
  277.     ON DUPLICATE KEY
  278.     UPDATE `pk47-pk51-gene-repeat-compare`.`count_k47` = a.`count`;
  279.  
  280.     INSERT INTO `pk47-pk51-gene-repeat-compare`
  281.     ( `chr`, `left`, `right`, `count_k51`, `name_left`, `name_right` )
  282.     SELECT
  283.         a.`chr`, a.`left`, a.`right`, a.`count` as `count_k51`,
  284.         sg.`name` as `name_left`,
  285.         sr.`name` as `name_right`
  286.     FROM
  287.         `51k-80-80-ignore-random-noreverse` a
  288.         INNER JOIN `unwind-genes` g ON
  289.             ( a.`chr` = g.`chr` ) and
  290.             ( a.`left` div 10000 = g.`hkey` ) and
  291.             ( g.`left` < a.`left` ) and ( a.`left` < g.`right` )
  292.         INNER JOIN `unwind-repeats` r ON
  293.             ( a.`chr` = r.`chr` ) and
  294.             ( a.`right` div 10000 = r.`hkey` ) and
  295.             ( r.`left` < a.`right` ) and ( a.`right` < r.`right` )
  296.         INNER JOIN `genes-g38-201505` sg ON
  297.             ( g.`gene_id` = sg.`id` )
  298.         INNER JOIN `repeats-g38-201505` sr ON
  299.             ( r.`repeat_id` = sr.`id` )
  300.     WHERE
  301.         ( a.`id` between 10000 and 10100 )
  302.     ON DUPLICATE KEY
  303.     UPDATE `pk47-pk51-gene-repeat-compare`.`count_k51` = a.`count`;
  304. END$$
  305. DELIMITER ;
  306.  
  307.  
  308. DELIMITER $$
  309. CREATE FUNCTION `check_validity`() RETURNS varchar(50) CHARSET utf8
  310. BEGIN
  311.     DECLARE cnt_1 INT;
  312.     DECLARE cnt_2 INT;
  313.     DECLARE cnt_3 INT;
  314.     DECLARE cnt_4 INT;
  315.     DECLARE cnt_5 INT;
  316.  
  317.     SET cnt_1 = (SELECT COUNT(*) FROM `pk47-pk51-gene-repeat`);
  318.     SET cnt_2 = (SELECT COUNT(*) FROM `pk47-pk51-gene-repeat-compare`);
  319.  
  320.     IF (cnt_1 != cnt_2) THEN
  321.         RETURN 'Error 1';
  322.     END IF;
  323.  
  324.     SET cnt_3 =
  325.     (
  326.         SELECT COUNT(*)
  327.         FROM
  328.             `pk47-pk51-gene-repeat` a
  329.             LEFT JOIN `pk47-pk51-gene-repeat-compare` b ON
  330.                 ( a.`chr` = b.`chr` ) AND
  331.                 ( a.`left` = b.`left` ) AND
  332.                 ( a.`right` = b.`right` ) AND
  333.                 ( a.`count_k47` = b.`count_k47` ) AND
  334.                 ( a.`count_k51` = b.`count_k51` ) AND
  335.                 ( a.`name_left` = b.`name_left` ) AND
  336.                 ( a.`name_right` = b.`name_right` )
  337.         WHERE
  338.             ( b.`chr` IS NULL )
  339.     );
  340.  
  341.     IF (cnt_3 > 0) THEN
  342.         RETURN 'Error 2';
  343.     END IF;
  344.  
  345.     SET cnt_4 =
  346.     (
  347.         SELECT COUNT(*)
  348.         FROM
  349.             `pk47-pk51-gene-repeat-compare` a
  350.             LEFT JOIN `pk47-pk51-gene-repeat` b ON
  351.                 ( a.`chr` = b.`chr` ) AND
  352.                 ( a.`left` = b.`left` ) AND
  353.                 ( a.`right` = b.`right` ) AND
  354.                 ( a.`count_k47` = b.`count_k47` ) AND
  355.                 ( a.`count_k51` = b.`count_k51` ) AND
  356.                 ( a.`name_left` = b.`name_left` ) AND
  357.                 ( a.`name_right` = b.`name_right` )
  358.         WHERE
  359.             ( b.`chr` IS NULL )
  360.     );
  361.  
  362.     IF (cnt_4 > 0) THEN
  363.         RETURN 'Error 3';
  364.     END IF;
  365.  
  366.     SET cnt_5 =
  367.     (
  368.         SELECT COUNT(*)
  369.         FROM
  370.             `pk47-pk51-gene-repeat-compare` a
  371.             INNER JOIN `pk47-pk51-gene-repeat` b ON
  372.                 ( a.`chr` = b.`chr` ) AND
  373.                 ( a.`left` = b.`left` ) AND
  374.                 ( a.`right` = b.`right` ) AND
  375.                 ( a.`count_k47` = b.`count_k47` ) AND
  376.                 ( a.`count_k51` = b.`count_k51` ) AND
  377.                 ( a.`name_left` = b.`name_left` ) AND
  378.                 ( a.`name_right` = b.`name_right` )
  379.     );
  380.  
  381.     IF (cnt_5 != cnt_1) THEN
  382.         RETURN 'Error 4';
  383.     END IF;
  384.  
  385.     RETURN Concat('Success! (',
  386.         convert(cnt_1, char(10)), ';',
  387.         convert(cnt_2, char(10)), ';',
  388.         convert(cnt_3, char(10)), ';',
  389.         convert(cnt_4, char(10)), ';',
  390.         convert(cnt_5, char(10)), ')');
  391. END$$
  392. DELIMITER ;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement