Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Multiple inchis #396

Merged
merged 14 commits into from
Feb 21, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion gsrs-module-substance-example/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -212,7 +212,7 @@

<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<artifactId>h2</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -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;
Expand All @@ -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
Expand All @@ -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<? extends AbstractStructureStandardizer> standardizerClass = InchiStandardizer.class;
@Bean
public StructureStandardizer getStructureStandardizer() throws InstantiationException, IllegalAccessException, NoSuchMethodException, InvocationTargetException {
InchiStandardizer istd = new InchiStandardizer();
Expand Down Expand Up @@ -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<Object> 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);
}


}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -64,6 +65,7 @@
SubstanceSynchronizer.class,
StructureProcessorConfiguration.class,
StructureHandlingConfiguration.class,
LegacyAuthenticationConfiguration.class,
ChemicalUtils.class
})
public class SubstanceCoreConfiguration {
Expand Down
Original file line number Diff line number Diff line change
@@ -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;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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.*;
Expand All @@ -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;

/**
Expand Down Expand Up @@ -208,9 +211,13 @@ public Map<Column, ColumnValueRecipe<Substance>> createColumnRecipes(Parameters

try {
Chemical chem = s.toChemical();
cell.writeString(Inchi.asStdInchi(Chem.RemoveQueryFeaturesForPseudoInChI(chem))
InChIRegisteredFunction functionHolder = new InChIRegisteredFunction();
BiFunction<InChIRegisteredFunction.InChIPath, Structure, Optional<String>> fun = functionHolder.getOperation();
Optional<String> 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) {

}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -487,6 +487,7 @@ public String getInChIKeyAndThrow() throws Exception{
}

@JsonProperty("_inchiKeySet")
@JsonIgnore
@Transient
public List<String> getInChIKeysAndThrow() {

Expand All @@ -508,7 +509,6 @@ public List<String> getInChIKeysAndThrow() {
return null;
}
}).filter(i -> i != null)
//.collect(Collectors.joining("\\n"));
.collect(Collectors.toList());
}
catch (Exception ex) {
Expand All @@ -518,6 +518,7 @@ public List<String> getInChIKeysAndThrow() {
}

@JsonProperty("_inchiSet")
@JsonIgnore
@Transient
public List<String> getInChIsAndThrow() {

Expand Down
1 change: 0 additions & 1 deletion gsrs-module-substances-spring-boot-starter/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>2.4.5</version>
<exclusions>
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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<ConfigurableApplicationContext> {
Expand Down
6 changes: 3 additions & 3 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
<module>gsrs-module-substances-api</module>
<module>gsrs-module-substances-dto</module>
<module>gsrs-module-substances-tests</module>
<module>gsrs-ncats-substance-extension</module>
<module>gsrs-ncats-substance-extension</module>
<module>gsrs-module-substances-data-exchange</module>
</modules>
<parent>
Expand All @@ -32,13 +32,13 @@
</scm>
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Hoxton.SR1</spring-cloud.version>
<gsrs.version>3.1.2-SNAPSHOT</gsrs.version>
<gsrs.substance.version>3.1.2-SNAPSHOT</gsrs.substance.version>
<spring-cloud.version>Hoxton.SR1</spring-cloud.version>
<spring-boot.version>2.4.5</spring-boot.version>
<gsrs.applications-api.version>3.1.2-SNAPSHOT</gsrs.applications-api.version>
<gsrs.clinical-trials-api.version>3.1.2-SNAPSHOT</gsrs.clinical-trials-api.version>
<gsrs.products-api.version>3.1.2-SNAPSHOT</gsrs.products-api.version>
<spring-boot.version>2.4.5</spring-boot.version>
<log4j2.version>2.17.2</log4j2.version>
</properties>

Expand Down