Search in sources :

Example 1 with TissueSampleImpl

use of gov.nih.nci.ctd2.dashboard.impl.TissueSampleImpl in project nci-ctd2-dashboard by CBIIT.

the class DashboardDaoImpl method ontologySearchOneTerm.

private List<SubjectResult> ontologySearchOneTerm(String oneTerm, final Set<Integer> observations) {
    long t1 = System.currentTimeMillis();
    List<Integer> list = ontologySearchDiseaseContext(oneTerm);
    List<SubjectResult> entities = new ArrayList<SubjectResult>();
    Session session = getSession();
    @SuppressWarnings("unchecked") org.hibernate.query.Query<TissueSample> query = session.createQuery("from TissueSampleImpl where code = :code");
    List<Integer> subjectIds = new ArrayList<Integer>();
    for (Integer i : list) {
        query.setParameter("code", i);
        TissueSample result = null;
        try {
            result = query.getSingleResult();
        } catch (NoResultException e) {
            log.info("Tissue sample not available for code " + i);
            continue;
        }
        int observationNumber = observationCountForTissueSample(i);
        int centerCount = centerCountForTissueSample(i);
        Set<String> roles = getRolesForSubjectId(result.getId());
        SubjectResult x = new SubjectResult(result, observationNumber, centerCount, 1, roles);
        entities.add(x);
        subjectIds.add(result.getId());
    }
    long t2 = System.currentTimeMillis();
    log.debug("disease context ontology search for '" + oneTerm + "' took " + (t2 - t1) + " milliseconds");
    log.debug("tissue sample results count: " + entities.size());
    if (observations != null) {
        List<Integer> observationIds = observationIdsForSubjectIds(subjectIds);
        observations.addAll(observationIds);
        log.debug("observations count: " + observations.size());
    }
    List<ECOTerm> ecoterms = findECOTerms(oneTerm);
    List<Integer> eco_list = ontologySearchExperimentalEvidence(ecoterms);
    int eco_list_size = eco_list.size();
    log.debug("eco list size:" + eco_list_size);
    if (eco_list_size > 0) {
        @SuppressWarnings("unchecked") org.hibernate.query.Query<ECOTerm> query2 = session.createQuery("FROM ECOTermImpl WHERE code in (:codes)");
        List<String> codes = eco_list.stream().map(x -> String.format("ECO:%07d", x)).collect(Collectors.toList());
        query2.setParameterList("codes", codes);
        List<ECOTerm> list2 = query2.list();
        for (ECOTerm x : list2) {
            int observationNumber = observationCountForEcoCode(x.getCode());
            int centerCount = centerCountForEcoCode(x.getCode());
            // no matchNumber, no roles
            SubjectResult subjectResult = new SubjectResult(x, observationNumber, centerCount, null, null);
            entities.add(subjectResult);
            if (observations != null) {
                List<Integer> observationIdsForOneECOTerm = observationIdsForEcoCode(x.getCode());
                observations.addAll(observationIdsForOneECOTerm);
            }
        }
    }
    log.debug("tissue sample results count after getting ECO term: " + entities.size());
    if (observations != null) {
        log.debug("observations count after getting ECO term: " + observations.size());
    }
    if (observations != null) {
        searchSubjectsToUpdateObservations(oneTerm, observations);
        log.debug("observationIds count after getting other subjects: " + observations.size());
    }
    session.close();
    return entities;
}
Also used : Query(org.apache.lucene.search.Query) ObservedEvidenceRole(gov.nih.nci.ctd2.dashboard.model.ObservedEvidenceRole) Transcript(gov.nih.nci.ctd2.dashboard.model.Transcript) Arrays(java.util.Arrays) DashboardDao(gov.nih.nci.ctd2.dashboard.dao.DashboardDao) ObservedSubjectRole(gov.nih.nci.ctd2.dashboard.model.ObservedSubjectRole) Cacheable(org.springframework.cache.annotation.Cacheable) NoResultException(javax.persistence.NoResultException) XRefItem(gov.nih.nci.ctd2.dashboard.api.XRefItem) KeywordAnalyzer(org.apache.lucene.analysis.core.KeywordAnalyzer) SubmissionCenter(gov.nih.nci.ctd2.dashboard.model.SubmissionCenter) Matcher(java.util.regex.Matcher) MultiFieldQueryParser(org.apache.lucene.queryparser.classic.MultiFieldQueryParser) Map(java.util.Map) DashboardEntity(gov.nih.nci.ctd2.dashboard.model.DashboardEntity) CriteriaBuilder(javax.persistence.criteria.CriteriaBuilder) BigInteger(java.math.BigInteger) TissueSample(gov.nih.nci.ctd2.dashboard.model.TissueSample) Organism(gov.nih.nci.ctd2.dashboard.model.Organism) CriteriaQuery(javax.persistence.criteria.CriteriaQuery) ScrollableResults(org.hibernate.ScrollableResults) SearchResults(gov.nih.nci.ctd2.dashboard.util.SearchResults) SubjectResult(gov.nih.nci.ctd2.dashboard.util.SubjectResult) Collection(java.util.Collection) SessionFactory(org.hibernate.SessionFactory) Set(java.util.Set) FullTextQuery(org.hibernate.search.FullTextQuery) CellSample(gov.nih.nci.ctd2.dashboard.model.CellSample) Compound(gov.nih.nci.ctd2.dashboard.model.Compound) ECOTerm(gov.nih.nci.ctd2.dashboard.model.ECOTerm) SubjectWithOrganism(gov.nih.nci.ctd2.dashboard.model.SubjectWithOrganism) Collectors(java.util.stream.Collectors) TissueSampleImpl(gov.nih.nci.ctd2.dashboard.impl.TissueSampleImpl) ObservationItem(gov.nih.nci.ctd2.dashboard.api.ObservationItem) List(java.util.List) Xref(gov.nih.nci.ctd2.dashboard.model.Xref) EcoBrowse(gov.nih.nci.ctd2.dashboard.util.EcoBrowse) CompoundImpl(gov.nih.nci.ctd2.dashboard.impl.CompoundImpl) ScrollMode(org.hibernate.ScrollMode) ObservedSubject(gov.nih.nci.ctd2.dashboard.model.ObservedSubject) DashboardEntityImpl(gov.nih.nci.ctd2.dashboard.impl.DashboardEntityImpl) Gene(gov.nih.nci.ctd2.dashboard.model.Gene) Pattern(java.util.regex.Pattern) LogFactory(org.apache.commons.logging.LogFactory) ShRna(gov.nih.nci.ctd2.dashboard.model.ShRna) Observation(gov.nih.nci.ctd2.dashboard.model.Observation) ParseException(org.apache.lucene.queryparser.classic.ParseException) FullTextSession(org.hibernate.search.FullTextSession) SubmissionImpl(gov.nih.nci.ctd2.dashboard.impl.SubmissionImpl) Subject(gov.nih.nci.ctd2.dashboard.model.Subject) Submission(gov.nih.nci.ctd2.dashboard.model.Submission) Session(org.hibernate.Session) HashMap(java.util.HashMap) EvidenceItem(gov.nih.nci.ctd2.dashboard.api.EvidenceItem) Evidence(gov.nih.nci.ctd2.dashboard.model.Evidence) TypedQuery(javax.persistence.TypedQuery) ObservationTemplate(gov.nih.nci.ctd2.dashboard.model.ObservationTemplate) SubjectWithSummaries(gov.nih.nci.ctd2.dashboard.util.SubjectWithSummaries) ArrayList(java.util.ArrayList) HashSet(java.util.HashSet) Search(org.hibernate.search.Search) Summary(gov.nih.nci.ctd2.dashboard.util.Summary) SubjectImpl(gov.nih.nci.ctd2.dashboard.impl.SubjectImpl) AnimalModel(gov.nih.nci.ctd2.dashboard.model.AnimalModel) ObservedEvidence(gov.nih.nci.ctd2.dashboard.model.ObservedEvidence) WordCloudEntry(gov.nih.nci.ctd2.dashboard.util.WordCloudEntry) SubjectWithOrganismImpl(gov.nih.nci.ctd2.dashboard.impl.SubjectWithOrganismImpl) ObservationURIsAndTiers(gov.nih.nci.ctd2.dashboard.util.ObservationURIsAndTiers) FlushMode(org.hibernate.FlushMode) SubjectItem(gov.nih.nci.ctd2.dashboard.api.SubjectItem) Hierarchy(gov.nih.nci.ctd2.dashboard.util.Hierarchy) Annotation(gov.nih.nci.ctd2.dashboard.model.Annotation) ObservationTemplateImpl(gov.nih.nci.ctd2.dashboard.impl.ObservationTemplateImpl) Synonym(gov.nih.nci.ctd2.dashboard.model.Synonym) Protein(gov.nih.nci.ctd2.dashboard.model.Protein) Log(org.apache.commons.logging.Log) DashboardFactory(gov.nih.nci.ctd2.dashboard.model.DashboardFactory) ArrayList(java.util.ArrayList) NoResultException(javax.persistence.NoResultException) BigInteger(java.math.BigInteger) TissueSample(gov.nih.nci.ctd2.dashboard.model.TissueSample) SubjectResult(gov.nih.nci.ctd2.dashboard.util.SubjectResult) ECOTerm(gov.nih.nci.ctd2.dashboard.model.ECOTerm) FullTextSession(org.hibernate.search.FullTextSession) Session(org.hibernate.Session)

