Ejemplo n.º 1
0
    def post(self, request, format=None, *args, **kwargs):

        queryset = Germplasm.objects.all()

        # PARAMS:
        # {
        #     "germplasmPUIs" : [ "http://www.crop-diversity.org/mgis/accession/01BEL084609", "doi:10.15454/328757862534E12" ],
        #     "germplasmDbIds" : [ "986", "01BEL084609" ],
        #     "germplasmSpecies" : [ "aestivum", "vinifera" ],
        #     "germplasmGenus" : [ "Solanum", "Triticum" ],
        #     "germplasmNames" : [ "XYZ1", "Pahang" ],
        #     "accessionNumbers": [ "ITC0609", "ITC0685" ],
        #     "pageSize" : 100,
        #     "page": 1
        # }

        params = self.request.data

        logger = logging.getLogger(__name__)
        logger.warn("Parameters: %s" % params)

        queryset = search_post_params_in(
            self, queryset, [('germplasmNames', 'germplasmName'),
                             ('germplasmDbId', 'germplasmDbId'),
                             ('germplasmPUIs', 'germplasmPUI'),
                             ('germplasmSpecies', 'germplasmSpecies'),
                             ('germplasmGenus', 'germplasmGenus'),
                             ('accessionNumbers', 'accessionNumber')])

        return paginate(queryset, request, GermplasmSerializer)
Ejemplo n.º 2
0
    def post(self, request, format=None, *args, **kwargs):

        queryset = Program.objects.all()

        # PARAMS:
        # {
        #     "programDbId": "123",
        #     "name": "Wheat Resistance Program",
        #     "abbreviation" : "DRP1",
        #     "objective" : "Disease resistance",
        #     "leadPerson" : "Dr. Henry Beachell"
        # }

        params = self.request.data

        logger = logging.getLogger(__name__)
        logger.warn("Search parameters: %s" % params)

        queryset = search_post_params_in(self, queryset,
                                         [('programDbId', 'programDbId'),
                                          ('name', 'name'),
                                          ('abbreviation', 'abbreviation'),
                                          ('objective', 'objective'),
                                          ('leadPerson', 'leadPerson')], False)

        return paginate(queryset, request, ProgramSerializer)
Ejemplo n.º 3
0
    def get(self, request, format=None, *args, **kwargs):
        
        mapDbId = self.kwargs['mapDbId']
        
        queryset = Map.objects.all()
        queryset = queryset.filter(mapDbId=mapDbId)

        return paginate(queryset, request, MapDetailSerializer)
Ejemplo n.º 4
0
    def get(self, request, format=None, *args, **kwargs):

        queryset = Location.objects.all()

        queryset = search_get_qparams(self, queryset,
                                      [('locationType', 'locationType')])

        return paginate(queryset, request, LocationSerializer)
Ejemplo n.º 5
0
    def get(self, request, format=None, *args, **kwargs):

        queryset = StudyObsUnit.objects.all()
        queryset = search_get_qparams(
            self, queryset,
            [('observationVariableDbIds', 'observationVariableDbIds')])

        return paginate(queryset, request, StudyObsUnitSerializer)
Ejemplo n.º 6
0
    def get(self, request, format=None, *args, **kwargs):

        queryset = Call.objects.all()

        return paginate(queryset, request, CallsSerializer)

    # end def get

# end class CallsView
Ejemplo n.º 7
0
    def get(self, request, format=None, *args, **kwargs):
        
        queryset = ObsVariable.objects.all()

        observationVariableDbId = self.kwargs.get('observationVariableDbId', None)
        if observationVariableDbId is not None:
            queryset = queryset.filter(observationVariableDbId=observationVariableDbId)
        # end if

        return paginate(queryset, request, ObsVariableSerializer)
Ejemplo n.º 8
0
    def get(self, request, format=None, *args, **kwargs):

        queryset = Marker.objects.all()

        markerDbId = self.kwargs.get('markerDbId', None)
        if markerDbId is not None:
            queryset = queryset.filter(markerDbId=markerDbId)
        # end if

        return paginate(queryset, request, MarkerSerializer)
Ejemplo n.º 9
0
    def get(self, request, format=None, *args, **kwargs):

        queryset = Germplasm.objects.all()

        germplasmDbId = self.kwargs.get('germplasmDbId', None)
        if germplasmDbId is not None:
            queryset = queryset.filter(germplasmDbId=germplasmDbId)
        # end if

        return paginate(queryset, request, GermplasmSerializer)
Ejemplo n.º 10
0
    def get(self, request, format=None, *args, **kwargs):

        queryset = StudyPlot.objects.all()

        studyDbId = self.kwargs.get('studyDbId', None)
        if studyDbId is not None:
            queryset = queryset.filter(studyDbId=studyDbId)
        # end if

        return paginate(queryset, request, StudyPlotSerializer)
