Search in sources :

Example 11 with Gene

use of gov.nih.nci.ctd2.dashboard.model.Gene in project nci-ctd2-dashboard by CBIIT.

the class JSONController method getGeneInJson.

/*
     * gene needs a separate method because it asks for different number of
     * parameters
     */
@Transactional
@RequestMapping(value = "{type}/{species}/{symbol}", method = { RequestMethod.GET, RequestMethod.POST }, headers = "Accept=application/json")
public ResponseEntity<String> getGeneInJson(@PathVariable String type, @PathVariable String species, @PathVariable String symbol) {
    HttpHeaders headers = new HttpHeaders();
    headers.add("Content-Type", "application/json; charset=utf-8");
    if (!type.equalsIgnoreCase("gene")) {
        log.info("query with wrong type");
        return new ResponseEntity<String>(headers, HttpStatus.NOT_FOUND);
    }
    List<Gene> genes = dashboardDao.findGenesBySymbol(symbol);
    Gene gene = null;
    for (Gene g : genes) {
        if (g.getOrganism().getDisplayName().toLowerCase().startsWith(species)) {
            gene = g;
            break;
        }
    }
    if (gene == null) {
        return new ResponseEntity<String>(headers, HttpStatus.NOT_FOUND);
    } else {
        JSONSerializer jsonSerializer = new JSONSerializer().transform(new ImplTransformer(), Class.class).transform(new DateTransformer(), Date.class);
        return new ResponseEntity<String>(jsonSerializer.deepSerialize(gene), headers, HttpStatus.OK);
    }
}
Also used : HttpHeaders(org.springframework.http.HttpHeaders) ResponseEntity(org.springframework.http.ResponseEntity) ImplTransformer(gov.nih.nci.ctd2.dashboard.util.ImplTransformer) DateTransformer(gov.nih.nci.ctd2.dashboard.util.DateTransformer) JSONSerializer(flexjson.JSONSerializer) Transactional(org.springframework.transaction.annotation.Transactional) RequestMapping(org.springframework.web.bind.annotation.RequestMapping)

Example 12 with Gene

use of gov.nih.nci.ctd2.dashboard.model.Gene in project nci-ctd2-dashboard by CBIIT.

the class CnkbController method downloadCnkbResult.

