Search in sources :

Example 1 with Compound

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

the class CompoundSynonymsFieldSetMapper method mapFieldSet.

public Compound mapFieldSet(FieldSet fieldSet) throws BindException {
    String compoundId = fieldSet.readString(CPD_ID);
    String compoundName = fieldSet.readString(CPD_NAME);
    // find compound by xref (broad)
    Compound compound = compoundMap.get(compoundId);
    if (compound != null) {
        Synonym synonym = dashboardFactory.create(Synonym.class);
        synonym.setDisplayName(compoundName);
        compound.getSynonyms().add(synonym);
    }
    return compound;
}
Also used : Compound(gov.nih.nci.ctd2.dashboard.model.Compound) Synonym(gov.nih.nci.ctd2.dashboard.model.Synonym)

Example 2 with Compound

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

the class CompoundDataWriter method execute.

public RepeatStatus execute(StepContribution arg0, ChunkContext arg1) throws Exception {
    Collection<Compound> compounds = compoundMap.values();
    for (Compound compound : compounds) {
        String stableURL = new StableURL().createURLWithPrefix("compound", compound.getDisplayName());
        compound.setStableURL(stableURL);
    }
    dashboardDao.batchSave(compounds, batchSize);
    return RepeatStatus.FINISHED;
}
Also used : StableURL(gov.nih.nci.ctd2.dashboard.util.StableURL) Compound(gov.nih.nci.ctd2.dashboard.model.Compound)

Example 3 with Compound

use of gov.nih.nci.ctd2.dashboard.model.Compound 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 4 with Compound

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

the class CompoundsFieldSetMapper method mapFieldSet.

public Compound mapFieldSet(FieldSet fieldSet) throws BindException {
    String compoundId = fieldSet.readString(CPD_ID);
    String primaryName = fieldSet.readString(CPD_PRIMARY_NAME);
    String smiles = fieldSet.readString(SMILES);
    String structureFile = fieldSet.readString(STRUCTURE_FILE);
    String pubchemCid = fieldSet.readString(PUBCHEM_CID);
    String casNumber = fieldSet.readString(CAS_NUMBER);
    Compound compound = dashboardFactory.create(Compound.class);
    compound.setDisplayName(primaryName);
    compound.setSmilesNotation(smiles);
    // create synonym back to self
    Synonym synonym = dashboardFactory.create(Synonym.class);
    synonym.setDisplayName(primaryName);
    compound.getSynonyms().add(synonym);
    // create xref back to broad
    Xref compoundXref = dashboardFactory.create(Xref.class);
    compoundXref.setDatabaseId(compoundId);
    compoundXref.setDatabaseName(BROAD_COMPOUND_DATABASE);
    compound.getXrefs().add(compoundXref);
    // create xref to structure file
    Xref imageXref = dashboardFactory.create(Xref.class);
    imageXref.setDatabaseId(structureFile);
    imageXref.setDatabaseName(COMPOUND_IMAGE_DATABASE);
    compound.getXrefs().add(imageXref);
    // create xref to pubchem
    if (pubchemCid != null && !pubchemCid.isEmpty()) {
        Xref pubchemXref = dashboardFactory.create(Xref.class);
        pubchemXref.setDatabaseId(pubchemCid);
        pubchemXref.setDatabaseName(PUBCHEM_DATABASE);
        compound.getXrefs().add(pubchemXref);
    }
    // create xref to cas
    if (casNumber != null && !casNumber.isEmpty()) {
        Xref casXref = dashboardFactory.create(Xref.class);
        casXref.setDatabaseId(casNumber);
        casXref.setDatabaseName(CAS_DATABASE);
        compound.getXrefs().add(casXref);
    }
    // optimization - avoid persisting Compounds
    // - place in map and pass to compoundSynonymsStep
    compoundMap.put(compoundId, compound);
    return compound;
}
Also used : Xref(gov.nih.nci.ctd2.dashboard.model.Xref) Compound(gov.nih.nci.ctd2.dashboard.model.Compound) Synonym(gov.nih.nci.ctd2.dashboard.model.Synonym)

Example 5 with Compound

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

the class DashboardAdminMain method main.