Ejemplo n.º 11
0
    def get(self, request, format=None, *args, **kwargs):

        queryset = Trait.objects.all()

        traitDbId = self.kwargs.get('traitDbId', None)
        if traitDbId is not None:
            queryset = queryset.filter(traitDbId=traitDbId)
        # end if

        return paginate(queryset, request, TraitSerializer)
Ejemplo n.º 12
0
    def get(self, request, format=None, *args, **kwargs):

        queryset = Marker.objects.all()

        # name, matchMethod, include
        # possible values are 'case_insensitive', 'exact' (case sensitive), 'wildcard' (which is case insensitive). Wildcard uses both '*' and '%' for any number of characters and '?' for one character matching. Default is exact.
        # Whether to include synonyms in the output.
        name = self.request.query_params.get('name', None)
        match_method = self.request.query_params.get('matchMethod', None)
        include = self.request.query_params.get('include', None)

        synonyms = include is not None and include == 'synonyms'

        logger = logging.getLogger(__name__)
        logger.warn("FILTERING: %s, method=%s, synonyms=%s" %
                    (name, match_method, synonyms))

        if name is not None:
            if match_method is not None:
                if match_method == 'case_insensitive':
                    if synonyms:
                        queryset = queryset.filter(
                            Q(defaultDisplaydefaultDisplayName__iexact=name)
                            | Q(synonyms__iexact=name))
                    else:
                        queryset = queryset.filter(
                            defaultDisplayName__iexact=name)
                    # end if
                elif match_method == 'wildcard':
                    # TODO: add prefixes and suffixes
                    name = name.replace('*', '')
                    name = name.replace('%', '')
                    if synonyms:
                        queryset = queryset.filter(
                            Q(defaultDisplayName__icontains=name)
                            | Q(synonyms__contains=name))
                    else:
                        queryset = queryset.filter(
                            defaultDisplayName__icontains=name)
                    # end if
                # end if
            else:  # exact
                if synonyms:
                    queryset = queryset.filter(
                        Q(defaultDisplayName=name) | Q(synonyms=name))
                else:
                    queryset = queryset.filter(defaultDisplayName=name)
                # end if
            # end if
        # end if

        queryset = search_get_qparams(self, queryset, [('type', 'type')])

        return paginate(queryset, request, MarkerSerializer)
Ejemplo n.º 13
0
    def get(self, request, format=None, *args, **kwargs):
        
        queryset = ObsVariable.objects.all()

        # this search is not standard since it is on a related table
        param_value = self.request.query_params.get('traitClass', None)
        if param_value is not None:
            queryset = queryset.filter(trait__classe=param_value)
        # end if

        return paginate(queryset, request, ObsVariableSerializer)
Ejemplo n.º 14
0
    def post(self, request, format=None, *args, **kwargs):

        queryset = AlleleMSearch.objects.all()

        # TODO: it is not clear to which data the query parameters apply!
        # unknownString=&sepPhased=&sepUnphased=&expandHomozygotes=
        queryset = search_post_params_in(
            self, queryset, [('markerprofileDbId', 'markerprofileDbId'),
                             ('markerDbId', 'markerDbId')])

        return paginate(queryset, request, AlleleMSearchSerializer,
                        BrAPIListPagination)
Ejemplo n.º 15
0
    def get(self, request, format=None, *args, **kwargs):

        logger = logging.getLogger(__name__)

        mapDbId = self.kwargs['mapDbId']
        queryset = MapLinkage.objects.all()

        linkageGroupId = self.request.query_params.get('linkageGroupId', None)
        logger.warn("Linkages: (%s, %s)" % (mapDbId, linkageGroupId))

        queryset = search_get_qparams(self, queryset, [('mapDbId', 'mapDbId'), ('linkageGroupId', 'linkageGroupId')])

        return paginate(queryset, request, MapLinkageSerializer)
Ejemplo n.º 16
0
    def get(self, request, format=None, *args, **kwargs):

        queryset = Germplasm.objects.all()

        logger = logging.getLogger(__name__)
        logger.warn("Searching with parameters %s" % self.request.query_params)

        queryset = search_get_qparams(self, queryset,
                                      [('germplasmName', 'germplasmName'),
                                       ('germplasmDbId', 'germplasmDbId'),
                                       ('germplasmPUI', 'germplasmPUI')])

        return paginate(queryset, request, GermplasmSerializer)
Ejemplo n.º 17
0
    def get(self, request, format=None, *args, **kwargs):

        queryset = Sample.objects.all()

        sampleId = self.kwargs.get('sampleId', None)
        logger = logging.getLogger(__name__)
        logger.warn("Sample id '%s'" % sampleId)

        if sampleId is not None:
            queryset = queryset.filter(sampleId=sampleId)
        # end if

        return paginate(queryset, request, SampleSerializer)
