From 3f68bdedce305e8efe3b56024ced038c30b0e638 Mon Sep 17 00:00:00 2001 From: juexinwang Date: Tue, 19 Jul 2016 16:24:18 -0500 Subject: [PATCH] updated swagger API and update several annotation. Now this version is ready to use --- README | 8 +- pdb-alignment-api/pom.xml | 12 ++ .../pdb_annotation/web/Application.java | 45 +++++- .../web/controllers/AlignmentController.java | 131 ++++++++++-------- .../web/controllers/MainController.java | 14 -- .../web/domain/AlignmentRepository.java | 20 +++ .../web/domain/EnsemblRepository.java | 20 +++ .../web/domain/PdbRepository.java | 16 +++ .../pdb_annotation/web/models/Alignment.java | 46 +++--- .../pdb_annotation/web/models/Ensembl.java | 13 +- .../pdb_annotation/web/models/Pdb.java | 5 + .../web/persistancy/AlignmentRepository.java | 13 -- .../web/persistancy/EnsemblRepository.java | 13 -- .../web/persistancy/PdbRepository.java | 11 -- .../src/main/resources/application.properties | 2 +- .../scripts/PdbScriptsPipelineMakeSQL.java | 1 - .../PdbScriptsPipelinePreprocessing.java | 2 - .../scripts/PdbScriptsPipelineRunCommand.java | 5 - .../scripts/PdbScriptsPipelineStarter.java | 45 +----- .../scripts/ScheduleUpdateTask.java | 2 - .../pdb_annotation/util/ReadConfig.java | 19 ++- .../src/main/resources/application.properties | 30 ++-- 22 files changed, 258 insertions(+), 215 deletions(-) delete mode 100644 pdb-alignment-api/src/main/java/org/cbioportal/pdb_annotation/web/controllers/MainController.java create mode 100644 pdb-alignment-api/src/main/java/org/cbioportal/pdb_annotation/web/domain/AlignmentRepository.java create mode 100644 pdb-alignment-api/src/main/java/org/cbioportal/pdb_annotation/web/domain/EnsemblRepository.java create mode 100644 pdb-alignment-api/src/main/java/org/cbioportal/pdb_annotation/web/domain/PdbRepository.java delete mode 100644 pdb-alignment-api/src/main/java/org/cbioportal/pdb_annotation/web/persistancy/AlignmentRepository.java delete mode 100644 pdb-alignment-api/src/main/java/org/cbioportal/pdb_annotation/web/persistancy/EnsemblRepository.java delete mode 100644 pdb-alignment-api/src/main/java/org/cbioportal/pdb_annotation/web/persistancy/PdbRepository.java diff --git a/README b/README index 718a216..fc1ddfa 100644 --- a/README +++ b/README @@ -27,9 +27,11 @@ Step 1. Init the Database Step 2. Check the API 1. in pdb-annotation/pdb-alignment-api/: mvn spring-boot:run -2. open your web browser: -http://localhost:8080/StructureMappingQuery?ensemblid=ENSP00000483207.2 -http://localhost:8080/ProteinIdentifierRecognitionQuery?ensemblid=ENSP00000483207.2 +2. Swagger-UI: +http://localhost:8080/swagger-ui.html +3. Directly using API: +http://localhost:8080/pdb_annotation/StructureMappingQuery?ensemblId=ENSP00000483207.2 +http://localhost:8080/pdb_annotation/ProteinIdentifierRecognitionQuery?ensemblId=ENSP00000483207.2 Step 3. Weekly update 1. in pdb-annotation/pdb-alignment-pipeline/target/: java -jar -Xmx7000m pdb-0.1.0.jar update diff --git a/pdb-alignment-api/pom.xml b/pdb-alignment-api/pom.xml index 62ade2d..48e12f7 100644 --- a/pdb-alignment-api/pom.xml +++ b/pdb-alignment-api/pom.xml @@ -24,6 +24,18 @@ mysql mysql-connector-java + + io.springfox + springfox-swagger-ui + 2.4.0 + compile + + + io.springfox + springfox-swagger2 + 2.4.0 + compile + diff --git a/pdb-alignment-api/src/main/java/org/cbioportal/pdb_annotation/web/Application.java b/pdb-alignment-api/src/main/java/org/cbioportal/pdb_annotation/web/Application.java index efb5621..e623493 100644 --- a/pdb-alignment-api/src/main/java/org/cbioportal/pdb_annotation/web/Application.java +++ b/pdb-alignment-api/src/main/java/org/cbioportal/pdb_annotation/web/Application.java @@ -1,13 +1,52 @@ package org.cbioportal.pdb_annotation.web; import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.Bean; +import springfox.documentation.builders.ApiInfoBuilder; +import springfox.documentation.builders.PathSelectors; +import springfox.documentation.service.ApiInfo; +import springfox.documentation.spi.DocumentationType; +import springfox.documentation.spring.web.plugins.Docket; +import springfox.documentation.swagger2.annotations.EnableSwagger2; + +/** + * Main SpringBoot Application + * + * @author Juexin Wang + * + */ @SpringBootApplication -@EnableAutoConfiguration +@EnableSwagger2 public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); - } + } + + @Bean + public Docket annotationApi() + { + // default swagger definition file location: /v2/api-docs?group=pdb_annotation + // default swagger UI location: /swagger-ui.html + return new Docket(DocumentationType.SWAGGER_2) + .groupName("pdb_annotation") + .apiInfo(annotationApiInfo()) + .select() + .paths(PathSelectors.regex("/pdb_annotation.*")) + .build(); + } + + private ApiInfo annotationApiInfo() + { + return new ApiInfoBuilder() + .title("PDB Annotation API") + .description("PDB Annotation API") + //.termsOfServiceUrl("http://terms-of-service-url") + .contact("CMO, MSKCC") + .license("GNU AFFERO GENERAL PUBLIC LICENSE Version 3") + .licenseUrl("https://github.com/cBioPortal/pdb-annotation/blob/master/LICENSE") + .version("2.0") + .build(); + } } diff --git a/pdb-alignment-api/src/main/java/org/cbioportal/pdb_annotation/web/controllers/AlignmentController.java b/pdb-alignment-api/src/main/java/org/cbioportal/pdb_annotation/web/controllers/AlignmentController.java index e717941..f19fad9 100644 --- a/pdb-alignment-api/src/main/java/org/cbioportal/pdb_annotation/web/controllers/AlignmentController.java +++ b/pdb-alignment-api/src/main/java/org/cbioportal/pdb_annotation/web/controllers/AlignmentController.java @@ -1,73 +1,90 @@ package org.cbioportal.pdb_annotation.web.controllers; import java.util.ArrayList; -import java.util.Iterator; import java.util.List; +import org.cbioportal.pdb_annotation.web.domain.AlignmentRepository; +import org.cbioportal.pdb_annotation.web.domain.EnsemblRepository; +import org.cbioportal.pdb_annotation.web.domain.PdbRepository; import org.cbioportal.pdb_annotation.web.models.Alignment; -import org.cbioportal.pdb_annotation.web.persistancy.AlignmentRepository; -import org.cbioportal.pdb_annotation.web.persistancy.EnsemblRepository; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.ResponseStatus; +import org.springframework.web.bind.annotation.RestController; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import io.swagger.annotations.ApiResponse; +import io.swagger.annotations.ApiResponses; -@Controller +/** + * + * Controller of the main API: AlignmentController + * + * @author Juexin Wang + * + */ +@RestController // shorthand for @Controller, @ResponseBody +@CrossOrigin(origins = "*") // allow all cross-domain requests +@RequestMapping(value = "/pdb_annotation/") public class AlignmentController { - - @RequestMapping("/StructureMappingQuery") - @ResponseBody - public List findByEnsemblidinAlignment(String ensemblid) { - - List list = new ArrayList(); - try { - Iterator it = alignmentDao.findByEnsemblId(ensemblid).iterator(); - while(it.hasNext()){ - Alignment alignment = (Alignment)it.next(); - list.add(alignment); - } - } - catch (Exception ex) { - ex.printStackTrace(); - } - return list; - - } - - - @RequestMapping("/ProteinIdentifierRecognitionQuery") - @ResponseBody - public boolean isExistedEnsemblidinAlignment(String ensemblid) { - try { - Iterator it = alignmentDao.findByEnsemblId(ensemblid).iterator(); - if(it.hasNext()){ - return true; - }else{ - return false; - } - } - catch (Exception ex) { - ex.printStackTrace(); - } - return false; - } - - - - - - // ------------------------ - // PRIVATE FIELDS - // ------------------------ - @Autowired - private AlignmentRepository alignmentDao; - - //@Autowired - //private EnsemblDAO ensemblDao; - - + private AlignmentRepository alignmentRepository; + private EnsemblRepository ensemblRepository; + private PdbRepository pdbRepository; + @Autowired + public AlignmentController(AlignmentRepository alignmentRepository, EnsemblRepository ensemblRepository, + PdbRepository pdbRepository) { + this.alignmentRepository = alignmentRepository; + this.ensemblRepository = ensemblRepository; + this.pdbRepository = pdbRepository; + } + + @ApiOperation(value = "get pdb alignments by ensemblId", nickname = "getPdbAlignmentByEnsemblId") + @ApiResponses(value = { + @ApiResponse(code = 200, message = "Success", response = Alignment.class, responseContainer = "List"), + @ApiResponse(code = 400, message = "Bad Request") }) + @RequestMapping(value = "/StructureMappingQuery", method = RequestMethod.GET, produces = "application/json") + @ResponseBody + @ResponseStatus(HttpStatus.OK) + public List getPdbAlignmentByEnsemblId( + @RequestParam @ApiParam(value = "Input ensembl id. For example ENSP00000483207.2", required = true, allowMultiple = true) String ensemblId) { + List list = new ArrayList(); + try { + List it = alignmentRepository.findByEnsemblId(ensemblId); + list.addAll(it); + } catch (Exception ex) { + ex.printStackTrace(); + } + return list; + } + + @ApiOperation(value = "get whether ensemblId exists by ensemblId", nickname = "getExistedEnsemblidinAlignment") + @ApiResponses(value = { + @ApiResponse(code = 200, message = "Success", response = Alignment.class, responseContainer = "boolean"), + @ApiResponse(code = 400, message = "Bad Request") }) + @RequestMapping(value = "/ProteinIdentifierRecognitionQuery", method = RequestMethod.GET, produces = "application/json") + @ResponseBody + @ResponseStatus(HttpStatus.OK) + public boolean getExistedEnsemblidinAlignment( + @RequestParam @ApiParam(value = "Input ensembl id. For example ENSP00000483207.2", required = true, allowMultiple = true) String ensemblId) { + try { + List it = alignmentRepository.findByEnsemblId(ensemblId); + if (it.size() != 0) { + return true; + } else { + return false; + } + } catch (Exception ex) { + ex.printStackTrace(); + } + return false; + } } diff --git a/pdb-alignment-api/src/main/java/org/cbioportal/pdb_annotation/web/controllers/MainController.java b/pdb-alignment-api/src/main/java/org/cbioportal/pdb_annotation/web/controllers/MainController.java deleted file mode 100644 index 0b17266..0000000 --- a/pdb-alignment-api/src/main/java/org/cbioportal/pdb_annotation/web/controllers/MainController.java +++ /dev/null @@ -1,14 +0,0 @@ -package org.cbioportal.pdb_annotation.web.controllers; - -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; - -@Controller -public class MainController { - @RequestMapping("/") - @ResponseBody - public String index() { - return "Handcrafted by Juexin Wang"; - } -} diff --git a/pdb-alignment-api/src/main/java/org/cbioportal/pdb_annotation/web/domain/AlignmentRepository.java b/pdb-alignment-api/src/main/java/org/cbioportal/pdb_annotation/web/domain/AlignmentRepository.java new file mode 100644 index 0000000..56b68da --- /dev/null +++ b/pdb-alignment-api/src/main/java/org/cbioportal/pdb_annotation/web/domain/AlignmentRepository.java @@ -0,0 +1,20 @@ +package org.cbioportal.pdb_annotation.web.domain; + +import java.util.List; + +import javax.transaction.Transactional; + +import org.cbioportal.pdb_annotation.web.models.Alignment; +import org.springframework.data.jpa.repository.JpaRepository; + +/** + * + * @author Juexin Wang + * + */ +@Transactional +public interface AlignmentRepository extends JpaRepository{ + + public List findByEnsemblId(String ensemblId); + +} diff --git a/pdb-alignment-api/src/main/java/org/cbioportal/pdb_annotation/web/domain/EnsemblRepository.java b/pdb-alignment-api/src/main/java/org/cbioportal/pdb_annotation/web/domain/EnsemblRepository.java new file mode 100644 index 0000000..7a088b1 --- /dev/null +++ b/pdb-alignment-api/src/main/java/org/cbioportal/pdb_annotation/web/domain/EnsemblRepository.java @@ -0,0 +1,20 @@ +package org.cbioportal.pdb_annotation.web.domain; + +import java.util.List; + +import javax.transaction.Transactional; + +import org.cbioportal.pdb_annotation.web.models.Alignment; +import org.cbioportal.pdb_annotation.web.models.Ensembl; +import org.springframework.data.jpa.repository.JpaRepository; + +/** + * + * @author Juexin Wang + * + */ +@Transactional +public interface EnsemblRepository extends JpaRepository{ + + public List findByEnsemblId(String ensemblId); +} diff --git a/pdb-alignment-api/src/main/java/org/cbioportal/pdb_annotation/web/domain/PdbRepository.java b/pdb-alignment-api/src/main/java/org/cbioportal/pdb_annotation/web/domain/PdbRepository.java new file mode 100644 index 0000000..375357a --- /dev/null +++ b/pdb-alignment-api/src/main/java/org/cbioportal/pdb_annotation/web/domain/PdbRepository.java @@ -0,0 +1,16 @@ +package org.cbioportal.pdb_annotation.web.domain; + +import javax.transaction.Transactional; + +import org.cbioportal.pdb_annotation.web.models.Alignment; +import org.springframework.data.jpa.repository.JpaRepository; + +/** + * + * @author Juexin Wang + * + */ +@Transactional +public interface PdbRepository extends JpaRepository{ + +} diff --git a/pdb-alignment-api/src/main/java/org/cbioportal/pdb_annotation/web/models/Alignment.java b/pdb-alignment-api/src/main/java/org/cbioportal/pdb_annotation/web/models/Alignment.java index 4cb4abb..64b8d08 100644 --- a/pdb-alignment-api/src/main/java/org/cbioportal/pdb_annotation/web/models/Alignment.java +++ b/pdb-alignment-api/src/main/java/org/cbioportal/pdb_annotation/web/models/Alignment.java @@ -6,7 +6,12 @@ import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; -import javax.validation.constraints.NotNull; + +/** + * + * @author Juexin Wang + * + */ @Entity @Table(name = "pdb_ensembl_alignment") @@ -55,16 +60,14 @@ public class Alignment { @Column(name = "IDENTP") private float identp; - /* @Column(name = "ENSEMBL_ALIGN") - private String ensemblalign; + private String ensemblAlign; @Column(name = "PDB_ALIGN") - private String pdbalign; + private String pdbAlign; @Column(name = "MIDLINE_ALIGN") - private String midlinealign; - */ + private String midlineAlign; // ------------------------ @@ -175,33 +178,32 @@ public float getIdentp() { public void setIdentp(float identp) { this.identp = identp; } - - /* - public String getEnsemblalign() { - return ensemblalign; + + + public String getEnsemblAlign() { + return ensemblAlign; } - public void setEnsemblalign(String ensemblalign) { - this.ensemblalign = ensemblalign; + public void setEnsemblAlign(String ensemblAlign) { + this.ensemblAlign = ensemblAlign; } - public String getPdbalign() { - return pdbalign; + public String getPdbAlign() { + return pdbAlign; } - public void setPdbalgin(String pdbalign) { - this.pdbalign = pdbalign; + public void setPdbAlign(String pdbAlign) { + this.pdbAlign = pdbAlign; } - public String getMidlinealign() { - return midlinealign; + public String getMidlineAlign() { + return midlineAlign; } - public void setMidlinealign(String midlinealign) { - this.midlinealign = midlinealign; + public void setMidlineAlign(String midlineAlign) { + this.midlineAlign = midlineAlign; } - */ - + /** * Construction Function */ diff --git a/pdb-alignment-api/src/main/java/org/cbioportal/pdb_annotation/web/models/Ensembl.java b/pdb-alignment-api/src/main/java/org/cbioportal/pdb_annotation/web/models/Ensembl.java index fbfbdfd..2a37614 100644 --- a/pdb-alignment-api/src/main/java/org/cbioportal/pdb_annotation/web/models/Ensembl.java +++ b/pdb-alignment-api/src/main/java/org/cbioportal/pdb_annotation/web/models/Ensembl.java @@ -2,11 +2,14 @@ import javax.persistence.Column; import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; +/** + * + * @author Juexin Wang + * + */ @Entity @Table(name = "ensembl_entry") public class Ensembl { @@ -56,10 +59,6 @@ public String getEnsembltranscript() { public void setEnsembltranscript(String ensembltranscript) { this.ensemblTranscript = ensembltranscript; - } - - - - + } } diff --git a/pdb-alignment-api/src/main/java/org/cbioportal/pdb_annotation/web/models/Pdb.java b/pdb-alignment-api/src/main/java/org/cbioportal/pdb_annotation/web/models/Pdb.java index c3dfc73..6f80182 100644 --- a/pdb-alignment-api/src/main/java/org/cbioportal/pdb_annotation/web/models/Pdb.java +++ b/pdb-alignment-api/src/main/java/org/cbioportal/pdb_annotation/web/models/Pdb.java @@ -5,6 +5,11 @@ import javax.persistence.Id; import javax.persistence.Table; +/** + * + * @author Juexin Wang + * + */ @Entity @Table(name = "pdb_entry") public class Pdb { diff --git a/pdb-alignment-api/src/main/java/org/cbioportal/pdb_annotation/web/persistancy/AlignmentRepository.java b/pdb-alignment-api/src/main/java/org/cbioportal/pdb_annotation/web/persistancy/AlignmentRepository.java deleted file mode 100644 index a43232c..0000000 --- a/pdb-alignment-api/src/main/java/org/cbioportal/pdb_annotation/web/persistancy/AlignmentRepository.java +++ /dev/null @@ -1,13 +0,0 @@ -package org.cbioportal.pdb_annotation.web.persistancy; - -import javax.transaction.Transactional; - -import org.cbioportal.pdb_annotation.web.models.Alignment; -import org.springframework.data.repository.CrudRepository; - -@Transactional -public interface AlignmentRepository extends CrudRepository{ - - public Iterable findByEnsemblId(String ensemblid); - -} diff --git a/pdb-alignment-api/src/main/java/org/cbioportal/pdb_annotation/web/persistancy/EnsemblRepository.java b/pdb-alignment-api/src/main/java/org/cbioportal/pdb_annotation/web/persistancy/EnsemblRepository.java deleted file mode 100644 index 868ecae..0000000 --- a/pdb-alignment-api/src/main/java/org/cbioportal/pdb_annotation/web/persistancy/EnsemblRepository.java +++ /dev/null @@ -1,13 +0,0 @@ -package org.cbioportal.pdb_annotation.web.persistancy; - -import javax.transaction.Transactional; - -import org.cbioportal.pdb_annotation.web.models.Alignment; -import org.cbioportal.pdb_annotation.web.models.Ensembl; -import org.springframework.data.repository.CrudRepository; - -@Transactional -public interface EnsemblRepository extends CrudRepository{ - - public Iterable findByEnsemblId(String ensemblid); -} diff --git a/pdb-alignment-api/src/main/java/org/cbioportal/pdb_annotation/web/persistancy/PdbRepository.java b/pdb-alignment-api/src/main/java/org/cbioportal/pdb_annotation/web/persistancy/PdbRepository.java deleted file mode 100644 index d090c29..0000000 --- a/pdb-alignment-api/src/main/java/org/cbioportal/pdb_annotation/web/persistancy/PdbRepository.java +++ /dev/null @@ -1,11 +0,0 @@ -package org.cbioportal.pdb_annotation.web.persistancy; - -import javax.transaction.Transactional; - -import org.cbioportal.pdb_annotation.web.models.Alignment; -import org.springframework.data.repository.CrudRepository; - -@Transactional -public interface PdbRepository extends CrudRepository{ - -} diff --git a/pdb-alignment-api/src/main/resources/application.properties b/pdb-alignment-api/src/main/resources/application.properties index f4fb92c..875bf03 100644 --- a/pdb-alignment-api/src/main/resources/application.properties +++ b/pdb-alignment-api/src/main/resources/application.properties @@ -5,7 +5,7 @@ # Set here configurations for the database connection # Connection url for the database "netgloo_blog" -spring.datasource.url = jdbc:mysql://localhost:3306/pdbtest?useSSL=false +spring.datasource.url = jdbc:mysql://localhost:3306/pdb?useSSL=false # Username and password spring.datasource.username = cbio diff --git a/pdb-alignment-pipeline/src/main/java/org/cbioportal/pdb_annotation/scripts/PdbScriptsPipelineMakeSQL.java b/pdb-alignment-pipeline/src/main/java/org/cbioportal/pdb_annotation/scripts/PdbScriptsPipelineMakeSQL.java index 0c0fcbe..4e4dcb3 100644 --- a/pdb-alignment-pipeline/src/main/java/org/cbioportal/pdb_annotation/scripts/PdbScriptsPipelineMakeSQL.java +++ b/pdb-alignment-pipeline/src/main/java/org/cbioportal/pdb_annotation/scripts/PdbScriptsPipelineMakeSQL.java @@ -18,7 +18,6 @@ import org.cbioportal.pdb_annotation.util.blast.Hsp; import org.cbioportal.pdb_annotation.util.blast.Iteration; import org.cbioportal.pdb_annotation.util.blast.IterationHits; -import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; /** diff --git a/pdb-alignment-pipeline/src/main/java/org/cbioportal/pdb_annotation/scripts/PdbScriptsPipelinePreprocessing.java b/pdb-alignment-pipeline/src/main/java/org/cbioportal/pdb_annotation/scripts/PdbScriptsPipelinePreprocessing.java index 3accaac..b5c9bf7 100644 --- a/pdb-alignment-pipeline/src/main/java/org/cbioportal/pdb_annotation/scripts/PdbScriptsPipelinePreprocessing.java +++ b/pdb-alignment-pipeline/src/main/java/org/cbioportal/pdb_annotation/scripts/PdbScriptsPipelinePreprocessing.java @@ -13,8 +13,6 @@ import org.biojava.nbio.core.sequence.io.FastaReaderHelper; import org.biojava.nbio.core.sequence.io.FastaWriterHelper; import org.cbioportal.pdb_annotation.util.ReadConfig; -import org.cbioportal.pdb_annotation.util.blast.BlastResult; -import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; /** diff --git a/pdb-alignment-pipeline/src/main/java/org/cbioportal/pdb_annotation/scripts/PdbScriptsPipelineRunCommand.java b/pdb-alignment-pipeline/src/main/java/org/cbioportal/pdb_annotation/scripts/PdbScriptsPipelineRunCommand.java index 47ac57a..6b14b90 100644 --- a/pdb-alignment-pipeline/src/main/java/org/cbioportal/pdb_annotation/scripts/PdbScriptsPipelineRunCommand.java +++ b/pdb-alignment-pipeline/src/main/java/org/cbioportal/pdb_annotation/scripts/PdbScriptsPipelineRunCommand.java @@ -12,12 +12,9 @@ import java.util.Calendar; import java.util.List; -import javax.annotation.PostConstruct; - import org.apache.commons.io.FileUtils; import org.cbioportal.pdb_annotation.util.ReadConfig; import org.cbioportal.pdb_annotation.util.blast.BlastDataBase; -import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.PropertySource; import org.springframework.stereotype.Component; @@ -50,8 +47,6 @@ public void setmakeblastdb(String makeblastdb) this.makeblastdb = makeblastdb; } */ - - /** * Construct function diff --git a/pdb-alignment-pipeline/src/main/java/org/cbioportal/pdb_annotation/scripts/PdbScriptsPipelineStarter.java b/pdb-alignment-pipeline/src/main/java/org/cbioportal/pdb_annotation/scripts/PdbScriptsPipelineStarter.java index 61c1f9f..fc5c964 100644 --- a/pdb-alignment-pipeline/src/main/java/org/cbioportal/pdb_annotation/scripts/PdbScriptsPipelineStarter.java +++ b/pdb-alignment-pipeline/src/main/java/org/cbioportal/pdb_annotation/scripts/PdbScriptsPipelineStarter.java @@ -2,54 +2,17 @@ import org.cbioportal.pdb_annotation.util.*; -import java.io.File; -import java.io.FileWriter; import java.text.DecimalFormat; import java.text.NumberFormat; -import java.util.ArrayList; import java.util.Calendar; -import java.util.Collection; -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map.Entry; import java.util.Timer; -import javax.xml.bind.JAXBContext; -import javax.xml.bind.Unmarshaller; - -import org.apache.commons.io.FileUtils; -import org.biojava.nbio.core.search.io.blast.BlastXMLParser; -import org.biojava.nbio.core.sequence.ProteinSequence; -import org.biojava.nbio.core.sequence.io.FastaReaderHelper; -import org.biojava.nbio.core.sequence.io.FastaWriterHelper; -import org.biojava.nbio.structure.Chain; -import org.biojava.nbio.structure.DBRef; -import org.biojava.nbio.structure.Structure; -import org.biojava.nbio.structure.StructureIO; -import org.cbioportal.pdb_annotation.util.*; -import org.cbioportal.pdb_annotation.util.blast.*; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.boot.context.web.SpringBootServletInitializer; -import org.springframework.context.ApplicationContext; -import org.springframework.context.annotation.AnnotationConfigApplicationContext; -import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; import org.springframework.scheduling.annotation.EnableScheduling; -import org.springframework.stereotype.Component; - -import springfox.documentation.builders.ApiInfoBuilder; -import springfox.documentation.builders.PathSelectors; -import springfox.documentation.service.ApiInfo; -import springfox.documentation.spi.DocumentationType; -import springfox.documentation.spring.web.plugins.Docket; -import springfox.documentation.swagger2.annotations.EnableSwagger2; /** * Preliminary script, includes several steps @@ -72,9 +35,11 @@ Step 2. Check the API 1. in pdb-annotation/pdb-alignment-api/: mvn spring-boot:run -2. open your web browser: -http://localhost:8080/StructureMappingQuery?ensemblid=ENSP00000483207.2 -http://localhost:8080/ProteinIdentifierRecognitionQuery?ensemblid=ENSP00000483207.2 +2. Swagger-UI: +http://localhost:8080/swagger-ui.html +3. Directly using API: +http://localhost:8080/pdb_annotation/StructureMappingQuery?ensemblId=ENSP00000483207.2 +http://localhost:8080/pdb_annotation/ProteinIdentifierRecognitionQuery?ensemblId=ENSP00000483207.2 Step 3. Weekly update 1. Using CRON to run command in pdb-annotation/pdb-alignment-pipeline/target/: java -jar -Xmx7000m pdb-0.1.0.jar update diff --git a/pdb-alignment-pipeline/src/main/java/org/cbioportal/pdb_annotation/scripts/ScheduleUpdateTask.java b/pdb-alignment-pipeline/src/main/java/org/cbioportal/pdb_annotation/scripts/ScheduleUpdateTask.java index 180b12b..b8bf39c 100644 --- a/pdb-alignment-pipeline/src/main/java/org/cbioportal/pdb_annotation/scripts/ScheduleUpdateTask.java +++ b/pdb-alignment-pipeline/src/main/java/org/cbioportal/pdb_annotation/scripts/ScheduleUpdateTask.java @@ -25,9 +25,7 @@ public void run() { PdbScriptsPipelineRunCommand app = new PdbScriptsPipelineRunCommand(); app.runUpdatePDB(); logger.info("[UPDATE] CronJob End ..."); - } catch (Exception ex) { - System.out.println("[UPDATE] Error running thread " + ex.getMessage()); } } diff --git a/pdb-alignment-pipeline/src/main/java/org/cbioportal/pdb_annotation/util/ReadConfig.java b/pdb-alignment-pipeline/src/main/java/org/cbioportal/pdb_annotation/util/ReadConfig.java index 5a73de1..f4f1e26 100644 --- a/pdb-alignment-pipeline/src/main/java/org/cbioportal/pdb_annotation/util/ReadConfig.java +++ b/pdb-alignment-pipeline/src/main/java/org/cbioportal/pdb_annotation/util/ReadConfig.java @@ -5,6 +5,13 @@ import org.apache.commons.io.FileUtils; +/** + * + * Read application.properties + * + * @author Juexin Wang + * + */ public class ReadConfig { public static String makeblastdb; @@ -57,9 +64,9 @@ public ReadConfig(){ List list =FileUtils.readLines(file); for(String str:list){ if(!str.startsWith("#") && str.length()!=0 && !str.isEmpty()){ - //System.out.println(str); String[] array =str.split("="); - hm.put(array[0], array[1]); + //hm.put(array[0], array[1]); + hm.put(array[0], str.substring(str.indexOf("=")+1)); } } if(hm.containsKey("makeblastdb")){ @@ -159,16 +166,16 @@ public ReadConfig(){ if(hm.containsKey("sql_ensemblSQL")){ this.sql_ensemblSQL= hm.get("sql_ensemblSQL").toString(); } - if(hm.containsKey("updateAdded")){ + if(hm.containsKey("update.added")){ this.updateAdded= hm.get("update.added").toString(); } - if(hm.containsKey("updateModified")){ + if(hm.containsKey("update.modified")){ this.updateModified= hm.get("update.modified").toString(); } - if(hm.containsKey("updateObsolete")){ + if(hm.containsKey("update.obsolete")){ this.updateObsolete= hm.get("update.obsolete").toString(); } - if(hm.containsKey("pdbFastaService")){ + if(hm.containsKey("pdb.fastaService")){ this.pdbFastaService= hm.get("pdb.fastaService").toString(); } diff --git a/pdb-alignment-pipeline/src/main/resources/application.properties b/pdb-alignment-pipeline/src/main/resources/application.properties index 211203f..31736c8 100644 --- a/pdb-alignment-pipeline/src/main/resources/application.properties +++ b/pdb-alignment-pipeline/src/main/resources/application.properties @@ -9,23 +9,23 @@ update.modified=ftp://ftp.wwpdb.org/pub/pdb/data/status/latest/modified.pdb update.obsolete=ftp://ftp.wwpdb.org/pub/pdb/data/status/latest/obsolete.pdb pdb.fastaService=http://www.rcsb.org/pdb/files/fasta.txt?structureIdList= -#pdb.wholeSource=ftp://ftp.rcsb.org/pub/pdb/derived_data/pdb_seqres.txt.gz -#ensembl.wholeSource=ftp://ftp.ensembl.org/pub/release-84/fasta/homo_sapiens/pep/Homo_sapiens.GRCh38.pep.all.fa.gz +pdb.wholeSource=ftp://ftp.rcsb.org/pub/pdb/derived_data/pdb_seqres.txt.gz +ensembl.wholeSource=ftp://ftp.ensembl.org/pub/release-84/fasta/homo_sapiens/pep/Homo_sapiens.GRCh38.pep.all.fa.gz #Test -pdb.wholeSource=http://cbio.mskcc.org/~sheridan/pdb_seqres_50000.txt -ensembl.wholeSource=http://cbio.mskcc.org/~sheridan/Homo_sapiens.GRCh38.pep.all_10000.fa +#pdb.wholeSource=http://cbio.mskcc.org/~sheridan/pdb_seqres_50000.txt +#ensembl.wholeSource=http://cbio.mskcc.org/~sheridan/Homo_sapiens.GRCh38.pep.all_10000.fa -#pdb_seqres_download_file=pdb_seqres.txt -#pdb_seqres_fasta_file=pdb_seqres.fasta -#ensembl_download_file=Homo_sapiens.GRCh38.pep.all.fa -#ensembl_fasta_file=Homo_sapiens.GRCh38.pep.all.fa +pdb_seqres_download_file=pdb_seqres.txt +pdb_seqres_fasta_file=pdb_seqres.fasta +ensembl_download_file=Homo_sapiens.GRCh38.pep.all.fa +ensembl_fasta_file=Homo_sapiens.GRCh38.pep.all.fa #Test -pdb_seqres_download_file=pdb_seqres_50000.txt -pdb_seqres_fasta_file=pdb_seqres_50000.fasta -ensembl_download_file=Homo_sapiens.GRCh38.pep.all_10000.fa -ensembl_fasta_file=Homo_sapiens.GRCh38.pep.all_10000.fa +#pdb_seqres_download_file=pdb_seqres_50000.txt +#pdb_seqres_fasta_file=pdb_seqres_50000.fasta +#ensembl_download_file=Homo_sapiens.GRCh38.pep.all_10000.fa +#ensembl_fasta_file=Homo_sapiens.GRCh38.pep.all_10000.fa update.updateTxt=update.txt update.updateFasta=update.fasta @@ -40,16 +40,16 @@ blast_para_threads=6 #Test #intervals to split the input files test -ensembl_input_interval=3000 +#ensembl_input_interval=3000 -#ensembl_input_interval=10000 +ensembl_input_interval=10000 sql_insert_output_interval=10000 # mysql mysql=mysql username=cbio password=cbio -db_schema=pdbtest +db_schema=pdb db_schema_script=pdb.sql #updateSetting