コード例 #1
0
ファイル: models.py プロジェクト: kevmedeiros/hawc
    def get_editing_dataset(self, request):
        # Generate a pseudo-return when editing or creating a dataset.
        # Do not include the settings field; this will be set from the
        # input-form. Should approximately mirror the Visual API from rest-framework.

        dose_units = None
        try:
            dose_units = int(request.POST.get("dose_units"))
        except (TypeError, ValueError) as e:
            # TypeError if dose_units is None; ValueError if dose_units is ""
            pass

        data = {
            "title": request.POST.get("title"),
            "slug": request.POST.get("slug"),
            "caption": request.POST.get("caption"),
            "dose_units": dose_units,
            "created": datetime.now().isoformat(),
            "last_updated": datetime.now().isoformat()
        }

        data["endpoints"] = [
            SerializerHelper.get_serialized(e, json=False)
            for e in self.get_endpoints(request)
        ]

        data["studies"] = [
            SerializerHelper.get_serialized(s, json=False)
            for s in self.get_studies(request)
        ]

        return json.dumps(data)
コード例 #2
0
    def get_editing_dataset(self, request):
        # Generate a pseudo-return when editing or creating a dataset.
        # Do not include the settings field; this will be set from the
        # input-form. Should approximately mirror the Visual API from rest-framework.

        dose_units = None
        try:
            dose_units = int(request.POST.get("dose_units"))
        except (TypeError, ValueError) as e:
            # TypeError if dose_units is None; ValueError if dose_units is ""
            pass

        data = {
            "title": request.POST.get("title"),
            "slug": request.POST.get("slug"),
            "caption": request.POST.get("caption"),
            "dose_units": dose_units,
            "created": datetime.now().isoformat(),
            "last_updated": datetime.now().isoformat()
        }

        data["endpoints"] = [
            SerializerHelper.get_serialized(e, json=False)
            for e in self.get_endpoints(request)
        ]

        data["studies"] = [
            SerializerHelper.get_serialized(s, json=False)
            for s in self.get_studies(request)
        ]

        return json.dumps(data)
コード例 #3
0
    def get_docx_template_context(assessment, queryset):
        """
        Given a queryset of endpoints, invert the cached results to build
        a top-down data hierarchy from study to endpoint. We use this
        approach since our endpoints are cached, so while it may require
        more computation, its close to free on database access.
        """

        endpoints = [
            SerializerHelper.get_serialized(obj, json=False)
            for obj in queryset
        ]
        studies = {}

        # flip dictionary nesting
        for thisEp in endpoints:
            thisAG = thisEp["animal_group"]
            thisExp = thisEp["animal_group"]["experiment"]
            thisStudy = thisEp["animal_group"]["experiment"]["study"]

            study = studies.get(thisStudy["id"])
            if study is None:
                study = thisStudy
                study["exps"] = {}
                studies[study["id"]] = study

            exp = study["exps"].get(thisExp["id"])
            if exp is None:
                exp = thisExp
                exp["ags"] = {}
                study["exps"][exp["id"]] = exp

            ag = exp["ags"].get(thisAG["id"])
            if ag is None:
                ag = thisAG
                ag["eps"] = {}
                exp["ags"][ag["id"]] = ag

            ep = ag["eps"].get(thisEp["id"])
            if ep is None:
                ep = thisEp
                ag["eps"][ep["id"]] = ep

        # convert value dictionaries to lists
        studies = sorted(list(studies.values()),
                         key=lambda obj: (obj["short_citation"].lower()))
        for study in studies:
            study["exps"] = sorted(list(study["exps"].values()),
                                   key=lambda obj: (obj["name"].lower()))
            for exp in study["exps"]:
                exp["ags"] = sorted(list(exp["ags"].values()),
                                    key=lambda obj: (obj["name"].lower()))
                for ag in exp["ags"]:
                    ag["eps"] = sorted(list(ag["eps"].values()),
                                       key=lambda obj: (obj["name"].lower()))

        return {
            "assessment": AssessmentSerializer().to_representation(assessment),
            "studies": studies
        }
コード例 #4
0
    def to_representation(self, instance):
        ret = super().to_representation(instance)

        ret['url_update'] = instance.get_update_url()
        ret['url_delete'] = instance.get_delete_url()

        ret["endpoints"] = [
            SerializerHelper.get_serialized(d, json=False)
            for d in instance.get_endpoints()
        ]

        ret["studies"] = [
            SerializerHelper.get_serialized(d, json=False)
            for d in instance.get_studies()
        ]

        return ret