Ejemplo n.º 18
0
    def post(self, request, format=None, *args, **kwargs):

        queryset = Study.objects.all()

        queryset = search_post_params_in(
            self, queryset,
            [('studyType', 'studyType'), ('seasonDbId', 'seasonDbId'),
             ('locationDbId', 'locationDbId'), ('programDbId', 'programDbId'),
             ('germplasmDbId', 'germplasmDbIds'),
             ('observationVariableDbId', 'observationVariableDbIds'),
             ('active', 'active')])

        return paginate(queryset, request, StudySerializer)
Ejemplo n.º 19
0
    def get(self, request, format=None, *args, **kwargs):

        queryset = Location.objects.all()

        locationDbId = self.kwargs.get('locationDbId', None)
        if locationDbId is not None:
            queryset = queryset.filter(locationDbId=locationDbId)
        # end if

        return paginate(queryset, request, LocationSerializer)

    # end def get


# end class LocationDetailsView
Ejemplo n.º 20
0
    def get(self, request, format=None, *args, **kwargs):

        queryset = GermplasmMarkerprofile.objects.all()

        germplasmDbId = self.kwargs.get('id', None)
        if germplasmDbId is not None:
            queryset = queryset.filter(germplasmDbId=germplasmDbId)
        # end if

        return paginate(queryset, request, GermplasmMarkerprofileSerializer)

    # end def get


# end class GermplasmMarkerprofileView
Ejemplo n.º 21
0
    def get(self, request, format=None, *args, **kwargs):

        logger = logging.getLogger(__name__)
        logger.warn("Searching with parameters %s" % self.request.query_params)

        queryset = MarkerProfile.objects.all()

        queryset = search_get_qparams(self, queryset,
                                      [('germplasmDbId', 'germplasm'),
                                       ('studyDbId', 'studyDbId'),
                                       ('sampleDbId', 'sample'),
                                       ('extractDbId', 'extract'),
                                       ('analysisMethod', 'method')])

        return paginate(queryset, request, MarkerProfileSerializer)
Ejemplo n.º 22
0
    def get(self, request, format=None, *args, **kwargs):

        queryset = GPPedigree.objects.all()

        germplasmDbId = self.kwargs.get('germplasmDbId', None)
        if germplasmDbId is not None:
            queryset = queryset.filter(germplasmDbId=germplasmDbId)
        # end if

        notation = self.request.query_params.get('notation', None)

        if notation is not None:
            raise Exception('Deal with "notation" parameter')
        # end if

        return paginate(queryset, request, GPPedigreeSerializer)
Ejemplo n.º 23
0
    def post(self, request, format=None, *args, **kwargs):

        params = self.request.data
        
        logger = logging.getLogger(__name__)
        logger.warn("Search parameters: %s" % params)
        
        queryset = ObsVariable.objects.all()

        # TODO: add ('datatypes'), ('traitClasses')
        queryset = search_post_params_in(self, queryset, [('observationVariableDbId', 'observationVariableDbIds'),
            ('ontologyXref', 'ontologyXrefs'),
            ('ontologyDbId', 'ontologyDbIds'),
            ('method', 'methodDbIds'),
            ('scale', 'scaleDbIds'),
            ('name', 'names')])

        return paginate(queryset, request, ObsVariableSerializer)
Ejemplo n.º 24
0
    def get(self, request, format=None, *args, **kwargs):

        queryset = MarkerProfile.objects.all()

        markerprofileDbId = self.kwargs.get('markerprofileDbId', None)

        logger = logging.getLogger(__name__)
        logger.warn("Markerprofiles data: %s" % markerprofileDbId)

        if markerprofileDbId is not None:
            queryset = queryset.filter(
                markerProfilesDbId_details=markerprofileDbId)
        # end if

        # TODO: it is not clear to which data the query parameters apply!
        # unknownString=&sepPhased=&sepUnphased=&expandHomozygotes=

        return paginate(queryset, request, MarkerProfileSerializer)
Ejemplo n.º 25
0
    def get(self, request, format=None, *args, **kwargs):

        queryset = GermplasmAttr.objects.all()

        germplasmDbId = self.kwargs.get('germplasmDbId', None)
        if germplasmDbId is not None:
            queryset = queryset.filter(germplasmDbId=germplasmDbId)
        # end if

        attributeDbIds = self.request.query_params.get('attributeList', None)

        logger = logging.getLogger(__name__)
        logger.warn("FILTERING: %s (IN %s)" % (germplasmDbId, attributeDbIds))

        if attributeDbIds is not None:
            queryset = queryset.filter(attributeDbId__in=attributeDbIds)
        # end if

        return paginate(queryset, request, GermplasmAttrSerializer)
