diff --git a/service/src/main/java/lcsb/mapviewer/services/search/ElementMatcher.java b/service/src/main/java/lcsb/mapviewer/services/search/ElementMatcher.java index 44ba848aa094bd6ea996cbc24e314ee44dfcbb00..c947104992856bb393f310779a596aae011ba27f 100644 --- a/service/src/main/java/lcsb/mapviewer/services/search/ElementMatcher.java +++ b/service/src/main/java/lcsb/mapviewer/services/search/ElementMatcher.java @@ -8,7 +8,6 @@ import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import lcsb.mapviewer.annotation.data.Target; -import lcsb.mapviewer.annotation.data.TargetType; import lcsb.mapviewer.common.exception.InvalidArgumentException; import lcsb.mapviewer.model.map.BioEntity; import lcsb.mapviewer.model.map.MiriamData; @@ -19,8 +18,6 @@ import lcsb.mapviewer.model.map.species.Gene; import lcsb.mapviewer.model.map.species.Protein; import lcsb.mapviewer.model.map.species.Rna; import lcsb.mapviewer.model.map.species.Species; -import lcsb.mapviewer.services.search.db.GeneRow; -import lcsb.mapviewer.services.search.db.TargetView; import lcsb.mapviewer.services.view.AnnotationViewFactory; public class ElementMatcher { @@ -37,92 +34,6 @@ public class ElementMatcher { @Autowired private AnnotationViewFactory annotationViewFactory; - /** - * Check if the target should be applied to the element. - * - * @param target - * drug target to check - * @param element - * {@link Element} to check - * @return <code>true</code> if drug target can target element, - * <code>false</code> otherwise - */ - public boolean elementMatch(TargetView target, BioEntity element) { - if (target.getType().equals(TargetType.COMPLEX_PROTEIN.getCommonName())) { - MiriamData targetAnnotation = annotationViewFactory.viewToObject(target.getAnnotation()); - if (MiriamType.CHEMBL_TARGET.equals(targetAnnotation.getDataType())) { - if (element.getMiriamData().contains(targetAnnotation)) { - return true; - } - } - Collection<String> ids = new HashSet<String>(); - for (GeneRow row : target.getProteins()) { - ids.add(row.getAnnotation().getName()); - } - - if (element instanceof Complex) { - Complex complex = (Complex) element; - Set<Species> speciesSet = complex.getAllSimpleChildren(); - if (speciesSet.size() != ids.size()) { - return false; - } - - for (Element id : speciesSet) { - if (!ids.contains(id.getName())) { - return false; - } - } - return true; - } - return false; - } else if (target.getType().equals(TargetType.SINGLE_PROTEIN.getCommonName())) { - MiriamData targetAnnotation = null; - if (target.getAnnotation() != null) { - targetAnnotation = annotationViewFactory.viewToObject(target.getAnnotation()); - } else if (target.getProteins().size() > 0) { - targetAnnotation = annotationViewFactory.viewToObject(target.getProteins().get(0).getAnnotation()); - } else { - logger.warn("Invalid target found: " + target); - } - if (targetAnnotation != null && element.getMiriamData().contains(targetAnnotation)) { - return true; - } - if (element instanceof Protein || element instanceof Rna || element instanceof Gene) { - if (target.getProteins().size() > 0) { - String hgncId = target.getProteins().get(0).getAnnotation().getName(); - if (element.getName().equalsIgnoreCase(hgncId)) { - return true; - } - } - } - return false; - } else if (target.getType().equals(TargetType.PROTEIN_FAMILY.getCommonName())) { - if (element instanceof Protein || element instanceof Rna || element instanceof Gene) { - String hgncId = target.getProteins().get(0).getAnnotation().getName(); - if (element.getName().equalsIgnoreCase(hgncId)) { - return true; - } else if (element.getMiriamData().contains(new MiriamData(MiriamType.HGNC_SYMBOL, hgncId))) { - return true; - } - for (GeneRow protein : target.getProteins()) { - hgncId = protein.getAnnotation().getName(); - if (element.getName().equalsIgnoreCase(hgncId)) { - return true; - } else if (element.getMiriamData().contains(new MiriamData(MiriamType.HGNC_SYMBOL, hgncId))) { - return true; - } - } - } - return false; - } else if (target.getType().equals(TargetType.OTHER.getCommonName())) { - // in other case just compare names - String name = target.getProteins().get(0).getAnnotation().getName(); - return element.getName().equalsIgnoreCase(name); - } else { - throw new InvalidArgumentException("Unknown drug target type: " + target.getType()); - } - } - public boolean elementMatch(Target target, BioEntity element) { MiriamData targetAnnotation = target.getSource(); switch (target.getType()) { diff --git a/service/src/main/java/lcsb/mapviewer/services/search/SearchResultFactory.java b/service/src/main/java/lcsb/mapviewer/services/search/SearchResultFactory.java index de69745e87a1471d62bd3d19513ba9dd8c048ce1..6380639b2259edbc655afb34e53ed85a2ef5d86a 100644 --- a/service/src/main/java/lcsb/mapviewer/services/search/SearchResultFactory.java +++ b/service/src/main/java/lcsb/mapviewer/services/search/SearchResultFactory.java @@ -58,57 +58,7 @@ public abstract class SearchResultFactory<T, S extends ISearchResultView> extend @Autowired private ElementMatcher elementMatcher; - /** - * Returns detailed information about element respective to the set of targets - * (which should be connected to single drug/mirna/chemical). - * - * @param element - * element for which we are looking for detailed information - * @param model - * {@link Model} on which element is located - * @param targets - * list of targets from which detailed information should be - * extracted - * @return detailed information for element in the specific drug, - * <code>null</code> if such information doesnt exist - */ - public TargetDetails getElementInformationForResult(Collection<TargetView> targets, ElementIdentifier element, Model model) { - if (ElementIdentifierType.REACTION.getJsName().equalsIgnoreCase(element.getType())) { - logger.warn("Detail information for reactions not available"); - return null; - } else if (ElementIdentifierType.POINT.getJsName().equalsIgnoreCase(element.getType())) { - logger.warn("Detail information for points not available"); - return null; - } else if (ElementIdentifierType.ALIAS.getJsName().equalsIgnoreCase(element.getType())) { - Model m = model.getSubmodelById(element.getModelId()); - Element alias = m.getElementByDbId(Integer.valueOf(element.getObjectId())); - if (alias == null) { - logger.warn("Alias with object id = " + element.getObjectId() + " is unknown."); - return null; - } - for (TargetView row : targets) { - if (elementMatch(row, alias)) { - TargetDetails result = new TargetDetails(); - result.setDatabaseSource(row.getAnnotation()); - for (Article article : row.getReferences()) { - result.getReferences().add(annotationViewFactory.create(article)); - } - for (GeneRow protein : row.getProteins()) { - result.getReferences().add(protein.getAnnotation()); - } - return result; - } - } - } else { - throw new InvalidArgumentException("Unknown element type: " + element.getType()); - } - return null; - } - protected boolean elementMatch(TargetView target, Element element) { - return elementMatcher.elementMatch(target, element); - } - protected boolean elementMatch(Target target, Element element) { return elementMatcher.elementMatch(target, element); } diff --git a/service/src/main/java/lcsb/mapviewer/services/search/db/DrugTargetViewVisibilityComparator.java b/service/src/main/java/lcsb/mapviewer/services/search/db/DrugTargetViewVisibilityComparator.java deleted file mode 100644 index a92660b2582079489651c958657e4db93d9ae28c..0000000000000000000000000000000000000000 --- a/service/src/main/java/lcsb/mapviewer/services/search/db/DrugTargetViewVisibilityComparator.java +++ /dev/null @@ -1,32 +0,0 @@ -package lcsb.mapviewer.services.search.db; - -import java.util.Comparator; - -import lcsb.mapviewer.common.comparator.StringComparator; - -/** - * Comparator class for {@link TargetView} objects. It put first elements that - * are {@link TargetView#getSelectable() selectable} elements. - * - * @author Piotr Gawron - * - */ -public class DrugTargetViewVisibilityComparator implements Comparator<TargetView> { - - /** - * Comparator class for Strings that handles nulls. - */ - private final StringComparator stringComparator = new StringComparator(); - - @Override - public int compare(TargetView arg0, TargetView arg1) { - if (arg0.getSelectable() && !arg1.getSelectable()) { - return -1; - } - if (!arg0.getSelectable() && arg1.getSelectable()) { - return 1; - } - return stringComparator.compare(arg0.getName(), arg1.getName()); - } - -} diff --git a/service/src/main/java/lcsb/mapviewer/services/search/db/TargetViewFactory.java b/service/src/main/java/lcsb/mapviewer/services/search/db/TargetViewFactory.java deleted file mode 100644 index 994ca460ecfda84f5d97e85cf72090e226a41314..0000000000000000000000000000000000000000 --- a/service/src/main/java/lcsb/mapviewer/services/search/db/TargetViewFactory.java +++ /dev/null @@ -1,158 +0,0 @@ -package lcsb.mapviewer.services.search.db; - -import java.util.Collections; -import java.util.HashSet; -import java.util.Set; - -import org.apache.log4j.Logger; -import org.springframework.beans.factory.annotation.Autowired; - -import com.google.gson.Gson; - -import lcsb.mapviewer.annotation.data.Article; -import lcsb.mapviewer.annotation.data.ArticleCitationComparator; -import lcsb.mapviewer.annotation.data.Target; -import lcsb.mapviewer.annotation.data.TargetType; -import lcsb.mapviewer.annotation.services.PubmedParser; -import lcsb.mapviewer.annotation.services.PubmedSearchException; -import lcsb.mapviewer.common.exception.NotImplementedException; -import lcsb.mapviewer.model.map.BioEntity; -import lcsb.mapviewer.model.map.MiriamData; -import lcsb.mapviewer.model.map.MiriamType; -import lcsb.mapviewer.model.map.model.Model; -import lcsb.mapviewer.model.map.model.ModelSubmodelConnection; -import lcsb.mapviewer.services.view.AbstractViewFactory; -import lcsb.mapviewer.services.view.AnnotationViewFactory; - -/** - * Factory class for {@link TargetView} class. - * - * @author Piotr Gawron - * - */ -public class TargetViewFactory extends AbstractViewFactory<Target, TargetView> { - - /** - * Default class logger. - */ - private static Logger logger = Logger.getLogger(TargetViewFactory.class); - - /** - * Factory object for {@link lcsb.mapviewer.services.view.AnnotationView} - * elements. - */ - @Autowired - private AnnotationViewFactory annotationViewFactory; - - /** - * Service accessing - * <a href="http://europepmc.org/RestfulWebService">pubmed</a>. - */ - @Autowired - private PubmedParser pubmedParser; - - @Override - public TargetView create(Target target) { - return create(target, null); - } - - /** - * Creates {@link TargetView} element for given {@link Target} and places - * links on the parameter {@link Model}. - * - * @param target - * object for which {@link TargetView} is created - * @param model - * {@link Model} where links will be placed - * @return {@link TargetView} element for given {@link Target} - */ - public TargetView create(Target target, Model model) { - TargetView result = new TargetView(); - if (target == null) { - return result; - } - result.setName(target.getName()); - if (target.getType() == null) { - logger.warn("Unknown type of target: " + target.getName() + ", target name: " + target.getName()); - } else { - result.setType(target.getType().getCommonName()); - } - - if (target.getType() == TargetType.SINGLE_PROTEIN || target.getType() == TargetType.COMPLEX_PROTEIN || target.getType() == TargetType.PROTEIN_FAMILY) { - result.setVisible(true); - result.setSelectable(false); - } - - for (MiriamData md : target.getGenes()) { - GeneRow geneRow = new GeneRow(); - geneRow.setAnnotation(annotationViewFactory.create(md)); - if (model != null) { - Set<BioEntity> list = new HashSet<>(); - list.addAll(model.getElementsByName(md.getResource())); - list.addAll(model.getElementsByAnnotation(md)); - - int countInTopModel = list.size(); - for (ModelSubmodelConnection submodel : model.getSubmodelConnections()) { - list.addAll(submodel.getSubmodel().getModel().getElementsByName(md.getResource())); - list.addAll(submodel.getSubmodel().getModel().getElementsByAnnotation(md)); - } - int counter = list.size(); - geneRow.setSelectable(counter > 0); - - if (counter > 0) { - geneRow.setSelectable(true); - if (target.getType() == TargetType.SINGLE_PROTEIN || target.getType() == TargetType.PROTEIN_FAMILY) { - result.setSelectable(true); - } - if (countInTopModel < counter) { - result.setAvailableInSubmodel(true); - } - } - } - result.addProtein(geneRow); - } - - // this should be fixed - // if (target.getType() == TargetType.COMPLEX_PROTEIN) { - // - // if (complexToOverlayList(target, null).size() > 0) { - // row.setSelectable(true); - // } - // } - - if (target.getSource() != null) { - result.setAnnotation(annotationViewFactory.create(target.getSource())); - } - for (MiriamData md : target.getReferences()) { - if (md.getDataType().equals(MiriamType.PUBMED)) { - try { - Integer id = Integer.parseInt(md.getResource()); - Article reference = pubmedParser.getPubmedArticleById(id); - if (reference != null) { - result.addReference(reference); - } - } catch (NumberFormatException e) { - logger.warn("Invalid pubmed reference: " + md); - } catch (PubmedSearchException e) { - logger.warn("Problem with accessing info about pubmed: " + md, e); - } - } else { - logger.warn("Unknown reference type: " + md); - } - } - Collections.sort(result.getReferences(), new ArticleCitationComparator()); - - return result; - - } - - @Override - public String createGson(TargetView object) { - return new Gson().toJson(object); - } - - @Override - public Target viewToObject(TargetView view) { - throw new NotImplementedException(); - } -} diff --git a/service/src/main/resources/applicationContext-service.xml b/service/src/main/resources/applicationContext-service.xml index c40be7af7591eb74805a56c5775174aa273d0535..7d133276baca0b90b4f182c4120f431a268bb381 100644 --- a/service/src/main/resources/applicationContext-service.xml +++ b/service/src/main/resources/applicationContext-service.xml @@ -68,8 +68,6 @@ <bean id="FullReactionViewFactory" class="lcsb.mapviewer.services.search.data.FullReactionViewFactory"/> <bean id="LightAliasViewFactory" class="lcsb.mapviewer.services.search.data.LightAliasViewFactory"/> - <bean id="TargetViewFactory" class="lcsb.mapviewer.services.search.db.TargetViewFactory"/> - <bean id="ElementMatcher" class="lcsb.mapviewer.services.search.ElementMatcher"/> diff --git a/service/src/test/java/lcsb/mapviewer/services/search/db/AllSearchDbTests.java b/service/src/test/java/lcsb/mapviewer/services/search/db/AllSearchDbTests.java index dbcdf6e6c209ae879d32867da131c2ff7e004757..7a0f88d8154271df156c9f42b462aad2415117b7 100644 --- a/service/src/test/java/lcsb/mapviewer/services/search/db/AllSearchDbTests.java +++ b/service/src/test/java/lcsb/mapviewer/services/search/db/AllSearchDbTests.java @@ -12,7 +12,6 @@ import lcsb.mapviewer.services.search.db.mirna.MiRNAServiceTest; @SuiteClasses({ AllSearchDrugTests.class, // ChemicalServiceTest.class, // MiRNAServiceTest.class, // - TargetViewFactoryTest.class, // TargetViewTest.class,// }) public class AllSearchDbTests { diff --git a/service/src/test/java/lcsb/mapviewer/services/search/db/TargetViewFactoryTest.java b/service/src/test/java/lcsb/mapviewer/services/search/db/TargetViewFactoryTest.java deleted file mode 100644 index 6146b57cf683c9c0990364d32bc34e880b3b1efd..0000000000000000000000000000000000000000 --- a/service/src/test/java/lcsb/mapviewer/services/search/db/TargetViewFactoryTest.java +++ /dev/null @@ -1,48 +0,0 @@ -package lcsb.mapviewer.services.search.db; - -import static org.junit.Assert.*; -import lcsb.mapviewer.services.ServiceTestFunctions; -import lcsb.mapviewer.services.search.db.TargetView; -import lcsb.mapviewer.services.search.db.TargetViewFactory; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.springframework.beans.factory.annotation.Autowired; - -public class TargetViewFactoryTest extends ServiceTestFunctions{ - - @Autowired - TargetViewFactory targetViewFactory; - - @Before - public void setUp() throws Exception { - } - - @After - public void tearDown() throws Exception { - } - - @Test - public void testCreateEmpty() throws Exception { - try { - Object object = targetViewFactory.create(null); - assertNotNull(object); - } catch (Exception e) { - e.printStackTrace(); - throw e; - } - } - - @Test - public void testCreateGson() throws Exception { - try { - TargetView object = targetViewFactory.create(null); - assertNotNull(targetViewFactory.createGson(object)); - } catch (Exception e) { - e.printStackTrace(); - throw e; - } - } - -}