コード例 #5
0
ファイル: serializers.py プロジェクト: shapiromatron/hawc
    def to_representation(self, instance):
        ret = super().to_representation(instance)

        ret['url_update'] = instance.get_update_url()
        ret['url_delete'] = instance.get_delete_url()

        ret["endpoints"] = [
            SerializerHelper.get_serialized(d, json=False)
            for d in instance.get_endpoints()
        ]

        ret["studies"] = [
            SerializerHelper.get_serialized(d, json=False)
            for d in instance.get_studies()
        ]

        return ret
コード例 #6
0
ファイル: models.py プロジェクト: reneebeardslee/hawc
 def get_docx_template_context(cls, assessment, queryset):
     studies = [
         SerializerHelper.get_serialized(study, json=False)
         for study in queryset
     ]
     return {
         "assessment": AssessmentSerializer().to_representation(assessment),
         "studies": studies
     }
コード例 #7
0
 def get_json(self, json_encode=True):
     return SerializerHelper.get_serialized(self, json=json_encode)
コード例 #8
0
ファイル: models.py プロジェクト: liuduan/hawc
 def get_json(self, json_encode=True):
     return SerializerHelper.get_serialized(self, json=json_encode)
コード例 #9
0
ファイル: models.py プロジェクト: JoshAddington/hawc
    def get_docx_template_context(cls, assessment, queryset):
        """
        Given a queryset of endpoints, invert the cached results to build
        a top-down data hierarchy from study to endpoint. We use this
        approach since our endpoints are cached, so while it may require
        more computation, its close to free on database access.
        """

        endpoints = [
            SerializerHelper.get_serialized(obj, json=False)
            for obj in queryset
        ]
        studies = {}

        # flip dictionary nesting
        for thisEp in endpoints:
            thisAG = thisEp["animal_group"]
            thisExp = thisEp["animal_group"]["experiment"]
            thisStudy = thisEp["animal_group"]["experiment"]["study"]

            study = studies.get(thisStudy["id"])
            if study is None:
                study = thisStudy
                study["exps"] = {}
                studies[study["id"]] = study

            exp = study["exps"].get(thisExp["id"])
            if exp is None:
                exp = thisExp
                exp["ags"] = {}
                study["exps"][exp["id"]] = exp

            ag = exp["ags"].get(thisAG["id"])
            if ag is None:
                ag = thisAG
                ag["eps"] = {}
                exp["ags"][ag["id"]] = ag

            ep = ag["eps"].get(thisEp["id"])
            if ep is None:
                ep = thisEp
                ag["eps"][ep["id"]] = ep

        # convert value dictionaries to lists
        studies = sorted(
            studies.values(),
            key=lambda obj: (obj["short_citation"].lower()))
        for study in studies:
            study["exps"] = sorted(
                study["exps"].values(),
                key=lambda obj: (obj["name"].lower()))
            for exp in study["exps"]:
                exp["ags"] = sorted(
                    exp["ags"].values(),
                    key=lambda obj: (obj["name"].lower()))
                for ag in exp["ags"]:
                    ag["eps"] = sorted(
                        ag["eps"].values(),
                        key=lambda obj: (obj["name"].lower()))

        return {
            "assessment": AssessmentSerializer().to_representation(assessment),
            "studies": studies
        }
コード例 #10
0
ファイル: models.py プロジェクト: JoshAddington/hawc
 def d_response(self, json_encode=True):
     return SerializerHelper.get_serialized(self, json=json_encode)
コード例 #11
0
ファイル: models.py プロジェクト: shapiromatron/hawc
 def get_docx_template_context(assessment, queryset):
     studies = [SerializerHelper.get_serialized(study, json=False) for study in queryset]
     return {
         "assessment": AssessmentSerializer().to_representation(assessment),
         "studies": studies
     }
コード例 #12
0
ファイル: models.py プロジェクト: shapiromatron/hawc
 def get_json(self, json_encode=True):
     return SerializerHelper.get_serialized(self, json=json_encode, from_cache=False)
