Example #1
0
 def get_job_ids(self, annotation):
     job_ids = m_models.AnalysisJobGoTerm.objects \
         .filter(
             M_Q(go_slim__go_term=annotation) |
             M_Q(go_terms__go_term=annotation)
         ) \
         .distinct('job_id')
     return job_ids
Example #2
0
 def get_queryset(self):
     lineage = urllib.parse.unquote(
         self.kwargs.get('lineage', None).strip())
     organism = m_models.Organism.objects \
         .filter(lineage=lineage) \
         .only('name').distinct('name')
     if len(organism) == 0:
         raise Http404(("Attribute error '%s'." % self.lookup_field))
     queryset = m_models.Organism.objects \
         .filter(M_Q(ancestors__in=organism) | M_Q(name__in=organism))
     return queryset
Example #3
0
    def get_queryset(self):
        lineage = urllib.parse.unquote(
            self.kwargs.get(self.lookup_field, None).strip())
        organism = m_models.Organism.objects.filter(lineage=lineage) \
            .only('id')

        if len(organism) == 0:
            raise NotFound("Lineage not found. Lineage: " + lineage)

        job_ids = m_models.AnalysisJobTaxonomy.objects \
            .filter(
                M_Q(taxonomy__organism__in=organism) |
                M_Q(taxonomy_lsu__organism__in=organism) |
                M_Q(taxonomy_ssu__organism__in=organism)
            ).distinct('job_id')

        return emg_models.AnalysisJob.objects \
            .filter(job_id__in=job_ids) \
            .available(self.request)
Example #4
0
    def get_queryset(self):  # noqa C901
        """Filter the analysis job contigs
        """
        obj = self.get_object()

        queryset = m_models.AnalysisJobContig.objects
        request = self.request

        query_filter = M_Q()

        # TODO: simplify!
        filter_cog = request.GET.get('cog', '').upper()
        if filter_cog:
            query_filter |= M_Q(cogs__cog=filter_cog)

        filter_kegg = request.GET.get('kegg', '').upper()
        if filter_kegg:
            query_filter |= M_Q(keggs__ko=filter_kegg)

        filter_go = request.GET.get('go', '').upper()
        if filter_go:
            query_filter |= M_Q(gos__go_term=filter_go)

        filter_interpro = request.GET.get('interpro', '').upper()
        if filter_interpro:
            query_filter |= M_Q(interpros__interpro_identifier=filter_interpro)

        filter_pfam = request.GET.get('pfam', '').upper()
        if filter_pfam:
            query_filter |= M_Q(pfams__pfam_entry=filter_pfam)

        filter_antismash = request.GET.get('antismash', '').lower()
        if filter_antismash:
            query_filter |= M_Q(as_geneclusters__gene_cluster=filter_antismash)

        if 'facet[]' in request.GET:
            facets = request.GET.getlist('facet[]')
            # TODO: try to simplify this
            facet_qs = M_Q()
            if len(facets):
                for facet in [
                        f for f in facets
                        if getattr(m_models.AnalysisJobContig, 'has_' +
                                   f, False)
                ]:
                    facet_qs |= M_Q(**{'has_' + facet: True})
            else:
                # contigs with no annotations
                for f in m_models.AnalysisJobContig._fields:
                    if f.startswith('has_'):
                        facet_qs &= M_Q(**{f: False})
            query_filter &= (facet_qs)

        len_filter = M_Q()
        filter_gt = request.GET.get('gt', None)
        filter_lt = request.GET.get('lt', None)

        if filter_gt:
            len_filter &= M_Q(length__gte=filter_gt)
        if filter_lt:
            len_filter &= M_Q(length__lte=filter_lt)

        if len_filter:
            query_filter &= (len_filter)

        search = request.GET.get('search', '')
        if search:
            query_filter &= M_Q(contig_id__icontains=search)

        identifier = M_Q(job_id=obj.job_id,
                         pipeline_version=obj.pipeline.release_version)

        return queryset.filter(identifier & query_filter)
Example #5
0
 def get_job_ids(self, annotation):
     return m_models.AnalysisJobKeggOrtholog.objects \
         .filter(M_Q(ko_entries__ko=annotation)) \
         .distinct('job_id')
Example #6
0
 def get_job_ids(self, annotation):
     return m_models.AnalysisJobAntiSmashGeneCluser.objects \
         .filter(M_Q(antismash_gene_clusters__gene_cluster=annotation)) \
         .distinct('job_id')
Example #7
0
 def get_job_ids(self, annotation):
     return m_models.AnalysisJobGenomeProperty.objects \
         .filter(M_Q(genome_properties__genome_property=annotation)) \
         .distinct('job_id')
Example #8
0
 def get_job_ids(self, annotation):
     return m_models.AnalysisJobPfam.objects \
         .filter(M_Q(pfam_entries__pfam=annotation)) \
         .distinct('job_id')
Example #9
0
 def get_job_ids(self, annotation):
     return m_models.AnalysisJobKeggModule.objects \
         .filter(M_Q(kegg_modules__module=annotation)) \
         .distinct('job_id')
Example #10
0
 def get_job_ids(self, annotation):
     return m_models.AnalysisJobInterproIdentifier.objects \
         .filter(M_Q(interpro_identifiers__interpro_identifier=annotation)) \
         .distinct('job_id')