diff --git a/gsrs-module-substance-example/pom.xml b/gsrs-module-substance-example/pom.xml index f6f7995cc..0a7a68c73 100644 --- a/gsrs-module-substance-example/pom.xml +++ b/gsrs-module-substance-example/pom.xml @@ -212,7 +212,7 @@ com.h2database - h2 + h2 org.projectlombok diff --git a/gsrs-module-substance-example/src/main/java/example/GsrsModuleSubstanceApplication.java b/gsrs-module-substance-example/src/main/java/example/GsrsModuleSubstanceApplication.java index e1c65a2e5..75aae0d51 100644 --- a/gsrs-module-substance-example/src/main/java/example/GsrsModuleSubstanceApplication.java +++ b/gsrs-module-substance-example/src/main/java/example/GsrsModuleSubstanceApplication.java @@ -10,7 +10,6 @@ import org.springframework.context.annotation.Bean; import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; //import org.springframework.cloud.netflix.eureka.EnableEurekaClient; diff --git a/gsrs-module-substance-example/src/test/java/example/chem/DefHashCalcTest.java b/gsrs-module-substance-example/src/test/java/example/chem/DefHashCalcTest.java index 3038db4c3..660c879eb 100644 --- a/gsrs-module-substance-example/src/test/java/example/chem/DefHashCalcTest.java +++ b/gsrs-module-substance-example/src/test/java/example/chem/DefHashCalcTest.java @@ -10,11 +10,9 @@ import ix.core.chem.StructureProcessor; import ix.core.models.Structure; import ix.ginas.modelBuilders.ChemicalSubstanceBuilder; -import ix.ginas.modelBuilders.SubstanceBuilder; -import ix.ginas.models.v1.ChemicalSubstance; -import ix.ginas.models.v1.GinasChemicalStructure; import ix.ginas.modelBuilders.MixtureSubstanceBuilder; import ix.ginas.modelBuilders.StructurallyDiverseSubstanceBuilder; +import ix.ginas.modelBuilders.SubstanceBuilder; import ix.ginas.models.v1.*; import lombok.extern.slf4j.Slf4j; import org.junit.jupiter.api.Assertions; diff --git a/gsrs-module-substance-example/src/test/java/example/substance/FlexAndExactSearchFullStackTest.java b/gsrs-module-substance-example/src/test/java/example/substance/FlexAndExactSearchFullStackTest.java index 9514e79b2..2cb6eacc3 100644 --- a/gsrs-module-substance-example/src/test/java/example/substance/FlexAndExactSearchFullStackTest.java +++ b/gsrs-module-substance-example/src/test/java/example/substance/FlexAndExactSearchFullStackTest.java @@ -1,8 +1,5 @@ package example.substance; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertTrue; - import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.util.Collection; @@ -15,6 +12,7 @@ import javax.servlet.http.HttpServletRequest; +import com.fasterxml.jackson.databind.node.ObjectNode; import org.junit.jupiter.api.Test; import org.mockito.Mockito; import org.springframework.beans.factory.annotation.Autowired; @@ -41,6 +39,9 @@ import ix.core.chem.StructureStandardizer; import ix.core.models.Structure; import ix.ginas.modelBuilders.SubstanceBuilder; + +import static org.junit.jupiter.api.Assertions.*; + @SpringBootTest(classes = GsrsModuleSubstanceApplication.class) @ActiveProfiles("test") @RecordApplicationEvents @@ -60,10 +61,6 @@ public class FlexAndExactSearchFullStackTest extends AbstractSubstanceJpaFullSt @TestConfiguration public static class Configuration{ -// @Value("${ix.core.structureIndex.atomLimit}") -// private int maxNumberOfAtoms = 240; -// @Value(value ="${ix.structure-standardizer}") -// private Class standardizerClass = InchiStandardizer.class; @Bean public StructureStandardizer getStructureStandardizer() throws InstantiationException, IllegalAccessException, NoSuchMethodException, InvocationTargetException { InchiStandardizer istd = new InchiStandardizer(); @@ -262,4 +259,38 @@ public void ensureAFlexSearchForADirectSmilesGetsStandardized() throws Exception } + @Test + public void ensureSmilesLeadsToReasonableMolfile() throws Exception { + + ObjectMapper om = new ObjectMapper(); + String smiles = "c1ccc(cc1)P(CCCC#N)(c2ccccc2)c3ccccc3"; + UUID uuid1 = UUID.randomUUID(); + new SubstanceBuilder() + .asChemical() + .setStructureWithDefaultReference(smiles) + .addName("triphenyl-Phosphene,(3-cyanopropyl)") + .setUUID(uuid1) + .buildJsonAnd(this::assertCreatedAPI); + + HttpServletRequest mockedRequest = Mockito.mock(HttpServletRequest.class); + Mockito.when(mockedRequest.getRequestURI()).thenReturn("http://mock"); + Mockito.when(mockedRequest.getRequestURL()).thenReturn(new StringBuffer("http://mock")); + + LoggingStructureStandardizer lstd=(LoggingStructureStandardizer)standardizer; + + lstd.reset(); + assertEquals(0,lstd.getStdCallCount()); + + ResponseEntity response= substanceController.interpretStructure(smiles, new HashMap<>()); + assertTrue(response.getBody() instanceof ObjectNode); + ObjectNode baseNode = (ObjectNode)response.getBody(); + ObjectNode structureNode = (ObjectNode) baseNode.get("structure"); + String molfile = structureNode.get("molfile").asText(); + assertNotNull(molfile); + Chemical chem = Chemical.parseMol(molfile); + assertTrue(chem.bonds().allMatch(b->b.isQueryBond())); + System.out.printf("molfile=%s\n", molfile); + } + + } diff --git a/gsrs-module-substances-core/src/main/java/gsrs/module/substance/SubstanceCoreConfiguration.java b/gsrs-module-substances-core/src/main/java/gsrs/module/substance/SubstanceCoreConfiguration.java index 23365cdb7..073013d5c 100644 --- a/gsrs-module-substances-core/src/main/java/gsrs/module/substance/SubstanceCoreConfiguration.java +++ b/gsrs-module-substances-core/src/main/java/gsrs/module/substance/SubstanceCoreConfiguration.java @@ -16,6 +16,7 @@ import gsrs.module.substance.utils.MolWeightCalculatorProperties; import gsrs.module.substance.utils.SubstanceMatchViewGenerator; import gsrs.module.substance.utils.SubstanceResultListRecordGenerator; +import gsrs.security.LegacyAuthenticationConfiguration; import ix.core.chem.StructureProcessorConfiguration; import ix.core.search.bulk.BulkSearchService; import ix.core.search.bulk.UserSavedListService; @@ -64,6 +65,7 @@ SubstanceSynchronizer.class, StructureProcessorConfiguration.class, StructureHandlingConfiguration.class, + LegacyAuthenticationConfiguration.class, ChemicalUtils.class }) public class SubstanceCoreConfiguration { diff --git a/gsrs-module-substances-core/src/main/java/gsrs/module/substance/controllers/GsrsSubstanceControllerUtil.java b/gsrs-module-substances-core/src/main/java/gsrs/module/substance/controllers/GsrsSubstanceControllerUtil.java index ccfca51a2..18a1dd989 100644 --- a/gsrs-module-substances-core/src/main/java/gsrs/module/substance/controllers/GsrsSubstanceControllerUtil.java +++ b/gsrs-module-substances-core/src/main/java/gsrs/module/substance/controllers/GsrsSubstanceControllerUtil.java @@ -1,6 +1,7 @@ package gsrs.module.substance.controllers; import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.DeserializationFeature; import gsrs.cache.GsrsCache; import ix.core.controllers.EntityFactory; diff --git a/gsrs-module-substances-core/src/main/java/gsrs/module/substance/exporters/DefaultSubstanceSpreadsheetExporterFactory.java b/gsrs-module-substances-core/src/main/java/gsrs/module/substance/exporters/DefaultSubstanceSpreadsheetExporterFactory.java index af0b4dfd0..e535e79c8 100644 --- a/gsrs-module-substances-core/src/main/java/gsrs/module/substance/exporters/DefaultSubstanceSpreadsheetExporterFactory.java +++ b/gsrs-module-substances-core/src/main/java/gsrs/module/substance/exporters/DefaultSubstanceSpreadsheetExporterFactory.java @@ -10,6 +10,8 @@ import ix.core.models.Group; import ix.core.models.Structure; import ix.core.util.EntityUtils.Key; +import ix.core.util.pojopointer.extensions.InChIFullRegisteredFunction; +import ix.core.util.pojopointer.extensions.InChIRegisteredFunction; import ix.ginas.exporters.*; import ix.ginas.exporters.Spreadsheet.SpreadsheetRow; import ix.ginas.models.v1.*; @@ -20,6 +22,7 @@ import java.io.IOException; import java.io.OutputStream; import java.util.*; +import java.util.function.BiFunction; import java.util.stream.Stream; /** @@ -208,9 +211,13 @@ public Map> createColumnRecipes(Parameters try { Chemical chem = s.toChemical(); - cell.writeString(Inchi.asStdInchi(Chem.RemoveQueryFeaturesForPseudoInChI(chem)) + InChIRegisteredFunction functionHolder = new InChIRegisteredFunction(); + BiFunction> fun = functionHolder.getOperation(); + Optional result =fun.apply(new InChIRegisteredFunction.InChIPath(), ((ChemicalSubstance) s).getStructure()); + cell.writeString(result.orElse("")); + /*cell.writeString(Inchi.asStdInchi(Chem.RemoveQueryFeaturesForPseudoInChI(chem)) .getKey() - .replace("InChIKey=", "")); + .replace("InChIKey=", ""));*/ } catch (Exception e) { } diff --git a/gsrs-module-substances-core/src/main/java/ix/core/models/Structure.java b/gsrs-module-substances-core/src/main/java/ix/core/models/Structure.java index 981256cc2..fc01719fc 100644 --- a/gsrs-module-substances-core/src/main/java/ix/core/models/Structure.java +++ b/gsrs-module-substances-core/src/main/java/ix/core/models/Structure.java @@ -487,6 +487,7 @@ public String getInChIKeyAndThrow() throws Exception{ } @JsonProperty("_inchiKeySet") + @JsonIgnore @Transient public List getInChIKeysAndThrow() { @@ -508,7 +509,6 @@ public List getInChIKeysAndThrow() { return null; } }).filter(i -> i != null) - //.collect(Collectors.joining("\\n")); .collect(Collectors.toList()); } catch (Exception ex) { @@ -518,6 +518,7 @@ public List getInChIKeysAndThrow() { } @JsonProperty("_inchiSet") + @JsonIgnore @Transient public List getInChIsAndThrow() { diff --git a/gsrs-module-substances-spring-boot-starter/pom.xml b/gsrs-module-substances-spring-boot-starter/pom.xml index fe4316ab4..48aa04634 100644 --- a/gsrs-module-substances-spring-boot-starter/pom.xml +++ b/gsrs-module-substances-spring-boot-starter/pom.xml @@ -15,7 +15,6 @@ org.springframework.boot spring-boot-starter - 2.4.5 org.apache.logging.log4j diff --git a/gsrs-module-substances-tests/src/main/java/gsrs/substances/tests/AbstractSubstanceJpaEntityTestSuperClass.java b/gsrs-module-substances-tests/src/main/java/gsrs/substances/tests/AbstractSubstanceJpaEntityTestSuperClass.java index f8f535691..f4d45ca0c 100644 --- a/gsrs-module-substances-tests/src/main/java/gsrs/substances/tests/AbstractSubstanceJpaEntityTestSuperClass.java +++ b/gsrs-module-substances-tests/src/main/java/gsrs/substances/tests/AbstractSubstanceJpaEntityTestSuperClass.java @@ -17,6 +17,7 @@ import javax.persistence.EntityManager; +import gsrs.scheduler.GsrsSchedulerTaskPropertiesConfiguration; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.extension.RegisterExtension; import org.quartz.Scheduler; @@ -151,6 +152,13 @@ protected GsrsExportConfiguration mockGsrsExportConfiguration(){ return mock(GsrsExportConfiguration.class); } + @Bean + @ConditionalOnMissingBean + @Primary + public GsrsSchedulerTaskPropertiesConfiguration getGsrsSchedulerTaskPropertiesConfiguration() { + return new GsrsSchedulerTaskPropertiesConfiguration(); + } + } static class Initializer implements ApplicationContextInitializer { diff --git a/pom.xml b/pom.xml index 5e878302e..58b8ef951 100644 --- a/pom.xml +++ b/pom.xml @@ -12,7 +12,7 @@ gsrs-module-substances-api gsrs-module-substances-dto gsrs-module-substances-tests - gsrs-ncats-substance-extension + gsrs-ncats-substance-extension gsrs-module-substances-data-exchange @@ -32,13 +32,13 @@ 1.8 - Hoxton.SR1 3.1.2-SNAPSHOT 3.1.2-SNAPSHOT + Hoxton.SR1 + 2.4.5 3.1.2-SNAPSHOT 3.1.2-SNAPSHOT 3.1.2-SNAPSHOT - 2.4.5 2.17.2