コード例 #13
0
ファイル: models.py プロジェクト: shapiromatron/hawc
    def get_docx_template_context(assessment, queryset):
        """
        Given a queryset of meta-results, invert the cached results to build
        a top-down data hierarchy from study to meta-result. We use this
        approach since our meta-results are cached, so while it may require
        more computation, its close to free on database access.
        """

        def getStatMethods(mr):
            key = "{}|{}".format(
                mr["adjustments_list"],
                mr["statistical_notes"]
            )
            return key, mr

        results = [
            SerializerHelper.get_serialized(obj, json=False)
            for obj in queryset
        ]
        studies = {}

        # flip dictionary nesting
        for thisMr in results:
            thisPro = thisMr["protocol"]
            thisStudy = thisMr["protocol"]["study"]

            study = studies.get(thisStudy["id"])
            if study is None:
                study = thisStudy
                study["protocols"] = {}
                studies[study["id"]] = study

            pro = study["protocols"].get(thisPro["id"])
            if pro is None:
                pro = thisPro
                pro["inclusion_list"] = ', '.join(pro["inclusion_criteria"])
                pro["exclusion_list"] = ', '.join(pro["exclusion_criteria"])
                pro["results"] = {}
                pro["statistical_methods"] = {}
                study["protocols"][pro["id"]] = pro

            mr = pro["results"].get(thisMr["id"])
            if mr is None:
                mr = thisMr
                mr["ci_percent"] = int(mr["ci_units"] * 100.)
                mr["adjustments_list"] = ', '.join(
                    sorted(mr["adjustment_factors"]))
                pro["results"][mr["id"]] = mr

            statKey, statVal = getStatMethods(thisMr)
            stats = pro["statistical_methods"].get(statKey)
            if stats is None:
                stats = statVal
                pro["statistical_methods"][statKey] = statVal
                stats["sm_endpoints"] = []
            stats["sm_endpoints"].append(thisMr)

        # convert value dictionaries to lists
        studies = sorted(
            list(studies.values()),
            key=lambda obj: (obj["short_citation"].lower()))
        for study in studies:
            study["protocols"] = sorted(
                list(study["protocols"].values()),
                key=lambda obj: (obj["name"].lower()))
            for pro in study["protocols"]:
                pro["results"] = sorted(
                    list(pro["results"].values()),
                    key=lambda obj: (obj["label"].lower()))
                pro["statistical_methods"] = list(pro["statistical_methods"].values())
                for obj in pro["statistical_methods"]:
                    obj["sm_endpoints"] = "; ".join([
                        d["label"] for d in obj["sm_endpoints"]
                    ])

        return {
            "assessment": AssessmentSerializer().to_representation(assessment),
            "studies": studies
        }
コード例 #14
0
 def get_json(self, json_encode=True):
     return SerializerHelper.get_serialized(self, json=json_encode, from_cache=False)
コード例 #15
0
    def get_docx_template_context(assessment, queryset):
        """
        Given a queryset of meta-results, invert the cached results to build
        a top-down data hierarchy from study to meta-result. We use this
        approach since our meta-results are cached, so while it may require
        more computation, its close to free on database access.
        """

        def getStatMethods(mr):
            key = "{}|{}".format(
                mr["adjustments_list"],
                mr["statistical_notes"]
            )
            return key, mr

        results = [
            SerializerHelper.get_serialized(obj, json=False)
            for obj in queryset
        ]
        studies = {}

        # flip dictionary nesting
        for thisMr in results:
            thisPro = thisMr["protocol"]
            thisStudy = thisMr["protocol"]["study"]

            study = studies.get(thisStudy["id"])
            if study is None:
                study = thisStudy
                study["protocols"] = {}
                studies[study["id"]] = study

            pro = study["protocols"].get(thisPro["id"])
            if pro is None:
                pro = thisPro
                pro["inclusion_list"] = ', '.join(pro["inclusion_criteria"])
                pro["exclusion_list"] = ', '.join(pro["exclusion_criteria"])
                pro["results"] = {}
                pro["statistical_methods"] = {}
                study["protocols"][pro["id"]] = pro

            mr = pro["results"].get(thisMr["id"])
            if mr is None:
                mr = thisMr
                mr["ci_percent"] = int(mr["ci_units"] * 100.)
                mr["adjustments_list"] = ', '.join(
                    sorted(mr["adjustment_factors"]))
                pro["results"][mr["id"]] = mr

            statKey, statVal = getStatMethods(thisMr)
            stats = pro["statistical_methods"].get(statKey)
            if stats is None:
                stats = statVal
                pro["statistical_methods"][statKey] = statVal
                stats["sm_endpoints"] = []
            stats["sm_endpoints"].append(thisMr)

        # convert value dictionaries to lists
        studies = sorted(
            list(studies.values()),
            key=lambda obj: (obj["short_citation"].lower()))
        for study in studies:
            study["protocols"] = sorted(
                list(study["protocols"].values()),
                key=lambda obj: (obj["name"].lower()))
            for pro in study["protocols"]:
                pro["results"] = sorted(
                    list(pro["results"].values()),
                    key=lambda obj: (obj["label"].lower()))
                pro["statistical_methods"] = list(pro["statistical_methods"].values())
                for obj in pro["statistical_methods"]:
                    obj["sm_endpoints"] = "; ".join([
                        d["label"] for d in obj["sm_endpoints"]
                    ])

        return {
            "assessment": AssessmentSerializer().to_representation(assessment),
            "studies": studies
        }
コード例 #16
0
 def d_response(self, json_encode=True):
     return SerializerHelper.get_serialized(self, json=json_encode)