@Transactional
@RequestMapping(value = "download", method = { RequestMethod.POST })
public void downloadCnkbResult(@RequestParam("interactome") String interactome, @RequestParam("version") String version, @RequestParam("selectedGenes") String selectedGenes, @RequestParam("interactionLimit") int interactionLimit, @RequestParam("throttle") String throttle, HttpServletResponse response) {
    CNKB interactionsConnection = CNKB.getInstance(getCnkbDataURL());
    CnkbObject cnkbObject = null;
    String filename = "cnkbResult";
    response.setContentType("application/octet-stream");
    response.addHeader("Content-Disposition", "attachment; filename=\"" + filename + ".sif\"");
    response.addHeader("Content-Transfer-Encoding", "binary");
    try {
        cnkbObject = new QueryResult();
        List<String> interactionTypes = interactionsConnection.getInteractionTypesByInteractomeVersion(interactome, version);
        ((QueryResult) cnkbObject).setInteractionTypeList(interactionTypes);
        List<InteractionDetail> interactionDetails = null;
        List<String> selectedGenesList = convertStringToList(selectedGenes);
        OutputStream outputStream = response.getOutputStream();
        if (selectedGenesList.size() != 0) {
            Short confidenceType = null;
            HashMap<String, String> map = interactionsConnection.getInteractionTypeMap();
            for (String gene : selectedGenesList) {
                interactionDetails = interactionsConnection.getInteractionsByGeneSymbol(gene.trim(), interactome, version);
                if (interactionDetails == null || interactionDetails.size() == 0)
                    continue;
                if (confidenceType == null)
                    confidenceType = interactionDetails.get(0).getConfidenceTypes().get(0);
                for (int i = 0; i < interactionTypes.size(); i++) {
                    List<InteractionDetail> interactionDetailList = getSelectedInteractions(interactionDetails, interactionTypes.get(i), confidenceType);
                    if (interactionDetailList.size() == 0)
                        continue;
                    StringBuffer buf = new StringBuffer(gene + " " + map.get(interactionTypes.get(i)));
                    for (InteractionDetail interactionDetail : interactionDetailList) {
                        List<InteractionParticipant> pList = interactionDetail.getParticipantList();
                        for (int j = 0; j < pList.size(); j++) {
                            if (!pList.get(j).getGeneName().equals(gene))
                                buf.append(" " + pList.get(j).getGeneName());
                        }
                    }
                    buf.append("\n");
                    outputStream.write(buf.toString().getBytes());
                }
            }
        }
        outputStream.close();
    } catch (UnAuthenticatedException uae) {
        uae.printStackTrace();
    } catch (ConnectException e1) {
        e1.printStackTrace();
    } catch (SocketTimeoutException e1) {
        e1.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}
Also used : CnkbObject(gov.nih.nci.ctd2.dashboard.util.cnkb.CnkbObject) OutputStream(java.io.OutputStream) IOException(java.io.IOException) UnAuthenticatedException(gov.nih.nci.ctd2.dashboard.util.cnkb.UnAuthenticatedException) QueryResult(gov.nih.nci.ctd2.dashboard.util.cnkb.QueryResult) SocketTimeoutException(java.net.SocketTimeoutException) InteractionParticipant(gov.nih.nci.ctd2.dashboard.util.cnkb.InteractionParticipant) InteractionDetail(gov.nih.nci.ctd2.dashboard.util.cnkb.InteractionDetail) CNKB(gov.nih.nci.ctd2.dashboard.util.cnkb.CNKB) ConnectException(java.net.ConnectException) Transactional(org.springframework.transaction.annotation.Transactional) RequestMapping(org.springframework.web.bind.annotation.RequestMapping)

Example 13 with Gene

use of gov.nih.nci.ctd2.dashboard.model.Gene in project nci-ctd2-dashboard by CBIIT.

the class AdminTest method importerTest.

@Test
public void importerTest() throws Exception {
    // import taxonomy data
    jobExecution = executeJob("taxonomyDataImporterJob");
    assertEquals("COMPLETED", jobExecution.getExitStatus().getExitCode());
    assertEquals("Organism count", 2, dashboardDao.countEntities(Organism.class).intValue());
    List<Organism> organisms = dashboardDao.findOrganismByTaxonomyId("9606");
    assertEquals(1, organisms.size());
    assertEquals("Homo sapiens", organisms.iterator().next().getDisplayName());
    // animal model
    jobExecution = executeJob("animalModelImporterJob");
    assertEquals("COMPLETED", jobExecution.getExitStatus().getExitCode());
    assertEquals("AnimalModel count", 1, dashboardDao.countEntities(AnimalModel.class).intValue());
    List<AnimalModel> models = dashboardDao.findAnimalModelByName("[FVB/N x SPRET/Ei] x FVB/N");
    assertEquals("AnimalModel found by name", 1, models.size());
    assertEquals("10090", models.iterator().next().getOrganism().getTaxonomyId());
    // import some cell line data
    jobExecution = executeJob("cellLineDataImporterJob");
    assertEquals("COMPLETED", jobExecution.getExitStatus().getExitCode());
    assertEquals("CellSample count", 3, dashboardDao.countEntities(CellSample.class).intValue());
    List<CellSample> cellSamples = dashboardDao.findCellSampleByAnnoSource("COSMIC (Sanger)");
    assertEquals("CellSample found by source", 3, cellSamples.size());
    cellSamples = dashboardDao.findCellSampleByAnnoType("primary_site");
    assertEquals(3, cellSamples.size());
    cellSamples = dashboardDao.findCellSampleByAnnoName("acute_lymphoblastic_B_cell_leukaemia");
    assertEquals("CellSample size", 1, cellSamples.size());
    CellSample cellSample = (CellSample) cellSamples.iterator().next();
    assertEquals(8, cellSample.getAnnotations().size());
    assertEquals("CellSamples synonyms size", 2, cellSample.getSynonyms().size());
    Annotation annotation = cellSample.getAnnotations().iterator().next();
    cellSamples = dashboardDao.findCellSampleByAnnotation(annotation);
    assertEquals(1, cellSamples.size());
    assertEquals(cellSample, cellSamples.iterator().next());
    List<Subject> cellSampleSubjects = dashboardDao.findSubjectsBySynonym("5637", true);
    assertEquals(1, cellSampleSubjects.size());
    cellSample = (CellSample) cellSampleSubjects.iterator().next();
    assertEquals("M", cellSample.getGender());
    // import some compound data
    jobExecution = executeJob("compoundDataImporterJob");
    assertEquals("COMPLETED", jobExecution.getExitStatus().getExitCode());
    assertEquals("Compound count", 10, dashboardDao.countEntities(Compound.class).intValue());
    List<Subject> compoundSubjects = dashboardDao.findSubjectsByXref(CompoundsFieldSetMapper.BROAD_COMPOUND_DATABASE, "411739");
    assertEquals(1, compoundSubjects.size());
    List<Compound> compounds = dashboardDao.findCompoundsBySmilesNotation("CCCCCCCCC1OC(=O)C(=C)C1C(O)=O");
    assertEquals(1, compounds.size());
    assertEquals(3, compounds.iterator().next().getSynonyms().size());
    List<Subject> compoundSubjectsWithImage = dashboardDao.findSubjectsByXref(CompoundsFieldSetMapper.COMPOUND_IMAGE_DATABASE, "BRD-A01145011.png");
    assertEquals(1, compoundSubjectsWithImage.size());
    assertEquals("zebularine", compoundSubjectsWithImage.iterator().next().getDisplayName());
    // import some gene data
    jobExecution = executeJob("geneDataImporterJob");
    assertEquals("COMPLETED", jobExecution.getExitStatus().getExitCode());
    assertEquals("Gene count", 19, dashboardDao.countEntities(Gene.class).intValue());
    List<Gene> genes = dashboardDao.findGenesByEntrezId("7529");
    assertEquals(1, genes.size());
    assertEquals("synonym number for 7529", 12, genes.iterator().next().getSynonyms().size());
    List<Subject> geneSubjects = dashboardDao.findSubjectsBySynonym("RB1", true);
    assertEquals(1, geneSubjects.size());
    // import some protein data
    jobExecution = executeJob("proteinDataImporterJob");
    assertEquals("COMPLETED", jobExecution.getExitStatus().getExitCode());
    assertEquals("Protein count", 15, dashboardDao.countEntities(Protein.class).intValue());
    List<Protein> proteins = dashboardDao.findProteinsByUniprotId("P31946");
    assertEquals(1, proteins.size());
    // some transcripts get created along with proteins
    assertEquals(35, dashboardDao.countEntities(Transcript.class).intValue());
    List<Transcript> transcripts = dashboardDao.findTranscriptsByRefseqId("NM_003404");
    assertEquals(1, transcripts.size());
    // import some shrna
    jobExecution = executeJob("TRCshRNADataImporterJob");
    assertEquals("COMPLETED", jobExecution.getExitStatus().getExitCode());
    assertEquals("ShRna count", 1, dashboardDao.countEntities(ShRna.class).intValue());
    List<Subject> shRNASubjects = dashboardDao.findSubjectsByXref("BROAD_SHRNA", "TRCN0000000001");
    assertEquals(1, shRNASubjects.size());
    ShRna shRNA = (ShRna) shRNASubjects.get(0);
    assertEquals("CCCTGCCAAACAAGCTAATAT", shRNA.getDisplayName());
    assertEquals("CCCTGCCAAACAAGCTAATAT", shRNA.getTargetSequence());
    // import some tissue sample data
    jobExecution = executeJob("tissueSampleDataImporterJob");
    assertEquals("COMPLETED", jobExecution.getExitStatus().getExitCode());
    assertEquals("TissueSample count", 2, dashboardDao.countEntities(TissueSample.class).intValue());
    List<TissueSample> tissueSamples = dashboardDao.findTissueSampleByName("neoplasm by morphology");
    assertEquals(1, tissueSamples.size());
    TissueSample tissueSample = tissueSamples.get(0);
    assertEquals(1, tissueSample.getSynonyms().size());
    assertEquals("Xrefs size", 2, tissueSample.getXrefs().size());
    // check tissue xref import
    tissueSamples = dashboardDao.findTissueSampleByName("neoplasm");
    assertEquals(1, tissueSamples.size());
    String doid = "not found";
    for (Xref xref : tissueSamples.get(0).getXrefs()) {
        if ("DISEASE ONTOLOGY".equals(xref.getDatabaseName())) {
            doid = xref.getDatabaseId();
        }
    }
    assertEquals("DOID:14566", doid);
    tissueSamples = dashboardDao.findTissueSampleByName("neoplasm by morphology");
    assertEquals(1, tissueSamples.size());
    doid = "not found";
    for (Xref xref : tissueSamples.get(0).getXrefs()) {
        if ("DISEASE ONTOLOGY".equals(xref.getDatabaseName())) {
            doid = xref.getDatabaseId();
        }
    }
    assertEquals("not found", doid);
    // import controlled vocabulary
    jobExecution = executeJob("controlledVocabularyImporterJob");
    assertEquals("COMPLETED", jobExecution.getExitStatus().getExitCode());
    // we get some subject/observed subject roles
    assertEquals("SubjectRole count", 18, dashboardDao.countEntities(SubjectRole.class).intValue());
    assertEquals("ObservedSubjectRole count", 75, dashboardDao.countEntities(ObservedSubjectRole.class).intValue());
    assertTrue("findObservedSubjectRole", dashboardDao.findObservedSubjectRole("broad_cpd_sens_lineage_enrich", "compound_name") != null);
    // we get some evidence/observed evidence roles
    assertEquals("countEntities EvidenceRole", 9, dashboardDao.countEntities(EvidenceRole.class).intValue());
    assertEquals("countEntities ObservedEvidenceRole", 186, dashboardDao.countEntities(ObservedEvidenceRole.class).intValue());
    assertTrue(dashboardDao.findObservedEvidenceRole("broad_cpd_sens_lineage_enrich", "cell_line_subset") != null);
    // we get observation template data
    assertEquals("countEntities ObservationTemplate", 25, dashboardDao.countEntities(ObservationTemplate.class).intValue());
    ObservationTemplate observationTemplate = dashboardDao.findObservationTemplateByName("broad_cpd_sens_lineage_enrich");
    assertNotNull(observationTemplate);
    assertFalse(observationTemplate.getIsSubmissionStory());
    assertEquals(0, observationTemplate.getSubmissionStoryRank().intValue());
    observationTemplate = dashboardDao.findObservationTemplateByName("broad_beta-catenin_navitoclax");
    assertNotNull(observationTemplate);
    assertFalse(observationTemplate.getIsSubmissionStory());
    assertEquals(0, observationTemplate.getSubmissionStoryRank().intValue());
    // check compound xref import
    compounds = dashboardDao.findCompoundsByName("navitoclax");
    assertEquals(1, compounds.size());
    String drugBankId = "not found";
    for (Xref xref : compounds.get(0).getXrefs()) {
        if ("DRUG BANK".equals(xref.getDatabaseName())) {
            drugBankId = xref.getDatabaseId();
        }
    }
    assertEquals("DB12340", drugBankId);
    compoundSubjects = dashboardDao.findSubjectsByXref("DRUG BANK", "DB12025");
    assertEquals(1, compoundSubjects.size());
}
Also used : Transcript(gov.nih.nci.ctd2.dashboard.model.Transcript) Organism(gov.nih.nci.ctd2.dashboard.model.Organism) AnimalModel(gov.nih.nci.ctd2.dashboard.model.AnimalModel) CellSample(gov.nih.nci.ctd2.dashboard.model.CellSample) Compound(gov.nih.nci.ctd2.dashboard.model.Compound) Annotation(gov.nih.nci.ctd2.dashboard.model.Annotation) Subject(gov.nih.nci.ctd2.dashboard.model.Subject) Protein(gov.nih.nci.ctd2.dashboard.model.Protein) TissueSample(gov.nih.nci.ctd2.dashboard.model.TissueSample) ShRna(gov.nih.nci.ctd2.dashboard.model.ShRna) Xref(gov.nih.nci.ctd2.dashboard.model.Xref) Gene(gov.nih.nci.ctd2.dashboard.model.Gene) ObservationTemplate(gov.nih.nci.ctd2.dashboard.model.ObservationTemplate) Test(org.junit.Test)

Example 14 with Gene

use of gov.nih.nci.ctd2.dashboard.model.Gene in project nci-ctd2-dashboard by CBIIT.

the class UniProtDataReader method addTranscripts.

private void addTranscripts(Organism organism) {
    if (!refseqIds.isEmpty()) {
        Gene gene = findGene();
        for (String refseqId : refseqIds) {
            Transcript transcript = transcriptsCache.get(refseqId);
            if (transcript == null) {
                transcript = dashboardFactory.create(Transcript.class);
                transcript.setRefseqId(refseqId);
                if (gene != null)
                    transcript.setGene(gene);
                if (organism != null)
                    transcript.setOrganism(organism);
                transcriptsToReturn.add(transcript);
                transcriptsCache.put(refseqId, transcript);
            }
            protein.getTranscripts().add(transcript);
        }
    }
}
Also used : Transcript(gov.nih.nci.ctd2.dashboard.model.Transcript) Gene(gov.nih.nci.ctd2.dashboard.model.Gene)

Example 15 with Gene

use of gov.nih.nci.ctd2.dashboard.model.Gene in project nci-ctd2-dashboard by CBIIT.

the class SampleImporter method run.

@Override
public void run() {
    DashboardFactory dashboardFactory = getDashboardFactory();
    DashboardDao dashboardDao = getDashboardDao();
    Synonym synonym = dashboardFactory.create(Synonym.class);
    synonym.setDisplayName("S1");
    Synonym synonym2 = dashboardFactory.create(Synonym.class);
    synonym.setDisplayName("S2");
    Synonym synonym3 = dashboardFactory.create(Synonym.class);
    synonym3.setDisplayName("S3");
    // Save with id
    Gene gene = dashboardFactory.create(Gene.class);
    gene.setDisplayName("G1");
    gene.setEntrezGeneId("E1");
    gene.getSynonyms().add(synonym);
    gene.getSynonyms().add(synonym2);
    dashboardDao.save(gene);
    // save without id
    Gene gene2 = dashboardFactory.create(Gene.class);
    gene2.setEntrezGeneId("E2");
    gene.setDisplayName("G2");
    dashboardDao.save(gene2);
    Transcript transcript = dashboardFactory.create(Transcript.class);
    transcript.setGene(gene2);
    transcript.setRefseqId("NM_21431");
    gene.setDisplayName("T1");
    dashboardDao.save(transcript);
    Protein protein = dashboardFactory.create(Protein.class);
    protein.getTranscripts().add(transcript);
    protein.setUniprotId("1000");
    protein.setDisplayName("P1");
    dashboardDao.save(protein);
    AnimalModel animalModel = dashboardFactory.create(AnimalModel.class);
    animalModel.getSynonyms().add(synonym3);
    animalModel.setDisplayName("MM1");
    dashboardDao.save(animalModel);
    UrlEvidence urlEvidence = dashboardFactory.create(UrlEvidence.class);
    urlEvidence.setUrl("http://ctd2.nci.nih.gov/");
    LabelEvidence labelEvidence = dashboardFactory.create(LabelEvidence.class);
    labelEvidence.setDisplayName("L1");
    log.info("Imported " + dashboardDao.findEntities(DashboardEntity.class).size() + " entities.");
}
Also used : DashboardDao(gov.nih.nci.ctd2.dashboard.dao.DashboardDao)

Aggregations

Gene (gov.nih.nci.ctd2.dashboard.model.Gene)9 Transactional (org.springframework.transaction.annotation.Transactional)7 RequestMapping (org.springframework.web.bind.annotation.RequestMapping)6 JSONSerializer (flexjson.JSONSerializer)5 HttpHeaders (org.springframework.http.HttpHeaders)5 ResponseEntity (org.springframework.http.ResponseEntity)5 ArrayList (java.util.ArrayList)4 Protein (gov.nih.nci.ctd2.dashboard.model.Protein)3 Transcript (gov.nih.nci.ctd2.dashboard.model.Transcript)3 Xref (gov.nih.nci.ctd2.dashboard.model.Xref)3 CNKB (gov.nih.nci.ctd2.dashboard.util.cnkb.CNKB)3 InteractionDetail (gov.nih.nci.ctd2.dashboard.util.cnkb.InteractionDetail)3 UnAuthenticatedException (gov.nih.nci.ctd2.dashboard.util.cnkb.UnAuthenticatedException)3 IOException (java.io.IOException)3 ConnectException (java.net.ConnectException)3 SocketTimeoutException (java.net.SocketTimeoutException)3 JSONDeserializer (flexjson.JSONDeserializer)2 DashboardDao (gov.nih.nci.ctd2.dashboard.dao.DashboardDao)2 Organism (gov.nih.nci.ctd2.dashboard.model.Organism)2 Subject (gov.nih.nci.ctd2.dashboard.model.Subject)2