I feel stupid :-)
I want to find list of proteins of fungus from uniprot which Subcellular location have Manually-assigned evidence and not electronically assigned. What should I write in query?
raw command of idea:
Query:SELECT all from uniprotKB where organism:fungus and location="Mitochondria/Mitochondrion" and GO Evidence= manual(IMP,IGI,IPI,IDA,IEP,EXP) except electronic.
2 answers
You can use this query locations:(location:mitochondrion evidence:manual) taxonomy:"Fungi [4751]" on the uniprot website to find exactly what you are looking for using the sub-cellular location vocabulary at UniProt.
Don't be!
May be I failed to explain why I need. Your tool is excellent for filtering result from Uniprot. I am writing a tool in Python to organize Uniprot, QuickGO and WolfPSort result in term of localization.
Thanks for the reply!
When I try to search by locations:(location:mitochondrion evidence:ECO_0000269) taxonomy:"Fungi [4751]" AND reviewed:yes seems give me more accurate result in term of finding evidence with IMP,IGI,IPI,IDA,IEP,EXP.
I wrote a tool filtering Unitrot.xml using a javascript expression. https://github.com/lindenb/jvarkit/wiki/UniprotFilterJS
Processing the whole uniprot (ftp://ftp.uniprot.org/pub/databases/uniprot/current_release/knowledgebase/complete/uniprot_sprot.xml.gz) could take some hours so here is a simple example:
The javascript script (add your tests , GO number etc...)
function isGoSubComponent(acn)
{
if(acn=="GO:0005759") return true;
if(acn=="GO:0005739") return true;
if(acn=="GO:0043229") return true;
/** put all GO:acn above ... */
return false;
}
function accept(E)
{
var i=0,j=0;
for(i=0;i< E.getDbReference().size();++i)
{
var R=E.getDbReference().get(i);
if(R.getType()!="GO") continue;
if(!isGoSubComponent(R.getId()) ) continue;
for(j=0;j< R.getProperty().size();++j)
{
var P = R.getProperty().get(j);
if(P.getType()!="evidence") continue;
var ev = P.getValue().substring(0,4);
if( ev == "IDA:") return true;
if( ev == "IMP:") return true;
if( ev == "IGI:") return true;
if( ev == "IPI:") return true;
}
}
return false;
}
accept(entry);
Processing unitprot xml with 4 entries:
curl "http://www.uniprot.org/uniprot/?sort=score&desc=&query=id:O00098%20OR%20id:P46531%20OR%20id:P31695%20OR%20id:O35516&format=xml" | \
gunzip -c | java -jar dist-1.128/uniprotfilterjs.jar -f filter.js
<?xml version="1.0" encoding="UTF-8"?>
<uniprot xmlns="http://uniprot.org/uniprot" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://uniprot.org/uniprot http://www.uniprot.org/support/docs/uniprot.xsd">
<!-- P46531 -->
<!-- O35516 -->
<!-- P31695 -->
<entry xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" dataset="Swiss-Prot" created="1997-11-01" modified="2015-01-07" version="93" xsi:schemaLocation="http://uniprot.org/uniprot http://www.uniprot.org/support/docs/uniprot.xsd">
<accession>O00098</accession>
<accession>C8V3P7</accession>
<accession>Q5ATV5</accession>
<accession>Q8NKF2</accession>
<name>CISY_EMENI</name>
<protein>
<recommendedName>
<fullName>Citrate synthase, mitochondrial</fullName>
<ecNumber>2.3.3.16</ecNumber>
</recommendedName>
</protein>
<gene>
<name type="primary">citA</name>
Log in to answer this question.
do you have know one matching entry in uniprot, as an example ?
Here is an matching entry: http://www.uniprot.org/uniprot/O00098