Aggregations

EvidenceItem (gov.nih.nci.ctd2.dashboard.api.EvidenceItem)1 ObservationItem (gov.nih.nci.ctd2.dashboard.api.ObservationItem)1 SubjectItem (gov.nih.nci.ctd2.dashboard.api.SubjectItem)1 XRefItem (gov.nih.nci.ctd2.dashboard.api.XRefItem)1 DashboardDao (gov.nih.nci.ctd2.dashboard.dao.DashboardDao)1 CompoundImpl (gov.nih.nci.ctd2.dashboard.impl.CompoundImpl)1 DashboardEntityImpl (gov.nih.nci.ctd2.dashboard.impl.DashboardEntityImpl)1 ObservationTemplateImpl (gov.nih.nci.ctd2.dashboard.impl.ObservationTemplateImpl)1 SubjectImpl (gov.nih.nci.ctd2.dashboard.impl.SubjectImpl)1 SubjectWithOrganismImpl (gov.nih.nci.ctd2.dashboard.impl.SubjectWithOrganismImpl)1 SubmissionImpl (gov.nih.nci.ctd2.dashboard.impl.SubmissionImpl)1 TissueSampleImpl (gov.nih.nci.ctd2.dashboard.impl.TissueSampleImpl)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 Compound (gov.nih.nci.ctd2.dashboard.model.Compound)1 DashboardEntity (gov.nih.nci.ctd2.dashboard.model.DashboardEntity)1 DashboardFactory (gov.nih.nci.ctd2.dashboard.model.DashboardFactory)1 ECOTerm (gov.nih.nci.ctd2.dashboard.model.ECOTerm)1 Evidence (gov.nih.nci.ctd2.dashboard.model.Evidence)1