예제 #1
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)
예제 #2
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)
예제 #3
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)
예제 #4
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)
예제 #5
0
    def post(self, request, format=None, *args, **kwargs):

        params = self.request.data

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

        queryset = MarkerProfile.objects.all()

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

        return paginate(queryset, request, MarkerProfileSerializer)
예제 #6
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)
예제 #7
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)