diff --git a/annotation/src/main/java/lcsb/mapviewer/annotation/services/ModelAnnotator.java b/annotation/src/main/java/lcsb/mapviewer/annotation/services/ModelAnnotator.java index 61c55ec02a04a8b9928b7d7df04d7b1e92594367..c9d17d4db5e3eedd5516a7324f8e34b97079f135 100644 --- a/annotation/src/main/java/lcsb/mapviewer/annotation/services/ModelAnnotator.java +++ b/annotation/src/main/java/lcsb/mapviewer/annotation/services/ModelAnnotator.java @@ -25,6 +25,7 @@ import lcsb.mapviewer.annotation.services.annotators.GoAnnotator; import lcsb.mapviewer.annotation.services.annotators.HgncAnnotator; import lcsb.mapviewer.annotation.services.annotators.PdbAnnotator; import lcsb.mapviewer.annotation.services.annotators.ReconAnnotator; +import lcsb.mapviewer.annotation.services.annotators.TairAnnotator; import lcsb.mapviewer.annotation.services.annotators.UniprotAnnotator; import lcsb.mapviewer.common.IProgressUpdater; import lcsb.mapviewer.common.exception.InvalidArgumentException; @@ -124,6 +125,13 @@ public class ModelAnnotator { */ @Autowired private EnsemblAnnotator ensemblAnnotator; + + /** + * TAIR annotator. + */ + @Autowired + private TairAnnotator tairAnnotator; + /** * List of all avaliable {@link ElementAnnotator} objects. @@ -153,6 +161,7 @@ public class ModelAnnotator { addAnnotator(reconAnnotator); addAnnotator(entrezAnnotator); addAnnotator(ensemblAnnotator); + addAnnotator(tairAnnotator); } /** diff --git a/annotation/src/main/java/lcsb/mapviewer/annotation/services/annotators/TairAnnotator.java b/annotation/src/main/java/lcsb/mapviewer/annotation/services/annotators/TairAnnotator.java index 06bc49b4c81a186f2fad3cfa9dcbc64b8512fe17..1e07de41fbf3dc3f52cdc0b41726ba66eb2bd4a9 100644 --- a/annotation/src/main/java/lcsb/mapviewer/annotation/services/annotators/TairAnnotator.java +++ b/annotation/src/main/java/lcsb/mapviewer/annotation/services/annotators/TairAnnotator.java @@ -1,14 +1,14 @@ package lcsb.mapviewer.annotation.services.annotators; import java.io.IOException; +import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; -import java.util.Set; +import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.apache.log4j.Logger; -import org.kohsuke.rngom.ast.builder.Annotations; import lcsb.mapviewer.annotation.cache.GeneralCacheInterface; import lcsb.mapviewer.annotation.cache.SourceNotAvailable; @@ -47,7 +47,7 @@ public class TairAnnotator extends ElementAnnotator implements IExternalService * Default constructor. */ public TairAnnotator() { - super(TairAnnotator.class, new Class[] { Protein.class, Gene.class, Rna.class }, false); //TODO - check with Simone + super(TairAnnotator.class, new Class[] { Protein.class, Gene.class, Rna.class }, false); } @Override @@ -75,34 +75,36 @@ public class TairAnnotator extends ElementAnnotator implements IExternalService @Override public void annotateElement(BioEntity object) throws AnnotatorException { if (isAnnotatable(object)) { - boolean uniprotFound = false; +// boolean uniprotFound = false; + List<MiriamData> mdUniProts = new ArrayList<MiriamData>(); MiriamData mdTair = null; for (MiriamData md : object.getMiriamData()) { if (md.getDataType().equals(MiriamType.TAIR_LOCUS)) { mdTair = md; } if (md.getDataType().equals(MiriamType.UNIPROT)) { - uniprotFound = true; + mdUniProts.add(md); +// uniprotFound = true; } } - if (mdTair == null || uniprotFound) { + if (mdTair == null /*|| uniprotFound*/) { return; } MiriamData mdUniprot = tairToUniprot(mdTair); - if (mdUniprot != null) { + if (mdUniprot != null && mdUniProts.indexOf(mdUniprot) == -1) { object.addMiriamData(mdUniprot); } } } /** - * Returns url to TAIR page about TAIR entry. + * Returns URL to TAIR page about TAIR entry. * * @param tairId - * tair identifier - * @return url to TAIR page about the TAIR entry + * TAIR identifier + * @return URL to TAIR page about the TAIR entry */ private String getTairUrl(String tairId) { return "http://arabidopsis.org/servlets/TairObject?type=locus&name=" + tairId; @@ -147,11 +149,11 @@ public class TairAnnotator extends ElementAnnotator implements IExternalService } /** - * Transform tair identifier into uniprot identifier. + * Transform TAIR identifier into uniprot identifier. * * @param tair - * {@link MiriamData} with tair identifier - * @return {@link MiriamData} with uniprot identifier + * {@link MiriamData} with TAIR identifier + * @return {@link MiriamData} with UniProt identifier * @throws UniprotSearchException * thrown when there is a problem with accessing external database */ @@ -180,7 +182,6 @@ public class TairAnnotator extends ElementAnnotator implements IExternalService } catch (IOException exception) { throw new AnnotatorException(exception); } - } @Override diff --git a/annotation/src/test/java/lcsb/mapviewer/annotation/services/annotators/TairAnnotatorTest.java b/annotation/src/test/java/lcsb/mapviewer/annotation/services/annotators/TairAnnotatorTest.java index 1f9621829ef0576184b1d327ad4cc7956878a6b3..b2df54d22509010f6934519205c8b00f0869f3f7 100644 --- a/annotation/src/test/java/lcsb/mapviewer/annotation/services/annotators/TairAnnotatorTest.java +++ b/annotation/src/test/java/lcsb/mapviewer/annotation/services/annotators/TairAnnotatorTest.java @@ -69,6 +69,33 @@ public class TairAnnotatorTest extends AnnotationTestFunctions { } } + @Test + public void testAnnotateExistingUniprot() throws Exception { + try { + + Species protein = new GenericProtein("id"); + protein.setName("bla"); + protein.addMiriamData(new MiriamData(MiriamType.TAIR_LOCUS, "AT1G15950")); + protein.addMiriamData(new MiriamData(MiriamType.UNIPROT, "P32246")); // Human version of the protein + + tairAnnotator.annotateElement(protein); + + int cntUniProts = 0; + + for (MiriamData md : protein.getMiriamData()) { + if (md.getDataType().equals(MiriamType.UNIPROT)) { + cntUniProts++; + } + } + + assertTrue("No UNIPROT annotation extracted from TAIR annotator", cntUniProts > 1); + + } catch (Exception e) { + e.printStackTrace(); + throw e; + } + } + @Test public void testAnnotateInvalidTair() throws Exception {