CINXE.COM
Pairwise Orthologs for HUMAN34196
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Pairwise Orthologs for HUMAN34196</title> <meta name="description" content="For HUMAN34196 OMA predicts the following 212 pairwise orthologs"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="keywords" content="orthology,evolutionary gene relations,evolution,paralogy,inference,HGNC:11027,SLC4A1,AE1,DI,EPB3,Band 3 anion transport protein,P02730,9606.ENSP00000262418,NX_P02730,ENSG00000004939,1024,P02730,6521,Band_3"> <!-- Matomo --> <script> var _paq = window._paq = window._paq || []; /* tracker methods like "setCustomDimension" should be called before "trackPageView" */ _paq.push(["setCookieDomain", "*.omabrowser.org"]); _paq.push(['trackPageView']); _paq.push(['enableLinkTracking']); (function() { var u="https://matomo.sib.swiss/"; _paq.push(['setTrackerUrl', u+'matomo.php']); _paq.push(['setSiteId', '6']); var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s); })(); </script> <noscript><p><img src="https://matomo.sib.swiss/matomo.php?idsite=6&rec=1" style="border:0;" alt="" /></p></noscript> <!-- End Matomo Code --> <link rel="shortcut icon" href="/static/image/favicon.ico" type="image/x-icon"> <!-- css includes --> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/css/bootstrap.min.css"> <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Dosis:400,800%7CNoto+Sans:400,700%7CRopa+Sans%7CMaterial+Icons"> <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@48,400,0,0"> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha256-eSi1q2PG6J7g7ib17yAaWMcrr5GrtohYChqibrV7PBE=" crossorigin="anonymous"> <link rel="stylesheet" href="/static/css/oma_styles.css"> <!-- js includes --> <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.3/js/bootstrap.bundle.min.js" integrity="sha256-E/V4cWE4qvAeO5MOhjtGtqDzPndRO1LBk8lJ/PR7CA4=" crossorigin="anonymous"></script> <script>const static_root = "/static/";</script> <!-- AA: not sure which of those libs will still be needed. I suspect autocomplete.min.js for sure, rest probably not --> <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.11.2/css/all.css"> <script src="/static/js/jquery.autocomplete.min.js"></script> <script id="release_char-data" type="application/json">"E"</script> </head> <body class=""> <nav class="navbar fixed-top navbar-expand-xl bg-light navbar-light topnav"> <div class="logos-navbar mr-auto"> <a href="https://www.sib.swiss/"><img src="/static/image/logo-SIB.png" alt="Logo SIB"/></a> <a href="/oma/home/"><img src="/static/image/logo-oma-mobile.svg" alt="Logo OMA small"/></a> </div> <span class="oma-main-search-header"> <script src="/static/js/vue.js"></script> <style> .button_search { cursor:pointer; align-self: center; height: 100%; background-color: transparent; border: none; margin-right: 4px; margin-left: auto; order: 2; } .button_search:disabled { cursor:not-allowed; } .help_icon { align-self: center; font-size: 1.5em; margin: 4px; cursor: pointer; } .prefix-dropdown { border: none; background-color: transparent; } .vl { border-left: 2px solid grey; margin-left: 4px; margin-right: 4px; } #search_nav_input_part { display: flex; border: 1px solid #eee; font-size: 0.9em; box-sizing: border-box; padding: 0 0 0 4px; border-radius: 500px; } .ml-input{} .sl-input{height: 50px;} .token-input__tag { height: 30px; display: inline-block; margin-right: 10px; background-color: #eee; margin-top: 10px; line-height: 30px; padding: 0 5px; border-radius: 5px; } .token-input__tag > span { cursor: pointer; opacity: 0.75; } .token-input__text { border: none; outline: none; font-size: 0.9em; line-height: 50px; flex-grow: 1; background: transparent; } .token-delete { margin-left: 4px; color: red; } #token-container_search_nav{ overflow: scroll; display: inline; } .ml-token-con{margin-bottom: 8px;} .sl-token-con{white-space: nowrap;} </style> <script type="module"> const {createApp} = Vue window.search_token_vue_search_nav = createApp({ data() { return { tokens: [], //{query: 'HUMAN', single_term: true, prefix: "Species", type: "Taxon"} prefixes: { 'Protein': ['proteinid','xref','go','ec','description','domain','sequence'], 'Taxon': ['species','taxid', 'taxon'], 'HOG': ['hog','sequence'], 'OMA_Group': ['og', 'fingerprint','sequence'], }, default_prefix : 'description', show_error: false, error_message : " Error.", post_query_search_nav: '', multiline: false, wild_card: 'sequence', placeholder: ' "Blue-light photoreceptor" | proteinid:P53_RAT | species:"Drosophila melanogaster" ', //'P53_RAT | Insulin | species:HUMAN | "auxin response factor"', placeholder_default: 'proteinid:P53_RAT | "Blue-light photoreceptor" | species:"Drosophila melanogaster" ' //'P53_RAT | Insulin | species:HUMAN | "auxin response factor"', } }, compilerOptions: { delimiters: ["$[", "]$"] }, methods: { get_list_prefixes(lowercase=false){ let lp = [].concat(...Object.values(this.prefixes)); if (lowercase){ lp = lp.map(element => {return element.toLowerCase();}); } return lp }, get_prefix_used(){ return this.tokens.map(x => this.get_type_prefix(x.prefix)); }, get_type_prefix(prefix){ for (var key in this.prefixes) { if (this.prefixes.hasOwnProperty(key)) { if (this.prefixes[key].includes(prefix.toLowerCase())){ return key } } } return null }, addToken(event) { event.preventDefault() let val = event.target.value.trim(); if (val.length === 0 && this.tokens.length > 0){ this.collect_token() // wanted to auto search if press and empty + token but post request miss post_query data } else { var sinle_term = val[0] !== '"'; var multi_term_closed = (val.length > 1 && val[val.length - 1] === '"') var has_prefix = val.includes(':') var prefix_end = val[val.length - 1] === ':' var p = has_prefix ? val.split(':')[0].toLowerCase() : this.default_prefix; // If prefix but not valid if (has_prefix && !this.get_list_prefixes(true).includes(p.toLowerCase())) { this.show_error = true; this.error_message = "Error: Incorrect prefix." return; } else { this.show_error = false; } // If something typed if (val.length > 0) { // Multiple word query if (!sinle_term) { // STOP if multiple not closed if (!multi_term_closed) { if (event.code === "Space") { event.target.value = val + ' ' } return } } // STOP if the prefix is fine and we are at : if (prefix_end) { return } // has a prefix if (has_prefix) { var tmp = val.split(':')[1].trim() sinle_term = tmp[0] !== '"'; multi_term_closed = (val.length > 1 && tmp[tmp.length - 1] === '"') // multiple term if (!sinle_term) { // STOP if not closed if (!multi_term_closed) { if (event.code === "Space") { event.target.value = val + ' ' } return } } val = tmp } if (this.validate_token(val.replaceAll('"', ''), sinle_term, p)) { val = val.replaceAll('"', '') this.tokens.push({ query: val, single_term: sinle_term, prefix: p, type: this.get_type_prefix(p) }); event.target.value = ''; } } } document.getElementById("token-container_search_nav").scrollLeft += 200000; }, addToken_and_search(event){ this.addToken(event); if (this.tokens.length > 0){ this.collect_token() this.$refs.submit_button.click(); } }, removeToken(index) { this.tokens.splice(index, 1) }, removeLastToken(event) { if (event.target.value.length === 0) { this.removeToken(this.tokens.length - 1) } }, enter_from_input(event) { if (event.target.value.trim().length > 0) {this.addToken(event)} else{ event.target.nextElementSibling.focus().click() } }, collect_token(){ this.post_query_search_nav = JSON.stringify(this.tokens) }, detokenize(index){ var token = this.tokens.splice(index, 1)[0]; var input_token_search = document.getElementById('input_token_search_search_nav'); var token_str = token.prefix + ': ' token_str += token.single_term ? '' : '"' token_str += token.query token_str += token.single_term ? '' : '"' input_token_search.value = token_str }, on_change_prefix(target, t){ var prefix = target.value if (this.validate_token(t.query, t.single_term,prefix, true)){ t.prefix = prefix.toLowerCase() } else { target.value = t.prefix; } }, validate_token(val, sinle_term, p , OnChange=false){ if (this.wild_card.includes(p)){ return true } // todo Validate type val is valid for p // validate prefix not in conflict with other prefix var pu = this.get_prefix_used(); var current_prefix_type = this.get_type_prefix(p) if (current_prefix_type !== 'Taxon'){ var no_taxon = pu.filter(x => x !== 'Taxon'); if (no_taxon.length == 0){return true} else if (OnChange && no_taxon.length == 1){return true} else if (no_taxon.length > 0 && no_taxon.includes(current_prefix_type) ){return true} else if (no_taxon.length > 0 && !no_taxon.includes(current_prefix_type)) { this.show_error = true; this.error_message = "Warning: You are searching for " + no_taxon[0] + "; you can't add a token for " + current_prefix_type return false } } return true }, preload_token(tokens){ this.tokens = [] for (var i in tokens) { var token = tokens[i] if (this.validate_token(token.query, token.sinle_term, token.prefix )){ this.tokens.push({query: token.query, single_term: token.sinle_term, prefix: token.prefix, type:token.type}); } } this.placeholder = ''; this.$refs.input_handle.focus(); }, is_empty(){return this.tokens.length === 0}, modal_clicked(){ $('#exampleModal_search_nav').modal('show') }, format_token_string(str){ if (str.length < 20){return str} return str.slice(0, 20) + '...' } }, }).mount('#search_nav') var autocomplete_opts = { paramName: 'search', serviceUrl: '/api/xref/', minChars: 3, triggerSelectOnValidInput: false, deferRequestBy: 200, transformResult: function (response) { var json = JSON.parse(response); var xref_source_order = ['UniProtKB/SwissProt', 'UniProtKB/TrEMBL', 'Ensembl Protein', 'Ensembl Gene', 'Ensembl Transcript', 'RefSeq', 'EntrezGene', 'FlyBase', 'WormBase', 'EnsemblGenomes', 'NCBI', 'EMBL', 'SourceID', 'SourceAC', 'HGNC', 'Gene Name', 'Synonym', 'Protein Name', 'ORF Name', 'Ordered Locus Name', 'PDB', 'Swiss Model', 'STRING', 'neXtProt', 'Bgee', 'EPD', 'ChEMBL', 'GlyConnect', 'SwissPalm', 'DisGeNET', 'WikiGene', 'IPI', 'GI', 'n/a']; json.sort(function (a, b){ const idx_a = xref_source_order.indexOf(a.source), idx_b = xref_source_order.indexOf(b.source); if (idx_a === idx_b){ return a.xref > b.xref ? 1 : -1; } return idx_a - idx_b; }); return { suggestions: $.map(json, function (dataItem) { return {value: dataItem.xref, data: dataItem}; }) }; }, groupBy: 'source', formatResult: function(suggestion, currentValue) { // Do not replace anything if there current value is empty if (!currentValue) { return suggestion.value; } // escape any special char var pattern = '(' + currentValue.replace(/[|\\{}()[\]^$+*?.]/g, "\\$&") + ')'; var highlight_and_escape = function(val){ return val.replace(new RegExp(pattern, 'gi'), '<strong>$1<\/strong>') .replace(/&/g, '&') .replace(/</g, '<') .replace(/>/g, '>') .replace(/"/g, '"') .replace(/<(\/?strong)>/g, '<$1>'); }; return '<span class="auto-xref">' + highlight_and_escape(suggestion.data.xref) + '</span> ' + '<span class="auto-omaid">' + suggestion.data.omaid + '</span>' + '<span class="auto-species">' + highlight_and_escape(suggestion.data.genome.species) + '</span>'; }, onSelect: function(item){ window.location.href = "/oma/vps/" + item.data.entry_nr; return false; }, response: function( event, ui ) {console.log('HOG')} }; $('#input_token_search_search_nav').autocomplete(autocomplete_opts); </script> <!-- Modal --> <div class="modal fade" data-backdrop="false" id="exampleModal_search_nav" tabindex="-1" aria-labelledby="exampleModalLabelsearch_nav" aria-hidden="true"> <div class="modal-dialog modal-lg modal-dialog-centered" > <div class="modal-content"> <div class="modal-header"> <h4 class="modal-title" id="exampleModalLabelsearch_nav">How to use the search in OMA Browser ?</h4> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true">×</span> </button> </div> <div class="modal-body" style="text-align: justify"> <strong>How does the search work?</strong> <p>Input a query in the search field. Everytime you press Space or Enter after a word, a <b>token</b> will be created. The token is composed of a <b>prefix</b> describing how the query should be treated and the actual <b>query</b> itself.</p> <strong>What are the different types of tokens?</strong> <p>Each token represents either a Gene, HOG, OMA group, or Taxon. Prefixes are used to specify which category to associate with the query term. </p> <table class="table table-bordered"> <thead> <tr> <th scope="col">Category</th> <th scope="col">Prefixes</th> </tr> </thead> <tbody> <tr> <th scope="row">Genes</th> <td>id, go, ec, description, domain, sequence</td> </tr> <tr> <th scope="row">HOGs</th> <td>hog, sequence</td> </tr> <tr> <th scope="row">OMA Groups</th> <td>omagroup, fingerprint, sequence</td> </tr> <tr> <th scope="row">Taxon</th> <td>species, taxid, taxon</td> </tr> </tbody> </table> <small>For example, the token [go:4225] will search for genes in the OMA database annotated with the GO:0004225 gene ontology term. </small> <br> <strong>How to search for a multi-word query?</strong> <p>If your query term is composed of multiple words (e.g homo sapiens), use " " to encapsulate it. </p> <strong>How many tokens can I have?</strong> <p>There is no limit on the number of tokens. It is not possible to enter multiple tokens of different categories, except taxon, which can be combined with other categories. For example, you can search for 'hog:60627 species:HUMAN' to return human genes found in HOG:606207. </p> <strong>How to edit/delete a token?</strong> <p>To edit a query, click on it to modify the input field. To edit a prefix, click on the dropdown icon to select another one. To remove a token, click on the x to delete it.</p> <strong>Autosuggest</strong> <p>Typing a query without hitting enter or space will prompt an autosuggestion for the identifier after a few seconds.</p> </div> <div class="modal-footer"> <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button> </div> </div> </div> </div> <form method="POST" id='form_' action="/oma/search-token/" > <input type="hidden" name="csrfmiddlewaretoken" value="BE20cqxzUXhzGf9T8eeKGExBiTP8uHZGhEPEHqkxcyfPctCNGGE7fIooyZ0EWzVZ"> <div id="search_nav"> <div id="search_nav_input_part" :class="multiline ? 'ml-input' : 'sl-input'"> <span class="material-symbols-outlined help_icon" @click="modal_clicked"> help </span> <div id="token-container_search_nav" :class="multiline ? 'ml-token-con' : 'sl-token-con'" > <span v-for="token, index in tokens" :key="token" class="token-input__tag"> <select class="prefix-dropdown" @change="on_change_prefix($event.target, token)"> <template v-for="(prefixes_list, prefix_type) in prefixes"> <optgroup :label="prefix_type" > <option v-for="prefix in prefixes_list" :key="prefix" :selected="prefix == token.prefix"> $[ prefix ]$ </option> </optgroup> </template> </select> <span class="vl"></span> <p style="display: inline" @click='detokenize(index)'> $[ format_token_string(token.query) ]$ </p> <span @click='removeToken(index)' class="token-delete">X</span> </select> </span> </div> <input type="hidden" name="hidden_query" :value="post_query_search_nav"> <input type='text' :placeholder='placeholder' ref="input_handle" class='token-input__text' id="input_token_search_search_nav" @keydown.enter='enter_from_input' @keydown.space='addToken' @keydown.delete='removeLastToken' /> <button class=" button_search float-right" id="button_submit" ref="submit_button" :disabled="is_empty()" @click='collect_token()' type="submit"> <img style='width: 24px;' src="/static/image/logo-oma-o.svg" alt="Logo OMA icon"/> </button> </div> <div style="display: flex" v-show="show_error"> <small style="color: red; margin-right: auto;" > $[this.error_message]$ </small> </div> </div> </form> </span> <button type="button" class="navbar-toggler ml-auto collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1"> <span></span> <span></span> <span></span> </button> <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> <div class="navbar-nav ml-auto"> <div class="search"> <h3>Search</h3> <script src="/static/js/vue.js"></script> <style> .button_search { cursor:pointer; align-self: center; height: 100%; background-color: transparent; border: none; margin-right: 4px; margin-left: auto; order: 2; } .button_search:disabled { cursor:not-allowed; } .help_icon { align-self: center; font-size: 1.5em; margin: 4px; cursor: pointer; } .prefix-dropdown { border: none; background-color: transparent; } .vl { border-left: 2px solid grey; margin-left: 4px; margin-right: 4px; } #search_min_input_part { display: flex; border: 1px solid #eee; font-size: 0.9em; box-sizing: border-box; padding: 0 0 0 4px; border-radius: 500px; } .ml-input{} .sl-input{height: 50px;} .token-input__tag { height: 30px; display: inline-block; margin-right: 10px; background-color: #eee; margin-top: 10px; line-height: 30px; padding: 0 5px; border-radius: 5px; } .token-input__tag > span { cursor: pointer; opacity: 0.75; } .token-input__text { border: none; outline: none; font-size: 0.9em; line-height: 50px; flex-grow: 1; background: transparent; } .token-delete { margin-left: 4px; color: red; } #token-container_search_min{ overflow: scroll; display: inline; } .ml-token-con{margin-bottom: 8px;} .sl-token-con{white-space: nowrap;} </style> <script type="module"> const {createApp} = Vue window.search_token_vue_search_min = createApp({ data() { return { tokens: [], //{query: 'HUMAN', single_term: true, prefix: "Species", type: "Taxon"} prefixes: { 'Protein': ['proteinid','xref','go','ec','description','domain','sequence'], 'Taxon': ['species','taxid', 'taxon'], 'HOG': ['hog','sequence'], 'OMA_Group': ['og', 'fingerprint','sequence'], }, default_prefix : 'description', show_error: false, error_message : " Error.", post_query_search_min: '', multiline: false, wild_card: 'sequence', placeholder: ' "Blue-light photoreceptor" | proteinid:P53_RAT | species:"Drosophila melanogaster" ', //'P53_RAT | Insulin | species:HUMAN | "auxin response factor"', placeholder_default: 'proteinid:P53_RAT | "Blue-light photoreceptor" | species:"Drosophila melanogaster" ' //'P53_RAT | Insulin | species:HUMAN | "auxin response factor"', } }, compilerOptions: { delimiters: ["$[", "]$"] }, methods: { get_list_prefixes(lowercase=false){ let lp = [].concat(...Object.values(this.prefixes)); if (lowercase){ lp = lp.map(element => {return element.toLowerCase();}); } return lp }, get_prefix_used(){ return this.tokens.map(x => this.get_type_prefix(x.prefix)); }, get_type_prefix(prefix){ for (var key in this.prefixes) { if (this.prefixes.hasOwnProperty(key)) { if (this.prefixes[key].includes(prefix.toLowerCase())){ return key } } } return null }, addToken(event) { event.preventDefault() let val = event.target.value.trim(); if (val.length === 0 && this.tokens.length > 0){ this.collect_token() // wanted to auto search if press and empty + token but post request miss post_query data } else { var sinle_term = val[0] !== '"'; var multi_term_closed = (val.length > 1 && val[val.length - 1] === '"') var has_prefix = val.includes(':') var prefix_end = val[val.length - 1] === ':' var p = has_prefix ? val.split(':')[0].toLowerCase() : this.default_prefix; // If prefix but not valid if (has_prefix && !this.get_list_prefixes(true).includes(p.toLowerCase())) { this.show_error = true; this.error_message = "Error: Incorrect prefix." return; } else { this.show_error = false; } // If something typed if (val.length > 0) { // Multiple word query if (!sinle_term) { // STOP if multiple not closed if (!multi_term_closed) { if (event.code === "Space") { event.target.value = val + ' ' } return } } // STOP if the prefix is fine and we are at : if (prefix_end) { return } // has a prefix if (has_prefix) { var tmp = val.split(':')[1].trim() sinle_term = tmp[0] !== '"'; multi_term_closed = (val.length > 1 && tmp[tmp.length - 1] === '"') // multiple term if (!sinle_term) { // STOP if not closed if (!multi_term_closed) { if (event.code === "Space") { event.target.value = val + ' ' } return } } val = tmp } if (this.validate_token(val.replaceAll('"', ''), sinle_term, p)) { val = val.replaceAll('"', '') this.tokens.push({ query: val, single_term: sinle_term, prefix: p, type: this.get_type_prefix(p) }); event.target.value = ''; } } } document.getElementById("token-container_search_nav").scrollLeft += 200000; }, addToken_and_search(event){ this.addToken(event); if (this.tokens.length > 0){ this.collect_token() this.$refs.submit_button.click(); } }, removeToken(index) { this.tokens.splice(index, 1) }, removeLastToken(event) { if (event.target.value.length === 0) { this.removeToken(this.tokens.length - 1) } }, enter_from_input(event) { if (event.target.value.trim().length > 0) {this.addToken(event)} else{ event.target.nextElementSibling.focus().click() } }, collect_token(){ this.post_query_search_min = JSON.stringify(this.tokens) }, detokenize(index){ var token = this.tokens.splice(index, 1)[0]; var input_token_search = document.getElementById('input_token_search_search_min'); var token_str = token.prefix + ': ' token_str += token.single_term ? '' : '"' token_str += token.query token_str += token.single_term ? '' : '"' input_token_search.value = token_str }, on_change_prefix(target, t){ var prefix = target.value if (this.validate_token(t.query, t.single_term,prefix, true)){ t.prefix = prefix.toLowerCase() } else { target.value = t.prefix; } }, validate_token(val, sinle_term, p , OnChange=false){ if (this.wild_card.includes(p)){ return true } // todo Validate type val is valid for p // validate prefix not in conflict with other prefix var pu = this.get_prefix_used(); var current_prefix_type = this.get_type_prefix(p) if (current_prefix_type !== 'Taxon'){ var no_taxon = pu.filter(x => x !== 'Taxon'); if (no_taxon.length == 0){return true} else if (OnChange && no_taxon.length == 1){return true} else if (no_taxon.length > 0 && no_taxon.includes(current_prefix_type) ){return true} else if (no_taxon.length > 0 && !no_taxon.includes(current_prefix_type)) { this.show_error = true; this.error_message = "Warning: You are searching for " + no_taxon[0] + "; you can't add a token for " + current_prefix_type return false } } return true }, preload_token(tokens){ this.tokens = [] for (var i in tokens) { var token = tokens[i] if (this.validate_token(token.query, token.sinle_term, token.prefix )){ this.tokens.push({query: token.query, single_term: token.sinle_term, prefix: token.prefix, type:token.type}); } } this.placeholder = ''; this.$refs.input_handle.focus(); }, is_empty(){return this.tokens.length === 0}, modal_clicked(){ $('#exampleModal_search_min').modal('show') }, format_token_string(str){ if (str.length < 20){return str} return str.slice(0, 20) + '...' } }, }).mount('#search_min') var autocomplete_opts = { paramName: 'search', serviceUrl: '/api/xref/', minChars: 3, triggerSelectOnValidInput: false, deferRequestBy: 200, transformResult: function (response) { var json = JSON.parse(response); var xref_source_order = ['UniProtKB/SwissProt', 'UniProtKB/TrEMBL', 'Ensembl Protein', 'Ensembl Gene', 'Ensembl Transcript', 'RefSeq', 'EntrezGene', 'FlyBase', 'WormBase', 'EnsemblGenomes', 'NCBI', 'EMBL', 'SourceID', 'SourceAC', 'HGNC', 'Gene Name', 'Synonym', 'Protein Name', 'ORF Name', 'Ordered Locus Name', 'PDB', 'Swiss Model', 'STRING', 'neXtProt', 'Bgee', 'EPD', 'ChEMBL', 'GlyConnect', 'SwissPalm', 'DisGeNET', 'WikiGene', 'IPI', 'GI', 'n/a']; json.sort(function (a, b){ const idx_a = xref_source_order.indexOf(a.source), idx_b = xref_source_order.indexOf(b.source); if (idx_a === idx_b){ return a.xref > b.xref ? 1 : -1; } return idx_a - idx_b; }); return { suggestions: $.map(json, function (dataItem) { return {value: dataItem.xref, data: dataItem}; }) }; }, groupBy: 'source', formatResult: function(suggestion, currentValue) { // Do not replace anything if there current value is empty if (!currentValue) { return suggestion.value; } // escape any special char var pattern = '(' + currentValue.replace(/[|\\{}()[\]^$+*?.]/g, "\\$&") + ')'; var highlight_and_escape = function(val){ return val.replace(new RegExp(pattern, 'gi'), '<strong>$1<\/strong>') .replace(/&/g, '&') .replace(/</g, '<') .replace(/>/g, '>') .replace(/"/g, '"') .replace(/<(\/?strong)>/g, '<$1>'); }; return '<span class="auto-xref">' + highlight_and_escape(suggestion.data.xref) + '</span> ' + '<span class="auto-omaid">' + suggestion.data.omaid + '</span>' + '<span class="auto-species">' + highlight_and_escape(suggestion.data.genome.species) + '</span>'; }, onSelect: function(item){ window.location.href = "/oma/vps/" + item.data.entry_nr; return false; }, response: function( event, ui ) {console.log('HOG')} }; $('#input_token_search_search_min').autocomplete(autocomplete_opts); </script> <!-- Modal --> <div class="modal fade" data-backdrop="false" id="exampleModal_search_min" tabindex="-1" aria-labelledby="exampleModalLabelsearch_min" aria-hidden="true"> <div class="modal-dialog modal-lg modal-dialog-centered" > <div class="modal-content"> <div class="modal-header"> <h4 class="modal-title" id="exampleModalLabelsearch_min">How to use the search in OMA Browser ?</h4> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true">×</span> </button> </div> <div class="modal-body" style="text-align: justify"> <strong>How does the search work?</strong> <p>Input a query in the search field. Everytime you press Space or Enter after a word, a <b>token</b> will be created. The token is composed of a <b>prefix</b> describing how the query should be treated and the actual <b>query</b> itself.</p> <strong>What are the different types of tokens?</strong> <p>Each token represents either a Gene, HOG, OMA group, or Taxon. Prefixes are used to specify which category to associate with the query term. </p> <table class="table table-bordered"> <thead> <tr> <th scope="col">Category</th> <th scope="col">Prefixes</th> </tr> </thead> <tbody> <tr> <th scope="row">Genes</th> <td>id, go, ec, description, domain, sequence</td> </tr> <tr> <th scope="row">HOGs</th> <td>hog, sequence</td> </tr> <tr> <th scope="row">OMA Groups</th> <td>omagroup, fingerprint, sequence</td> </tr> <tr> <th scope="row">Taxon</th> <td>species, taxid, taxon</td> </tr> </tbody> </table> <small>For example, the token [go:4225] will search for genes in the OMA database annotated with the GO:0004225 gene ontology term. </small> <br> <strong>How to search for a multi-word query?</strong> <p>If your query term is composed of multiple words (e.g homo sapiens), use " " to encapsulate it. </p> <strong>How many tokens can I have?</strong> <p>There is no limit on the number of tokens. It is not possible to enter multiple tokens of different categories, except taxon, which can be combined with other categories. For example, you can search for 'hog:60627 species:HUMAN' to return human genes found in HOG:606207. </p> <strong>How to edit/delete a token?</strong> <p>To edit a query, click on it to modify the input field. To edit a prefix, click on the dropdown icon to select another one. To remove a token, click on the x to delete it.</p> <strong>Autosuggest</strong> <p>Typing a query without hitting enter or space will prompt an autosuggestion for the identifier after a few seconds.</p> </div> <div class="modal-footer"> <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button> </div> </div> </div> </div> <form method="POST" id='form_' action="/oma/search-token/" > <input type="hidden" name="csrfmiddlewaretoken" value="BE20cqxzUXhzGf9T8eeKGExBiTP8uHZGhEPEHqkxcyfPctCNGGE7fIooyZ0EWzVZ"> <div id="search_min"> <div id="search_min_input_part" :class="multiline ? 'ml-input' : 'sl-input'"> <span class="material-symbols-outlined help_icon" @click="modal_clicked"> help </span> <div id="token-container_search_min" :class="multiline ? 'ml-token-con' : 'sl-token-con'" > <span v-for="token, index in tokens" :key="token" class="token-input__tag"> <select class="prefix-dropdown" @change="on_change_prefix($event.target, token)"> <template v-for="(prefixes_list, prefix_type) in prefixes"> <optgroup :label="prefix_type" > <option v-for="prefix in prefixes_list" :key="prefix" :selected="prefix == token.prefix"> $[ prefix ]$ </option> </optgroup> </template> </select> <span class="vl"></span> <p style="display: inline" @click='detokenize(index)'> $[ format_token_string(token.query) ]$ </p> <span @click='removeToken(index)' class="token-delete">X</span> </select> </span> </div> <input type="hidden" name="hidden_query" :value="post_query_search_min"> <input type='text' :placeholder='placeholder' ref="input_handle" class='token-input__text' id="input_token_search_search_min" @keydown.enter='enter_from_input' @keydown.space='addToken' @keydown.delete='removeLastToken' /> <button class=" button_search float-right" id="button_submit" ref="submit_button" :disabled="is_empty()" @click='collect_token()' type="submit"> <img style='width: 24px;' src="/static/image/logo-oma-o.svg" alt="Logo OMA icon"/> </button> </div> <div style="display: flex" v-show="show_error"> <small style="color: red; margin-right: auto;" > $[this.error_message]$ </small> </div> </div> </form> </div> <ul class="navbar-nav"> <!-- explore dropdown --> <li class="nav-item dropdown"> <a class="nav-link dropdown-toggle text-nowrap" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Explore <span class="caret"></span></a> <div class="dropdown-menu" role="menu"> <a class="dropdown-item" href="/oma/release/">Species/release information</a> <a class="dropdown-item" href="/oma/phylostratigraphy/">Phylostratigraphy</a> <div class="dropdown-divider"></div> <div role="presentation" class="dropdown-header">Quick access to</div> <a class="dropdown-item" href="/oma/genome/">Extant and Ancestral genomes</a> <a class="dropdown-item" href="/oma/landOMA/">OMA groups</a> <a class="dropdown-item" href="/oma/hogs/">Hierarchical orthologous groups (HOGs)</a> <a class="dropdown-item" href="/oma/landAnnotation/">Functional annotations</a> <a class="dropdown-item" href="/oma/synteny/">Local synteny</a> </div> </li> <!-- compute dropdown --> <li class="nav-item dropdown"> <a href="#" class="nav-link dropdown-toggle text-nowrap" data-toggle="dropdown">Tools <span class="caret"></span></a> <div class="dropdown-menu" role="menu"> <div role="presentation" class="dropdown-header">Online tools</div> <a class="dropdown-item" href="/oma/fastmapping/">Fast mapping</a> <a class="dropdown-item" href="/oma/functions/">Functional prediction</a> <a class="dropdown-item" href="/oma/dotplot/">Synteny dotplot</a> <a class="dropdown-item" href="/oma/genomePW/">Genome pair orthology</a> <a class="dropdown-item" href="/oma/go_enrichment/">GO enrichment analysis</a> <a class="dropdown-item" href="/oma/omamo/search/">OMA-MO: Find model organism</a> <a class="dropdown-item" href="https://omark.omabrowser.org">OMArk: Assess proteome quality</a> <div class="dropdown-divider"></div> <div role="presentation" class="dropdown-header">Software</div> <a class="dropdown-item" href="https://omabrowser.org/standalone/">OMA StandAlone</a> <a class="dropdown-item" href="https://github.com/dessimozlab/read2tree">read2tree</a> <a class="dropdown-item" href="https://github.com/dessimozlab/FastOMA">FastOMA</a> <a class="dropdown-item" href="https://github.com/dessimozlab/pyham">pyHam</a> <div class="dropdown-divider"></div> <div role="presentation" class="dropdown-header">Visualisation tools</div> <a class="dropdown-item" href="https://phylo.io/">Phylo.io</a> <a class="dropdown-item" href="https://github.com/dessimozlab/iham">IHam</a> <div class="dropdown-divider"></div> <a class="dropdown-item text-center" href="/oma/tools/"><b> <i class="fas fa-toolbox"></i> See all OMA tools</b></a> </div> </li> <!-- Download dropdown --> <li class="nav-item dropdown"> <a href="#" class="nav-link dropdown-toggle text-nowrap" data-toggle="dropdown">Download <span class="caret"></span></a> <ul class="dropdown-menu" role="menu"> <div role="presentation" class="dropdown-header">OMA database files</div> <a class="dropdown-item" href="/oma/current/">Current release</a> <a class="dropdown-item" href="/oma/export/">Export All/All</a> <a class="dropdown-item" href="/oma/export_markers">Export marker genes</a> <a class="dropdown-item" href="/oma/archives/">Archives</a> <div class="dropdown-divider"></div> <div role="presentation" class="dropdown-header">API</div> <a class="dropdown-item" href="/api/docs">OMA API</a> <a class="dropdown-item" href="/oma/APISOAP/">SOAP</a> <a class="dropdown-item" href="https://bioconductor.org/packages/release/bioc/html/OmaDB.html">R API binding</a> <a class="dropdown-item" href="https://github.com/DessimozLab/pyomadb">Python API binding</a> <div class="dropdown-divider"></div> <div role="presentation" class="dropdown-header">Semantic web</div> <a class="dropdown-item" href="https://sparql.omabrowser.org/">SPARQL endpoint</a> <div class="dropdown-divider"></div> <a class="dropdown-item text-center" href="/oma/uses/"><b> <i class="fas fa-keyboard"></i> Access the OMA data</b></a> </ul> </li> <!-- Help dropdown --> <li class="nav-item dropdown"> <a href="#" class="nav-link dropdown-toggle text-nowrap" data-toggle="dropdown">Help <span class="caret"></span></a> <ul class="dropdown-menu dropdown-menu-right" role="menu"> <a class="dropdown-item" href="/oma/about/">Introduction</a> <a class="dropdown-item" href="/oma/type/">Orthology Basics</a> <a class="dropdown-item" href="/oma/homologs/">Type of homologs</a> <a class="dropdown-item" href="/oma/uses/">Access the OMA data</a> <a class="dropdown-item" href="/oma/tools/">Catalog of tools</a> <a class="dropdown-item" href="/oma/suggestion/genome/">Suggesting a genome</a> <a class="dropdown-item" href="/oma/FAQ/">FAQ</a> <a class="dropdown-item" href="https://www.biostars.org/tag/oma/">Q&A on BioStars</a> <a class="dropdown-item " href="/oma/glossary/"> Glossary</a> <div class="dropdown-divider"></div> <a class="dropdown-item text-center" href="/oma/academy/"><b> <i class="fas fa-book"></i> OMA Academy</b></a> </ul> </li> <!-- about dropdown --> <li class="nav-item dropdown"> <a class="nav-link dropdown-toggle text-nowrap" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">About <span class="caret"></span></a> <div class="dropdown-menu dropdown-menu-right" role="menu"> <a class="dropdown-item" href="/oma/about/">OMA</a> <a class="dropdown-item" href="/oma/team/">Team</a> <a class="dropdown-item" href="/oma/sab/">SAB</a> <a class="dropdown-item" href="/oma/funding/">Funding</a> <a class="dropdown-item" href="/oma/terms_of_use/">Terms of use</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="mailto:contact@omabrowser.org"><span class="glyphicon glyphicon-envelope"></span> Contact</a> </div> </li> </ul> </div> </div> </nav> <div class="oma-details-header "> <div class="w-100 d-flex align-items-center py-2" style="padding-bottom: 0rem!important;padding-top: 0rem!important;"> <div class="oma-details-title "> <h2 class="gene_title">Gene HUMAN34196 (B3AT_HUMAN) </h2> <p> <span class="badge badge-danger"><abbr class='abbrNoUnder' title="Eukaryota">E</abbr></span> Homo sapiens | <b>Band 3 anion transport protein </b> <b> [SLC4A1]</b> </p> </div> <div class="ml-auto oma-details-title-buttons "> <button class="btn btn-default dropdown-toggle group_back " data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" style="color: #FFF;" > Groups </button> <div class="dropdown-menu"> <a class="dropdown-item" href="/oma/hog/HOG:E0789285.1b.4c.13g.10a/Homininae/iham/" >HOG </a> <a class="dropdown-item" href="/oma/omagroup/1014289/members/" > OMA Group </a> </div> <button class="btn btn-default genome_back"><a style="color: #FFF;" href="/oma/genome/HUMAN/info/">Genome</a> </button> </div> </div> </div> <div class="oma-details-container"> <div id="oma-details-sideNav-mobile"> <a href="#" id="toggleSidenav"> <span>Select a Tab</span><img src="/static/image/icon-arrow.png" alt="Arrow" /> </a> </div> <div id="toggle-me" class="toggle-visibility">‹</div> <div class="oma-details-nav-left" id="sideNavMobile"> <ul class="gene-orthology"> <li class=" active selected " > <a href="/oma/vps/ENSG00000004939/" data-toggle="collapse" aria-expanded="false" data-target="#filterOrthologs"> <span> <i class="fa fa-info-circle" style=" transform: rotate(0deg) !important;" onclick="location.href='/oma/uses/#orthotable';"></i> Orthologs <span class="badge badge-info">212</span> </span> <i class="material-icons">keyboard_arrow_right</i> </a> <div id="filterOrthologs" class=" submenu collapse "> <!-- show --> <div id="filter-taxon-container"></div> <div class="dropdown-divider pl-0"></div> <h5 style="padding-left:10px">Required orthology evidence:</h5> <div class="form-check pl-4"> <div > <input type="checkbox" class="form-check-input" id="pairwiseFilter" onclick="set_filter_pairwise()"> <label class="form-check-label" for="pairwiseFilter" > OMA pairs <span class="badge badge-pill badge-dark" data-toggle="tooltip" data-placement="top" title="Inferred using the OMA algorithm">?</span> </label> </div> <div> <input type="checkbox" class="form-check-input" id="hogFilter" onclick="set_filter_hog()"> <label class="form-check-label" for="hogFilter"> HOG <span class="badge badge-pill badge-dark" data-toggle="tooltip" data-placement="top" title="Inferred from HOGs">?</span> </label> </div> <div> <input type="checkbox" class="form-check-input" id="omagroupFilter" onclick="set_filter_group()"> <label class="form-check-label" for="omagroupFilter"> OMA Group <span class="badge badge-pill badge-dark" data-toggle="tooltip" data-placement="top" title="Inferred from OMA groups">?</span> </label> </div> </div> </div> </li> <li class="" onclick="window.location='/oma/pps/ENSG00000004939/'" > <a href="/oma/pps/ENSG00000004939/" > <span>Paralogs <span class="badge badge-info">550</span> </span> </a> <div id="filterParalogs" class="submenu collapse "> </div> </li> <li class=""> <a href="/oma/info/ENSG00000004939/"> <span>Gene information</span> </a> </li> <!-- <li class=""> <a href="/oma/isoform/ENSG00000004939/"> <span>Isoforms <span class="badge badge-info"> 3 </span></span> </a> </li> --> <li class="" onclick="window.location='/oma/info/ENSG00000004939/go/'" > <a href="/oma/info/ENSG00000004939/go/" > <span>GO Annotations </span> </a> <div id="subgoa" class=" submenu collapse "> </div> </li> <li class=""> <a href="/oma/sequences/ENSG00000004939/"> <span>Sequences/Isoforms <span class="badge badge-info"> 3 </span></span> </a> </li> <li class=""> <a href="/oma/synteny/ENSG00000004939/5/5/"> <span>Local synteny</span> </a> </li> </ul> </div> <script> var apply_filter_pair = false; var apply_filter_hog = false; var apply_filter_group = false; $(function () { $('[data-toggle="tooltip"]').tooltip() }); function set_filter_pairwise() { // Get the checkbox var checkBox = document.getElementById("pairwiseFilter"); // If the checkbox is checked, display the output text if (checkBox.checked == true){ apply_filter_pair = true; } else { apply_filter_pair = false; } apply_filter(); } function set_filter_hog() { // Get the checkbox var checkBox = document.getElementById("hogFilter"); // If the checkbox is checked, display the output text if (checkBox.checked == true){ apply_filter_hog = true; } else { apply_filter_hog = false; } apply_filter(); } function set_filter_group() { // Get the checkbox var checkBox = document.getElementById("omagroupFilter"); // If the checkbox is checked, display the output text if (checkBox.checked == true){ apply_filter_group = true; } else { apply_filter_group = false; } apply_filter(); } function apply_filter(){ $('#filter-taxon-container').find('.form-check').find('input[type=radio]:checked').prop('checked', false); document.getElementById("all").checked = true; //todo var filter_parameters = {}; if (apply_filter_pair){ filter_parameters.type_p = 1 } if (apply_filter_hog){ filter_parameters.type_h = 1 } if (apply_filter_group){ filter_parameters.type_g = 1 } $('#grpTable').bootstrapTable('filterBy', filter_parameters ) } </script> <div class="oma-details-content"> <div id="toolbar"> <b style="color: red;"> Only 25 entries are loaded, please wait while the rest is loading...</b> </div> <div style="float: left;margin-top: 10px;margin-bottom: 10px;line-height: 34px;"> </div> <table class="table table-hover" id="grpTable" data-show-toggle="false" data-toolbar="#toolbar" data-taxon-filter="true" data-url-species-tree="/All/genomes.json" data-show-columns="true" data-search="true" data-show-export="true" data-export-data-type="all" data-pagination="true" data-page-size="25" data-page-list="[10, 25, 50, 100, All]" data-mobile-responsive="true" data-check-on-init="true" data-undefined-text="" data-checkbox-header="true" data-id-field="protid" data-row-attributes="tablehooks.add_proteinrow_attrs" > <thead> <tr> <th colspan="3" class="text-center">Evidence </th> <th rowspan="2" data-valign="middle" data-field="kingdom" data-sortable="true" data-filter-control="select" data-formatter="tablehooks.format_as_kingdom_tag" data-title-tooltip="Domain of Life" ><span >Domains</span></th> <th rowspan="2" data-valign="middle" data-field="taxon" data-sortable="true" data-filter-control="input" data-formatter="tablehooks.format_sciname">Taxon</th> <th rowspan="2" data-valign="middle" data-field="protid" data-sortable="true" data-formatter="tablehooks.format_vps_link">Protein ID</th> <th rowspan="2" data-valign="middle" data-field="RelType" data-sortable="true" >Relation type</th> <th rowspan="2" data-valign="middle" data-field="xrefid" data-sortable="true" data-formatter="tablehooks.format_xref">Cross reference</th> <th rowspan="2" data-valign="middle" data-sortable="false" class="domain_vis">Domain Architectures</th> </tr> <tr> <th class="micro-header" data-field="type_p" data-align="center" data-halign="center" data-sortable="true" data-formatter="stateFormatterPO" >Pair</th> <th class="micro-header" data-field="type_h" data-align="center" data-halign="center" data-sortable="true" data-formatter="stateFormatterH" > HOG</th> <th class="micro-header" data-field="type_g" data-align="center" data-halign="center" data-sortable="true" data-formatter="stateFormatterOG" > OMA </th> </tr> </thead> <div class="alert alert-info text-center alert_remove" role="alert" style="margin-bottom:0; padding: 4px; display:none"> Genes not present in selected taxon have been filtered out as per settings. <a class="alert-link" id='reset_taxon_filter' > Click here to reset.</a> </div> </table> <script> // Add header function stateFormatterPO(value, row, index) { if (row['type_p'] === 1) { return '<i class="fas fa-check " style="color:green"></i>'; } else { return ' ' } } function stateFormatterH(value, row, index) { if (row['type_h'] === 1) { return '<a href="/oma/hog/HOG:E0789285/iham/"><i class="fas fa-check " style="color:green"></i></a>'; } else { return ' ' } } function stateFormatterOG(value, row, index) { if (row['type_g'] === 1) { return '<a href="/oma/omagroup/1014289/members/"><i class="fas fa-check " style="color:green"></i></a>'; } else { return ' ' } } </script> <!-- D3 and D3 Tooltip --> <script src="/static/js/d3.v3.min.js" type="text/javascript"></script> <script src="/static/js/d3.tip.v0.6.3.js" type="text/javascript"></script> <!-- Domain Visualisation --> <script src="/static/js/domains_vis.js" type="text/javascript"></script> <link href="/static/css/domains_vis.css" rel="stylesheet" type="text/css" /> <!-- bootstrap-table --> <script src="/static/js/tablehooks.js" type="text/javascript"></script> <script src="/static/js/bootstrap-table.min.js"></script> <link href="/static/css/bootstrap-table.min.css" rel="stylesheet" type="text/css"/> <script src="/static/js/bootstrap-table-export.min.js"></script> <script src="/static/js/bootstrap-table-mobile.min.js"></script> <script src="/static/js/tableExport.min.js"></script> <script src="/static/js/FileSaver.js"></script> <!-- taxon filter import: Core --> <script src="/static/js/tnt.min.js"></script> <script src="/static/js/bootstrap-table-filtertaxon.js"></script> <link type="text/css" rel="stylesheet" href="/static/css/filtertaxon.css"/> <!-- taxon filter import: phyloIo --> <script src="/static/js/underscore-min.js"></script> <script src="/static/js/treecompare.js"></script> <link type="text/css" rel="stylesheet" href="/static/css/phylotree.css"/> <link type="text/css" rel="stylesheet" href="/static/css/typeaheadjs.css"/> <link type="text/css" rel="stylesheet" href="/static/css/treecompare.css"/> <!-- taxon filter import: Editable field --> <link type="text/css" rel="stylesheet" href="/static/css/bootstrap-editable.css"/> <script src='/static/js/bootstrap-editable.js'></script> <script> $.getJSON("/oma/vps/HUMAN34196/json_support_sample/", function (initData) { var tab = $("#grpTable"); var icons = tab.bootstrapTable('getOptions').icons; $.extend(icons, {export: 'fa-download'}); tab.bootstrapTable({ data: initData, reorderableColumns: true, clickToSelect: false, showMultiSort: true, showLoading: true, onPostHeader: function () { $('.fasta').remove(); var element = $( "th span:contains('Domains')" )[0]; element.style.writingMode = "vertical-lr" var button_group = document.getElementsByClassName("columns columns-right btn-group float-right")[0]; var div = document.createElement('div'); div.className = "fasta btn-group" var fasta = document.createElement('button'); fasta.className = "btn btn-secondary"; fasta.id = "fasta_btn"; fasta.title = "Export table protein sequences as fasta"; fasta.innerHTML = 'Fasta <i class="fa fa fa-file-download"></i>' fasta.onclick = function() { // Get the table data (filtered out protein will not be here) var table = tab.bootstrapTable('getData') // extract the list of protein id var ids = [] for (var protein in table){ ids.push(table[protein].protid)} // init the sequences container and the request handler var call_pending = 0 var sequences = "" function check_call_ready(){ if (call_pending ==0){ var filename = "HUMAN34196_orthologs.txt"; var blob = new Blob([sequences], { type: "text/plain;charset=utf-8" }); saveAs(blob, filename); fasta.innerHTML = 'Fasta <i class="fa fa fa-file-download"></i>' } } fasta.innerHTML = 'Loading fasta</i>' // Split the ids on array of 1000 elements max (limit of the api call for bulk_retreive) var i,j,chunk = 999; for (i=0,j=ids.length; i<j; i+=chunk) { var xhr = new XMLHttpRequest(); xhr.open("POST", '/api/protein/bulk_retrieve/', true); xhr.setRequestHeader("Content-Type", "application/json"); xhr.onreadystatechange = function() { if (this.readyState === XMLHttpRequest.DONE && this.status === 200) { var dat = JSON.parse(this.responseText) for (i in dat){ sequences += ">{0} | {1} [{2}] \n{3}\n".replace('{0}', dat[i]["target"].omaid) .replace('{1}', dat[i]["target"].canonicalid) .replace('{2}', dat[i]["target"].species.species) .replace('{3}', dat[i]["target"].sequence.replace(/(.{60})/g,"$1\n")) } call_pending -= 1 console.log(call_pending) check_call_ready(call_pending) } } call_pending += 1 var id = JSON.stringify(({ids: ids.slice(i,i+chunk)})) xhr.send(id) } } div.appendChild(fasta) button_group.appendChild(div) }, onPostBody: function () { domains.visualize_all(".protein"); //, ); }, refreshOptions: {'icons': icons} }); tab.on('column-switch.bs.table', function (e, arg1, arg2) { var shown = $("th.micro-header").length; if (shown > 0) { var element = $( "th div:contains('Evidence')" )[0].parentElement; element.colSpan = shown } else { $($( "th div:contains('Evidence')" )[0].parentElement).hide(); } }) $.getJSON("/oma/vps/HUMAN34196/json_support/", function (jsonData) { tab.bootstrapTable({ data: jsonData}); tab.bootstrapTable('refreshOptions', { pageSize: 20}); tab.bootstrapTable('load', jsonData); $("#toolbar").remove(); }); }); </script> </div> <script> </script> </div> <script> $(document).ready(function () { $("#toggleSidenav").click(function () { $('#sideNavMobile').toggle(); $('#oma-details-sideNav-mobile').toggleClass('sideNavMobile-opened'); }); }); var resizeTimer; $(window).on('resize', function (e) { clearTimeout(resizeTimer); resizeTimer = setTimeout(function () { if ( $(window).width() > 1024) { $('#sideNavMobile').toggle(true); $('#toggle-me').show(); $('#oma-details-sideNav-mobile').removeClass('sideNavMobile-opened'); $('#oma-details-sideNav-mobile').addClass('sideNavMobile-opened'); } else { $('#sideNavMobile').toggle(false); $('#toggle-me').hide(); $('#oma-details-sideNav-mobile').removeClass('sideNavMobile-opened'); } }, 50); }); </script> <script> $(document).on("click",".toggle-visibility", function () { var nav = document.getElementById("sideNavMobile"); var content = document.getElementsByClassName("oma-details-content")[0]; var toggle = document.getElementsByClassName("toggle-visibility")[0]; if (nav.offsetWidth > 0) { toggle.innerHTML = '›' nav.setAttribute("style","width:0px"); content.setAttribute("style","margin-left:0px"); toggle.setAttribute("style","left:0px"); } else { toggle.innerHTML = "‹" nav.setAttribute("style","width:280px"); content.setAttribute("style","margin-left:300px"); toggle.setAttribute("style","left:280px"); } }); </script> </body> </html>