# example
## Parameters
* `dataset`
* default: DS810_1 DS810_2 DS810_3
## `filter`
```javascript
({dataset})=>{
return {code: "VALUES ?dataset { :" + decodeURIComponent(dataset).split(/[ ,]/).join(" :") + " }" };
};
```
## Endpoint
https://tools.jpostdb.org/proxy/sparql
## `get_chromosome`
```sparql
PREFIX uniprot:
PREFIX jpo:
PREFIX obo:
PREFIX skos:
PREFIX rdfs:
PREFIX :
SELECT ?chr (COUNT (DISTINCT ?up) AS ?count)
WHERE {
{{filter.code}}
?dataset jpo:hasProtein ?protein .
?protein a obo:MS_1002401 . ### leading protein
?protein jpo:hasDatabaseSequence ?up .
?up uniprot:proteome ?chr .
}
```
## `proteome`
```javascript
({get_chromosome})=>{
var list = get_chromosome.results.bindings;
var chk = [];
var total = [];
for(var i = 0; i < list.length; i++){
var prot = list[i].chr.value.split("#")[0].split("/")[4];
if(!chk[prot]){
chk[prot] = 1;
total[prot] = 0;
}
total[prot] += list[i].count.value - 0
}
var max = 0;
var max_prot;
var prot = Object.keys(total);
for(var i = 0; i < prot.length; i++){
console.log(total[prot[i]]);
if(max < total[prot[i]]){
max = total[prot[i]];
max_prot = prot[i];
}
}
// var database = "GeneID";
var database = "";
if(max_prot == "UP000005640") database = "?up rdfs:seeAlso/uniprot:database .";
return {id: max_prot, database: database};
};
```
## Endpoint
https://tools.jpostdb.org/proxy/sparql
## `get_dataset_count`
```sparql
PREFIX uniprot:
PREFIX jpo:
PREFIX obo:
PREFIX skos:
PREFIX rdfs:
PREFIX :
SELECT ?chr (COUNT (DISTINCT ?up) AS ?count)
WHERE {
{{filter.code}}
?dataset jpo:hasProtein ?protein .
?protein a obo:MS_1002401 . ### leading protein
?protein jpo:hasDatabaseSequence ?up .
?up uniprot:proteome ?chr .
{{proteome.database}}
}
```
## Endpoint
https://tools.jpostdb.org/proxy/sparql
## `get_all_count`
```sparql
PREFIX uniprot:
PREFIX jpo:
PREFIX obo:
PREFIX skos:
PREFIX rdfs:
PREFIX :
SELECT ?chr (COUNT (DISTINCT ?up) AS ?count)
WHERE {
?up uniprot:proteome ?chr .
{{proteome.database}}
FILTER( REGEX( STR(?chr), "/{{proteome.id}}#"))
}
```
## `results`
```javascript
({get_chromosome, get_all_count})=>{
var list = get_chromosome.results.bindings;
var total_list = get_all_count.results.bindings;
var count = [];
var total = [];
for(var i = 0; i < total_list.length; i++){
var prot = total_list[i].chr.value.split("#")[0];
var c = 0;
for(var j = 0; j < list.length; j++){
if(total_list[i].chr.value == list[j].chr.value) c = list[j].count.value;
}
var label = total_list[i].chr.value.split("#")[1];
label = label.replace(/%20/g, " ").replace("Chromosome", "Ch.");
count[label] = c;
total[label] = total_list[i].count.value;
}
var max = 0;
var chr1 = [];
var chr2 = [];
for(var i = 0; i < total_list.length; i++){
var label = total_list[i].chr.value.split("#")[1];
label = label.replace(/%20/g, " ").replace("Chromosome", "Ch.");
if(label.match(/Ch. /)){
var tmp = label.match(/Ch. (.+)/)[1];
if(tmp.match(/^\d+$/)){
if(tmp-0 > max) max = tmp-0 ;
}else{
chr1.push(tmp);
}
}else{
chr2.push(label);
}
}
chr1 = chr1.sort();
chr2 = chr2.sort();
var r = [];
for(var i = 1; i <= max; i++){
r.push({label: "Ch. " + i, count: count["Ch. " + i], total: total["Ch. " + i]});
}
for(var i = 0; i < chr1.length; i++){
r.push({label: "Ch. " + chr1[i], count: count["Ch. " + chr1[i]], total: total["Ch. " + chr1[i]]});
}
for(var i = 0; i < chr2.length; i++){
r.push({label: chr2[i], count: count[chr2[i]], total: total[chr2[i]]});
}
return r;
};
```
## `html`
```javascript
({
json({results}) {
return results;
},
html: hbs(`
Chromosome |
count |
total |
{{#each results}}
{{label}} |
{{count}} |
{{total}} |
{{/each}}
`)
})
```