Skip to content
Snippets Groups Projects
Commit 30407ed8 authored by Piotr Gawron's avatar Piotr Gawron
Browse files

when no disease/organism is provided suggested query list should be empty for chemicals and drugs

parent 3a0c76cf
No related branches found
No related tags found
1 merge request!167when no disease/organism is provided suggested query list should be empty for chemicals and drugs
Pipeline #
......@@ -674,6 +674,9 @@ public class ChemicalParser extends CachableInterface implements IExternalServic
}
public List<String> getSuggestedQueryList(Project project, MiriamData diseaseMiriam) throws ChemicalSearchException {
if (diseaseMiriam == null) {
return new ArrayList<>();
}
String cacheQuery = PROJECT_SUGGESTED_QUERY_PREFIX + "\n" + project.getId() + "\n" + diseaseMiriam.getResource();
String cachedData = getCacheValue(cacheQuery);
List<String> result;
......
......@@ -257,6 +257,9 @@ public abstract class DrugAnnotation extends CachableInterface {
}
public List<String> getSuggestedQueryList(Project project, MiriamData organism) throws DrugSearchException {
if (organism == null) {
return new ArrayList<>();
}
String cacheQuery = PROJECT_SUGGESTED_QUERY_PREFIX + "\n" + project.getId() + "\n" + organism.getResource();
String cachedData = getCacheValue(cacheQuery);
List<String> result;
......
......@@ -646,4 +646,22 @@ public class ChemicalParserTest extends AnnotationTestFunctions {
}
@Test
public void testGetSuggestedQueryListForUnknownDiseas() throws Exception {
try {
Project project = new Project();
Model model = getModelForFile("testFiles/target_chemical/target.xml", false);
project.addModel(model);
List<String> result = chemicalParser.getSuggestedQueryList(project, null);
assertEquals(0, result.size());
} catch (Exception e) {
e.printStackTrace();
throw e;
}
}
}
......@@ -811,4 +811,22 @@ public class DrugbankHTMLParserTest extends AnnotationTestFunctions {
}
@Test
public void testGetSuggestedQueryListForUnknownOrganism() throws Exception {
try {
Project project = new Project();
Model model = getModelForFile("testFiles/target_chemical/target.xml", false);
project.addModel(model);
List<String> result = drugBankHTMLParser.getSuggestedQueryList(project, null);
assertEquals(0, result.size());
} catch (Exception e) {
e.printStackTrace();
throw e;
}
}
}
......@@ -31,236 +31,249 @@ import lcsb.mapviewer.services.ServiceTestFunctions;
import lcsb.mapviewer.services.search.db.DbSearchCriteria;
public class DrugServiceTest extends ServiceTestFunctions {
Logger logger = Logger.getLogger(DrugServiceTest.class);
@Before
public void setUp() throws Exception {
}
@After
public void tearDown() throws Exception {
}
@Test
public void testGetEmpty() throws Exception {
try {
Drug drug = drugService.getByName("blablablabla", new DbSearchCriteria());
assertNull(drug);
} catch (Exception e) {
e.printStackTrace();
throw e;
}
}
@Test
public void testGetTargets() throws Exception {
try {
long count = searchHistoryDao.getCount();
Model model = new ModelFullIndexed(null);
Project project = new Project();
project.setProjectId("TesT");
project.addModel(model);
Drug drug = drugService.getByName("Diazoxide", new DbSearchCriteria().model(model).ipAddress("ip"));
assertNotNull(drug);
assertNotNull(drug.getName());
assertFalse(drug.getName().trim().equals(""));
assertNotNull(drug.getDescription());
assertFalse(drug.getDescription().trim().equals(""));
String hgnc1 = "SLC12A3";
String hgnc2 = "KCNJ8";
boolean hgnc1Exists = false;
boolean hgnc2Exists = false;
for (Target target : drug.getTargets()) {
for (MiriamData row : target.getGenes()) {
if (row.getResource().equalsIgnoreCase(hgnc1))
hgnc1Exists = true;
if (row.getResource().equalsIgnoreCase(hgnc2))
hgnc2Exists = true;
}
}
assertTrue("Target " + hgnc1 + " doesn't exist in target list but should", hgnc1Exists);
assertTrue("Target " + hgnc2 + " doesn't exist in target list but should", hgnc2Exists);
long count2 = searchHistoryDao.getCount();
assertEquals(count + 1, count2);
assertEquals("YES", drug.getBloodBrainBarrier());
} catch (Exception e) {
e.printStackTrace();
throw e;
}
}
@Test
public void testGetTargetsBySynonym() throws Exception {
try {
// search by synonym
Drug drug = drugService.getByName("Amantidine", new DbSearchCriteria().ipAddress("ip"));
// search by name
Drug drug2 = drugService.getByName("Amantadine", new DbSearchCriteria().ipAddress("ip"));
assertNotNull(drug);
assertNotNull(drug.getName());
assertFalse(drug.getName().trim().equals(""));
assertNotNull(drug.getDescription());
assertFalse(drug.getDescription().trim().equals(""));
// number of targets should be the same
assertEquals(drug.getTargets().size(), drug2.getTargets().size());
assertTrue(drug.getTargets().size() > 0);
} catch (Exception e) {
e.printStackTrace();
throw e;
}
}
@Test
public void testFindDrugSelegiline() throws Exception {
try {
Drug test = drugService.getByName("Selegiline", new DbSearchCriteria().ipAddress("ip").organisms(TaxonomyBackend.HUMAN_TAXONOMY));
assertNotNull(test);
} catch (Exception e) {
e.printStackTrace();
throw e;
}
}
@Test
public void testDornaseAplha() throws Exception {
try {
Drug drug = drugService.getByName("Dornase alpha", new DbSearchCriteria());
assertNotNull(drug.getName());
assertEquals("N/A", drug.getBloodBrainBarrier());
} catch (Exception e) {
e.printStackTrace();
throw e;
}
}
@Test
public void testRapamycin() throws Exception {
try {
Drug drug = drugService.getByName("Rapamycin", new DbSearchCriteria());
assertNotNull(drug.getName());
assertEquals("NO", drug.getBloodBrainBarrier());
} catch (Exception e) {
e.printStackTrace();
throw e;
}
}
@Test
public void testSearchByElements() throws Exception {
try {
List<Element> elements = new ArrayList<>();
List<Drug> drugs = drugService.getForTargets(elements, new DbSearchCriteria());
assertNotNull(drugs);
assertEquals(0, drugs.size());
Protein protein = new GenericProtein("id");
protein.setName("DRD2");
protein.addMiriamData(new MiriamData(MiriamType.HGNC_SYMBOL, "DRD2"));
elements.add(protein);
drugs = drugService.getForTargets(elements, new DbSearchCriteria());
assertNotNull(drugs);
assertTrue(drugs.size() > 0);
} catch (Exception e) {
e.printStackTrace();
throw e;
}
}
@Test
public void testSearchByElements2() throws Exception {
try {
List<Element> elements = new ArrayList<>();
Protein protein = new GenericProtein("id");
protein.setName("DRD2");
protein.addMiriamData(new MiriamData(MiriamType.HGNC_SYMBOL, "DRD2"));
elements.add(protein);
List<Drug> drugs = drugService.getForTargets(elements, new DbSearchCriteria().organisms(TaxonomyBackend.HUMAN_TAXONOMY));
assertNotNull(drugs);
assertTrue(drugs.size() > 0);
} catch (Exception e) {
e.printStackTrace();
throw e;
}
}
@Test
public void testSearchByElements3() throws Exception {
try {
List<Element> elements = new ArrayList<>();
Protein protein = new GenericProtein("id");
protein.setName("GLUD1");
protein.addMiriamData(new MiriamData(MiriamType.HGNC_SYMBOL, "GLUD1"));
protein.addMiriamData(new MiriamData(MiriamType.ENTREZ, "2746"));
elements.add(protein);
List<Drug> drugs = drugService.getForTargets(elements, new DbSearchCriteria());
assertNotNull(drugs);
assertTrue(drugs.size() > 0);
} catch (Exception e) {
e.printStackTrace();
throw e;
}
}
@Test
public void testObjectToDrugTargetList() throws Exception {
try {
Drug drug = drugService.getByName("AMANTADINE", new DbSearchCriteria());
Drug drug2 = drugBankHTMLParser.findDrug("AMANTADINE");
assertTrue(drug2.getTargets().size() <= drug.getTargets().size());
} catch (Exception e) {
e.printStackTrace();
throw e;
}
}
@Test
public void testAspirinToDrugTargetList() throws Exception {
try {
Drug drug = drugService.getByName("Aspirin", new DbSearchCriteria());
Drug drug2 = drugBankHTMLParser.findDrug("Aspirin");
assertTrue(drug2.getTargets().size() <= drug.getTargets().size());
} catch (Exception e) {
e.printStackTrace();
throw e;
}
}
@Test
public void testAspirinSynonyms() throws Exception {
try {
Drug drug = drugService.getByName("Aspirin", new DbSearchCriteria());
Set<String> synonyms = new HashSet<String>();
for (String string : drug.getSynonyms()) {
assertFalse("Duplicate entry in drug synonym: " + string, synonyms.contains(string));
synonyms.add(string);
}
} catch (Exception e) {
e.printStackTrace();
throw e;
}
}
Logger logger = Logger.getLogger(DrugServiceTest.class);
@Before
public void setUp() throws Exception {
}
@After
public void tearDown() throws Exception {
}
@Test
public void testGetEmpty() throws Exception {
try {
Drug drug = drugService.getByName("blablablabla", new DbSearchCriteria());
assertNull(drug);
} catch (Exception e) {
e.printStackTrace();
throw e;
}
}
@Test
public void testGetTargets() throws Exception {
try {
long count = searchHistoryDao.getCount();
Model model = new ModelFullIndexed(null);
Project project = new Project();
project.setProjectId("TesT");
project.addModel(model);
Drug drug = drugService.getByName("Diazoxide", new DbSearchCriteria().model(model).ipAddress("ip"));
assertNotNull(drug);
assertNotNull(drug.getName());
assertFalse(drug.getName().trim().equals(""));
assertNotNull(drug.getDescription());
assertFalse(drug.getDescription().trim().equals(""));
String hgnc1 = "SLC12A3";
String hgnc2 = "KCNJ8";
boolean hgnc1Exists = false;
boolean hgnc2Exists = false;
for (Target target : drug.getTargets()) {
for (MiriamData row : target.getGenes()) {
if (row.getResource().equalsIgnoreCase(hgnc1))
hgnc1Exists = true;
if (row.getResource().equalsIgnoreCase(hgnc2))
hgnc2Exists = true;
}
}
assertTrue("Target " + hgnc1 + " doesn't exist in target list but should", hgnc1Exists);
assertTrue("Target " + hgnc2 + " doesn't exist in target list but should", hgnc2Exists);
long count2 = searchHistoryDao.getCount();
assertEquals(count + 1, count2);
assertEquals("YES", drug.getBloodBrainBarrier());
} catch (Exception e) {
e.printStackTrace();
throw e;
}
}
@Test
public void testGetTargetsBySynonym() throws Exception {
try {
// search by synonym
Drug drug = drugService.getByName("Amantidine", new DbSearchCriteria().ipAddress("ip"));
// search by name
Drug drug2 = drugService.getByName("Amantadine", new DbSearchCriteria().ipAddress("ip"));
assertNotNull(drug);
assertNotNull(drug.getName());
assertFalse(drug.getName().trim().equals(""));
assertNotNull(drug.getDescription());
assertFalse(drug.getDescription().trim().equals(""));
// number of targets should be the same
assertEquals(drug.getTargets().size(), drug2.getTargets().size());
assertTrue(drug.getTargets().size() > 0);
} catch (Exception e) {
e.printStackTrace();
throw e;
}
}
@Test
public void testFindDrugSelegiline() throws Exception {
try {
Drug test = drugService.getByName("Selegiline",
new DbSearchCriteria().ipAddress("ip").organisms(TaxonomyBackend.HUMAN_TAXONOMY));
assertNotNull(test);
} catch (Exception e) {
e.printStackTrace();
throw e;
}
}
@Test
public void testDornaseAplha() throws Exception {
try {
Drug drug = drugService.getByName("Dornase alpha", new DbSearchCriteria());
assertNotNull(drug.getName());
assertEquals("N/A", drug.getBloodBrainBarrier());
} catch (Exception e) {
e.printStackTrace();
throw e;
}
}
@Test
public void testRapamycin() throws Exception {
try {
Drug drug = drugService.getByName("Rapamycin", new DbSearchCriteria());
assertNotNull(drug.getName());
assertEquals("NO", drug.getBloodBrainBarrier());
} catch (Exception e) {
e.printStackTrace();
throw e;
}
}
@Test
public void testSearchByElements() throws Exception {
try {
List<Element> elements = new ArrayList<>();
List<Drug> drugs = drugService.getForTargets(elements, new DbSearchCriteria());
assertNotNull(drugs);
assertEquals(0, drugs.size());
Protein protein = new GenericProtein("id");
protein.setName("DRD2");
protein.addMiriamData(new MiriamData(MiriamType.HGNC_SYMBOL, "DRD2"));
elements.add(protein);
drugs = drugService.getForTargets(elements, new DbSearchCriteria());
assertNotNull(drugs);
assertTrue(drugs.size() > 0);
} catch (Exception e) {
e.printStackTrace();
throw e;
}
}
@Test
public void testSearchByElements2() throws Exception {
try {
List<Element> elements = new ArrayList<>();
Protein protein = new GenericProtein("id");
protein.setName("DRD2");
protein.addMiriamData(new MiriamData(MiriamType.HGNC_SYMBOL, "DRD2"));
elements.add(protein);
List<Drug> drugs = drugService.getForTargets(elements,
new DbSearchCriteria().organisms(TaxonomyBackend.HUMAN_TAXONOMY));
assertNotNull(drugs);
assertTrue(drugs.size() > 0);
} catch (Exception e) {
e.printStackTrace();
throw e;
}
}
@Test
public void testSearchByElements3() throws Exception {
try {
List<Element> elements = new ArrayList<>();
Protein protein = new GenericProtein("id");
protein.setName("GLUD1");
protein.addMiriamData(new MiriamData(MiriamType.HGNC_SYMBOL, "GLUD1"));
protein.addMiriamData(new MiriamData(MiriamType.ENTREZ, "2746"));
elements.add(protein);
List<Drug> drugs = drugService.getForTargets(elements, new DbSearchCriteria());
assertNotNull(drugs);
assertTrue(drugs.size() > 0);
} catch (Exception e) {
e.printStackTrace();
throw e;
}
}
@Test
public void testObjectToDrugTargetList() throws Exception {
try {
Drug drug = drugService.getByName("AMANTADINE", new DbSearchCriteria());
Drug drug2 = drugBankHTMLParser.findDrug("AMANTADINE");
assertTrue(drug2.getTargets().size() <= drug.getTargets().size());
} catch (Exception e) {
e.printStackTrace();
throw e;
}
}
@Test
public void testAspirinToDrugTargetList() throws Exception {
try {
Drug drug = drugService.getByName("Aspirin", new DbSearchCriteria());
Drug drug2 = drugBankHTMLParser.findDrug("Aspirin");
assertTrue(drug2.getTargets().size() <= drug.getTargets().size());
} catch (Exception e) {
e.printStackTrace();
throw e;
}
}
@Test
public void testAspirinSynonyms() throws Exception {
try {
Drug drug = drugService.getByName("Aspirin", new DbSearchCriteria());
Set<String> synonyms = new HashSet<String>();
for (String string : drug.getSynonyms()) {
assertFalse("Duplicate entry in drug synonym: " + string, synonyms.contains(string));
synonyms.add(string);
}
} catch (Exception e) {
e.printStackTrace();
throw e;
}
}
@Test
public void testGetSuggestedQueryList() throws Exception {
try {
List<String> result = drugService.getSuggestedQueryList(new Project(), null);
assertEquals(0, result.size());
} catch (Exception e) {
e.printStackTrace();
throw e;
}
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment