} $variant_id = evidence_get_variant_id($gene_aa, false, false, false, true); if (!$variant_id && $row["rsid"]) { $variant_id = evidence_get_variant_id("rs" . $row["rsid"], false, false, false, true); } $edit_id = evidence_get_latest_edit($variant_id, 0, 0, 0, true, array("variant_impact" => "pharmacogenetic")); $latestrow = evidence_get_edit($edit_id); if (in_array($latestrow["variant_impact"], array("not reviewed", "none", "unknown"))) { $newrow = evidence_generate_edit(null, null, $latestrow); $newrow["variant_impact"] = "pharmacogenetic"; $new_edit_id = evidence_save_draft(null, $newrow); evidence_submit($new_edit_id); ++$n_marked_pharma; } if (ereg('^[0-9]+$', $row["pmid"])) { evidence_get_latest_edit($variant_id, $row["pmid"], 0, 0, true); } $did[$variant_name] = $variant_id; theDb()->query("UPDATE pharmgkb SET variant_id=? WHERE pharmgkb_id=?", array($variant_id, $row["pharmgkb_id"])); ++$n; if ($n % 100 == 0) { print "{$n}..."; } } print "{$n} ({$n_marked_pharma} existing variants changed to pharmacogenetic)\n"; print "Updating variant_external..."; theDb()->query("LOCK TABLES variant_external WRITE"); theDb()->query("DELETE FROM variant_external WHERE tag='PharmGKB'"); $q = theDb()->query("INSERT INTO variant_external\n (variant_id, tag, content, url, updated)\n SELECT variant_id, 'PharmGKB', annotation, url, NOW()\n FROM pharmgkb\n WHERE variant_id > 0"); if (theDb()->isError($q)) { print "[" . $q->getMessage() . "]";
$taf = NULL; } if ($gene && $aa_change) { $variant_name = "{$gene} {$aa_change}"; } else { if ($rsid) { $variant_name = $rsid; } else { continue; } } $variant_id = evidence_get_variant_id($variant_name); if (!$variant_id) { // create the variant, and an "initial edit/add" row in edits table $variant_id = evidence_get_variant_id($variant_name, false, false, false, true); $edit_id = evidence_get_latest_edit($variant_id, 0, 0, 0, true); } if (ereg("^(rs?)([0-9]+)\$", $rsid, $regs)) { $rsid = $regs[2]; } else { $rsid = null; } if (isset($job2genome[$job_id])) { $genome_id = $job2genome[$job_id]; } else { $genome_id = evidence_get_genome_id($global_human_id); } theDb()->query("INSERT INTO import_genomes_tmp SET variant_id=?, genome_id=?, chr=?, chr_pos=?, trait_allele=?, taf=?, rsid=?, dataset_id=?, zygosity='{$zygosity[$hom_or_het]}'", array($variant_id, $genome_id, $chr, $chr_pos, $trait_allele, $taf, $rsid, "T/snp/{$job_id}")); if (!isset($job2genome[$job_id])) { theDb()->query("UPDATE genomes SET name=? WHERE genome_id=?", array($human_name, $genome_id)); theDb()->query("REPLACE INTO datasets SET dataset_id=?, genome_id=?, sex=?, dataset_url=?", array("T/snp/{$job_id}", $genome_id, $sex, "http://snp.med.harvard.edu/results/job/{$job_id}"));
if (aa_sane($_POST["variant_aa_change"])) { if (ereg("^([^0-9]+)([0-9]+)([^0-9]+)\$", aa_long_form($_POST["variant_aa_change"]), $regs)) { $aa_from = $regs[1]; $aa_pos = $regs[2]; $aa_to = $regs[3]; } $gene = strtoupper($_POST["variant_gene"]); $variant_id = evidence_get_variant_id($gene, $aa_pos, $aa_from, $aa_to, true); $edit_id = evidence_get_latest_edit($variant_id, 0, 0, 0, true); $response["latest_edit_v{$variant_id}a0g0"] = $edit_id; $response["latest_edit_id"] = $edit_id; $response["variant_id"] = $variant_id; $response["please_reload"] = true; $response["variant_key"] = "{$gene} " . aa_short_form("{$aa_from}{$aa_pos}{$aa_to}"); } else { die("Invalid variant specified"); } } if ($article_pmid || $genome_id || $disease_id) { $latest_edit_id = evidence_get_latest_edit($variant_id, $article_pmid, $genome_id, $disease_id, true); $response["latest_edit_v{$variant_id}a{$article_pmid}g{$genome_id}"] = $latest_edit_id; $response["latest_edit_id"] = $latest_edit_id; $renderer = new evidence_row_renderer(); $renderer->render_row(theDb()->getRow("SELECT * FROM edits WHERE edit_id=?", array($latest_edit_id))); $response["html"] = $renderer->html(); ereg("id=\"([^\"]+)", $response["html"], $regs); $response["e_id"] = $regs[1]; } header("Content-type: application/json"); print json_encode($response); }
print theDb()->affectedRows(); print "\n"; print "Adding variants..."; $q = theDb()->query("\nSELECT gene_aa, snps, gwas_id\nFROM gwas\nWHERE variant_id IS NULL"); $n = 0; $did = array(); while ($row =& $q->fetchRow()) { $variant_name = $row["gene_aa"] ? $row["gene_aa"] : $row["snps"]; if (isset($did[$variant_name])) { $variant_id = $did[$variant_name]; theDb()->query("UPDATE gwas SET variant_id=? WHERE gwas_id=?", array($variant_id, $row["gwas_id"])); continue; } // create the variant, and an "initial edit/add" row in edits table $variant_id = evidence_get_variant_id($variant_name, false, false, false, true); $edit_id = evidence_get_latest_edit($variant_id, 0, 0, 0, true, array("variant_impact" => "pathogenic")); $did[$variant_name] = $variant_id; theDb()->query("UPDATE gwas SET variant_id=? WHERE gwas_id=?", array($variant_id, $row["gwas_id"])); if ($row["gene_aa"]) { theDb()->query("UPDATE variant_locations SET variant_id=? WHERE gene_aa=?", array($variant_id, $row["gene_aa"])); } ++$n; if ($n % 100 == 0) { print "{$n}..."; } } print "{$n}\n"; print "Adding diseases..."; theDb()->query("INSERT IGNORE INTO diseases (disease_name) SELECT disease_trait FROM gwas"); print theDb()->affectedRows(); print "\n";
<?php include "lib/setup.php"; $response = array(); if (!getCurrentUser()) { $response["errors"][] = "Not logged in"; } else { if ($item_id = evidence_get_latest_edit($_POST[v], $_POST[a], $_POST[g], $_POST[d])) { $q = theDb()->query("INSERT INTO edits SET\n\t\t\tedit_oid=?, edit_timestamp=NOW(),\n\t\t\tis_draft=1, is_delete=1,\n\t\t\tprevious_edit_id=?,\n\t\t\tvariant_id=?,\n\t\t\tarticle_pmid=?, genome_id=?, disease_id=?", array(getCurrentUser("oid"), $item_id, $_POST[v], $_POST[a], $_POST[g], $_POST[d])); if (theDb()->isError($q)) { $response["errors"][] = $q->getMessage(); } else { if ($delete_id = theDb()->getOne("SELECT LAST_INSERT_ID()")) { evidence_submit($delete_id); $response["deleted"] = true; if ($_POST[v] && ($_POST[a] || $_POST[g]) && !$_POST[d]) { // Delete per-disease entries for an article/genome entry // TODO: evidence_submit() should take care of this // TODO: snap_release will need special handling for this case too theDb()->query("DELETE FROM snap_latest WHERE variant_id=? AND article_pmid=? AND genome_id=?", array($_POST[v], $_POST[a], $_POST[g])); } } } } else { $response["errors"][] = "Nothing to delete"; } } header("Content-type: application/json"); print json_encode($response); ?>