This is a test version of Biostars. For the public version, visit https://www.biostars.org.
what is the Query to find proteins which Subcellular location have Manually-assigned evidence in uniprot ?

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.

uniprot query

do you have know one matching entry in uniprot, as an example ?

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.

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.