@Transactional
public static void main(String[] args) {
    final CommandLineParser parser = new GnuParser();
    Options gnuOptions = new Options();
    gnuOptions.addOption("h", "help", false, "shows this help document and quits.").addOption("am", "animal-model-data", false, "imports animal model data.").addOption("cl", "cell-line-data", false, "imports cell line data.").addOption("cp", "compound-data", false, "imports compound data.").addOption("e", "eco-term", false, "import ECO terms.").addOption("g", "gene-data", false, "imports gene data.").addOption("p", "protein-data", false, "imports protein data.").addOption("r", "rank-subjects", false, "prioritize and rank the subjects according to the observation data.").addOption("sh", "shrna-data", false, "imports shrna data.").addOption("si", "sirna-data", false, "imports sirna data.").addOption("ts", "tissue-sample-data", false, "imports tissue sample data.").addOption("cv", "controlled-vocabulary", false, "imports the dashboard controlled vocabulary.").addOption("o", "observation-data", false, "imports dashboard observation data.").addOption("s", "sample-data", false, "imports sample data.").addOption("t", "taxonomy-data", false, "imports organism data.").addOption("i", "index", false, "creates lucene index.");
    // Here goes the parsing attempt
    try {
        CommandLine commandLine = parser.parse(gnuOptions, args);
        if (commandLine.getOptions().length == 0) {
            // Here goes help message about running admin
            throw new ParseException("Nothing to do!");
        }
        if (commandLine.hasOption("h")) {
            printHelpAndExit(gnuOptions, 0);
        }
        if (commandLine.hasOption("am")) {
            launchJob("animalModelImporterJob");
        }
        if (commandLine.hasOption("cl")) {
            launchJob("cellLineDataImporterJob");
        }
        if (commandLine.hasOption("cp")) {
            launchJob("compoundDataImporterJob");
        }
        if (commandLine.hasOption("g")) {
            launchJob("geneDataImporterJob");
        }
        if (commandLine.hasOption("p")) {
            launchJob("proteinDataImporterJob");
        }
        if (commandLine.hasOption("sh")) {
            launchJob("TRCshRNADataImporterJob");
        }
        if (commandLine.hasOption("si")) {
            launchJob("siRNADataImporterJob");
        }
        if (commandLine.hasOption("ts")) {
            launchJob("tissueSampleDataImporterJob");
        }
        if (commandLine.hasOption("cv")) {
            launchJob("controlledVocabularyImporterJob");
        }
        if (commandLine.hasOption("o")) {
            launchJob("observationDataImporterJob");
            String dataURL = (String) appContext.getBean("dataURL");
            APIDataBuilder b = (APIDataBuilder) appContext.getBean("apiDataBuilder");
            b.prepareData(dataURL);
        }
        if (commandLine.hasOption("s")) {
            log.info("Running sample importer...");
            // This is just for demonstration purposes
            SampleImporter sampleImporter = (SampleImporter) appContext.getBean("sampleImporter");
            sampleImporter.run();
        }
        if (commandLine.hasOption("t")) {
            launchJob("taxonomyDataImporterJob");
        }
        if (commandLine.hasOption("e")) {
            launchJob("ecotermDataImporterJob");
        }
        if (commandLine.hasOption("r")) {
            SubjectScorer subjectScorer = (SubjectScorer) appContext.getBean("subjectScorer");
            subjectScorer.scoreAllRoles();
            OverallSummary overallSummary = (OverallSummary) appContext.getBean("overallSummary");
            overallSummary.summarize();
        }
        if (commandLine.hasOption("i")) {
            DashboardDao dashboardDao = (DashboardDao) appContext.getBean("dashboardDao");
            dashboardDao.cleanIndex((Integer) appContext.getBean("indexBatchSize"));
        }
        log.info("All done.");
        System.exit(0);
    } catch (ParseException e) {
        System.err.println(e.getMessage());
        printHelpAndExit(gnuOptions, -1);
    }
}
Also used : Options(org.apache.commons.cli.Options) CommandLine(org.apache.commons.cli.CommandLine) SampleImporter(gov.nih.nci.ctd2.dashboard.importer.internal.SampleImporter) GnuParser(org.apache.commons.cli.GnuParser) APIDataBuilder(gov.nih.nci.ctd2.dashboard.util.APIDataBuilder) DashboardDao(gov.nih.nci.ctd2.dashboard.dao.DashboardDao) CommandLineParser(org.apache.commons.cli.CommandLineParser) ParseException(org.apache.commons.cli.ParseException) SubjectScorer(gov.nih.nci.ctd2.dashboard.util.SubjectScorer) OverallSummary(gov.nih.nci.ctd2.dashboard.util.OverallSummary) Transactional(org.springframework.transaction.annotation.Transactional)

Aggregations

Compound (gov.nih.nci.ctd2.dashboard.model.Compound)4 Synonym (gov.nih.nci.ctd2.dashboard.model.Synonym)2 Xref (gov.nih.nci.ctd2.dashboard.model.Xref)2 DashboardDao (gov.nih.nci.ctd2.dashboard.dao.DashboardDao)1 SampleImporter (gov.nih.nci.ctd2.dashboard.importer.internal.SampleImporter)1 AnimalModel (gov.nih.nci.ctd2.dashboard.model.AnimalModel)1 Annotation (gov.nih.nci.ctd2.dashboard.model.Annotation)1 CellSample (gov.nih.nci.ctd2.dashboard.model.CellSample)1 Gene (gov.nih.nci.ctd2.dashboard.model.Gene)1 ObservationTemplate (gov.nih.nci.ctd2.dashboard.model.ObservationTemplate)1 Organism (gov.nih.nci.ctd2.dashboard.model.Organism)1 Protein (gov.nih.nci.ctd2.dashboard.model.Protein)1 ShRna (gov.nih.nci.ctd2.dashboard.model.ShRna)1 Subject (gov.nih.nci.ctd2.dashboard.model.Subject)1 TissueSample (gov.nih.nci.ctd2.dashboard.model.TissueSample)1 Transcript (gov.nih.nci.ctd2.dashboard.model.Transcript)1 APIDataBuilder (gov.nih.nci.ctd2.dashboard.util.APIDataBuilder)1 OverallSummary (gov.nih.nci.ctd2.dashboard.util.OverallSummary)1 StableURL (gov.nih.nci.ctd2.dashboard.util.StableURL)1 SubjectScorer (gov.nih.nci.ctd2.dashboard.util.SubjectScorer)1