Ejemplo n.º 26
0
    def post(self, request, format=None, *args, **kwargs):

        queryset = Phenotype.objects.all()

        # PARAMS:
        # {
        #     "germplasmDbIds" : [ "Blabla", "34Mtp362" ], // (optional, text, `986`) ... The name or synonym of external genebank accession identifiers
        #     "observationVariableDbIds" : [ "37373", "CO_321:00000234"], // (optional, text, `CO_321:00000234`) ... The IDs of traits, could be ontology ID, database ID or PUI
        #     "studyDbIds" : [ "383", "2929", "WHEAT_NETWK_2016_MONTPELLIER" ], // (optional, text, `2356`) ... The database ID / PK of the studies search parameter
        #     "locationDbIds" : [ "383838", "MONTPELLIER" ], // locations these traits were collected
        #     "programDbIds" : [ "3838", "Drought resistance CG 2020" ], // list of programs that have phenotyped this trait
        #     "seasonDbIds" : [ "338", "2010", "1956-2014", "2002-2003-2004", "2007 Spring" ], // (optional, text, `2001`) ... The year or Phenotyping campaign of a multiannual study (trees, grape, ...)
        #     "observationLevel" : "plot", // (optional, text, `plot`) ... The type of the observationUnit. Returns only the observaton unit of the specified type; the parent levels ID can be accessed through observationUnitStructure.
        #     "observationTimeStampRange" : ["2015-06-16T00:53:26-0800","2015-06-18T00:53:26-0800"]
        #     "pageSize" : 100, // (optional, integer, `1000`) ... The size of the pages to be returned. Default is `1000`.
        #     "page" : 1, // (optional, integer, `10`) ... Which result page is requested
        # }

        params = self.request.data

        logger = logging.getLogger(__name__)
        logger.warn("Search parameters: %s" % params)

        queryset = search_post_params_in(
            self, queryset,
            [('germplasmDbIds', 'germplasmDbIds'),
             ('observationVariableDbIds', 'observationVariableDbIds'),
             ('studyDbIds', 'studyDbIds'), ('locationDbIds', 'locationDbIds'),
             ('programDbIds', 'programDbIds'), ('seasonDbIds', 'seasonDbIds'),
             ('observationLevel', 'observationLevel')])

        observationTimeStampRange = params.get('observationTimeStampRange',
                                               None)
        if observationTimeStampRange is not None:
            queryset = queryset.filter(
                Q(observationTimeStampRange__gte=observationTimeStampRange[0])
                &
                Q(observationTimeStampRange__lte=observationTimeStampRange[1]))
        # end if

        #serializer = PhenotypeSerializer(queryset, many=True)

        return paginate(queryset, request, PhenotypeSerializer)
Ejemplo n.º 27
0
    def get(self, request, format=None, *args, **kwargs):

        queryset = Trial.objects.all()
        queryset = search_get_qparams(self, queryset,
                                      [('programDbId', 'programDbId'),
                                       ('locationDbId', 'locationDbId'),
                                       ('active', 'active')])

        sortBy = self.request.query_params.get('sortBy', None)
        sortOrder = self.request.query_params.get('sortOrder', None)

        if sortBy is not None:
            if sortOrder is not None and sortOrder == 'Ascending':
                queryset = queryset.order_by(sortBy)
            elif sortOrder is not None and sortOrder == 'Descending':
                queryset = queryset.order_by('-' + sortBy)
            # end if
        # end if

        return paginate(queryset, request, TrialSerializer)
Ejemplo n.º 28
0
    def get(self, request, format=None, *args, **kwargs):

        logger = logging.getLogger(__name__)

        mapDbId = self.kwargs['mapDbId']
        queryset = MapLinkage.objects.all()

        linkageGroupId = self.kwargs['linkageGroupId']
        logger.warn("Positions: (%s, %s)" % (mapDbId, linkageGroupId))

        queryset = queryset.filter(Q(mapDbId=mapDbId)&Q(linkageGroupId=linkageGroupId))

        # numerical filters, therefore cannot use '_search_get_qparams'
        min_pos = self.request.query_params.get('min', None)
        if min_pos is not None:
            queryset = queryset.filter(location__gte=min_pos)
        # end if

        max_pos = self.request.query_params.get('max', None)
        if max_pos is not None:
            queryset = queryset.filter(location__lte=max_pos)
        # end if

        return paginate(queryset, request, MapLinkageSerializer)
Ejemplo n.º 29
0
    def get(self, request, format=None, *args, **kwargs):

        queryset = Map.objects.all()
        queryset = search_get_qparams(self, queryset, [('type', 'type'), ('species', 'species')])

        return paginate(queryset, request, MapSerializer)
Ejemplo n.º 30
0
    def get(self, request, format=None, *args, **kwargs):

        queryset = Trait.objects.all()

        return paginate(queryset, request, TraitSerializer)