diff --git a/.gitignore b/.gitignore index 0f6ac9b..0cc52c4 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,4 @@ #other .Rproj.user output +dev diff --git a/dev/data/CR2020/data.json b/dev/data/CR2020/data.json deleted file mode 100644 index 6811ec7..0000000 --- a/dev/data/CR2020/data.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "Characteristics": [ - { - "name": "Overall Characteristic", - "id": 204, - "vars": [ - { - "name": "ASS90dd6f89c1df_char_overallperf_pos" - }, - { - "name": "ASS90dd6f89c1df_char_overallperf_neg" - } - ] - }, - { - "name": "About love", - "id": 240, - "vars": [ - { - "name": "ASS90dd6f89c1df_char_love_pos" - }, - { - "name": "ASS90dd6f89c1df_char_love_neg" - } - ] - } - ], - "Performance": [ - { - "name": "Overall performace", - "id": 205, - "vars": [ - { - "name": "ASS90dd6f89c1df_perf_overallchar_1" - }, - { - "name": "ASS90dd6f89c1df_perf_overallchar_2" - }, - { - "name": "ASS90dd6f89c1df_perf_overallchar_3" - } - ] - } - ], - "Explanatory": [ - { - "name": "What is the gender ?", - "id": 237, - "vars": "REG_gender" - } - ] -} \ No newline at end of file diff --git a/dev/data/CR2020/info.json b/dev/data/CR2020/info.json deleted file mode 100644 index 2e79259..0000000 --- a/dev/data/CR2020/info.json +++ /dev/null @@ -1,1519 +0,0 @@ -{ - "project": { - "user_name": "jacobvanetten", - "project_cod": "CR2020", - "project_name": "Cassava Rwanda 2020", - "project_abstract": "This is just a test.", - "project_tags": "cassava,Rwanda,disease", - "project_pi": "Jacob van Etten", - "project_piemail": "jacobvanetten@gmail.com", - "project_active": 1, - "project_public": 0, - "project_dashboard": 1, - "project_regstatus": 2, - "project_assstatus": 0, - "project_createcomb": 0, - "project_createpkgs": 0, - "project_numobs": 120, - "project_numcom": 3, - "project_lat": "", - "project_lon": "", - "project_creationdate": "2020-05-05 09:17:07", - "project_localvariety": 1, - "project_cnty": "RW", - "extra": null - }, - "registry": { - "lkptables": [ - { - "name": "REG_lkpgender", - "desc": "Lookup table (What is the gender ?)", - "fields": [ - { - "name": "gender_cod", - "desc": "Code", - "key": "true" - }, - { - "name": "gender_des", - "desc": "Description", - "key": null - } - ], - "values": [ - { - "gender_cod": 1, - "gender_des": "Male" - }, - { - "gender_cod": 2, - "gender_des": "Female" - } - ] - } - ], - "fields": [ - { - "name": "surveyid", - "odktype": "", - "desc": "Submission ID", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "originid", - "odktype": "", - "desc": "Origin", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "_submitted_by", - "odktype": "text", - "desc": "Submitted by", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "_submitted_date", - "odktype": "datetime", - "desc": "Submitted date", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "_geopoint", - "odktype": "geopoint", - "desc": "GPS point", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "clm_deviceimei", - "odktype": "deviceid", - "desc": "Device IMEI", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "clm_start", - "odktype": "start", - "desc": "Start of survey", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "qst162", - "odktype": "barcode", - "desc": "Package code", - "key": "true", - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "farmername", - "odktype": "text", - "desc": "Farmer name", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "village", - "odktype": "text", - "desc": "What is the village of the farmer?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "farmsize", - "odktype": "decimal", - "desc": "What is your farm size in hectares?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "farmgoelocation", - "odktype": "geopoint", - "desc": "Farm Geolocation", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "gender", - "odktype": "select_one gender_opts", - "desc": "What is the gender ?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "REG_lkpgender", - "rfield": "gender_cod" - }, - { - "name": "clm_end", - "odktype": "end", - "desc": "End of survey", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "rowuuid", - "odktype": "", - "desc": "Unique Row Identifier (UUID)", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - } - ] - }, - "assessments": [ - { - "code": "90dd6f89c1df", - "desc": "FinalEvaluation", - "lkptables": [ - { - "name": "ASS90dd6f89c1df_lkpqst163", - "desc": "Lookup table (Select the farmer)", - "fields": [ - { - "name": "qst163_cod", - "desc": "Code", - "key": "true" - }, - { - "name": "qst163_des", - "desc": "Description", - "key": null - } - ], - "values": [ - { - "qst163_cod": 1, - "qst163_des": "P:1-Silver t-kasangati" - }, - { - "qst163_cod": 3, - "qst163_des": "P:3-Things Mendes-Kilimani" - }, - { - "qst163_cod": 4, - "qst163_des": "P:4-Elke Vandamme-Kigali" - }, - { - "qst163_cod": 6, - "qst163_des": "P:6-Hyacinthe-Kabuye" - }, - { - "qst163_cod": 7, - "qst163_des": "P:7-Rukundo Placide-Zindiro" - }, - { - "qst163_cod": 10, - "qst163_des": "P:10-John-Muhanga" - }, - { - "qst163_cod": 11, - "qst163_des": "P:11-John-Doe" - }, - { - "qst163_cod": 13, - "qst163_des": "P:13-Giaco-Ruben" - }, - { - "qst163_cod": 14, - "qst163_des": "P:14-Habimana paul-Ruhina" - }, - { - "qst163_cod": 15, - "qst163_des": "P:15-Rogers-Addis" - }, - { - "qst163_cod": 17, - "qst163_des": "P:17-Benson-Uthiru" - }, - { - "qst163_cod": 20, - "qst163_des": "P:20-Jacob van Etten-Espartinas" - }, - { - "qst163_cod": 21, - "qst163_des": "P:21-Rhys-Gacuriro" - } - ] - }, - { - "name": "ASS90dd6f89c1df_lkpchar_overallperf_pos", - "desc": "Lookup table (Overall, which option performed better?)", - "fields": [ - { - "name": "char_overallperf_pos_cod", - "desc": "Code", - "key": "true" - }, - { - "name": "char_overallperf_pos_des", - "desc": "Description", - "key": null - } - ], - "values": [ - { - "char_overallperf_pos_cod": 1, - "char_overallperf_pos_des": "Option A" - }, - { - "char_overallperf_pos_cod": 2, - "char_overallperf_pos_des": "Option B" - }, - { - "char_overallperf_pos_cod": 3, - "char_overallperf_pos_des": "Option C" - } - ] - }, - { - "name": "ASS90dd6f89c1df_lkpperf_overallchar_1", - "desc": "Lookup table (Overall, whichone is best A or what you usually use?)", - "fields": [ - { - "name": "perf_overallchar_1_cod", - "desc": "Code", - "key": "true" - }, - { - "name": "perf_overallchar_1_des", - "desc": "Description", - "key": null - } - ], - "values": [ - { - "perf_overallchar_1_cod": 1, - "perf_overallchar_1_des": "Better" - }, - { - "perf_overallchar_1_cod": 2, - "perf_overallchar_1_des": "Worst" - } - ] - } - ], - "fields": [ - { - "name": "surveyid", - "odktype": "", - "desc": "Submission ID", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "originid", - "odktype": "", - "desc": "Origin", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "_submitted_by", - "odktype": "text", - "desc": "Submitted by", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "_submitted_date", - "odktype": "datetime", - "desc": "Submitted date", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "_geopoint", - "odktype": "geopoint", - "desc": "GPS point", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "clm_deviceimei", - "odktype": "deviceid", - "desc": "Device IMEI", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "clm_start", - "odktype": "start", - "desc": "Start of survey", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "qst163", - "odktype": "select_one qst163_opts", - "desc": "Select the farmer", - "key": "true", - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASS90dd6f89c1df_lkpqst163", - "rfield": "qst163_cod" - }, - { - "name": "cal_qst163", - "odktype": "calculate", - "desc": "", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "char_overallperf_pos", - "odktype": "select_one char_overallperf_pos_opts", - "desc": "Overall, which option performed better?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASS90dd6f89c1df_lkpchar_overallperf_pos", - "rfield": "char_overallperf_pos_cod" - }, - { - "name": "char_overallperf_neg", - "odktype": "select_one char_overallperf_neg_opts", - "desc": "Overall, which option performed worst?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASS90dd6f89c1df_lkpchar_overallperf_pos", - "rfield": "char_overallperf_pos_cod" - }, - { - "name": "perf_overallchar_1", - "odktype": "select_one perf_overallchar_1_opts", - "desc": "Overall, whichone is best A or what you usually use?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASS90dd6f89c1df_lkpperf_overallchar_1", - "rfield": "perf_overallchar_1_cod" - }, - { - "name": "perf_overallchar_2", - "odktype": "select_one perf_overallchar_2_opts", - "desc": "Overall, whichone is best B or what you usually use?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASS90dd6f89c1df_lkpperf_overallchar_1", - "rfield": "perf_overallchar_1_cod" - }, - { - "name": "perf_overallchar_3", - "odktype": "select_one perf_overallchar_3_opts", - "desc": "Overall, whichone is best C or what you usually use?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASS90dd6f89c1df_lkpperf_overallchar_1", - "rfield": "perf_overallchar_1_cod" - }, - { - "name": "char_love_pos", - "odktype": "select_one char_love_pos_opts", - "desc": "Which color is most associated with love?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASS90dd6f89c1df_lkpchar_overallperf_pos", - "rfield": "char_overallperf_pos_cod" - }, - { - "name": "char_love_neg", - "odktype": "select_one char_love_neg_opts", - "desc": "Which color is least associated with love?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASS90dd6f89c1df_lkpchar_overallperf_pos", - "rfield": "char_overallperf_pos_cod" - }, - { - "name": "clm_end", - "odktype": "end", - "desc": "End of survey", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "rowuuid", - "odktype": "", - "desc": "Unique Row Identifier (UUID)", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - } - ] - } - ], - "packages": [ - { - "package_id": 1, - "farmername": "Silver t", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Yellow" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "White" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Black" - } - ] - } - ] - }, - { - "package_id": 3, - "farmername": "Things Mendes", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Black" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Red" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Blue" - } - ] - } - ] - }, - { - "package_id": 4, - "farmername": "Elke Vandamme", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "White" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Black" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Yellow" - } - ] - } - ] - }, - { - "package_id": 6, - "farmername": "Hyacinthe", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Yellow" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "White" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Red" - } - ] - } - ] - }, - { - "package_id": 7, - "farmername": "Rukundo Placide", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Blue" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Red" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Black" - } - ] - } - ] - }, - { - "package_id": 10, - "farmername": "John", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Black" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Yellow" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "White" - } - ] - } - ] - }, - { - "package_id": 11, - "farmername": "John", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "White" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Black" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Red" - } - ] - } - ] - }, - { - "package_id": 13, - "farmername": "Giaco", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Black" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Red" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Yellow" - } - ] - } - ] - }, - { - "package_id": 14, - "farmername": "Habimana paul", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Blue" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Red" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Black" - } - ] - } - ] - }, - { - "package_id": 15, - "farmername": "Rogers", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Yellow" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "White" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Blue" - } - ] - } - ] - }, - { - "package_id": 17, - "farmername": "Benson", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Blue" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Yellow" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "White" - } - ] - } - ] - }, - { - "package_id": 20, - "farmername": "Jacob van Etten", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Black" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Blue" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Red" - } - ] - } - ] - }, - { - "package_id": 21, - "farmername": "Rhys", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Red" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Blue" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "White" - } - ] - } - ] - } - ], - "specialfields": [ - { - "type": "Characteristic", - "name": "ASS90dd6f89c1df_char_overallperf_pos", - "desc": "Overall, which option performed better?" - }, - { - "type": "Characteristic", - "name": "ASS90dd6f89c1df_char_overallperf_neg", - "desc": "Overall, which option performed worst?" - }, - { - "type": "Performance", - "name": "ASS90dd6f89c1df_perf_overallchar_1", - "desc": "Overall, whichone is best A or what you usually use?" - }, - { - "type": "Performance", - "name": "ASS90dd6f89c1df_perf_overallchar_2", - "desc": "Overall, whichone is best B or what you usually use?" - }, - { - "type": "Performance", - "name": "ASS90dd6f89c1df_perf_overallchar_3", - "desc": "Overall, whichone is best C or what you usually use?" - }, - { - "type": "Characteristic", - "name": "ASS90dd6f89c1df_char_love_pos", - "desc": "Which color is most associated with love?" - }, - { - "type": "Characteristic", - "name": "ASS90dd6f89c1df_char_love_neg", - "desc": "Which color is least associated with love?" - } - ], - "data": [ - { - "REG_surveyid": "11c8b0a8-2287-4e92-9b35-5a123193842a", - "REG_originid": "ODKTOOLS", - "REG__submitted_by": "milindi", - "REG__submitted_date": "2020-05-05 11:51:36", - "REG__geopoint": null, - "REG_clm_deviceimei": "355680103603783", - "REG_clm_start": "2020-05-05 14:47:21", - "REG_qst162": "1", - "REG_farmername": "Silver t", - "REG_village": "kasangati", - "REG_farmsize": "5.000", - "REG_farmgoelocation": "0.4336109 32.6017784 0.0 899.999", - "REG_gender": 1, - "REG_clm_end": "2020-05-05 14:50:36", - "REG_rowuuid": "20ff1b80-5ffa-4909-b255-d50b131a6118", - "ASS90dd6f89c1df_surveyid": "fe0e3308-773e-43e8-ba00-9cba14212813", - "ASS90dd6f89c1df_originid": "ODKTOOLS", - "ASS90dd6f89c1df__submitted_by": "milindi", - "ASS90dd6f89c1df__submitted_date": "2020-05-05 12:12:44", - "ASS90dd6f89c1df__geopoint": null, - "ASS90dd6f89c1df_clm_deviceimei": "355680103603783", - "ASS90dd6f89c1df_clm_start": "2020-05-05 15:07:27", - "ASS90dd6f89c1df_qst163": 1, - "ASS90dd6f89c1df_cal_qst163": "P:1-Silver t-kasangati", - "ASS90dd6f89c1df_char_overallperf_pos": 1, - "ASS90dd6f89c1df_char_overallperf_neg": 3, - "ASS90dd6f89c1df_perf_overallchar_1": 1, - "ASS90dd6f89c1df_perf_overallchar_2": 2, - "ASS90dd6f89c1df_perf_overallchar_3": 2, - "ASS90dd6f89c1df_char_love_pos": 1, - "ASS90dd6f89c1df_char_love_neg": 3, - "ASS90dd6f89c1df_clm_end": "2020-05-05 15:12:32", - "ASS90dd6f89c1df_rowuuid": "db146cd5-4886-49a8-93b7-0f39545bf744" - }, - { - "REG_surveyid": "8ba77174-6725-48fa-bc73-74e6bc9a7fac", - "REG_originid": "ODKTOOLS", - "REG__submitted_by": "milindi", - "REG__submitted_date": "2020-05-05 11:50:55", - "REG__geopoint": null, - "REG_clm_deviceimei": "444914fd8340ef85", - "REG_clm_start": "2020-05-05 13:45:33", - "REG_qst162": "10", - "REG_farmername": "John", - "REG_village": "Muhanga", - "REG_farmsize": "1.200", - "REG_farmgoelocation": "-2.070498 29.72448347 1883.9697265625 11.883912", - "REG_gender": 1, - "REG_clm_end": "2020-05-05 13:50:39", - "REG_rowuuid": "27dfad95-4f55-491c-9a3b-e26127777c5c", - "ASS90dd6f89c1df_surveyid": null, - "ASS90dd6f89c1df_originid": null, - "ASS90dd6f89c1df__submitted_by": null, - "ASS90dd6f89c1df__submitted_date": null, - "ASS90dd6f89c1df__geopoint": null, - "ASS90dd6f89c1df_clm_deviceimei": null, - "ASS90dd6f89c1df_clm_start": null, - "ASS90dd6f89c1df_qst163": null, - "ASS90dd6f89c1df_cal_qst163": null, - "ASS90dd6f89c1df_char_overallperf_pos": null, - "ASS90dd6f89c1df_char_overallperf_neg": null, - "ASS90dd6f89c1df_perf_overallchar_1": null, - "ASS90dd6f89c1df_perf_overallchar_2": null, - "ASS90dd6f89c1df_perf_overallchar_3": null, - "ASS90dd6f89c1df_char_love_pos": null, - "ASS90dd6f89c1df_char_love_neg": null, - "ASS90dd6f89c1df_clm_end": null, - "ASS90dd6f89c1df_rowuuid": null - }, - { - "REG_surveyid": "17920ce9-ef84-40a8-bf30-a1f7e4be2390", - "REG_originid": "ODKTOOLS", - "REG__submitted_by": "rhysmanners", - "REG__submitted_date": "2020-05-05 11:57:00", - "REG__geopoint": null, - "REG_clm_deviceimei": "356377085630608", - "REG_clm_start": "2020-05-05 12:09:12", - "REG_qst162": "11", - "REG_farmername": "John", - "REG_village": "Doe", - "REG_farmsize": "0.020", - "REG_farmgoelocation": "-1.982940905727446 30.121918860822916 1383.0 15.0", - "REG_gender": 1, - "REG_clm_end": "2020-05-05 13:55:03", - "REG_rowuuid": "af92bf2b-53fd-4ce4-b014-97aaa6b433a1", - "ASS90dd6f89c1df_surveyid": "a4467759-046d-4f22-90b2-9bb674aaad2b", - "ASS90dd6f89c1df_originid": "ODKTOOLS", - "ASS90dd6f89c1df__submitted_by": "rhysmanners", - "ASS90dd6f89c1df__submitted_date": "2020-05-05 12:14:00", - "ASS90dd6f89c1df__geopoint": null, - "ASS90dd6f89c1df_clm_deviceimei": "356377085630608", - "ASS90dd6f89c1df_clm_start": "2020-05-05 14:11:08", - "ASS90dd6f89c1df_qst163": 11, - "ASS90dd6f89c1df_cal_qst163": "P:11-John-Doe", - "ASS90dd6f89c1df_char_overallperf_pos": 2, - "ASS90dd6f89c1df_char_overallperf_neg": 1, - "ASS90dd6f89c1df_perf_overallchar_1": 1, - "ASS90dd6f89c1df_perf_overallchar_2": 2, - "ASS90dd6f89c1df_perf_overallchar_3": 2, - "ASS90dd6f89c1df_char_love_pos": 2, - "ASS90dd6f89c1df_char_love_neg": 1, - "ASS90dd6f89c1df_clm_end": "2020-05-05 14:12:05", - "ASS90dd6f89c1df_rowuuid": "c037b1f4-13f9-4612-8e48-421c4d4c6704" - }, - { - "REG_surveyid": "bbb7c269-d5c4-42cd-93d0-2f5c1f03eeeb", - "REG_originid": "ODKTOOLS", - "REG__submitted_by": "milindi", - "REG__submitted_date": "2020-05-05 11:38:00", - "REG__geopoint": null, - "REG_clm_deviceimei": "355675080260185", - "REG_clm_start": "2020-05-05 13:30:09", - "REG_qst162": "13", - "REG_farmername": "Giaco", - "REG_village": "Ruben", - "REG_farmsize": "0.010", - "REG_farmgoelocation": "-2.0585307 29.39987623 1647.0 4.288", - "REG_gender": 1, - "REG_clm_end": "2020-05-05 13:37:43", - "REG_rowuuid": "306a6f8f-1b9b-4715-96ec-dfdefc9b632c", - "ASS90dd6f89c1df_surveyid": "ef36e80a-229d-46c2-9200-948123f69305", - "ASS90dd6f89c1df_originid": "ODKTOOLS", - "ASS90dd6f89c1df__submitted_by": "milindi", - "ASS90dd6f89c1df__submitted_date": "2020-05-05 12:09:38", - "ASS90dd6f89c1df__geopoint": null, - "ASS90dd6f89c1df_clm_deviceimei": "355675080260185", - "ASS90dd6f89c1df_clm_start": "2020-05-05 14:05:12", - "ASS90dd6f89c1df_qst163": 13, - "ASS90dd6f89c1df_cal_qst163": "P:13-Giaco-Ruben", - "ASS90dd6f89c1df_char_overallperf_pos": 2, - "ASS90dd6f89c1df_char_overallperf_neg": 1, - "ASS90dd6f89c1df_perf_overallchar_1": 2, - "ASS90dd6f89c1df_perf_overallchar_2": 1, - "ASS90dd6f89c1df_perf_overallchar_3": 2, - "ASS90dd6f89c1df_char_love_pos": 2, - "ASS90dd6f89c1df_char_love_neg": 1, - "ASS90dd6f89c1df_clm_end": "2020-05-05 14:09:30", - "ASS90dd6f89c1df_rowuuid": "e80bc8e8-0365-46b3-af41-a31743f75f88" - }, - { - "REG_surveyid": "77f14eae-b235-43d4-9a24-262649080551", - "REG_originid": "ODKTOOLS", - "REG__submitted_by": "milindi", - "REG__submitted_date": "2020-05-05 11:53:30", - "REG__geopoint": null, - "REG_clm_deviceimei": "357105105266338", - "REG_clm_start": "2020-05-05 13:51:48", - "REG_qst162": "14", - "REG_farmername": "Habimana paul", - "REG_village": "Ruhina", - "REG_farmsize": "2.000", - "REG_farmgoelocation": "-2.0704609 29.72469485 1890.736328125 6.575768", - "REG_gender": 1, - "REG_clm_end": "2020-05-05 13:53:19", - "REG_rowuuid": "a09cd08e-43ce-4b75-8041-2f7c22526d45", - "ASS90dd6f89c1df_surveyid": null, - "ASS90dd6f89c1df_originid": null, - "ASS90dd6f89c1df__submitted_by": null, - "ASS90dd6f89c1df__submitted_date": null, - "ASS90dd6f89c1df__geopoint": null, - "ASS90dd6f89c1df_clm_deviceimei": null, - "ASS90dd6f89c1df_clm_start": null, - "ASS90dd6f89c1df_qst163": null, - "ASS90dd6f89c1df_cal_qst163": null, - "ASS90dd6f89c1df_char_overallperf_pos": null, - "ASS90dd6f89c1df_char_overallperf_neg": null, - "ASS90dd6f89c1df_perf_overallchar_1": null, - "ASS90dd6f89c1df_perf_overallchar_2": null, - "ASS90dd6f89c1df_perf_overallchar_3": null, - "ASS90dd6f89c1df_char_love_pos": null, - "ASS90dd6f89c1df_char_love_neg": null, - "ASS90dd6f89c1df_clm_end": null, - "ASS90dd6f89c1df_rowuuid": null - }, - { - "REG_surveyid": "9d6bfd12-9e3a-46ec-92d2-5b5b939409f4", - "REG_originid": "ODKTOOLS", - "REG__submitted_by": "milindi", - "REG__submitted_date": "2020-05-05 11:58:21", - "REG__geopoint": null, - "REG_clm_deviceimei": "359939093998645", - "REG_clm_start": "2020-05-05 14:51:15", - "REG_qst162": "15", - "REG_farmername": "Rogers", - "REG_village": "Addis", - "REG_farmsize": "1.000", - "REG_farmgoelocation": "9.014968333333334 38.814481666666666 2234.7 6.0", - "REG_gender": 1, - "REG_clm_end": "2020-05-05 14:57:32", - "REG_rowuuid": "e66f8d6d-6509-4730-834b-e1d413860668", - "ASS90dd6f89c1df_surveyid": "dbf72071-4b15-43da-9112-ca9cf7acb756", - "ASS90dd6f89c1df_originid": "ODKTOOLS", - "ASS90dd6f89c1df__submitted_by": "milindi", - "ASS90dd6f89c1df__submitted_date": "2020-05-05 12:15:20", - "ASS90dd6f89c1df__geopoint": null, - "ASS90dd6f89c1df_clm_deviceimei": "359939093998645", - "ASS90dd6f89c1df_clm_start": "2020-05-05 15:06:55", - "ASS90dd6f89c1df_qst163": 15, - "ASS90dd6f89c1df_cal_qst163": "P:15-Rogers-Addis", - "ASS90dd6f89c1df_char_overallperf_pos": 3, - "ASS90dd6f89c1df_char_overallperf_neg": 1, - "ASS90dd6f89c1df_perf_overallchar_1": 1, - "ASS90dd6f89c1df_perf_overallchar_2": 1, - "ASS90dd6f89c1df_perf_overallchar_3": 2, - "ASS90dd6f89c1df_char_love_pos": 3, - "ASS90dd6f89c1df_char_love_neg": 1, - "ASS90dd6f89c1df_clm_end": "2020-05-05 15:13:04", - "ASS90dd6f89c1df_rowuuid": "dddc21da-883e-4b9e-aa32-ec2c80d1a14f" - }, - { - "REG_surveyid": "1da1b626-25bd-4d81-92c9-89ca51987be6", - "REG_originid": "ODKTOOLS", - "REG__submitted_by": "rhysmanners", - "REG__submitted_date": "2020-05-05 11:32:25", - "REG__geopoint": null, - "REG_clm_deviceimei": "352222081878195", - "REG_clm_start": "2020-05-05 14:29:16", - "REG_qst162": "17", - "REG_farmername": "Benson", - "REG_village": "Uthiru", - "REG_farmsize": "1.200", - "REG_farmgoelocation": "-1.2608013907447457 36.70913100242615 1905.0 19.0", - "REG_gender": 1, - "REG_clm_end": "2020-05-05 14:32:02", - "REG_rowuuid": "19c7c806-bf60-433f-a85b-a6bf91e9c179", - "ASS90dd6f89c1df_surveyid": "a29485f6-7d87-44a7-884b-529d2a24d5be", - "ASS90dd6f89c1df_originid": "ODKTOOLS", - "ASS90dd6f89c1df__submitted_by": "rhysmanners", - "ASS90dd6f89c1df__submitted_date": "2020-05-05 12:05:02", - "ASS90dd6f89c1df__geopoint": null, - "ASS90dd6f89c1df_clm_deviceimei": "352222081878195", - "ASS90dd6f89c1df_clm_start": "2020-05-05 15:03:45", - "ASS90dd6f89c1df_qst163": 17, - "ASS90dd6f89c1df_cal_qst163": "P:17-Benson-Uthiru", - "ASS90dd6f89c1df_char_overallperf_pos": 1, - "ASS90dd6f89c1df_char_overallperf_neg": 2, - "ASS90dd6f89c1df_perf_overallchar_1": 1, - "ASS90dd6f89c1df_perf_overallchar_2": 2, - "ASS90dd6f89c1df_perf_overallchar_3": 2, - "ASS90dd6f89c1df_char_love_pos": 1, - "ASS90dd6f89c1df_char_love_neg": 2, - "ASS90dd6f89c1df_clm_end": "2020-05-05 15:04:50", - "ASS90dd6f89c1df_rowuuid": "8bb06d6c-dd36-4859-9ff9-86d06ad0b6af" - }, - { - "REG_surveyid": "50453a12-0318-4e65-8476-33e82db4e2b4", - "REG_originid": "ODKTOOLS", - "REG__submitted_by": "rhysmanners", - "REG__submitted_date": "2020-05-05 11:23:21", - "REG__geopoint": null, - "REG_clm_deviceimei": "b2ac9ee0556585e3", - "REG_clm_start": "2020-05-05 13:21:46", - "REG_qst162": "20", - "REG_farmername": "Jacob van Etten", - "REG_village": "Espartinas", - "REG_farmsize": "20.000", - "REG_farmgoelocation": "37.388334404730905 -6.165601313770893 191.81579795312288 6.0", - "REG_gender": 1, - "REG_clm_end": "2020-05-05 13:23:08", - "REG_rowuuid": "b438dea3-c0b0-489c-8e0b-44b42f8120a8", - "ASS90dd6f89c1df_surveyid": "d3757560-424b-449b-bd58-2d75f5d19e93", - "ASS90dd6f89c1df_originid": "ODKTOOLS", - "ASS90dd6f89c1df__submitted_by": "rhysmanners", - "ASS90dd6f89c1df__submitted_date": "2020-05-05 12:10:02", - "ASS90dd6f89c1df__geopoint": null, - "ASS90dd6f89c1df_clm_deviceimei": "b2ac9ee0556585e3", - "ASS90dd6f89c1df_clm_start": "2020-05-05 14:07:36", - "ASS90dd6f89c1df_qst163": 20, - "ASS90dd6f89c1df_cal_qst163": "P:20-Jacob van Etten-Espartinas", - "ASS90dd6f89c1df_char_overallperf_pos": 2, - "ASS90dd6f89c1df_char_overallperf_neg": 1, - "ASS90dd6f89c1df_perf_overallchar_1": 2, - "ASS90dd6f89c1df_perf_overallchar_2": 1, - "ASS90dd6f89c1df_perf_overallchar_3": 2, - "ASS90dd6f89c1df_char_love_pos": 3, - "ASS90dd6f89c1df_char_love_neg": 1, - "ASS90dd6f89c1df_clm_end": "2020-05-05 14:09:42", - "ASS90dd6f89c1df_rowuuid": "9cfabc10-e93b-4216-9284-37d087de719e" - }, - { - "REG_surveyid": "01c490fb-d7c1-47ce-88ed-ee61dab5d15d", - "REG_originid": "ODKTOOLS", - "REG__submitted_by": "milindi", - "REG__submitted_date": "2020-05-05 11:50:30", - "REG__geopoint": null, - "REG_clm_deviceimei": "352948096986579", - "REG_clm_start": "2020-05-05 13:35:05", - "REG_qst162": "21", - "REG_farmername": "Rhys", - "REG_village": "Gacuriro", - "REG_farmsize": "0.100", - "REG_farmgoelocation": "-1.9189234 30.0959115 1487.0 12.5", - "REG_gender": 1, - "REG_clm_end": "2020-05-05 13:36:53", - "REG_rowuuid": "f6a816d5-4e6e-48e6-86c9-15658cfbea6d", - "ASS90dd6f89c1df_surveyid": "f586225e-3758-48e4-a109-64a52ff8fcec", - "ASS90dd6f89c1df_originid": "ODKTOOLS", - "ASS90dd6f89c1df__submitted_by": "milindi", - "ASS90dd6f89c1df__submitted_date": "2020-05-05 12:06:32", - "ASS90dd6f89c1df__geopoint": null, - "ASS90dd6f89c1df_clm_deviceimei": "352948096986579", - "ASS90dd6f89c1df_clm_start": "2020-05-05 14:05:08", - "ASS90dd6f89c1df_qst163": 21, - "ASS90dd6f89c1df_cal_qst163": "P:21-Rhys-Gacuriro", - "ASS90dd6f89c1df_char_overallperf_pos": 2, - "ASS90dd6f89c1df_char_overallperf_neg": 3, - "ASS90dd6f89c1df_perf_overallchar_1": 1, - "ASS90dd6f89c1df_perf_overallchar_2": 1, - "ASS90dd6f89c1df_perf_overallchar_3": 2, - "ASS90dd6f89c1df_char_love_pos": 1, - "ASS90dd6f89c1df_char_love_neg": 3, - "ASS90dd6f89c1df_clm_end": "2020-05-05 14:06:26", - "ASS90dd6f89c1df_rowuuid": "c06690c0-0ad8-4de1-a2fc-b3a4250c13e7" - }, - { - "REG_surveyid": "8a940f31-bc22-486d-99ec-81a543d4323f", - "REG_originid": "ODKTOOLS", - "REG__submitted_by": "milindi", - "REG__submitted_date": "2020-05-05 11:56:24", - "REG__geopoint": null, - "REG_clm_deviceimei": "357103075257791", - "REG_clm_start": "2020-05-05 14:49:22", - "REG_qst162": "3", - "REG_farmername": "Things Mendes", - "REG_village": "Kilimani", - "REG_farmsize": "170.000", - "REG_farmgoelocation": "-1.2881073 36.79013 1749.7999267578125 19.425", - "REG_gender": 1, - "REG_clm_end": "2020-05-05 14:55:17", - "REG_rowuuid": "e077c441-34c4-4131-9ee8-df05da0c19f3", - "ASS90dd6f89c1df_surveyid": "7a5dd847-0974-476b-822c-2d2a8a74d501", - "ASS90dd6f89c1df_originid": "ODKTOOLS", - "ASS90dd6f89c1df__submitted_by": "milindi", - "ASS90dd6f89c1df__submitted_date": "2020-05-05 12:11:38", - "ASS90dd6f89c1df__geopoint": null, - "ASS90dd6f89c1df_clm_deviceimei": "357103075257791", - "ASS90dd6f89c1df_clm_start": "2020-05-05 15:04:38", - "ASS90dd6f89c1df_qst163": 3, - "ASS90dd6f89c1df_cal_qst163": "P:3-Things Mendes-Kilimani", - "ASS90dd6f89c1df_char_overallperf_pos": 3, - "ASS90dd6f89c1df_char_overallperf_neg": 2, - "ASS90dd6f89c1df_perf_overallchar_1": 2, - "ASS90dd6f89c1df_perf_overallchar_2": 2, - "ASS90dd6f89c1df_perf_overallchar_3": 1, - "ASS90dd6f89c1df_char_love_pos": 2, - "ASS90dd6f89c1df_char_love_neg": 3, - "ASS90dd6f89c1df_clm_end": "2020-05-05 15:11:22", - "ASS90dd6f89c1df_rowuuid": "ccc9803c-cfc6-4cbe-89d6-66fd281bdc38" - }, - { - "REG_surveyid": "8c74e97e-201d-4c63-a7bf-00adc8f92645", - "REG_originid": "ODKTOOLS", - "REG__submitted_by": "rhysmanners", - "REG__submitted_date": "2020-05-05 11:35:32", - "REG__geopoint": null, - "REG_clm_deviceimei": "359116089634522", - "REG_clm_start": "2020-05-05 13:17:30", - "REG_qst162": "4", - "REG_farmername": "Elke Vandamme", - "REG_village": "Kigali", - "REG_farmsize": "1.000", - "REG_farmgoelocation": "-1.9416153973592374 30.131733580686998 1497.158272503895 8.0", - "REG_gender": 2, - "REG_clm_end": "2020-05-05 13:35:24", - "REG_rowuuid": "2924b912-6356-490f-a0ae-1f713353b4a5", - "ASS90dd6f89c1df_surveyid": "c4180ee3-e4db-422d-bf86-03d445155528", - "ASS90dd6f89c1df_originid": "ODKTOOLS", - "ASS90dd6f89c1df__submitted_by": "rhysmanners", - "ASS90dd6f89c1df__submitted_date": "2020-05-05 12:06:43", - "ASS90dd6f89c1df__geopoint": null, - "ASS90dd6f89c1df_clm_deviceimei": "359116089634522", - "ASS90dd6f89c1df_clm_start": "2020-05-05 14:04:18", - "ASS90dd6f89c1df_qst163": 4, - "ASS90dd6f89c1df_cal_qst163": "P:4-Elke Vandamme-Kigali", - "ASS90dd6f89c1df_char_overallperf_pos": 3, - "ASS90dd6f89c1df_char_overallperf_neg": 2, - "ASS90dd6f89c1df_perf_overallchar_1": 2, - "ASS90dd6f89c1df_perf_overallchar_2": 2, - "ASS90dd6f89c1df_perf_overallchar_3": 2, - "ASS90dd6f89c1df_char_love_pos": 3, - "ASS90dd6f89c1df_char_love_neg": 2, - "ASS90dd6f89c1df_clm_end": "2020-05-05 14:06:35", - "ASS90dd6f89c1df_rowuuid": "7a3d978f-eb1f-4bf7-b011-7e3ca18ef12d" - }, - { - "REG_surveyid": "3f9b204f-fd80-4ac4-8ae6-efd3272c9e65", - "REG_originid": "ODKTOOLS", - "REG__submitted_by": "milindi", - "REG__submitted_date": "2020-05-05 11:44:21", - "REG__geopoint": null, - "REG_clm_deviceimei": "352085097950294", - "REG_clm_start": "2020-05-05 13:41:08", - "REG_qst162": "6", - "REG_farmername": "Hyacinthe", - "REG_village": "Kabuye", - "REG_farmsize": "5.500", - "REG_farmgoelocation": "-1.8905753083527088 30.062303999438882 1448.0 25.0", - "REG_gender": 2, - "REG_clm_end": "2020-05-05 13:43:59", - "REG_rowuuid": "cfcde458-5357-4cd6-9b42-85157fe275a7", - "ASS90dd6f89c1df_surveyid": "d545dc2b-0103-4425-882b-9d48645dbcf6", - "ASS90dd6f89c1df_originid": "ODKTOOLS", - "ASS90dd6f89c1df__submitted_by": "milindi", - "ASS90dd6f89c1df__submitted_date": "2020-05-05 12:13:06", - "ASS90dd6f89c1df__geopoint": null, - "ASS90dd6f89c1df_clm_deviceimei": "352085097950294", - "ASS90dd6f89c1df_clm_start": "2020-05-05 14:07:43", - "ASS90dd6f89c1df_qst163": 6, - "ASS90dd6f89c1df_cal_qst163": "P:6-Hyacinthe-Kabuye", - "ASS90dd6f89c1df_char_overallperf_pos": 1, - "ASS90dd6f89c1df_char_overallperf_neg": 2, - "ASS90dd6f89c1df_perf_overallchar_1": 1, - "ASS90dd6f89c1df_perf_overallchar_2": 2, - "ASS90dd6f89c1df_perf_overallchar_3": 1, - "ASS90dd6f89c1df_char_love_pos": 2, - "ASS90dd6f89c1df_char_love_neg": 3, - "ASS90dd6f89c1df_clm_end": "2020-05-05 14:12:49", - "ASS90dd6f89c1df_rowuuid": "beaca453-6bb3-43f8-81fa-f88a2a038ced" - }, - { - "REG_surveyid": "3f8e8149-1f74-4a08-8c84-2cdb6e3206ad", - "REG_originid": "ODKTOOLS", - "REG__submitted_by": "rhysmanners", - "REG__submitted_date": "2020-05-05 11:50:38", - "REG__geopoint": null, - "REG_clm_deviceimei": "355978092352044", - "REG_clm_start": "2020-05-05 13:43:54", - "REG_qst162": "7", - "REG_farmername": "Rukundo Placide", - "REG_village": "Zindiro", - "REG_farmsize": "0.050", - "REG_farmgoelocation": "-1.9302766666666664 30.143393333333332 1513.9 6.6", - "REG_gender": 1, - "REG_clm_end": "2020-05-05 13:48:28", - "REG_rowuuid": "e8b2f020-5560-4f59-a2d9-e33f032ca559", - "ASS90dd6f89c1df_surveyid": "8389e57a-fa2b-4261-b390-96a0cc2ad6e1", - "ASS90dd6f89c1df_originid": "ODKTOOLS", - "ASS90dd6f89c1df__submitted_by": "rhysmanners", - "ASS90dd6f89c1df__submitted_date": "2020-05-05 12:10:54", - "ASS90dd6f89c1df__geopoint": null, - "ASS90dd6f89c1df_clm_deviceimei": "355978092352044", - "ASS90dd6f89c1df_clm_start": "2020-05-05 14:05:15", - "ASS90dd6f89c1df_qst163": 7, - "ASS90dd6f89c1df_cal_qst163": "P:7-Rukundo Placide-Zindiro", - "ASS90dd6f89c1df_char_overallperf_pos": 1, - "ASS90dd6f89c1df_char_overallperf_neg": 2, - "ASS90dd6f89c1df_perf_overallchar_1": 1, - "ASS90dd6f89c1df_perf_overallchar_2": 2, - "ASS90dd6f89c1df_perf_overallchar_3": 1, - "ASS90dd6f89c1df_char_love_pos": 2, - "ASS90dd6f89c1df_char_love_neg": 1, - "ASS90dd6f89c1df_clm_end": "2020-05-05 14:10:16", - "ASS90dd6f89c1df_rowuuid": "58844cac-fda7-4f52-90df-f6bbc2ae689e" - } - ], - "importantfields": [ - { - "type": "PackageID", - "field": "REG_QST162", - "desc": "Package ID" - }, - { - "type": "FarmerName", - "field": "REG_farmername", - "desc": "Name of registered farmer" - }, - { - "type": "OverallCharPos", - "field": "ASS90dd6f89c1df_char_overallperf_pos", - "desc": "Over all characteristic positive" - }, - { - "type": "OverallCharNeg", - "field": "ASS90dd6f89c1df_char_overallperf_neg", - "desc": "Over all characteristic negative" - }, - { - "type": "OverallPerf1", - "field": "ASS90dd6f89c1df_perf_overallchar_1", - "desc": "Over all performance of A against current" - }, - { - "type": "OverallPerf2", - "field": "ASS90dd6f89c1df_perf_overallchar_2", - "desc": "Over all performance of B against current" - }, - { - "type": "OverallPerf3", - "field": "ASS90dd6f89c1df_perf_overallchar_3", - "desc": "Over all performance of C against current" - } - ] -} \ No newline at end of file diff --git a/dev/data/CTI2020/data.json b/dev/data/CTI2020/data.json deleted file mode 100644 index 85b930e..0000000 --- a/dev/data/CTI2020/data.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "Characteristics": [ - - { - "name": "Overall Characteristic", - "id": 204, - "vars": [ - { - "name": "ASSaaa80f9da753_char_overallperf_pos" - }, - { - "name": "ASSaaa80f9da753_char_overallperf_neg" - } - ] - } - ], - "Performance": [ - { - "name": "Overall performace", - "id": 205, - "vars": [ - { - "name": "ASSaaa80f9da753_perf_overallchar_1" - }, - { - "name": "ASSaaa80f9da753_perf_overallchar_2" - }, - { - "name": "ASSaaa80f9da753_perf_overallchar_3" - } - ] - } - ], - "Explanatory": [] -} \ No newline at end of file diff --git a/dev/data/CTI2020/info.json b/dev/data/CTI2020/info.json deleted file mode 100644 index 4fed9ef..0000000 --- a/dev/data/CTI2020/info.json +++ /dev/null @@ -1,1068 +0,0 @@ -{ - "project": { - "user_name": "jacobvanetten", - "project_cod": "CTI2020", - "project_name": "Colours Training India 2020", - "project_abstract": "An exercise to show how ClimMob can be used.", - "project_tags": "colours,India,preferences,gender,age", - "project_pi": "Jacob van Etten", - "project_piemail": "j.vanetten@cgiar.org", - "project_active": 1, - "project_public": 0, - "project_dashboard": 1, - "project_regstatus": 2, - "project_assstatus": 0, - "project_createcomb": 0, - "project_createpkgs": 0, - "project_numobs": 40, - "project_numcom": 3, - "project_lat": "", - "project_lon": "", - "project_creationdate": "2020-06-26 03:15:05", - "project_localvariety": 1, - "extra": null - }, - "registry": { - "lkptables": [ - { - "name": "REG_lkpgender1", - "desc": "Lookup table (What is your gender?)", - "fields": [ - { - "name": "gender1_cod", - "desc": "Code", - "key": "true" - }, - { - "name": "gender1_des", - "desc": "Description", - "key": null - } - ], - "values": [ - { - "gender1_cod": "Man", - "gender1_des": "Man" - }, - { - "gender1_cod": "Woman", - "gender1_des": "Woman" - } - ] - } - ], - "fields": [ - { - "name": "surveyid", - "odktype": "", - "desc": "Submission ID", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "originid", - "odktype": "", - "desc": "Origin", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "_submitted_by", - "odktype": "text", - "desc": "Submitted by", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "_submitted_date", - "odktype": "datetime", - "desc": "Submitted date", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "_geopoint", - "odktype": "geopoint", - "desc": "GPS point", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "clm_deviceimei", - "odktype": "deviceid", - "desc": "Device IMEI", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "clm_start", - "odktype": "start", - "desc": "Start of survey", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "qst162", - "odktype": "barcode", - "desc": "Package code", - "key": "true", - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "farmername", - "odktype": "text", - "desc": "Farmer name", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "age1", - "odktype": "integer", - "desc": "What is your age?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "gender1", - "odktype": "select_one gender1_opts", - "desc": "What is your gender?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "REG_lkpgender1", - "rfield": "gender1_cod" - }, - { - "name": "farmgoelocation", - "odktype": "geopoint", - "desc": "Farm Geolocation", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "clm_end", - "odktype": "end", - "desc": "End of survey", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "rowuuid", - "odktype": "", - "desc": "Unique Row Identifier (UUID)", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - } - ] - }, - "assessments": [ - { - "code": "aaa80f9da753", - "desc": "Final evaluation", - "lkptables": [ - { - "name": "ASSaaa80f9da753_lkpqst163", - "desc": "Lookup table (Select the farmer)", - "fields": [ - { - "name": "qst163_cod", - "desc": "Code", - "key": "true" - }, - { - "name": "qst163_des", - "desc": "Description", - "key": null - } - ], - "values": [ - { - "qst163_cod": 1, - "qst163_des": "P:1-Dr Kakani" - }, - { - "qst163_cod": 11, - "qst163_des": "P:11-Deepak Sharma" - }, - { - "qst163_cod": 12, - "qst163_des": "P:12-Satyapal Singh" - }, - { - "qst163_cod": 19, - "qst163_des": "P:19-Himansha Bisht" - }, - { - "qst163_cod": 21, - "qst163_des": "P:21-Mamta Arya" - }, - { - "qst163_cod": 32, - "qst163_des": "P:32-Prem Mathur" - }, - { - "qst163_cod": 33, - "qst163_des": "P:33-Jacob van Etten" - } - ] - }, - { - "name": "ASSaaa80f9da753_lkpchar_love1_pos", - "desc": "Lookup table (Which is most associated with love?)", - "fields": [ - { - "name": "char_love1_pos_cod", - "desc": "Code", - "key": "true" - }, - { - "name": "char_love1_pos_des", - "desc": "Description", - "key": null - } - ], - "values": [ - { - "char_love1_pos_cod": 1, - "char_love1_pos_des": "Option A" - }, - { - "char_love1_pos_cod": 2, - "char_love1_pos_des": "Option B" - }, - { - "char_love1_pos_cod": 3, - "char_love1_pos_des": "Option C" - } - ] - }, - { - "name": "ASSaaa80f9da753_lkpperf_overallchar_1", - "desc": "Lookup table (Overall, whichone is best A or what you usually use?)", - "fields": [ - { - "name": "perf_overallchar_1_cod", - "desc": "Code", - "key": "true" - }, - { - "name": "perf_overallchar_1_des", - "desc": "Description", - "key": null - } - ], - "values": [ - { - "perf_overallchar_1_cod": 1, - "perf_overallchar_1_des": "Better" - }, - { - "perf_overallchar_1_cod": 2, - "perf_overallchar_1_des": "Worst" - } - ] - } - ], - "fields": [ - { - "name": "surveyid", - "odktype": "", - "desc": "Submission ID", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "originid", - "odktype": "", - "desc": "Origin", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "_submitted_by", - "odktype": "text", - "desc": "Submitted by", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "_submitted_date", - "odktype": "datetime", - "desc": "Submitted date", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "_geopoint", - "odktype": "geopoint", - "desc": "GPS point", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "clm_deviceimei", - "odktype": "deviceid", - "desc": "Device IMEI", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "clm_start", - "odktype": "start", - "desc": "Start of survey", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "qst163", - "odktype": "select_one qst163_opts", - "desc": "Select the farmer", - "key": "true", - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASSaaa80f9da753_lkpqst163", - "rfield": "qst163_cod" - }, - { - "name": "cal_qst163", - "odktype": "calculate", - "desc": "", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "char_love1_pos", - "odktype": "select_one char_love1_pos_opts", - "desc": "Which is most associated with love?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASSaaa80f9da753_lkpchar_love1_pos", - "rfield": "char_love1_pos_cod" - }, - { - "name": "char_love1_neg", - "odktype": "select_one char_love1_neg_opts", - "desc": "Which is least associated with love?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASSaaa80f9da753_lkpchar_love1_pos", - "rfield": "char_love1_pos_cod" - }, - { - "name": "char_overallperf_pos", - "odktype": "select_one char_overallperf_pos_opts", - "desc": "Overall, which option performed better?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASSaaa80f9da753_lkpchar_love1_pos", - "rfield": "char_love1_pos_cod" - }, - { - "name": "char_overallperf_neg", - "odktype": "select_one char_overallperf_neg_opts", - "desc": "Overall, which option performed worst?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASSaaa80f9da753_lkpchar_love1_pos", - "rfield": "char_love1_pos_cod" - }, - { - "name": "perf_overallchar_1", - "odktype": "select_one perf_overallchar_1_opts", - "desc": "Overall, whichone is best A or what you usually use?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASSaaa80f9da753_lkpperf_overallchar_1", - "rfield": "perf_overallchar_1_cod" - }, - { - "name": "perf_overallchar_2", - "odktype": "select_one perf_overallchar_2_opts", - "desc": "Overall, whichone is best B or what you usually use?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASSaaa80f9da753_lkpperf_overallchar_1", - "rfield": "perf_overallchar_1_cod" - }, - { - "name": "perf_overallchar_3", - "odktype": "select_one perf_overallchar_3_opts", - "desc": "Overall, whichone is best C or what you usually use?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASSaaa80f9da753_lkpperf_overallchar_1", - "rfield": "perf_overallchar_1_cod" - }, - { - "name": "clm_end", - "odktype": "end", - "desc": "End of survey", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "rowuuid", - "odktype": "", - "desc": "Unique Row Identifier (UUID)", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - } - ] - } - ], - "packages": [ - { - "package_id": 1, - "farmername": "Dr Kakani", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Yellow" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "White" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Red" - } - ] - } - ] - }, - { - "package_id": 11, - "farmername": "Deepak Sharma", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Red" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Yellow" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Blue" - } - ] - } - ] - }, - { - "package_id": 12, - "farmername": "Satyapal Singh", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Yellow" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "White" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Black" - } - ] - } - ] - }, - { - "package_id": 19, - "farmername": "Himansha Bisht", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Red" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "White" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Blue" - } - ] - } - ] - }, - { - "package_id": 21, - "farmername": "Mamta Arya", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Blue" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Black" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Red" - } - ] - } - ] - }, - { - "package_id": 32, - "farmername": "Prem Mathur", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Red" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Black" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Blue" - } - ] - } - ] - }, - { - "package_id": 33, - "farmername": "Jacob van Etten", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "White" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Yellow" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Blue" - } - ] - } - ] - } - ], - "specialfields": [ - { - "type": "Characteristic", - "name": "ASSaaa80f9da753_char_love1_pos", - "desc": "Which is most associated with love?" - }, - { - "type": "Characteristic", - "name": "ASSaaa80f9da753_char_love1_neg", - "desc": "Which is least associated with love?" - }, - { - "type": "Characteristic", - "name": "ASSaaa80f9da753_char_overallperf_pos", - "desc": "Overall, which option performed better?" - }, - { - "type": "Characteristic", - "name": "ASSaaa80f9da753_char_overallperf_neg", - "desc": "Overall, which option performed worst?" - }, - { - "type": "Performance", - "name": "ASSaaa80f9da753_perf_overallchar_1", - "desc": "Overall, whichone is best A or what you usually use?" - }, - { - "type": "Performance", - "name": "ASSaaa80f9da753_perf_overallchar_2", - "desc": "Overall, whichone is best B or what you usually use?" - }, - { - "type": "Performance", - "name": "ASSaaa80f9da753_perf_overallchar_3", - "desc": "Overall, whichone is best C or what you usually use?" - } - ], - "data": [ - { - "REG_surveyid": "f13f159c-25bb-476e-b2a5-b5010cb8e572", - "REG_originid": "ODKTOOLS", - "REG__submitted_by": "jacob", - "REG__submitted_date": "2020-06-26 03:46:24", - "REG__geopoint": null, - "REG_clm_deviceimei": "869644020187386", - "REG_clm_start": "2020-06-26 15:05:06", - "REG_qst162": "1", - "REG_farmername": "Dr Kakani", - "REG_age1": 52, - "REG_gender1": "Man", - "REG_farmgoelocation": "26.2517298 72.9875769 0.0 1399.999", - "REG_clm_end": "2020-06-26 15:15:58", - "REG_rowuuid": "5260b97e-30fb-4f7d-bb6c-1a1ecf164f41", - "ASSaaa80f9da753_surveyid": "f41b7174-270f-4ae4-bf48-8ba2cabb4b1a", - "ASSaaa80f9da753_originid": "ODKTOOLS", - "ASSaaa80f9da753__submitted_by": "jacob", - "ASSaaa80f9da753__submitted_date": "2020-06-26 04:17:37", - "ASSaaa80f9da753__geopoint": null, - "ASSaaa80f9da753_clm_deviceimei": "869644020187386", - "ASSaaa80f9da753_clm_start": "2020-06-26 15:45:49", - "ASSaaa80f9da753_qst163": 1, - "ASSaaa80f9da753_cal_qst163": "P:1-Dr Kakani", - "ASSaaa80f9da753_char_love1_pos": 1, - "ASSaaa80f9da753_char_love1_neg": 3, - "ASSaaa80f9da753_char_overallperf_pos": 2, - "ASSaaa80f9da753_char_overallperf_neg": 3, - "ASSaaa80f9da753_perf_overallchar_1": 2, - "ASSaaa80f9da753_perf_overallchar_2": 1, - "ASSaaa80f9da753_perf_overallchar_3": 2, - "ASSaaa80f9da753_clm_end": "2020-06-26 15:47:27", - "ASSaaa80f9da753_rowuuid": "e20dbd8c-2278-4fe6-a56e-98c2d980517a" - }, - { - "REG_surveyid": "e932c1a7-0017-42f2-b14a-c33e873858ee", - "REG_originid": "ODKTOOLS", - "REG__submitted_by": "jacob", - "REG__submitted_date": "2020-06-26 03:51:33", - "REG__geopoint": null, - "REG_clm_deviceimei": "860998039271030", - "REG_clm_start": "2020-06-26 15:03:44", - "REG_qst162": "11", - "REG_farmername": "Deepak Sharma", - "REG_age1": 54, - "REG_gender1": "Man", - "REG_farmgoelocation": "21.234879999999997 81.716475 183.6 8.5", - "REG_clm_end": "2020-06-26 15:21:16", - "REG_rowuuid": "9dbeaf3b-678f-4eaa-8f9d-53d1ab3dff54", - "ASSaaa80f9da753_surveyid": "b7d7e861-79ce-4f8c-ac08-ccba78f59b2d", - "ASSaaa80f9da753_originid": "ODKTOOLS", - "ASSaaa80f9da753__submitted_by": "jacob", - "ASSaaa80f9da753__submitted_date": "2020-06-26 04:22:10", - "ASSaaa80f9da753__geopoint": null, - "ASSaaa80f9da753_clm_deviceimei": "860998039271030", - "ASSaaa80f9da753_clm_start": "2020-06-26 15:51:38", - "ASSaaa80f9da753_qst163": 11, - "ASSaaa80f9da753_cal_qst163": "P:11-Deepak Sharma", - "ASSaaa80f9da753_char_love1_pos": 2, - "ASSaaa80f9da753_char_love1_neg": 1, - "ASSaaa80f9da753_char_overallperf_pos": 2, - "ASSaaa80f9da753_char_overallperf_neg": 1, - "ASSaaa80f9da753_perf_overallchar_1": 2, - "ASSaaa80f9da753_perf_overallchar_2": 1, - "ASSaaa80f9da753_perf_overallchar_3": 2, - "ASSaaa80f9da753_clm_end": "2020-06-26 15:51:57", - "ASSaaa80f9da753_rowuuid": "805136e4-380c-4d00-acf4-10ff72d424fe" - }, - { - "REG_surveyid": "f1981bfe-b7b1-4df9-af2d-46b77c60ce84", - "REG_originid": "ODKTOOLS", - "REG__submitted_by": "jacob", - "REG__submitted_date": "2020-06-26 03:51:48", - "REG__geopoint": null, - "REG_clm_deviceimei": "863081043163324", - "REG_clm_start": "2020-06-26 15:18:25", - "REG_qst162": "12", - "REG_farmername": "Satyapal Singh", - "REG_age1": 34, - "REG_gender1": "Man", - "REG_farmgoelocation": "21.23461532 81.71575913 205.0 24.656", - "REG_clm_end": "2020-06-26 15:21:36", - "REG_rowuuid": "845c7149-7a44-45c4-aa71-9a1515bd3fae", - "ASSaaa80f9da753_surveyid": "bf752c0c-cb8a-4034-9602-2e03881d99a5", - "ASSaaa80f9da753_originid": "ODKTOOLS", - "ASSaaa80f9da753__submitted_by": "jacob", - "ASSaaa80f9da753__submitted_date": "2020-06-26 04:16:19", - "ASSaaa80f9da753__geopoint": null, - "ASSaaa80f9da753_clm_deviceimei": "863081043163324", - "ASSaaa80f9da753_clm_start": "2020-06-26 15:45:27", - "ASSaaa80f9da753_qst163": 12, - "ASSaaa80f9da753_cal_qst163": "P:12-Satyapal Singh", - "ASSaaa80f9da753_char_love1_pos": 2, - "ASSaaa80f9da753_char_love1_neg": 1, - "ASSaaa80f9da753_char_overallperf_pos": 3, - "ASSaaa80f9da753_char_overallperf_neg": 1, - "ASSaaa80f9da753_perf_overallchar_1": 1, - "ASSaaa80f9da753_perf_overallchar_2": 2, - "ASSaaa80f9da753_perf_overallchar_3": 1, - "ASSaaa80f9da753_clm_end": "2020-06-26 15:46:05", - "ASSaaa80f9da753_rowuuid": "6ba9a382-8366-4bb2-b824-8d24ebd4ea77" - }, - { - "REG_surveyid": "d9235055-4028-494c-b12e-4622e10ec396", - "REG_originid": "ODKTOOLS", - "REG__submitted_by": "jacob", - "REG__submitted_date": "2020-06-26 03:46:56", - "REG__geopoint": null, - "REG_clm_deviceimei": "869950041258431", - "REG_clm_start": "2020-06-26 15:05:57", - "REG_qst162": "19", - "REG_farmername": "Himansha Bisht", - "REG_age1": 28, - "REG_gender1": "Woman", - "REG_farmgoelocation": "29.344603333333332 79.56426666666667 1269.5 4.9", - "REG_clm_end": "2020-06-26 15:16:28", - "REG_rowuuid": "07abe05c-ff3e-4ce0-be22-fb500b6f8499", - "ASSaaa80f9da753_surveyid": "8e7e5877-f213-4ef1-8292-3803c64f366f", - "ASSaaa80f9da753_originid": "ODKTOOLS", - "ASSaaa80f9da753__submitted_by": "jacob", - "ASSaaa80f9da753__submitted_date": "2020-06-26 04:17:20", - "ASSaaa80f9da753__geopoint": null, - "ASSaaa80f9da753_clm_deviceimei": "869950041258431", - "ASSaaa80f9da753_clm_start": "2020-06-26 15:45:07", - "ASSaaa80f9da753_qst163": 19, - "ASSaaa80f9da753_cal_qst163": "P:19-Himansha Bisht", - "ASSaaa80f9da753_char_love1_pos": 1, - "ASSaaa80f9da753_char_love1_neg": 3, - "ASSaaa80f9da753_char_overallperf_pos": 1, - "ASSaaa80f9da753_char_overallperf_neg": 3, - "ASSaaa80f9da753_perf_overallchar_1": 1, - "ASSaaa80f9da753_perf_overallchar_2": 1, - "ASSaaa80f9da753_perf_overallchar_3": 1, - "ASSaaa80f9da753_clm_end": "2020-06-26 15:47:11", - "ASSaaa80f9da753_rowuuid": "5cb5bf0a-37e9-497d-ac01-89fa0451dd0d" - }, - { - "REG_surveyid": "2668af43-7384-4a5c-a03c-3070ba45d00b", - "REG_originid": "ODKTOOLS", - "REG__submitted_by": "jacob", - "REG__submitted_date": "2020-06-26 03:47:01", - "REG__geopoint": null, - "REG_clm_deviceimei": "d16e58cbc8aabeab", - "REG_clm_start": "2020-06-26 15:04:17", - "REG_qst162": "21", - "REG_farmername": "Mamta Arya", - "REG_age1": 35, - "REG_gender1": "Woman", - "REG_farmgoelocation": "29.384633372146585 79.51373986768118 1616.5989931077668 64.0", - "REG_clm_end": "2020-06-26 15:16:47", - "REG_rowuuid": "87a3e9d1-8d80-42aa-bbfc-5eebc451aedf", - "ASSaaa80f9da753_surveyid": "bec34c5f-c786-4627-8969-157b19c9e5cd", - "ASSaaa80f9da753_originid": "ODKTOOLS", - "ASSaaa80f9da753__submitted_by": "jacob", - "ASSaaa80f9da753__submitted_date": "2020-06-26 04:20:37", - "ASSaaa80f9da753__geopoint": null, - "ASSaaa80f9da753_clm_deviceimei": "d16e58cbc8aabeab", - "ASSaaa80f9da753_clm_start": "2020-06-26 15:44:16", - "ASSaaa80f9da753_qst163": 21, - "ASSaaa80f9da753_cal_qst163": "P:21-Mamta Arya", - "ASSaaa80f9da753_char_love1_pos": 1, - "ASSaaa80f9da753_char_love1_neg": 3, - "ASSaaa80f9da753_char_overallperf_pos": 1, - "ASSaaa80f9da753_char_overallperf_neg": 3, - "ASSaaa80f9da753_perf_overallchar_1": 1, - "ASSaaa80f9da753_perf_overallchar_2": 1, - "ASSaaa80f9da753_perf_overallchar_3": 2, - "ASSaaa80f9da753_clm_end": "2020-06-26 15:44:51", - "ASSaaa80f9da753_rowuuid": "67645e9b-085e-41fd-9708-079f68de304e" - }, - { - "REG_surveyid": "e72fcee0-7e72-4151-95e0-5f5b47137a41", - "REG_originid": "ODKTOOLS", - "REG__submitted_by": "jacob", - "REG__submitted_date": "2020-06-26 03:49:28", - "REG__geopoint": null, - "REG_clm_deviceimei": "cd25ef50663361c4", - "REG_clm_start": "2020-06-26 15:15:18", - "REG_qst162": "32", - "REG_farmername": "Prem Mathur", - "REG_age1": 71, - "REG_gender1": "Man", - "REG_farmgoelocation": "28.58689969405532 77.06790902651846 173.0 5.0", - "REG_clm_end": "2020-06-26 15:19:12", - "REG_rowuuid": "628ab435-6ae8-4053-ae34-a0f5c7268502", - "ASSaaa80f9da753_surveyid": "1200d572-9477-4a17-880e-8103367be9e6", - "ASSaaa80f9da753_originid": "ODKTOOLS", - "ASSaaa80f9da753__submitted_by": "jacob", - "ASSaaa80f9da753__submitted_date": "2020-06-26 04:18:33", - "ASSaaa80f9da753__geopoint": null, - "ASSaaa80f9da753_clm_deviceimei": "cd25ef50663361c4", - "ASSaaa80f9da753_clm_start": "2020-06-26 15:45:07", - "ASSaaa80f9da753_qst163": 32, - "ASSaaa80f9da753_cal_qst163": "P:32-Prem Mathur", - "ASSaaa80f9da753_char_love1_pos": 1, - "ASSaaa80f9da753_char_love1_neg": 2, - "ASSaaa80f9da753_char_overallperf_pos": 3, - "ASSaaa80f9da753_char_overallperf_neg": 2, - "ASSaaa80f9da753_perf_overallchar_1": 1, - "ASSaaa80f9da753_perf_overallchar_2": 2, - "ASSaaa80f9da753_perf_overallchar_3": 1, - "ASSaaa80f9da753_clm_end": "2020-06-26 15:47:56", - "ASSaaa80f9da753_rowuuid": "4448960c-267b-4bea-bd53-b5603daaf900" - }, - { - "REG_surveyid": "73a2808f-8011-4b5f-b517-a6393bdc9e30", - "REG_originid": "ODKTOOLS", - "REG__submitted_by": "jacob", - "REG__submitted_date": "2020-06-26 03:46:54", - "REG__geopoint": null, - "REG_clm_deviceimei": "b2ac9ee0556585e3", - "REG_clm_start": "2020-06-26 11:39:15", - "REG_qst162": "33", - "REG_farmername": "Jacob van Etten", - "REG_age1": 42, - "REG_gender1": "Man", - "REG_farmgoelocation": "37.3883685636541 -6.165582676847032 197.2848703005622 12.0", - "REG_clm_end": "2020-06-26 11:46:27", - "REG_rowuuid": "515dba48-5afa-4336-8405-5d325e588c96", - "ASSaaa80f9da753_surveyid": "f4ae0b46-a782-4485-91fa-83e35d476773", - "ASSaaa80f9da753_originid": "ODKTOOLS", - "ASSaaa80f9da753__submitted_by": "jacob", - "ASSaaa80f9da753__submitted_date": "2020-06-26 04:17:20", - "ASSaaa80f9da753__geopoint": null, - "ASSaaa80f9da753_clm_deviceimei": "b2ac9ee0556585e3", - "ASSaaa80f9da753_clm_start": "2020-06-26 12:15:04", - "ASSaaa80f9da753_qst163": 33, - "ASSaaa80f9da753_cal_qst163": "P:33-Jacob van Etten", - "ASSaaa80f9da753_char_love1_pos": 2, - "ASSaaa80f9da753_char_love1_neg": 3, - "ASSaaa80f9da753_char_overallperf_pos": 3, - "ASSaaa80f9da753_char_overallperf_neg": 2, - "ASSaaa80f9da753_perf_overallchar_1": 2, - "ASSaaa80f9da753_perf_overallchar_2": 2, - "ASSaaa80f9da753_perf_overallchar_3": 1, - "ASSaaa80f9da753_clm_end": "2020-06-26 12:17:03", - "ASSaaa80f9da753_rowuuid": "9838bf69-f08b-4588-8add-4c1d0fcfa4e4" - } - ], - "importantfields": [ - { - "type": "PackageID", - "field": "REG_QST162", - "desc": "Package ID" - }, - { - "type": "FarmerName", - "field": "REG_farmername", - "desc": "Name of registered farmer" - }, - { - "type": "OverallCharPos", - "field": "ASSaaa80f9da753_char_overallperf_pos", - "desc": "Over all characteristic positive" - }, - { - "type": "OverallCharNeg", - "field": "ASSaaa80f9da753_char_overallperf_neg", - "desc": "Over all characteristic negative" - }, - { - "type": "OverallPerf1", - "field": "ASSaaa80f9da753_perf_overallchar_1", - "desc": "Over all performance of A against current" - }, - { - "type": "OverallPerf2", - "field": "ASSaaa80f9da753_perf_overallchar_2", - "desc": "Over all performance of B against current" - }, - { - "type": "OverallPerf3", - "field": "ASSaaa80f9da753_perf_overallchar_3", - "desc": "Over all performance of C against current" - } - ] -} \ No newline at end of file diff --git a/dev/data/ColG/data.json b/dev/data/ColG/data.json deleted file mode 100644 index b5a838d..0000000 --- a/dev/data/ColG/data.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "Characteristics": [ - { - "name": "Overall Characteristic", - "id": 204, - "vars": [ - { - "name": "ASSbb39cf90c91c_char_overallperf_pos" - }, - { - "name": "ASSbb39cf90c91c_char_overallperf_neg" - } - ] - } - ], - "Performance": [ - { - "name": "Overall performace", - "id": 205, - "vars": [ - { - "name": "ASSbb39cf90c91c_perf_overallchar_1" - }, - { - "name": "ASSbb39cf90c91c_perf_overallchar_2" - }, - { - "name": "ASSbb39cf90c91c_perf_overallchar_3" - } - ] - } - ], - "Explanatory": [] -} \ No newline at end of file diff --git a/dev/data/ColG/info.json b/dev/data/ColG/info.json deleted file mode 100644 index 37780a8..0000000 --- a/dev/data/ColG/info.json +++ /dev/null @@ -1,1116 +0,0 @@ -{ - "project": { - "user_name": "jacobvanetten", - "project_cod": "ColG", - "project_name": "Colors Ghana", - "project_abstract": "Little test", - "project_tags": "color,test,course", - "project_pi": "Jacob van Etten", - "project_piemail": "j.vanetten@cgiar.org", - "project_active": 1, - "project_public": 0, - "project_dashboard": 1, - "project_regstatus": 2, - "project_assstatus": 0, - "project_createcomb": 0, - "project_createpkgs": 0, - "project_numobs": 20, - "project_numcom": 3, - "project_lat": "10.596611", - "project_lon": "-0.013403", - "project_creationdate": "2020-03-10 15:58:36", - "project_localvariety": 1, - "extra": null - }, - "registry": { - "lkptables": [ - { - "name": "REG_lkpgender", - "desc": "Lookup table (What is the gender ?)", - "fields": [ - { - "name": "gender_cod", - "desc": "Code", - "key": "true" - }, - { - "name": "gender_des", - "desc": "Description", - "key": null - } - ], - "values": [ - { - "gender_cod": 1, - "gender_des": "Male" - }, - { - "gender_cod": 2, - "gender_des": "Female" - } - ] - } - ], - "fields": [ - { - "name": "surveyid", - "odktype": "", - "desc": "Submission ID", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "originid", - "odktype": "", - "desc": "Origin", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "clm_deviceimei", - "odktype": "deviceid", - "desc": "Device IMEI", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "clm_start", - "odktype": "start", - "desc": "Start of survey", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "qst162", - "odktype": "barcode", - "desc": "Package code", - "key": "true", - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "farmername", - "odktype": "text", - "desc": "Farmer name", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "gender", - "odktype": "select_one gender_opts", - "desc": "What is the gender ?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "REG_lkpgender", - "rfield": "gender_cod" - }, - { - "name": "clm_end", - "odktype": "end", - "desc": "End of survey", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "rowuuid", - "odktype": "", - "desc": "Unique Row Identifier (UUID)", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - } - ] - }, - "assessments": [ - { - "code": "a835e1bb425d", - "desc": "test", - "lkptables": [ - { - "name": "ASSa835e1bb425d_lkpchar_intelligence_pos", - "desc": "Lookup table (Which color is most associated with intelligence?)", - "fields": [ - { - "name": "char_intelligence_pos_cod", - "desc": "Code", - "key": "true" - }, - { - "name": "char_intelligence_pos_des", - "desc": "Description", - "key": null - } - ], - "values": [ - { - "char_intelligence_pos_cod": 1, - "char_intelligence_pos_des": "Option A" - }, - { - "char_intelligence_pos_cod": 2, - "char_intelligence_pos_des": "Option B" - }, - { - "char_intelligence_pos_cod": 3, - "char_intelligence_pos_des": "Option C" - } - ] - }, - { - "name": "ASSa835e1bb425d_lkpqst163", - "desc": "Lookup table (Select the farmer)", - "fields": [ - { - "name": "qst163_cod", - "desc": "Code", - "key": "true" - }, - { - "name": "qst163_des", - "desc": "Description", - "key": null - } - ], - "values": [ - { - "qst163_cod": 2, - "qst163_des": "P:2-George Bush" - }, - { - "qst163_cod": 3, - "qst163_des": "P:3-JU3" - }, - { - "qst163_cod": 4, - "qst163_des": "P:4-Eric" - }, - { - "qst163_cod": 6, - "qst163_des": "P:6-Amponsah" - }, - { - "qst163_cod": 7, - "qst163_des": "P:7-Ishak Abdul-Fatawu" - }, - { - "qst163_cod": 8, - "qst163_des": "P:8-FRANCIS" - }, - { - "qst163_cod": 9, - "qst163_des": "P:9-Martin Nketiah" - } - ] - } - ], - "fields": [ - { - "name": "surveyid", - "odktype": "", - "desc": "Submission ID", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "originid", - "odktype": "", - "desc": "Origin", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "clm_deviceimei", - "odktype": "deviceid", - "desc": "Device IMEI", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "clm_start", - "odktype": "start", - "desc": "Start of survey", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "qst163", - "odktype": "select_one qst163_opts", - "desc": "Select the farmer", - "key": "true", - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASSa835e1bb425d_lkpqst163", - "rfield": "qst163_cod" - }, - { - "name": "char_intelligence_pos", - "odktype": "select_one char_intelligence_pos_opts", - "desc": "Which color is most associated with intelligence?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASSa835e1bb425d_lkpchar_intelligence_pos", - "rfield": "char_intelligence_pos_cod" - }, - { - "name": "char_intelligence_neg", - "odktype": "select_one char_intelligence_neg_opts", - "desc": "Which color is least associated with intelligence?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASSa835e1bb425d_lkpchar_intelligence_pos", - "rfield": "char_intelligence_pos_cod" - }, - { - "name": "clm_end", - "odktype": "end", - "desc": "End of survey", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "rowuuid", - "odktype": "", - "desc": "Unique Row Identifier (UUID)", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - } - ] - }, - { - "code": "bb39cf90c91c", - "desc": "Immediate", - "lkptables": [ - { - "name": "ASSbb39cf90c91c_lkpqst163", - "desc": "Lookup table (Select the farmer)", - "fields": [ - { - "name": "qst163_cod", - "desc": "Code", - "key": "true" - }, - { - "name": "qst163_des", - "desc": "Description", - "key": null - } - ], - "values": [ - { - "qst163_cod": 2, - "qst163_des": "P:2-George Bush" - }, - { - "qst163_cod": 3, - "qst163_des": "P:3-JU3" - }, - { - "qst163_cod": 4, - "qst163_des": "P:4-Eric" - }, - { - "qst163_cod": 6, - "qst163_des": "P:6-Amponsah" - }, - { - "qst163_cod": 7, - "qst163_des": "P:7-Ishak Abdul-Fatawu" - }, - { - "qst163_cod": 8, - "qst163_des": "P:8-FRANCIS" - }, - { - "qst163_cod": 9, - "qst163_des": "P:9-Martin Nketiah" - } - ] - }, - { - "name": "ASSbb39cf90c91c_lkpchar_overallperf_pos", - "desc": "Lookup table (Overall, which option performed better?)", - "fields": [ - { - "name": "char_overallperf_pos_cod", - "desc": "Code", - "key": "true" - }, - { - "name": "char_overallperf_pos_des", - "desc": "Description", - "key": null - } - ], - "values": [ - { - "char_overallperf_pos_cod": 1, - "char_overallperf_pos_des": "Option A" - }, - { - "char_overallperf_pos_cod": 2, - "char_overallperf_pos_des": "Option B" - }, - { - "char_overallperf_pos_cod": 3, - "char_overallperf_pos_des": "Option C" - } - ] - }, - { - "name": "ASSbb39cf90c91c_lkpperf_overallchar_1", - "desc": "Lookup table (Overall, whichone is best A or what you usually use?)", - "fields": [ - { - "name": "perf_overallchar_1_cod", - "desc": "Code", - "key": "true" - }, - { - "name": "perf_overallchar_1_des", - "desc": "Description", - "key": null - } - ], - "values": [ - { - "perf_overallchar_1_cod": 1, - "perf_overallchar_1_des": "Better" - }, - { - "perf_overallchar_1_cod": 2, - "perf_overallchar_1_des": "Worst" - } - ] - } - ], - "fields": [ - { - "name": "surveyid", - "odktype": "", - "desc": "Submission ID", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "originid", - "odktype": "", - "desc": "Origin", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "clm_deviceimei", - "odktype": "deviceid", - "desc": "Device IMEI", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "clm_start", - "odktype": "start", - "desc": "Start of survey", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "qst163", - "odktype": "select_one qst163_opts", - "desc": "Select the farmer", - "key": "true", - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASSbb39cf90c91c_lkpqst163", - "rfield": "qst163_cod" - }, - { - "name": "char_overallperf_pos", - "odktype": "select_one char_overallperf_pos_opts", - "desc": "Overall, which option performed better?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASSbb39cf90c91c_lkpchar_overallperf_pos", - "rfield": "char_overallperf_pos_cod" - }, - { - "name": "char_overallperf_neg", - "odktype": "select_one char_overallperf_neg_opts", - "desc": "Overall, which option performed worst?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASSbb39cf90c91c_lkpchar_overallperf_pos", - "rfield": "char_overallperf_pos_cod" - }, - { - "name": "perf_overallchar_1", - "odktype": "select_one perf_overallchar_1_opts", - "desc": "Overall, whichone is best A or what you usually use?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASSbb39cf90c91c_lkpperf_overallchar_1", - "rfield": "perf_overallchar_1_cod" - }, - { - "name": "perf_overallchar_2", - "odktype": "select_one perf_overallchar_2_opts", - "desc": "Overall, whichone is best B or what you usually use?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASSbb39cf90c91c_lkpperf_overallchar_1", - "rfield": "perf_overallchar_1_cod" - }, - { - "name": "perf_overallchar_3", - "odktype": "select_one perf_overallchar_3_opts", - "desc": "Overall, whichone is best C or what you usually use?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASSbb39cf90c91c_lkpperf_overallchar_1", - "rfield": "perf_overallchar_1_cod" - }, - { - "name": "clm_end", - "odktype": "end", - "desc": "End of survey", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "rowuuid", - "odktype": "", - "desc": "Unique Row Identifier (UUID)", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - } - ] - } - ], - "packages": [ - { - "package_id": 2, - "farmername": "George Bush ", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Blue" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Yellow" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "White" - } - ] - } - ] - }, - { - "package_id": 3, - "farmername": "JU3", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "White" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Red" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Blue" - } - ] - } - ] - }, - { - "package_id": 4, - "farmername": "Eric", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Red" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "White" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Black" - } - ] - } - ] - }, - { - "package_id": 6, - "farmername": "Amponsah", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Blue" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Black" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Red" - } - ] - } - ] - }, - { - "package_id": 7, - "farmername": "Ishak Abdul-Fatawu ", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Yellow" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "White" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Black" - } - ] - } - ] - }, - { - "package_id": 8, - "farmername": "FRANCIS", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Red" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Yellow" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Blue" - } - ] - } - ] - }, - { - "package_id": 9, - "farmername": "Martin Nketiah ", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Black" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Blue" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "White" - } - ] - } - ] - } - ], - "specialfields": [ - { - "type": "Characteristic", - "name": "ASSa835e1bb425d_char_intelligence_pos", - "desc": "Which color is most associated with intelligence?" - }, - { - "type": "Characteristic", - "name": "ASSa835e1bb425d_char_intelligence_neg", - "desc": "Which color is least associated with intelligence?" - }, - { - "type": "Characteristic", - "name": "ASSbb39cf90c91c_char_overallperf_pos", - "desc": "Overall, which option performed better?" - }, - { - "type": "Characteristic", - "name": "ASSbb39cf90c91c_char_overallperf_neg", - "desc": "Overall, which option performed worst?" - }, - { - "type": "Performance", - "name": "ASSbb39cf90c91c_perf_overallchar_1", - "desc": "Overall, whichone is best A or what you usually use?" - }, - { - "type": "Performance", - "name": "ASSbb39cf90c91c_perf_overallchar_2", - "desc": "Overall, whichone is best B or what you usually use?" - }, - { - "type": "Performance", - "name": "ASSbb39cf90c91c_perf_overallchar_3", - "desc": "Overall, whichone is best C or what you usually use?" - } - ], - "data": [ - { - "REG_surveyid": "c0ef0da3-1ead-4992-9d2a-8b07fb800e94", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "357470090556246", - "REG_clm_start": "2020-03-10 16:19:45", - "REG_qst162": "2", - "REG_farmername": "George Bush ", - "REG_gender": 1, - "REG_clm_end": "2020-03-10 16:26:37", - "REG_rowuuid": "60ec10b2-88f1-4b78-802b-a6177d706064", - "ASSa835e1bb425d_surveyid": "3ba283e2-36db-432c-b006-e177d83ddfb2", - "ASSa835e1bb425d_originid": "ODKTOOLS", - "ASSa835e1bb425d_clm_deviceimei": "867128035634212", - "ASSa835e1bb425d_clm_start": "2020-03-10 22:43:22", - "ASSa835e1bb425d_qst163": 2, - "ASSa835e1bb425d_char_intelligence_pos": 1, - "ASSa835e1bb425d_char_intelligence_neg": 2, - "ASSa835e1bb425d_clm_end": "2020-03-10 22:43:27", - "ASSa835e1bb425d_rowuuid": "ff1726e8-5408-4655-a498-3b164e5fb1d2", - "ASSbb39cf90c91c_surveyid": "b8ed5e03-f003-4311-a655-40d390780edd", - "ASSbb39cf90c91c_originid": "ODKTOOLS", - "ASSbb39cf90c91c_clm_deviceimei": "357470090556246", - "ASSbb39cf90c91c_clm_start": "2020-03-10 16:37:16", - "ASSbb39cf90c91c_qst163": 2, - "ASSbb39cf90c91c_char_overallperf_pos": 1, - "ASSbb39cf90c91c_char_overallperf_neg": 2, - "ASSbb39cf90c91c_perf_overallchar_1": 1, - "ASSbb39cf90c91c_perf_overallchar_2": 2, - "ASSbb39cf90c91c_perf_overallchar_3": 2, - "ASSbb39cf90c91c_clm_end": "2020-03-10 16:46:00", - "ASSbb39cf90c91c_rowuuid": "ce262198-1dd4-4a11-b17d-f085473be184" - }, - { - "REG_surveyid": "6f314f4a-fdc2-417c-9c4e-b4d5de3e0643", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "352029110937490", - "REG_clm_start": "2020-03-10 16:20:32", - "REG_qst162": "3", - "REG_farmername": "JU3", - "REG_gender": 1, - "REG_clm_end": "2020-03-10 16:27:17", - "REG_rowuuid": "0a7dcaf6-fc82-4fa8-8231-bc0b1cfcbe9d", - "ASSa835e1bb425d_surveyid": "2f649eb5-6a77-4ab0-a1db-61102fc6067a", - "ASSa835e1bb425d_originid": "ODKTOOLS", - "ASSa835e1bb425d_clm_deviceimei": "867128035634212", - "ASSa835e1bb425d_clm_start": "2020-03-10 22:43:29", - "ASSa835e1bb425d_qst163": 3, - "ASSa835e1bb425d_char_intelligence_pos": 2, - "ASSa835e1bb425d_char_intelligence_neg": 1, - "ASSa835e1bb425d_clm_end": "2020-03-10 22:43:34", - "ASSa835e1bb425d_rowuuid": "339f691d-f94b-4539-ae2e-9a2e043e0863", - "ASSbb39cf90c91c_surveyid": "7b25faef-759f-4521-adba-d5c88b7902ff", - "ASSbb39cf90c91c_originid": "ODKTOOLS", - "ASSbb39cf90c91c_clm_deviceimei": "352029110937490", - "ASSbb39cf90c91c_clm_start": "2020-03-10 16:43:37", - "ASSbb39cf90c91c_qst163": 3, - "ASSbb39cf90c91c_char_overallperf_pos": 2, - "ASSbb39cf90c91c_char_overallperf_neg": 3, - "ASSbb39cf90c91c_perf_overallchar_1": 1, - "ASSbb39cf90c91c_perf_overallchar_2": 1, - "ASSbb39cf90c91c_perf_overallchar_3": 2, - "ASSbb39cf90c91c_clm_end": "2020-03-10 16:44:37", - "ASSbb39cf90c91c_rowuuid": "e62b39c2-3dc3-437e-8bc4-009e7acdecf6" - }, - { - "REG_surveyid": "024ff012-4dfe-4533-9e76-d8414246ceab", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "359665088899528", - "REG_clm_start": "2020-03-10 16:22:00", - "REG_qst162": "4", - "REG_farmername": "Eric", - "REG_gender": 2, - "REG_clm_end": "2020-03-10 16:24:59", - "REG_rowuuid": "446389d7-3ce0-498f-81a8-691e88950fcd", - "ASSa835e1bb425d_surveyid": "efb8f390-083c-4c30-b739-58591272339a", - "ASSa835e1bb425d_originid": "ODKTOOLS", - "ASSa835e1bb425d_clm_deviceimei": "867128035634212", - "ASSa835e1bb425d_clm_start": "2020-03-10 22:43:36", - "ASSa835e1bb425d_qst163": 4, - "ASSa835e1bb425d_char_intelligence_pos": 3, - "ASSa835e1bb425d_char_intelligence_neg": 1, - "ASSa835e1bb425d_clm_end": "2020-03-10 22:43:41", - "ASSa835e1bb425d_rowuuid": "ec546f1b-17a1-4471-8425-f219c0f724a5", - "ASSbb39cf90c91c_surveyid": "54c2a74c-e7ed-4fdc-b5ce-daf1ee1ca80b", - "ASSbb39cf90c91c_originid": "ODKTOOLS", - "ASSbb39cf90c91c_clm_deviceimei": "359665088899528", - "ASSbb39cf90c91c_clm_start": "2020-03-10 16:37:11", - "ASSbb39cf90c91c_qst163": 4, - "ASSbb39cf90c91c_char_overallperf_pos": 1, - "ASSbb39cf90c91c_char_overallperf_neg": 2, - "ASSbb39cf90c91c_perf_overallchar_1": 1, - "ASSbb39cf90c91c_perf_overallchar_2": 1, - "ASSbb39cf90c91c_perf_overallchar_3": 2, - "ASSbb39cf90c91c_clm_end": "2020-03-10 16:39:47", - "ASSbb39cf90c91c_rowuuid": "fdda0ddb-3af9-49c3-9225-e271ff36c64f" - }, - { - "REG_surveyid": "33e303a6-21a4-4dcc-a79d-42abe4e714a9", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "354481115943858", - "REG_clm_start": "2020-03-10 16:20:40", - "REG_qst162": "6", - "REG_farmername": "Amponsah", - "REG_gender": 1, - "REG_clm_end": "2020-03-10 16:27:28", - "REG_rowuuid": "0d1e6e69-17ff-4ba1-bff0-b25ba1cc4aa2", - "ASSa835e1bb425d_surveyid": "d74120cf-4949-4bc5-a061-96ff45c7e442", - "ASSa835e1bb425d_originid": "ODKTOOLS", - "ASSa835e1bb425d_clm_deviceimei": "867128035634212", - "ASSa835e1bb425d_clm_start": "2020-03-10 22:43:43", - "ASSa835e1bb425d_qst163": 6, - "ASSa835e1bb425d_char_intelligence_pos": 3, - "ASSa835e1bb425d_char_intelligence_neg": 1, - "ASSa835e1bb425d_clm_end": "2020-03-10 22:43:47", - "ASSa835e1bb425d_rowuuid": "69a26443-9ccb-4297-8339-53b3387a8323", - "ASSbb39cf90c91c_surveyid": "ab8c077f-e3a5-44b7-81c9-1ef6b966f1f5", - "ASSbb39cf90c91c_originid": "ODKTOOLS", - "ASSbb39cf90c91c_clm_deviceimei": "354481115943858", - "ASSbb39cf90c91c_clm_start": "2020-03-10 16:38:17", - "ASSbb39cf90c91c_qst163": 6, - "ASSbb39cf90c91c_char_overallperf_pos": 1, - "ASSbb39cf90c91c_char_overallperf_neg": 2, - "ASSbb39cf90c91c_perf_overallchar_1": 1, - "ASSbb39cf90c91c_perf_overallchar_2": 2, - "ASSbb39cf90c91c_perf_overallchar_3": 1, - "ASSbb39cf90c91c_clm_end": "2020-03-10 16:57:08", - "ASSbb39cf90c91c_rowuuid": "3997ab94-0123-4724-aa19-f855fc31e471" - }, - { - "REG_surveyid": "8010cb2f-6b5f-41ca-9a09-e492abd17066", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "352401107495529", - "REG_clm_start": "2020-03-10 16:21:46", - "REG_qst162": "7", - "REG_farmername": "Ishak Abdul-Fatawu ", - "REG_gender": 1, - "REG_clm_end": "2020-03-10 16:27:30", - "REG_rowuuid": "abf406ed-7fcd-4626-a3b6-de0e74874b86", - "ASSa835e1bb425d_surveyid": "d0184802-8f23-4a61-898a-cb99e65c36f9", - "ASSa835e1bb425d_originid": "ODKTOOLS", - "ASSa835e1bb425d_clm_deviceimei": "867128035634212", - "ASSa835e1bb425d_clm_start": "2020-03-10 22:43:49", - "ASSa835e1bb425d_qst163": 7, - "ASSa835e1bb425d_char_intelligence_pos": 1, - "ASSa835e1bb425d_char_intelligence_neg": 2, - "ASSa835e1bb425d_clm_end": "2020-03-10 22:43:56", - "ASSa835e1bb425d_rowuuid": "f291dcec-3eca-44ce-86b3-3e522c114a21", - "ASSbb39cf90c91c_surveyid": "1114d7dc-8a6c-4e9b-9f94-c6daefb86821", - "ASSbb39cf90c91c_originid": "ODKTOOLS", - "ASSbb39cf90c91c_clm_deviceimei": "352401107495529", - "ASSbb39cf90c91c_clm_start": "2020-03-10 16:38:28", - "ASSbb39cf90c91c_qst163": 7, - "ASSbb39cf90c91c_char_overallperf_pos": 2, - "ASSbb39cf90c91c_char_overallperf_neg": 3, - "ASSbb39cf90c91c_perf_overallchar_1": 1, - "ASSbb39cf90c91c_perf_overallchar_2": 1, - "ASSbb39cf90c91c_perf_overallchar_3": 2, - "ASSbb39cf90c91c_clm_end": "2020-03-10 16:40:32", - "ASSbb39cf90c91c_rowuuid": "4aa10383-f462-43bf-8dbb-32fcd68a2916" - }, - { - "REG_surveyid": "eb04ae07-38fb-4ebc-b7c7-e2afc4b2e193", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "358942094868800", - "REG_clm_start": "2020-03-10 16:22:00", - "REG_qst162": "8", - "REG_farmername": "FRANCIS", - "REG_gender": 1, - "REG_clm_end": "2020-03-10 16:23:29", - "REG_rowuuid": "55115ff9-4c07-4c44-acef-fb52af254240", - "ASSa835e1bb425d_surveyid": "eaaa22fe-41fe-4f6b-a3b3-34c31a7e4f4f", - "ASSa835e1bb425d_originid": "ODKTOOLS", - "ASSa835e1bb425d_clm_deviceimei": "867128035634212", - "ASSa835e1bb425d_clm_start": "2020-03-10 22:43:57", - "ASSa835e1bb425d_qst163": 8, - "ASSa835e1bb425d_char_intelligence_pos": 3, - "ASSa835e1bb425d_char_intelligence_neg": 2, - "ASSa835e1bb425d_clm_end": "2020-03-10 22:44:02", - "ASSa835e1bb425d_rowuuid": "5789ff53-a3be-461f-91f7-eb9276d14c31", - "ASSbb39cf90c91c_surveyid": "6721db03-065b-4551-9228-8e8674b1dd4a", - "ASSbb39cf90c91c_originid": "ODKTOOLS", - "ASSbb39cf90c91c_clm_deviceimei": "358942094868800", - "ASSbb39cf90c91c_clm_start": "2020-03-10 16:34:57", - "ASSbb39cf90c91c_qst163": 8, - "ASSbb39cf90c91c_char_overallperf_pos": 1, - "ASSbb39cf90c91c_char_overallperf_neg": 3, - "ASSbb39cf90c91c_perf_overallchar_1": 2, - "ASSbb39cf90c91c_perf_overallchar_2": 1, - "ASSbb39cf90c91c_perf_overallchar_3": 1, - "ASSbb39cf90c91c_clm_end": "2020-03-10 16:37:03", - "ASSbb39cf90c91c_rowuuid": "79a58067-4d44-40d2-85c9-89f027885ea0" - }, - { - "REG_surveyid": "7c98a4cc-39f6-4c8f-9228-c30fac341a58", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "359703072118926", - "REG_clm_start": "2020-03-10 16:20:37", - "REG_qst162": "9", - "REG_farmername": "Martin Nketiah ", - "REG_gender": 1, - "REG_clm_end": "2020-03-10 16:27:39", - "REG_rowuuid": "825fa4f5-2cb7-4861-b639-ca18312523d9", - "ASSa835e1bb425d_surveyid": "056b3029-884c-4340-b3a4-0958337e9a8d", - "ASSa835e1bb425d_originid": "ODKTOOLS", - "ASSa835e1bb425d_clm_deviceimei": "867128035634212", - "ASSa835e1bb425d_clm_start": "2020-03-10 22:44:04", - "ASSa835e1bb425d_qst163": 9, - "ASSa835e1bb425d_char_intelligence_pos": 2, - "ASSa835e1bb425d_char_intelligence_neg": 3, - "ASSa835e1bb425d_clm_end": "2020-03-10 22:44:10", - "ASSa835e1bb425d_rowuuid": "e1a2f1d2-f91c-4d81-a3a6-2cf2725c9099", - "ASSbb39cf90c91c_surveyid": "32c9bee8-8055-4301-a5dd-eec39b4a4793", - "ASSbb39cf90c91c_originid": "ODKTOOLS", - "ASSbb39cf90c91c_clm_deviceimei": "359703072118926", - "ASSbb39cf90c91c_clm_start": "2020-03-10 16:39:07", - "ASSbb39cf90c91c_qst163": 9, - "ASSbb39cf90c91c_char_overallperf_pos": 3, - "ASSbb39cf90c91c_char_overallperf_neg": 1, - "ASSbb39cf90c91c_perf_overallchar_1": 2, - "ASSbb39cf90c91c_perf_overallchar_2": 1, - "ASSbb39cf90c91c_perf_overallchar_3": 1, - "ASSbb39cf90c91c_clm_end": "2020-03-10 16:41:45", - "ASSbb39cf90c91c_rowuuid": "15266521-bcfa-481a-9ea1-9f7b9328a904" - } - ], - "importantfields": [ - { - "type": "PackageID", - "field": "REG_QST162", - "desc": "Package ID" - }, - { - "type": "FarmerName", - "field": "REG_farmername", - "desc": "Name of registered farmer" - }, - { - "type": "OverallCharPos", - "field": "ASSbb39cf90c91c_char_overallperf_pos", - "desc": "Over all characteristic positive" - }, - { - "type": "OverallCharNeg", - "field": "ASSbb39cf90c91c_char_overallperf_neg", - "desc": "Over all characteristic negative" - }, - { - "type": "OverallPerf1", - "field": "ASSbb39cf90c91c_perf_overallchar_1", - "desc": "Over all performance of A against current" - }, - { - "type": "OverallPerf2", - "field": "ASSbb39cf90c91c_perf_overallchar_2", - "desc": "Over all performance of B against current" - }, - { - "type": "OverallPerf3", - "field": "ASSbb39cf90c91c_perf_overallchar_3", - "desc": "Over all performance of C against current" - } - ] -} \ No newline at end of file diff --git a/dev/data/WL2019/data.json b/dev/data/WL2019/data.json deleted file mode 100644 index 35cd7f3..0000000 --- a/dev/data/WL2019/data.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "Characteristics": [ - { - "name": "Overall Characteristic", - "id": 204, - "vars": [ - { - "name": "ASS0dfe2b4467a3_char_overallperf_pos" - }, - { - "name": "ASS0dfe2b4467a3_char_overallperf_neg" - } - ] - } - ], - "Performance": [ - { - "name": "Overall performace", - "id": 205, - "vars": [ - { - "name": "ASS0dfe2b4467a3_perf_overallchar_1" - }, - { - "name": "ASS0dfe2b4467a3_perf_overallchar_2" - }, - { - "name": "ASS0dfe2b4467a3_perf_overallchar_3" - } - ] - } - ], - "Explanatory": [] -} \ No newline at end of file diff --git a/dev/data/WL2019/info.json b/dev/data/WL2019/info.json deleted file mode 100644 index 11d309c..0000000 --- a/dev/data/WL2019/info.json +++ /dev/null @@ -1,2094 +0,0 @@ -{ - "project": { - "user_name": "jacobvanetten", - "project_cod": "WL2019", - "project_name": "Women Leaders 2019", - "project_abstract": "Exercise to guess the age of women leaders", - "project_tags": "course,exercise,women,leaders,age", - "project_pi": "Jacob van Etten", - "project_piemail": "jacobvanetten@gmail.com", - "project_active": 1, - "project_public": 0, - "project_dashboard": 1, - "project_regstatus": 2, - "project_assstatus": 1, - "project_createcomb": 0, - "project_createpkgs": 0, - "project_numobs": 30, - "project_numcom": 3, - "project_lat": "43.644607", - "project_lon": "3.9636467", - "project_creationdate": "2019-06-16 03:42:17", - "project_localvariety": 0, - "extra": null - }, - "registry": { - "lkptables": [ - { - "name": "REG_lkpgender", - "desc": "Lookup table (What is the gender ?)", - "fields": [ - { - "name": "gender_cod", - "desc": "Code", - "key": "true" - }, - { - "name": "gender_des", - "desc": "Description", - "key": null - } - ], - "values": [ - { - "gender_cod": 1, - "gender_des": "Male" - }, - { - "gender_cod": 2, - "gender_des": "Female" - } - ] - } - ], - "fields": [ - { - "name": "surveyid", - "odktype": "", - "desc": "Submission ID", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "originid", - "odktype": "", - "desc": "Origin", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "clm_deviceimei", - "odktype": "deviceid", - "desc": "Device IMEI", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "clm_start", - "odktype": "start", - "desc": "Start of survey", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "clm_end", - "odktype": "end", - "desc": "End of survey", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "qst162", - "odktype": "barcode", - "desc": "Package code", - "key": "true", - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "farmername", - "odktype": "text", - "desc": "Farmer name", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "age", - "odktype": "integer", - "desc": "How old are you?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "gender", - "odktype": "select_one gender_opts", - "desc": "What is the gender ?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "REG_lkpgender", - "rfield": "gender_cod" - }, - { - "name": "rowuuid", - "odktype": "", - "desc": "Unique Row Identifier (UUID)", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - } - ] - }, - "assessments": [ - { - "code": "0dfe2b4467a3", - "desc": "Evaluation", - "lkptables": [ - { - "name": "ASS0dfe2b4467a3_lkpqst163", - "desc": "Lookup table (Select the farmer)", - "fields": [ - { - "name": "qst163_cod", - "desc": "Code", - "key": "true" - }, - { - "name": "qst163_des", - "desc": "Description", - "key": null - } - ], - "values": [ - { - "qst163_cod": 1, - "qst163_des": "P:1-Carrey" - }, - { - "qst163_cod": 2, - "qst163_des": "P:2-Bela Teeken" - }, - { - "qst163_cod": 3, - "qst163_des": "P:3-Henerico Kulembeka" - }, - { - "qst163_cod": 4, - "qst163_des": "P:4-Mukani Moyo" - }, - { - "qst163_cod": 5, - "qst163_des": "P:5-Margaret" - }, - { - "qst163_cod": 6, - "qst163_des": "P:6-Lora Forsythe" - }, - { - "qst163_cod": 7, - "qst163_des": "P:7-Noel" - }, - { - "qst163_cod": 8, - "qst163_des": "P:8-Stephen" - }, - { - "qst163_cod": 9, - "qst163_des": "P:9-Farmer" - }, - { - "qst163_cod": 10, - "qst163_des": "P:10-Reuben" - }, - { - "qst163_cod": 11, - "qst163_des": "P:11-Michael" - }, - { - "qst163_cod": 12, - "qst163_des": "P:12-Thiago mendez" - }, - { - "qst163_cod": 13, - "qst163_des": "P:13-Elizabeth" - }, - { - "qst163_cod": 14, - "qst163_des": "P:14-Tom" - }, - { - "qst163_cod": 15, - "qst163_des": "P:15-Marie-Angelique" - }, - { - "qst163_cod": 16, - "qst163_des": "P:16-Lukas" - }, - { - "qst163_cod": 17, - "qst163_des": "P:17-Bryan" - }, - { - "qst163_cod": 18, - "qst163_des": "P:18-Richard" - }, - { - "qst163_cod": 19, - "qst163_des": "P:19-Asrat" - }, - { - "qst163_cod": 20, - "qst163_des": "P:20-Tawanda" - }, - { - "qst163_cod": 21, - "qst163_des": "P:21-Kenneth" - }, - { - "qst163_cod": 22, - "qst163_des": "P:22-Peter Kulakow" - }, - { - "qst163_cod": 23, - "qst163_des": "P:23-Carlos" - }, - { - "qst163_cod": 24, - "qst163_des": "P:24-Jacob" - }, - { - "qst163_cod": 29, - "qst163_des": "P:29-Priscilla Marimo" - } - ] - }, - { - "name": "ASS0dfe2b4467a3_lkpperf_overallchar_1", - "desc": "Lookup table (Overall, whichone is best A or what you usually use?)", - "fields": [ - { - "name": "perf_overallchar_1_cod", - "desc": "Code", - "key": "true" - }, - { - "name": "perf_overallchar_1_des", - "desc": "Description", - "key": null - } - ], - "values": [ - { - "perf_overallchar_1_cod": 1, - "perf_overallchar_1_des": "Better" - }, - { - "perf_overallchar_1_cod": 2, - "perf_overallchar_1_des": "Worst" - } - ] - }, - { - "name": "ASS0dfe2b4467a3_lkpchar_agecompare_pos", - "desc": "Lookup table (Which is the oldest?)", - "fields": [ - { - "name": "char_agecompare_pos_cod", - "desc": "Code", - "key": "true" - }, - { - "name": "char_agecompare_pos_des", - "desc": "Description", - "key": null - } - ], - "values": [ - { - "char_agecompare_pos_cod": 1, - "char_agecompare_pos_des": "Option A" - }, - { - "char_agecompare_pos_cod": 2, - "char_agecompare_pos_des": "Option B" - }, - { - "char_agecompare_pos_cod": 3, - "char_agecompare_pos_des": "Option C" - } - ] - } - ], - "fields": [ - { - "name": "surveyid", - "odktype": "", - "desc": "Submission ID", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "originid", - "odktype": "", - "desc": "Origin", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "clm_deviceimei", - "odktype": "deviceid", - "desc": "Device IMEI", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "clm_start", - "odktype": "start", - "desc": "Start of survey", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "clm_end", - "odktype": "end", - "desc": "End of survey", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "qst163", - "odktype": "select_one qst163_opts", - "desc": "Select the farmer", - "key": "true", - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASS0dfe2b4467a3_lkpqst163", - "rfield": "qst163_cod" - }, - { - "name": "perf_overallchar_1", - "odktype": "select_one perf_overallchar_1_opts", - "desc": "Overall, whichone is best A or what you usually use?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASS0dfe2b4467a3_lkpperf_overallchar_1", - "rfield": "perf_overallchar_1_cod" - }, - { - "name": "perf_overallchar_2", - "odktype": "select_one perf_overallchar_2_opts", - "desc": "Overall, whichone is best B or what you usually use?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASS0dfe2b4467a3_lkpperf_overallchar_1", - "rfield": "perf_overallchar_1_cod" - }, - { - "name": "perf_overallchar_3", - "odktype": "select_one perf_overallchar_3_opts", - "desc": "Overall, whichone is best C or what you usually use?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASS0dfe2b4467a3_lkpperf_overallchar_1", - "rfield": "perf_overallchar_1_cod" - }, - { - "name": "char_agecompare_pos", - "odktype": "select_one char_agecompare_pos_opts", - "desc": "Which is the oldest?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASS0dfe2b4467a3_lkpchar_agecompare_pos", - "rfield": "char_agecompare_pos_cod" - }, - { - "name": "char_agecompare_neg", - "odktype": "select_one char_agecompare_neg_opts", - "desc": "Which is the youngest?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASS0dfe2b4467a3_lkpchar_agecompare_pos", - "rfield": "char_agecompare_pos_cod" - }, - { - "name": "farmgoelocation", - "odktype": "geopoint", - "desc": "Farm Geolocation", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "char_overallperf_pos", - "odktype": "select_one char_overallperf_pos_opts", - "desc": "Overall, which option performed better?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASS0dfe2b4467a3_lkpchar_agecompare_pos", - "rfield": "char_agecompare_pos_cod" - }, - { - "name": "char_overallperf_neg", - "odktype": "select_one char_overallperf_neg_opts", - "desc": "Overall, which option performed worst?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASS0dfe2b4467a3_lkpchar_agecompare_pos", - "rfield": "char_agecompare_pos_cod" - }, - { - "name": "rowuuid", - "odktype": "", - "desc": "Unique Row Identifier (UUID)", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - } - ] - } - ], - "packages": [ - { - "package_id": 1, - "farmername": "Carrey", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "Merkel" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "Zewde" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "Haley" - } - ] - } - ] - }, - { - "package_id": 2, - "farmername": "Bela Teeken", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "May" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "Ardern" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "Caputova" - } - ] - } - ] - }, - { - "package_id": 3, - "farmername": "Henerico Kulembeka", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "Zewde" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "Caputova" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "May" - } - ] - } - ] - }, - { - "package_id": 4, - "farmername": "Mukani Moyo", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "Ardern" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "Haley" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "Merkel" - } - ] - } - ] - }, - { - "package_id": 5, - "farmername": "Margaret", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "Haley" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "May" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "Zewde" - } - ] - } - ] - }, - { - "package_id": 6, - "farmername": "Lora Forsythe", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "Caputova" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "Merkel" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "Ardern" - } - ] - } - ] - }, - { - "package_id": 7, - "farmername": "Noel", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "Merkel" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "Ardern" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "Zewde" - } - ] - } - ] - }, - { - "package_id": 8, - "farmername": "Stephen", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "May" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "Caputova" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "Haley" - } - ] - } - ] - }, - { - "package_id": 9, - "farmername": "Farmer", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "Zewde" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "Haley" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "Ardern" - } - ] - } - ] - }, - { - "package_id": 10, - "farmername": "Reuben", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "Caputova" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "Merkel" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "May" - } - ] - } - ] - }, - { - "package_id": 11, - "farmername": "Michael", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "Haley" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "Merkel" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "Caputova" - } - ] - } - ] - }, - { - "package_id": 12, - "farmername": "Thiago mendez", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "Ardern" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "May" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "Zewde" - } - ] - } - ] - }, - { - "package_id": 13, - "farmername": "Elizabeth ", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "May" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "Caputova" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "Merkel" - } - ] - } - ] - }, - { - "package_id": 14, - "farmername": "Tom", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "Ardern" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "Zewde" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "Haley" - } - ] - } - ] - }, - { - "package_id": 15, - "farmername": "Marie-Angelique", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "Zewde" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "May" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "Ardern" - } - ] - } - ] - }, - { - "package_id": 16, - "farmername": "Lukas", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "Merkel" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "Haley" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "Caputova" - } - ] - } - ] - }, - { - "package_id": 17, - "farmername": "Bryan ", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "Caputova" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "Ardern" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "Haley" - } - ] - } - ] - }, - { - "package_id": 18, - "farmername": "Richard", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "Merkel" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "Zewde" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "May" - } - ] - } - ] - }, - { - "package_id": 19, - "farmername": "Asrat", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "Haley" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "Ardern" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "Caputova" - } - ] - } - ] - }, - { - "package_id": 20, - "farmername": "Tawanda", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "May" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "Zewde" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "Merkel" - } - ] - } - ] - }, - { - "package_id": 21, - "farmername": "Kenneth", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "Caputova" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "Haley" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "Zewde" - } - ] - } - ] - }, - { - "package_id": 22, - "farmername": "Peter Kulakow", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "Ardern" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "Merkel" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "May" - } - ] - } - ] - }, - { - "package_id": 23, - "farmername": "Carlos", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "Zewde" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "Caputova" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "Haley" - } - ] - } - ] - }, - { - "package_id": 24, - "farmername": "Jacob", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "Merkel" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "May" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "Ardern" - } - ] - } - ] - }, - { - "package_id": 29, - "farmername": "Priscilla Marimo", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "Caputova" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "Merkel" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Leading women", - "alias_name": "Zewde" - } - ] - } - ] - } - ], - "specialfields": [ - { - "type": "Performance", - "name": "ASS0dfe2b4467a3_perf_overallchar_1", - "desc": "Overall, whichone is best A or what you usually use?" - }, - { - "type": "Performance", - "name": "ASS0dfe2b4467a3_perf_overallchar_2", - "desc": "Overall, whichone is best B or what you usually use?" - }, - { - "type": "Performance", - "name": "ASS0dfe2b4467a3_perf_overallchar_3", - "desc": "Overall, whichone is best C or what you usually use?" - }, - { - "type": "Characteristic", - "name": "ASS0dfe2b4467a3_char_agecompare_pos", - "desc": "Which is the oldest?" - }, - { - "type": "Characteristic", - "name": "ASS0dfe2b4467a3_char_agecompare_neg", - "desc": "Which is the youngest?" - }, - { - "type": "Characteristic", - "name": "ASS0dfe2b4467a3_char_overallperf_pos", - "desc": "Overall, which option performed better?" - }, - { - "type": "Characteristic", - "name": "ASS0dfe2b4467a3_char_overallperf_neg", - "desc": "Overall, which option performed worst?" - } - ], - "data": [ - { - "REG_surveyid": "488f6b99-718f-4d01-b0e1-d1dd31e655ca", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "861957033866129", - "REG_clm_start": "2019-06-18 09:35:14", - "REG_clm_end": "2019-06-18 09:35:42", - "REG_qst162": "1", - "REG_farmername": "Carrey", - "REG_age": 65, - "REG_gender": 1, - "REG_rowuuid": "1e21fffb-fe2e-42d2-b2c7-89db26d5cc47", - "ASS0dfe2b4467a3_surveyid": "aa5f1566-17c6-464a-8c8a-bf2c8729216a", - "ASS0dfe2b4467a3_originid": "ODKTOOLS", - "ASS0dfe2b4467a3_clm_deviceimei": "861957033866129", - "ASS0dfe2b4467a3_clm_start": "2019-06-18 09:47:52", - "ASS0dfe2b4467a3_clm_end": "2019-06-18 09:52:45", - "ASS0dfe2b4467a3_qst163": 1, - "ASS0dfe2b4467a3_perf_overallchar_1": 1, - "ASS0dfe2b4467a3_perf_overallchar_2": 1, - "ASS0dfe2b4467a3_perf_overallchar_3": 1, - "ASS0dfe2b4467a3_char_agecompare_pos": 1, - "ASS0dfe2b4467a3_char_agecompare_neg": 3, - "ASS0dfe2b4467a3_farmgoelocation": "43.606488586203156 3.8810081682564634 135.4968028074719 96.0", - "ASS0dfe2b4467a3_char_overallperf_pos": 1, - "ASS0dfe2b4467a3_char_overallperf_neg": 3, - "ASS0dfe2b4467a3_rowuuid": "3821065b-7d83-4a78-8ed1-f7d6122018e7" - }, - { - "REG_surveyid": "84356c7c-7b5e-43f7-9318-769c9fc0f6a1", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "861957033866129", - "REG_clm_start": "2019-06-18 09:38:47", - "REG_clm_end": "2019-06-18 09:39:19", - "REG_qst162": "10", - "REG_farmername": "Reuben", - "REG_age": 41, - "REG_gender": 1, - "REG_rowuuid": "52dfc206-1f3d-421b-94e1-a6e0459fae1a", - "ASS0dfe2b4467a3_surveyid": "6dcb46dd-07c9-4540-b3a9-bd3e011e4642", - "ASS0dfe2b4467a3_originid": "ODKTOOLS", - "ASS0dfe2b4467a3_clm_deviceimei": "867599042464449", - "ASS0dfe2b4467a3_clm_start": "2019-06-18 10:06:06", - "ASS0dfe2b4467a3_clm_end": "2019-06-18 10:06:46", - "ASS0dfe2b4467a3_qst163": 10, - "ASS0dfe2b4467a3_perf_overallchar_1": 1, - "ASS0dfe2b4467a3_perf_overallchar_2": 1, - "ASS0dfe2b4467a3_perf_overallchar_3": 1, - "ASS0dfe2b4467a3_char_agecompare_pos": 2, - "ASS0dfe2b4467a3_char_agecompare_neg": 1, - "ASS0dfe2b4467a3_farmgoelocation": "43.6067352 3.8810387 0.0 18.899", - "ASS0dfe2b4467a3_char_overallperf_pos": 2, - "ASS0dfe2b4467a3_char_overallperf_neg": 3, - "ASS0dfe2b4467a3_rowuuid": "d393835b-3d8e-43c2-b446-573a3a8ef391" - }, - { - "REG_surveyid": "ac7beafa-3bb4-4f16-af3e-6b094b9ddf38", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "861957033866129", - "REG_clm_start": "2019-06-18 09:36:27", - "REG_clm_end": "2019-06-18 09:37:28", - "REG_qst162": "11", - "REG_farmername": "Michael", - "REG_age": 61, - "REG_gender": 1, - "REG_rowuuid": "187f12a8-6b66-4c4e-8bbb-49a6252f4987", - "ASS0dfe2b4467a3_surveyid": "29471107-f845-4132-9480-8fca658d18af", - "ASS0dfe2b4467a3_originid": "ODKTOOLS", - "ASS0dfe2b4467a3_clm_deviceimei": "861957033866129", - "ASS0dfe2b4467a3_clm_start": "2019-06-18 09:59:46", - "ASS0dfe2b4467a3_clm_end": "2019-06-18 10:02:56", - "ASS0dfe2b4467a3_qst163": 11, - "ASS0dfe2b4467a3_perf_overallchar_1": 1, - "ASS0dfe2b4467a3_perf_overallchar_2": 1, - "ASS0dfe2b4467a3_perf_overallchar_3": 1, - "ASS0dfe2b4467a3_char_agecompare_pos": 2, - "ASS0dfe2b4467a3_char_agecompare_neg": 3, - "ASS0dfe2b4467a3_farmgoelocation": "43.607214116991784 3.8811717739649163 -297.7800703599582 8.0", - "ASS0dfe2b4467a3_char_overallperf_pos": 2, - "ASS0dfe2b4467a3_char_overallperf_neg": 1, - "ASS0dfe2b4467a3_rowuuid": "4632143e-0247-4482-bfd0-8a5a81a650e2" - }, - { - "REG_surveyid": "78091e24-c7b8-49e4-bb2b-5aa2b70f437c", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "861957033866129", - "REG_clm_start": "2019-06-18 09:35:45", - "REG_clm_end": "2019-06-18 09:36:23", - "REG_qst162": "12", - "REG_farmername": "Thiago mendez", - "REG_age": 36, - "REG_gender": 1, - "REG_rowuuid": "80867459-c28a-4e8e-8828-46af86f0c64d", - "ASS0dfe2b4467a3_surveyid": "988546ac-b3d1-4e17-86d5-0c87e0702caf", - "ASS0dfe2b4467a3_originid": "ODKTOOLS", - "ASS0dfe2b4467a3_clm_deviceimei": "861957033866129", - "ASS0dfe2b4467a3_clm_start": "2019-06-18 09:55:30", - "ASS0dfe2b4467a3_clm_end": "2019-06-18 09:57:07", - "ASS0dfe2b4467a3_qst163": 12, - "ASS0dfe2b4467a3_perf_overallchar_1": 1, - "ASS0dfe2b4467a3_perf_overallchar_2": 2, - "ASS0dfe2b4467a3_perf_overallchar_3": 1, - "ASS0dfe2b4467a3_char_agecompare_pos": 1, - "ASS0dfe2b4467a3_char_agecompare_neg": 2, - "ASS0dfe2b4467a3_farmgoelocation": "43.60725193601845 3.881681991949548 -144.49872687640976 96.0", - "ASS0dfe2b4467a3_char_overallperf_pos": 3, - "ASS0dfe2b4467a3_char_overallperf_neg": 1, - "ASS0dfe2b4467a3_rowuuid": "e1f0aa7e-2f20-4de2-bcef-d90b1c64a655" - }, - { - "REG_surveyid": "09d2f154-3b73-4cc6-ba3d-50186f3f4a28", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "867599042464449", - "REG_clm_start": "2019-06-18 09:08:51", - "REG_clm_end": "2019-06-18 09:34:12", - "REG_qst162": "13", - "REG_farmername": "Elizabeth ", - "REG_age": 60, - "REG_gender": 2, - "REG_rowuuid": "1a347211-aa43-433e-b886-f478f8894cac", - "ASS0dfe2b4467a3_surveyid": "c30db3c4-6bf3-42e5-ae3e-0a310cb7c1ac", - "ASS0dfe2b4467a3_originid": "ODKTOOLS", - "ASS0dfe2b4467a3_clm_deviceimei": "867599042464449", - "ASS0dfe2b4467a3_clm_start": "2019-06-18 09:47:43", - "ASS0dfe2b4467a3_clm_end": "2019-06-18 09:48:49", - "ASS0dfe2b4467a3_qst163": 13, - "ASS0dfe2b4467a3_perf_overallchar_1": 1, - "ASS0dfe2b4467a3_perf_overallchar_2": 1, - "ASS0dfe2b4467a3_perf_overallchar_3": 1, - "ASS0dfe2b4467a3_char_agecompare_pos": 3, - "ASS0dfe2b4467a3_char_agecompare_neg": 2, - "ASS0dfe2b4467a3_farmgoelocation": "43.6067038 3.8810524 0.0 17.559", - "ASS0dfe2b4467a3_char_overallperf_pos": 3, - "ASS0dfe2b4467a3_char_overallperf_neg": 1, - "ASS0dfe2b4467a3_rowuuid": "39339546-1237-456a-a0fa-f8fafe76d5e0" - }, - { - "REG_surveyid": "5c242a82-53fa-4c3b-8741-bf87eb88a8e3", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "867599042464449", - "REG_clm_start": "2019-06-18 09:34:22", - "REG_clm_end": "2019-06-18 09:34:38", - "REG_qst162": "14", - "REG_farmername": "Tom", - "REG_age": 60, - "REG_gender": 1, - "REG_rowuuid": "9d620e8a-7db3-416b-af98-e2ab8d7c54dd", - "ASS0dfe2b4467a3_surveyid": "cccf039e-fe96-4690-bcda-f9bcd729ffc0", - "ASS0dfe2b4467a3_originid": "ODKTOOLS", - "ASS0dfe2b4467a3_clm_deviceimei": "867599042464449", - "ASS0dfe2b4467a3_clm_start": "2019-06-18 09:48:57", - "ASS0dfe2b4467a3_clm_end": "2019-06-18 09:50:09", - "ASS0dfe2b4467a3_qst163": 14, - "ASS0dfe2b4467a3_perf_overallchar_1": 1, - "ASS0dfe2b4467a3_perf_overallchar_2": 1, - "ASS0dfe2b4467a3_perf_overallchar_3": 1, - "ASS0dfe2b4467a3_char_agecompare_pos": 2, - "ASS0dfe2b4467a3_char_agecompare_neg": 1, - "ASS0dfe2b4467a3_farmgoelocation": "43.6067034 3.8810533 0.0 17.442", - "ASS0dfe2b4467a3_char_overallperf_pos": 1, - "ASS0dfe2b4467a3_char_overallperf_neg": 2, - "ASS0dfe2b4467a3_rowuuid": "2087451f-f204-4596-8445-416ab0619557" - }, - { - "REG_surveyid": "afd87196-3286-4830-b498-9c63f7e0fc7f", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "867599042464449", - "REG_clm_start": "2019-06-18 09:34:48", - "REG_clm_end": "2019-06-18 09:35:20", - "REG_qst162": "15", - "REG_farmername": "Marie-Angelique", - "REG_age": 35, - "REG_gender": 2, - "REG_rowuuid": "465e5096-2569-4f49-95e1-f1c80d9d95d7", - "ASS0dfe2b4467a3_surveyid": "871048bc-a128-4552-b201-785bda5db88e", - "ASS0dfe2b4467a3_originid": "ODKTOOLS", - "ASS0dfe2b4467a3_clm_deviceimei": "867599042464449", - "ASS0dfe2b4467a3_clm_start": "2019-06-18 09:50:13", - "ASS0dfe2b4467a3_clm_end": "2019-06-18 09:50:53", - "ASS0dfe2b4467a3_qst163": 15, - "ASS0dfe2b4467a3_perf_overallchar_1": 1, - "ASS0dfe2b4467a3_perf_overallchar_2": 1, - "ASS0dfe2b4467a3_perf_overallchar_3": 1, - "ASS0dfe2b4467a3_char_agecompare_pos": 1, - "ASS0dfe2b4467a3_char_agecompare_neg": 3, - "ASS0dfe2b4467a3_farmgoelocation": "43.6067063 3.8810536 0.0 17.472", - "ASS0dfe2b4467a3_char_overallperf_pos": 1, - "ASS0dfe2b4467a3_char_overallperf_neg": 2, - "ASS0dfe2b4467a3_rowuuid": "2289d678-9b4e-40e7-a93f-f5d05cdf6c03" - }, - { - "REG_surveyid": "844a9a01-21bd-47be-b396-b0bc523c3d9a", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "867599042464449", - "REG_clm_start": "2019-06-18 09:35:28", - "REG_clm_end": "2019-06-18 09:35:52", - "REG_qst162": "16", - "REG_farmername": "Lukas", - "REG_age": 52, - "REG_gender": 1, - "REG_rowuuid": "343e2ce9-d9a5-4634-ae2d-8e84c070a5f0", - "ASS0dfe2b4467a3_surveyid": "b80b39b6-9c40-4731-adf9-56b75b8944eb", - "ASS0dfe2b4467a3_originid": "ODKTOOLS", - "ASS0dfe2b4467a3_clm_deviceimei": "867599042464449", - "ASS0dfe2b4467a3_clm_start": "2019-06-18 09:50:59", - "ASS0dfe2b4467a3_clm_end": "2019-06-18 09:51:42", - "ASS0dfe2b4467a3_qst163": 16, - "ASS0dfe2b4467a3_perf_overallchar_1": 1, - "ASS0dfe2b4467a3_perf_overallchar_2": 1, - "ASS0dfe2b4467a3_perf_overallchar_3": 1, - "ASS0dfe2b4467a3_char_agecompare_pos": 1, - "ASS0dfe2b4467a3_char_agecompare_neg": 3, - "ASS0dfe2b4467a3_farmgoelocation": "43.6067183 3.8810487 0.0 17.367", - "ASS0dfe2b4467a3_char_overallperf_pos": 3, - "ASS0dfe2b4467a3_char_overallperf_neg": 1, - "ASS0dfe2b4467a3_rowuuid": "0c5f26ab-3b3a-4ce3-8982-8bf313fbd1b8" - }, - { - "REG_surveyid": "7647ad25-007e-4a60-b488-eec666897a02", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "867599042464449", - "REG_clm_start": "2019-06-18 09:36:13", - "REG_clm_end": "2019-06-18 09:36:39", - "REG_qst162": "17", - "REG_farmername": "Bryan ", - "REG_age": 1700, - "REG_gender": 1, - "REG_rowuuid": "ad32948d-82e0-43e5-81a0-7df1f4725ed7", - "ASS0dfe2b4467a3_surveyid": "395822da-8e17-4176-8f01-90734eba120a", - "ASS0dfe2b4467a3_originid": "ODKTOOLS", - "ASS0dfe2b4467a3_clm_deviceimei": "867599042464449", - "ASS0dfe2b4467a3_clm_start": "2019-06-18 09:52:04", - "ASS0dfe2b4467a3_clm_end": "2019-06-18 09:52:44", - "ASS0dfe2b4467a3_qst163": 17, - "ASS0dfe2b4467a3_perf_overallchar_1": 1, - "ASS0dfe2b4467a3_perf_overallchar_2": 2, - "ASS0dfe2b4467a3_perf_overallchar_3": 1, - "ASS0dfe2b4467a3_char_agecompare_pos": 2, - "ASS0dfe2b4467a3_char_agecompare_neg": 1, - "ASS0dfe2b4467a3_farmgoelocation": "43.6067117 3.8810579 0.0 17.985", - "ASS0dfe2b4467a3_char_overallperf_pos": 2, - "ASS0dfe2b4467a3_char_overallperf_neg": 1, - "ASS0dfe2b4467a3_rowuuid": "0f0081c0-929d-4591-9ab2-9ac3835b9fd4" - }, - { - "REG_surveyid": "94c1d2dc-d02e-421c-b0d7-c89816cc2fde", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "867599042464449", - "REG_clm_start": "2019-06-18 09:36:50", - "REG_clm_end": "2019-06-18 09:37:07", - "REG_qst162": "18", - "REG_farmername": "Richard", - "REG_age": 49, - "REG_gender": 1, - "REG_rowuuid": "a544467a-6c43-42fe-b8bc-5b95e7abe0bc", - "ASS0dfe2b4467a3_surveyid": "da4dcef6-5576-44e6-9562-bfd0ae23c1cc", - "ASS0dfe2b4467a3_originid": "ODKTOOLS", - "ASS0dfe2b4467a3_clm_deviceimei": "861957033866129", - "ASS0dfe2b4467a3_clm_start": "2019-06-18 09:52:55", - "ASS0dfe2b4467a3_clm_end": "2019-06-18 09:55:27", - "ASS0dfe2b4467a3_qst163": 18, - "ASS0dfe2b4467a3_perf_overallchar_1": 1, - "ASS0dfe2b4467a3_perf_overallchar_2": 1, - "ASS0dfe2b4467a3_perf_overallchar_3": 1, - "ASS0dfe2b4467a3_char_agecompare_pos": 2, - "ASS0dfe2b4467a3_char_agecompare_neg": 3, - "ASS0dfe2b4467a3_farmgoelocation": "43.60712802 3.881197691 52.48563629 16.0", - "ASS0dfe2b4467a3_char_overallperf_pos": 1, - "ASS0dfe2b4467a3_char_overallperf_neg": 2, - "ASS0dfe2b4467a3_rowuuid": "03e7fb90-7d8c-4049-917b-593fb5631ef4" - }, - { - "REG_surveyid": "004da381-3bcf-423d-a442-72a3d45cd8cb", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "867599042464449", - "REG_clm_start": "2019-06-18 09:37:17", - "REG_clm_end": "2019-06-18 09:37:34", - "REG_qst162": "19", - "REG_farmername": "Asrat", - "REG_age": 45, - "REG_gender": 1, - "REG_rowuuid": "66a1eab5-426f-4694-ab02-d4594e2a8855", - "ASS0dfe2b4467a3_surveyid": "11c6bc0a-3f89-4894-8c17-a1784eb19306", - "ASS0dfe2b4467a3_originid": "ODKTOOLS", - "ASS0dfe2b4467a3_clm_deviceimei": "867599042464449", - "ASS0dfe2b4467a3_clm_start": "2019-06-18 09:55:48", - "ASS0dfe2b4467a3_clm_end": "2019-06-18 09:56:43", - "ASS0dfe2b4467a3_qst163": 19, - "ASS0dfe2b4467a3_perf_overallchar_1": 1, - "ASS0dfe2b4467a3_perf_overallchar_2": 1, - "ASS0dfe2b4467a3_perf_overallchar_3": 1, - "ASS0dfe2b4467a3_char_agecompare_pos": 2, - "ASS0dfe2b4467a3_char_agecompare_neg": 3, - "ASS0dfe2b4467a3_farmgoelocation": "43.6067123 3.8810379 0.0 18.071", - "ASS0dfe2b4467a3_char_overallperf_pos": 1, - "ASS0dfe2b4467a3_char_overallperf_neg": 3, - "ASS0dfe2b4467a3_rowuuid": "e596f92f-143c-47d0-979d-0878ba7bb65f" - }, - { - "REG_surveyid": "f74d8230-bf14-4caa-b045-0bc654243b41", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "351856086395761", - "REG_clm_start": "2019-06-18 09:36:45", - "REG_clm_end": "2019-06-18 09:37:10", - "REG_qst162": "2", - "REG_farmername": "Bela Teeken", - "REG_age": 40, - "REG_gender": 1, - "REG_rowuuid": "cdb10eef-429f-46a3-8f10-3dd52c2ddec2", - "ASS0dfe2b4467a3_surveyid": "0967b532-a041-4542-8df2-caba38f7fb26", - "ASS0dfe2b4467a3_originid": "ODKTOOLS", - "ASS0dfe2b4467a3_clm_deviceimei": "351856086395761", - "ASS0dfe2b4467a3_clm_start": "2019-06-18 09:54:57", - "ASS0dfe2b4467a3_clm_end": "2019-06-18 09:57:25", - "ASS0dfe2b4467a3_qst163": 2, - "ASS0dfe2b4467a3_perf_overallchar_1": 1, - "ASS0dfe2b4467a3_perf_overallchar_2": 1, - "ASS0dfe2b4467a3_perf_overallchar_3": 2, - "ASS0dfe2b4467a3_char_agecompare_pos": 1, - "ASS0dfe2b4467a3_char_agecompare_neg": 3, - "ASS0dfe2b4467a3_farmgoelocation": "43.60678426 3.88130645 89.0 4.288", - "ASS0dfe2b4467a3_char_overallperf_pos": 3, - "ASS0dfe2b4467a3_char_overallperf_neg": 1, - "ASS0dfe2b4467a3_rowuuid": "2445e061-5fa2-4bfa-bcef-f3db0d324e5c" - }, - { - "REG_surveyid": "fc650be1-607f-4474-990f-b1380a398560", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "867599042464449", - "REG_clm_start": "2019-06-18 09:37:43", - "REG_clm_end": "2019-06-18 09:38:07", - "REG_qst162": "20", - "REG_farmername": "Tawanda", - "REG_age": 42, - "REG_gender": 1, - "REG_rowuuid": "64d1dbdb-84c8-4d51-a047-c363e6ddb747", - "ASS0dfe2b4467a3_surveyid": "0a63fa4c-dec1-4724-823c-12302a7707d2", - "ASS0dfe2b4467a3_originid": "ODKTOOLS", - "ASS0dfe2b4467a3_clm_deviceimei": "867599042464449", - "ASS0dfe2b4467a3_clm_start": "2019-06-18 09:57:22", - "ASS0dfe2b4467a3_clm_end": "2019-06-18 09:57:59", - "ASS0dfe2b4467a3_qst163": 20, - "ASS0dfe2b4467a3_perf_overallchar_1": 1, - "ASS0dfe2b4467a3_perf_overallchar_2": 1, - "ASS0dfe2b4467a3_perf_overallchar_3": 1, - "ASS0dfe2b4467a3_char_agecompare_pos": 3, - "ASS0dfe2b4467a3_char_agecompare_neg": 2, - "ASS0dfe2b4467a3_farmgoelocation": "43.6067118 3.8810352 0.0 19.306", - "ASS0dfe2b4467a3_char_overallperf_pos": 3, - "ASS0dfe2b4467a3_char_overallperf_neg": 1, - "ASS0dfe2b4467a3_rowuuid": "eb8edc44-e9e8-40f4-98a9-038b7668f68b" - }, - { - "REG_surveyid": "0622ebbb-cacd-46be-bfd7-5bba4fdae72f", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "867599042464449", - "REG_clm_start": "2019-06-18 09:38:18", - "REG_clm_end": "2019-06-18 09:38:33", - "REG_qst162": "21", - "REG_farmername": "Kenneth", - "REG_age": 42, - "REG_gender": 1, - "REG_rowuuid": "352c6c33-b17d-4a00-9f2d-17190c4fb551", - "ASS0dfe2b4467a3_surveyid": "c97e7056-33de-4d65-be69-67f0cd4eb066", - "ASS0dfe2b4467a3_originid": "ODKTOOLS", - "ASS0dfe2b4467a3_clm_deviceimei": "351856086395761", - "ASS0dfe2b4467a3_clm_start": "2019-06-18 10:06:33", - "ASS0dfe2b4467a3_clm_end": "2019-06-18 10:07:26", - "ASS0dfe2b4467a3_qst163": 21, - "ASS0dfe2b4467a3_perf_overallchar_1": 1, - "ASS0dfe2b4467a3_perf_overallchar_2": 1, - "ASS0dfe2b4467a3_perf_overallchar_3": 2, - "ASS0dfe2b4467a3_char_agecompare_pos": 3, - "ASS0dfe2b4467a3_char_agecompare_neg": 2, - "ASS0dfe2b4467a3_farmgoelocation": "43.60669676 3.88122666 88.0 6.432", - "ASS0dfe2b4467a3_char_overallperf_pos": 2, - "ASS0dfe2b4467a3_char_overallperf_neg": 1, - "ASS0dfe2b4467a3_rowuuid": "beadfa37-501f-4bbd-a5c8-c58100846423" - }, - { - "REG_surveyid": "a62c1c47-dc3b-4dec-ab77-e53546b41f13", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "351856086395761", - "REG_clm_start": "2019-06-18 09:39:07", - "REG_clm_end": "2019-06-18 09:39:27", - "REG_qst162": "22", - "REG_farmername": "Peter Kulakow", - "REG_age": 40, - "REG_gender": 1, - "REG_rowuuid": "60d13407-cb36-4f16-aedb-c34e702cf304", - "ASS0dfe2b4467a3_surveyid": "52a9e0fe-b607-457d-add4-4915bbf4283e", - "ASS0dfe2b4467a3_originid": "ODKTOOLS", - "ASS0dfe2b4467a3_clm_deviceimei": "351856086395761", - "ASS0dfe2b4467a3_clm_start": "2019-06-18 09:49:42", - "ASS0dfe2b4467a3_clm_end": "2019-06-18 09:54:21", - "ASS0dfe2b4467a3_qst163": 22, - "ASS0dfe2b4467a3_perf_overallchar_1": 1, - "ASS0dfe2b4467a3_perf_overallchar_2": 2, - "ASS0dfe2b4467a3_perf_overallchar_3": 2, - "ASS0dfe2b4467a3_char_agecompare_pos": 2, - "ASS0dfe2b4467a3_char_agecompare_neg": 1, - "ASS0dfe2b4467a3_farmgoelocation": "43.60668698 3.88112638 90.0 4.288", - "ASS0dfe2b4467a3_char_overallperf_pos": 2, - "ASS0dfe2b4467a3_char_overallperf_neg": 3, - "ASS0dfe2b4467a3_rowuuid": "fc0755cd-6464-46d7-80ce-191cd60179b0" - }, - { - "REG_surveyid": "664c4019-6aee-4b29-bd4f-2d905329f0cf", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "861957033866129", - "REG_clm_start": "2019-06-18 09:40:24", - "REG_clm_end": "2019-06-18 09:40:37", - "REG_qst162": "23", - "REG_farmername": "Carlos", - "REG_age": 41, - "REG_gender": 1, - "REG_rowuuid": "8b285d67-a36e-4436-bc2a-ea1621d73309", - "ASS0dfe2b4467a3_surveyid": "b63b5a0c-6168-450a-abbf-7aa192e1a0aa", - "ASS0dfe2b4467a3_originid": "ODKTOOLS", - "ASS0dfe2b4467a3_clm_deviceimei": "861957033866129", - "ASS0dfe2b4467a3_clm_start": "2019-06-18 10:40:32", - "ASS0dfe2b4467a3_clm_end": "2019-06-18 10:41:19", - "ASS0dfe2b4467a3_qst163": 23, - "ASS0dfe2b4467a3_perf_overallchar_1": 1, - "ASS0dfe2b4467a3_perf_overallchar_2": 1, - "ASS0dfe2b4467a3_perf_overallchar_3": 2, - "ASS0dfe2b4467a3_char_agecompare_pos": 2, - "ASS0dfe2b4467a3_char_agecompare_neg": 1, - "ASS0dfe2b4467a3_farmgoelocation": "43.60679489079215 3.8810653802134634 80.87684523824322 128.0", - "ASS0dfe2b4467a3_char_overallperf_pos": 1, - "ASS0dfe2b4467a3_char_overallperf_neg": 2, - "ASS0dfe2b4467a3_rowuuid": "744ecca1-5a5d-4071-a75d-442d4a24e37c" - }, - { - "REG_surveyid": "9047aa0e-193c-44bb-a05c-be51b5bc5b73", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "867599042464449", - "REG_clm_start": "2019-06-18 09:40:24", - "REG_clm_end": "2019-06-18 09:40:38", - "REG_qst162": "24", - "REG_farmername": "Jacob", - "REG_age": 41, - "REG_gender": 1, - "REG_rowuuid": "f7595cbd-0158-44b6-964e-c73c9f2c11a5", - "ASS0dfe2b4467a3_surveyid": "6e4d32fc-04f0-4ec9-b338-6a8e46e7b7c8", - "ASS0dfe2b4467a3_originid": "ODKTOOLS", - "ASS0dfe2b4467a3_clm_deviceimei": "861957033866129", - "ASS0dfe2b4467a3_clm_start": "2019-06-18 10:42:45", - "ASS0dfe2b4467a3_clm_end": "2019-06-18 10:45:22", - "ASS0dfe2b4467a3_qst163": 24, - "ASS0dfe2b4467a3_perf_overallchar_1": 1, - "ASS0dfe2b4467a3_perf_overallchar_2": 1, - "ASS0dfe2b4467a3_perf_overallchar_3": 1, - "ASS0dfe2b4467a3_char_agecompare_pos": 3, - "ASS0dfe2b4467a3_char_agecompare_neg": 1, - "ASS0dfe2b4467a3_farmgoelocation": "43.60648856588999 3.8796904716962493 188.4825066862474 128.0", - "ASS0dfe2b4467a3_char_overallperf_pos": 1, - "ASS0dfe2b4467a3_char_overallperf_neg": 2, - "ASS0dfe2b4467a3_rowuuid": "ba49c01a-4db6-4e5c-bc9e-355176dae930" - }, - { - "REG_surveyid": "7069c25e-f794-4bef-bd03-56c56efa537b", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "351856086395761", - "REG_clm_start": "2019-06-18 09:38:02", - "REG_clm_end": "2019-06-18 09:38:40", - "REG_qst162": "29", - "REG_farmername": "Priscilla Marimo", - "REG_age": 40, - "REG_gender": 1, - "REG_rowuuid": "a92bef4b-b641-409d-b0ce-d6010e00a0f3", - "ASS0dfe2b4467a3_surveyid": "9c037557-8f1f-4aaa-bc03-32b466948e31", - "ASS0dfe2b4467a3_originid": "ODKTOOLS", - "ASS0dfe2b4467a3_clm_deviceimei": "867599042464449", - "ASS0dfe2b4467a3_clm_start": "2019-06-18 09:58:09", - "ASS0dfe2b4467a3_clm_end": "2019-06-18 10:01:18", - "ASS0dfe2b4467a3_qst163": 29, - "ASS0dfe2b4467a3_perf_overallchar_1": 1, - "ASS0dfe2b4467a3_perf_overallchar_2": 1, - "ASS0dfe2b4467a3_perf_overallchar_3": 1, - "ASS0dfe2b4467a3_char_agecompare_pos": 2, - "ASS0dfe2b4467a3_char_agecompare_neg": 1, - "ASS0dfe2b4467a3_farmgoelocation": "43.6067393 3.8810521 0.0 18.157", - "ASS0dfe2b4467a3_char_overallperf_pos": 2, - "ASS0dfe2b4467a3_char_overallperf_neg": 1, - "ASS0dfe2b4467a3_rowuuid": "a2a2fe2f-a11c-48b0-a106-bc465dbe4c2e" - }, - { - "REG_surveyid": "4dcef33d-9ffb-419b-a303-30fdd0302f47", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "351856086395761", - "REG_clm_start": "2019-06-18 09:03:36", - "REG_clm_end": "2019-06-18 09:35:01", - "REG_qst162": "3", - "REG_farmername": "Henerico Kulembeka", - "REG_age": 40, - "REG_gender": 1, - "REG_rowuuid": "4c4c5dc6-e858-4648-b0db-3b28c2afad5e", - "ASS0dfe2b4467a3_surveyid": "7103cc5f-e8db-4e19-90cb-fca483d943b0", - "ASS0dfe2b4467a3_originid": "ODKTOOLS", - "ASS0dfe2b4467a3_clm_deviceimei": "861957033866129", - "ASS0dfe2b4467a3_clm_start": "2019-06-18 09:58:35", - "ASS0dfe2b4467a3_clm_end": "2019-06-18 09:59:35", - "ASS0dfe2b4467a3_qst163": 3, - "ASS0dfe2b4467a3_perf_overallchar_1": 1, - "ASS0dfe2b4467a3_perf_overallchar_2": 1, - "ASS0dfe2b4467a3_perf_overallchar_3": 1, - "ASS0dfe2b4467a3_char_agecompare_pos": 3, - "ASS0dfe2b4467a3_char_agecompare_neg": 2, - "ASS0dfe2b4467a3_farmgoelocation": "43.606651406366375 3.881306782180653 97.71438217786714 96.0", - "ASS0dfe2b4467a3_char_overallperf_pos": 3, - "ASS0dfe2b4467a3_char_overallperf_neg": 2, - "ASS0dfe2b4467a3_rowuuid": "fb2ab16a-ca2e-4f58-a03c-f53595780067" - }, - { - "REG_surveyid": "656389a9-5dae-4bcb-a78e-93e79cc2f5c7", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "351856086395761", - "REG_clm_start": "2019-06-18 09:35:16", - "REG_clm_end": "2019-06-18 09:35:48", - "REG_qst162": "4", - "REG_farmername": "Mukani Moyo", - "REG_age": 40, - "REG_gender": 1, - "REG_rowuuid": "be3b1767-130f-4134-ab02-a75349703406", - "ASS0dfe2b4467a3_surveyid": "07b55fba-0d43-45ec-bcb6-4a3db2dbcd5a", - "ASS0dfe2b4467a3_originid": "ODKTOOLS", - "ASS0dfe2b4467a3_clm_deviceimei": "861957033866129", - "ASS0dfe2b4467a3_clm_start": "2019-06-18 09:57:12", - "ASS0dfe2b4467a3_clm_end": "2019-06-18 09:58:26", - "ASS0dfe2b4467a3_qst163": 4, - "ASS0dfe2b4467a3_perf_overallchar_1": 1, - "ASS0dfe2b4467a3_perf_overallchar_2": 2, - "ASS0dfe2b4467a3_perf_overallchar_3": 1, - "ASS0dfe2b4467a3_char_agecompare_pos": 3, - "ASS0dfe2b4467a3_char_agecompare_neg": 2, - "ASS0dfe2b4467a3_farmgoelocation": "43.607159533647035 3.8812283391470945 -199.34334050649795 3.", - "ASS0dfe2b4467a3_char_overallperf_pos": 3, - "ASS0dfe2b4467a3_char_overallperf_neg": 2, - "ASS0dfe2b4467a3_rowuuid": "6e950c80-e372-4946-ba46-75ddf3dcc6f4" - }, - { - "REG_surveyid": "c45eb645-aa9a-4eaa-844c-3064f64d5fce", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "352062080826724", - "REG_clm_start": "2019-06-18 09:36:20", - "REG_clm_end": "2019-06-18 09:37:35", - "REG_qst162": "5", - "REG_farmername": "Margaret", - "REG_age": 61, - "REG_gender": 2, - "REG_rowuuid": "1b2990f3-a692-4186-9e69-f334577a5323", - "ASS0dfe2b4467a3_surveyid": "7f71fecc-bec7-4109-aabb-b2c67c943cdb", - "ASS0dfe2b4467a3_originid": "ODKTOOLS", - "ASS0dfe2b4467a3_clm_deviceimei": "351856086395761", - "ASS0dfe2b4467a3_clm_start": "2019-06-18 10:00:59", - "ASS0dfe2b4467a3_clm_end": "2019-06-18 10:02:11", - "ASS0dfe2b4467a3_qst163": 5, - "ASS0dfe2b4467a3_perf_overallchar_1": 1, - "ASS0dfe2b4467a3_perf_overallchar_2": 2, - "ASS0dfe2b4467a3_perf_overallchar_3": 1, - "ASS0dfe2b4467a3_char_agecompare_pos": 2, - "ASS0dfe2b4467a3_char_agecompare_neg": 1, - "ASS0dfe2b4467a3_farmgoelocation": "43.60670343 3.88122425 87.0 4.288", - "ASS0dfe2b4467a3_char_overallperf_pos": 3, - "ASS0dfe2b4467a3_char_overallperf_neg": 2, - "ASS0dfe2b4467a3_rowuuid": "ae99c29e-f90b-4b41-8741-5fff8855b323" - }, - { - "REG_surveyid": "ddf9b5bb-0b9c-46a2-a271-1a0047d40574", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "351856086395761", - "REG_clm_start": "2019-06-18 09:36:00", - "REG_clm_end": "2019-06-18 09:36:38", - "REG_qst162": "6", - "REG_farmername": "Lora Forsythe", - "REG_age": 40, - "REG_gender": 1, - "REG_rowuuid": "1c5eddac-0656-418f-af6c-6eafe079c398", - "ASS0dfe2b4467a3_surveyid": "4f255371-46aa-49a9-be27-38cf5b85d483", - "ASS0dfe2b4467a3_originid": "ODKTOOLS", - "ASS0dfe2b4467a3_clm_deviceimei": "351856086395761", - "ASS0dfe2b4467a3_clm_start": "2019-06-18 09:57:30", - "ASS0dfe2b4467a3_clm_end": "2019-06-18 10:00:49", - "ASS0dfe2b4467a3_qst163": 6, - "ASS0dfe2b4467a3_perf_overallchar_1": 1, - "ASS0dfe2b4467a3_perf_overallchar_2": 2, - "ASS0dfe2b4467a3_perf_overallchar_3": 2, - "ASS0dfe2b4467a3_char_agecompare_pos": 2, - "ASS0dfe2b4467a3_char_agecompare_neg": 1, - "ASS0dfe2b4467a3_farmgoelocation": "43.60670662 3.88118455 84.0 4.288", - "ASS0dfe2b4467a3_char_overallperf_pos": 3, - "ASS0dfe2b4467a3_char_overallperf_neg": 2, - "ASS0dfe2b4467a3_rowuuid": "79482885-655a-488a-9871-9a4606846cac" - }, - { - "REG_surveyid": "247662b1-35fc-44b3-838e-b7bf2fcefaab", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "861957033866129", - "REG_clm_start": "2019-06-18 09:37:32", - "REG_clm_end": "2019-06-18 09:37:56", - "REG_qst162": "7", - "REG_farmername": "Noel", - "REG_age": 36, - "REG_gender": 1, - "REG_rowuuid": "2f55a99a-17a4-492c-a6db-1493dc668a12", - "ASS0dfe2b4467a3_surveyid": "26f11b34-526a-4e57-a9a1-eee8807da35e", - "ASS0dfe2b4467a3_originid": "ODKTOOLS", - "ASS0dfe2b4467a3_clm_deviceimei": "867599042464449", - "ASS0dfe2b4467a3_clm_start": "2019-06-18 10:07:29", - "ASS0dfe2b4467a3_clm_end": "2019-06-18 10:08:05", - "ASS0dfe2b4467a3_qst163": 7, - "ASS0dfe2b4467a3_perf_overallchar_1": 1, - "ASS0dfe2b4467a3_perf_overallchar_2": 1, - "ASS0dfe2b4467a3_perf_overallchar_3": 1, - "ASS0dfe2b4467a3_char_agecompare_pos": 1, - "ASS0dfe2b4467a3_char_agecompare_neg": 3, - "ASS0dfe2b4467a3_farmgoelocation": "43.6067297 3.8810437 0.0 18.792", - "ASS0dfe2b4467a3_char_overallperf_pos": 1, - "ASS0dfe2b4467a3_char_overallperf_neg": 2, - "ASS0dfe2b4467a3_rowuuid": "5f2b5963-88bf-40cf-b6c0-bd3a4dfc0644" - }, - { - "REG_surveyid": "89681144-b149-498e-992c-a198eafc2943", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "352062080826724", - "REG_clm_start": "2019-06-18 09:34:07", - "REG_clm_end": "2019-06-18 09:39:28", - "REG_qst162": "8", - "REG_farmername": "Stephen", - "REG_age": 36, - "REG_gender": 1, - "REG_rowuuid": "86d9ddd2-fc62-44c3-a61e-4a510f5b68d0", - "ASS0dfe2b4467a3_surveyid": "29138f30-ecf8-42de-b680-6cccca227add", - "ASS0dfe2b4467a3_originid": "ODKTOOLS", - "ASS0dfe2b4467a3_clm_deviceimei": "351856086395761", - "ASS0dfe2b4467a3_clm_start": "2019-06-18 10:04:13", - "ASS0dfe2b4467a3_clm_end": "2019-06-18 10:05:23", - "ASS0dfe2b4467a3_qst163": 8, - "ASS0dfe2b4467a3_perf_overallchar_1": 1, - "ASS0dfe2b4467a3_perf_overallchar_2": 2, - "ASS0dfe2b4467a3_perf_overallchar_3": 1, - "ASS0dfe2b4467a3_char_agecompare_pos": 3, - "ASS0dfe2b4467a3_char_agecompare_neg": 1, - "ASS0dfe2b4467a3_farmgoelocation": "43.60670066 3.88123269 89.0 4.288", - "ASS0dfe2b4467a3_char_overallperf_pos": 2, - "ASS0dfe2b4467a3_char_overallperf_neg": 1, - "ASS0dfe2b4467a3_rowuuid": "5e5fc642-1325-4826-b089-a234ca13da86" - }, - { - "REG_surveyid": "cdf0dc5a-e5cb-47c3-8720-ef2ffe2f93b8", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "861957033866129", - "REG_clm_start": "2019-06-18 09:38:05", - "REG_clm_end": "2019-06-18 09:38:36", - "REG_qst162": "9", - "REG_farmername": "Farmer", - "REG_age": 43, - "REG_gender": 1, - "REG_rowuuid": "87e5282f-4fb6-4749-9175-807057a9b8f2", - "ASS0dfe2b4467a3_surveyid": "907826f3-a944-443e-911e-f648c7bf051c", - "ASS0dfe2b4467a3_originid": "ODKTOOLS", - "ASS0dfe2b4467a3_clm_deviceimei": "351856086395761", - "ASS0dfe2b4467a3_clm_start": "2019-06-18 10:02:49", - "ASS0dfe2b4467a3_clm_end": "2019-06-18 10:04:06", - "ASS0dfe2b4467a3_qst163": 9, - "ASS0dfe2b4467a3_perf_overallchar_1": 1, - "ASS0dfe2b4467a3_perf_overallchar_2": 2, - "ASS0dfe2b4467a3_perf_overallchar_3": 1, - "ASS0dfe2b4467a3_char_agecompare_pos": 1, - "ASS0dfe2b4467a3_char_agecompare_neg": 2, - "ASS0dfe2b4467a3_farmgoelocation": "43.60669415 3.88122964 89.0 4.288", - "ASS0dfe2b4467a3_char_overallperf_pos": 2, - "ASS0dfe2b4467a3_char_overallperf_neg": 3, - "ASS0dfe2b4467a3_rowuuid": "ccd12dfa-9f63-44ce-95c9-f6b4cc81ab74" - } - ], - "importantfields": [ - { - "type": "PackageID", - "field": "REG_QST162", - "desc": "Package ID" - }, - { - "type": "FarmerName", - "field": "REG_farmername", - "desc": "Name of registered farmer" - }, - { - "type": "OverallCharPos", - "field": "ASS0dfe2b4467a3_char_overallperf_pos", - "desc": "Over all characteristic positive" - }, - { - "type": "OverallCharNeg", - "field": "ASS0dfe2b4467a3_char_overallperf_neg", - "desc": "Over all characteristic negative" - }, - { - "type": "OverallPerf1", - "field": "ASS0dfe2b4467a3_perf_overallchar_1", - "desc": "Over all performance of A against current" - }, - { - "type": "OverallPerf2", - "field": "ASS0dfe2b4467a3_perf_overallchar_2", - "desc": "Over all performance of B against current" - }, - { - "type": "OverallPerf3", - "field": "ASS0dfe2b4467a3_perf_overallchar_3", - "desc": "Over all performance of C against current" - } - ] -} \ No newline at end of file diff --git a/dev/data/april14/data.json b/dev/data/april14/data.json deleted file mode 100644 index 3103beb..0000000 --- a/dev/data/april14/data.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "Characteristics": [ - { - "name": "Overall Characteristic", - "id": 204, - "vars": [ - { - "name": "ASS398c17685db0_char_overallperf_pos" - }, - { - "name": "ASS398c17685db0_char_overallperf_neg" - } - ] - } - ], - "Performance": [ - { - "name": "Overall performace", - "id": 205, - "vars": [ - { - "name": "ASS398c17685db0_perf_overallchar_1" - }, - { - "name": "ASS398c17685db0_perf_overallchar_2" - }, - { - "name": "ASS398c17685db0_perf_overallchar_3" - } - ] - } - ], - "Explanatory": [ - { - "name": "What is the gender ?", - "id": 237, - "vars": "REG_gender" - } - ] -} \ No newline at end of file diff --git a/dev/data/april14/info.json b/dev/data/april14/info.json deleted file mode 100644 index 0c77eee..0000000 --- a/dev/data/april14/info.json +++ /dev/null @@ -1,1910 +0,0 @@ -{ - "project": { - "user_name": "JAKE", - "project_cod": "BioFert2", - "project_name": "BioFerTricot", - "project_abstract": "Assessment of Biofertilizer on yield of soybean in Ghana", - "project_tags": "Biofert,Ghana,Soybean,Tricot", - "project_pi": "Jacob Ulzen", - "project_piemail": "jakeulzen@yahoo.com", - "project_active": 1, - "project_public": 0, - "project_dashboard": 1, - "project_regstatus": 2, - "project_assstatus": 0, - "project_createcomb": 0, - "project_createpkgs": 0, - "project_numobs": 10, - "project_numcom": 3, - "project_lat": "", - "project_lon": "", - "project_creationdate": "2020-04-09 07:55:30", - "project_localvariety": 1, - "project_cnty": "GH", - "extra": null - }, - "registry": { - "lkptables": [ - { - "name": "REG_lkpgender", - "desc": "Lookup table (What is the gender ?)", - "fields": [ - { - "name": "gender_cod", - "desc": "Code", - "key": "true" - }, - { - "name": "gender_des", - "desc": "Description", - "key": null - } - ], - "values": [ - { - "gender_cod": 1, - "gender_des": "Male" - }, - { - "gender_cod": 2, - "gender_des": "Female" - } - ] - }, - { - "name": "REG_lkpwhocontrolstheincome", - "desc": "Lookup table (Who controls the income)", - "fields": [ - { - "name": "whocontrolstheincome_cod", - "desc": "Code", - "key": "true" - }, - { - "name": "whocontrolstheincome_des", - "desc": "Description", - "key": null - } - ], - "values": [ - { - "whocontrolstheincome_cod": -888, - "whocontrolstheincome_des": "Not applicable" - }, - { - "whocontrolstheincome_cod": -777, - "whocontrolstheincome_des": "Other" - }, - { - "whocontrolstheincome_cod": 1, - "whocontrolstheincome_des": "Male" - }, - { - "whocontrolstheincome_cod": 2, - "whocontrolstheincome_des": "Female" - }, - { - "whocontrolstheincome_cod": 3, - "whocontrolstheincome_des": "Joint" - }, - { - "whocontrolstheincome_cod": 4, - "whocontrolstheincome_des": "Youth" - } - ] - } - ], - "fields": [ - { - "name": "surveyid", - "odktype": "", - "desc": "Submission ID", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "originid", - "odktype": "", - "desc": "Origin", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "_submitted_by", - "odktype": "text", - "desc": "Submitted by", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "_submitted_date", - "odktype": "datetime", - "desc": "Submitted date", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "_geopoint", - "odktype": "geopoint", - "desc": "GPS point", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "clm_deviceimei", - "odktype": "deviceid", - "desc": "Device IMEI", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "clm_start", - "odktype": "start", - "desc": "Start of survey", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "qst162", - "odktype": "barcode", - "desc": "Package code", - "key": "true", - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "farmername", - "odktype": "text", - "desc": "Farmer name", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "village", - "odktype": "text", - "desc": "What is the village of the farmer?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "district", - "odktype": "text", - "desc": "What is the district of the farmer?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "whocontrolstheincome", - "odktype": "", - "desc": "Who controls the income", - "key": null, - "isMultiSelect": "true", - "multiSelectTable": "REG_geninfo_msel_whocontrolstheincome", - "rlookup": null, - "rtable": "REG_lkpwhocontrolstheincome", - "rfield": "whocontrolstheincome_cod" - }, - { - "name": "whocontrolstheincome_oth", - "odktype": "text", - "desc": "Other", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "gender", - "odktype": "select_one gender_opts", - "desc": "What is the gender ?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "REG_lkpgender", - "rfield": "gender_cod" - }, - { - "name": "farmgoelocation", - "odktype": "geopoint", - "desc": "Farm Geolocation", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "nodule", - "odktype": "text", - "desc": "which has more nodules?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "shootbiom", - "odktype": "text", - "desc": "Which has more leaves?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "grainyield", - "odktype": "text", - "desc": "Which gives higher grains?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "clm_end", - "odktype": "end", - "desc": "End of survey", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "rowuuid", - "odktype": "", - "desc": "Unique Row Identifier (UUID)", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - } - ] - }, - "assessments": [ - { - "code": "398c17685db0", - "desc": "Final", - "lkptables": [ - { - "name": "ASS398c17685db0_lkpqst163", - "desc": "Lookup table (Select the farmer)", - "fields": [ - { - "name": "qst163_cod", - "desc": "Code", - "key": "true" - }, - { - "name": "qst163_des", - "desc": "Description", - "key": null - } - ], - "values": [ - { - "qst163_cod": 1, - "qst163_des": "P:1-Amina-Bibirem-Kwae" - }, - { - "qst163_cod": 2, - "qst163_des": "P:2-Yakubu--Kwae" - }, - { - "qst163_cod": 3, - "qst163_des": "P:3-Yaw-Bibirem-Kwae" - }, - { - "qst163_cod": 4, - "qst163_des": "P:4-Kofi-Bibirem-Kwae" - }, - { - "qst163_cod": 5, - "qst163_des": "P:5-Yaa-Bibirem-Kwae" - }, - { - "qst163_cod": 6, - "qst163_des": "P:6-Adwoa-Bibirem-Kwae" - }, - { - "qst163_cod": 7, - "qst163_des": "P:7-Manu-Bibirem-Kwae" - }, - { - "qst163_cod": 8, - "qst163_des": "P:8-Anna-Bibirem-Kwae" - }, - { - "qst163_cod": 9, - "qst163_des": "P:9-Akos-Bibirem-Kwae" - }, - { - "qst163_cod": 10, - "qst163_des": "P:10-Joe-Bibirem-Kwae" - } - ] - }, - { - "name": "ASS398c17685db0_lkpchar_overallperf_pos", - "desc": "Lookup table (Overall, which option performed better?)", - "fields": [ - { - "name": "char_overallperf_pos_cod", - "desc": "Code", - "key": "true" - }, - { - "name": "char_overallperf_pos_des", - "desc": "Description", - "key": null - } - ], - "values": [ - { - "char_overallperf_pos_cod": 1, - "char_overallperf_pos_des": "Option A" - }, - { - "char_overallperf_pos_cod": 2, - "char_overallperf_pos_des": "Option B" - }, - { - "char_overallperf_pos_cod": 3, - "char_overallperf_pos_des": "Option C" - } - ] - }, - { - "name": "ASS398c17685db0_lkpperf_overallchar_1", - "desc": "Lookup table (Overall, whichone is best A or what you usually use?)", - "fields": [ - { - "name": "perf_overallchar_1_cod", - "desc": "Code", - "key": "true" - }, - { - "name": "perf_overallchar_1_des", - "desc": "Description", - "key": null - } - ], - "values": [ - { - "perf_overallchar_1_cod": 1, - "perf_overallchar_1_des": "Better" - }, - { - "perf_overallchar_1_cod": 2, - "perf_overallchar_1_des": "Worst" - } - ] - } - ], - "fields": [ - { - "name": "surveyid", - "odktype": "", - "desc": "Submission ID", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "originid", - "odktype": "", - "desc": "Origin", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "_submitted_by", - "odktype": "text", - "desc": "Submitted by", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "_submitted_date", - "odktype": "datetime", - "desc": "Submitted date", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "_geopoint", - "odktype": "geopoint", - "desc": "GPS point", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "clm_deviceimei", - "odktype": "deviceid", - "desc": "Device IMEI", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "clm_start", - "odktype": "start", - "desc": "Start of survey", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "qst163", - "odktype": "select_one qst163_opts", - "desc": "Select the farmer", - "key": "true", - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASS398c17685db0_lkpqst163", - "rfield": "qst163_cod" - }, - { - "name": "cal_qst163", - "odktype": "calculate", - "desc": "", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "char_overallperf_pos", - "odktype": "select_one char_overallperf_pos_opts", - "desc": "Overall, which option performed better?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASS398c17685db0_lkpchar_overallperf_pos", - "rfield": "char_overallperf_pos_cod" - }, - { - "name": "char_overallperf_neg", - "odktype": "select_one char_overallperf_neg_opts", - "desc": "Overall, which option performed worst?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASS398c17685db0_lkpchar_overallperf_pos", - "rfield": "char_overallperf_pos_cod" - }, - { - "name": "nodule", - "odktype": "text", - "desc": "which has more nodules?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "grainyield", - "odktype": "text", - "desc": "Which gives higher grains?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "shootbiom", - "odktype": "text", - "desc": "Which has more leaves?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "perf_overallchar_1", - "odktype": "select_one perf_overallchar_1_opts", - "desc": "Overall, whichone is best A or what you usually use?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASS398c17685db0_lkpperf_overallchar_1", - "rfield": "perf_overallchar_1_cod" - }, - { - "name": "perf_overallchar_2", - "odktype": "select_one perf_overallchar_2_opts", - "desc": "Overall, whichone is best B or what you usually use?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASS398c17685db0_lkpperf_overallchar_1", - "rfield": "perf_overallchar_1_cod" - }, - { - "name": "perf_overallchar_3", - "odktype": "select_one perf_overallchar_3_opts", - "desc": "Overall, whichone is best C or what you usually use?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASS398c17685db0_lkpperf_overallchar_1", - "rfield": "perf_overallchar_1_cod" - }, - { - "name": "clm_end", - "odktype": "end", - "desc": "End of survey", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "rowuuid", - "odktype": "", - "desc": "Unique Row Identifier (UUID)", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - } - ] - }, - { - "code": "c293cefb813b", - "desc": "InitialData", - "lkptables": [ - { - "name": "ASSc293cefb813b_lkpqst163", - "desc": "Lookup table (Select the farmer)", - "fields": [ - { - "name": "qst163_cod", - "desc": "Code", - "key": "true" - }, - { - "name": "qst163_des", - "desc": "Description", - "key": null - } - ], - "values": [ - { - "qst163_cod": 1, - "qst163_des": "P:1-Amina-Bibirem-Kwae" - }, - { - "qst163_cod": 2, - "qst163_des": "P:2-Yakubu--Kwae" - }, - { - "qst163_cod": 3, - "qst163_des": "P:3-Yaw-Bibirem-Kwae" - }, - { - "qst163_cod": 4, - "qst163_des": "P:4-Kofi-Bibirem-Kwae" - }, - { - "qst163_cod": 5, - "qst163_des": "P:5-Yaa-Bibirem-Kwae" - }, - { - "qst163_cod": 6, - "qst163_des": "P:6-Adwoa-Bibirem-Kwae" - }, - { - "qst163_cod": 7, - "qst163_des": "P:7-Manu-Bibirem-Kwae" - }, - { - "qst163_cod": 8, - "qst163_des": "P:8-Anna-Bibirem-Kwae" - }, - { - "qst163_cod": 9, - "qst163_des": "P:9-Akos-Bibirem-Kwae" - }, - { - "qst163_cod": 10, - "qst163_des": "P:10-Joe-Bibirem-Kwae" - } - ] - }, - { - "name": "ASSc293cefb813b_lkpwhocontrolstheincome", - "desc": "Lookup table (Who controls the income)", - "fields": [ - { - "name": "whocontrolstheincome_cod", - "desc": "Code", - "key": "true" - }, - { - "name": "whocontrolstheincome_des", - "desc": "Description", - "key": null - } - ], - "values": [ - { - "whocontrolstheincome_cod": -888, - "whocontrolstheincome_des": "Not applicable" - }, - { - "whocontrolstheincome_cod": -777, - "whocontrolstheincome_des": "Other" - }, - { - "whocontrolstheincome_cod": 1, - "whocontrolstheincome_des": "Male" - }, - { - "whocontrolstheincome_cod": 2, - "whocontrolstheincome_des": "Female" - }, - { - "whocontrolstheincome_cod": 3, - "whocontrolstheincome_des": "Joint" - }, - { - "whocontrolstheincome_cod": 4, - "whocontrolstheincome_des": "Youth" - } - ] - }, - { - "name": "ASSc293cefb813b_lkpgender", - "desc": "Lookup table (What is the gender ?)", - "fields": [ - { - "name": "gender_cod", - "desc": "Code", - "key": "true" - }, - { - "name": "gender_des", - "desc": "Description", - "key": null - } - ], - "values": [ - { - "gender_cod": 1, - "gender_des": "Male" - }, - { - "gender_cod": 2, - "gender_des": "Female" - } - ] - } - ], - "fields": [ - { - "name": "surveyid", - "odktype": "", - "desc": "Submission ID", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "originid", - "odktype": "", - "desc": "Origin", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "_submitted_by", - "odktype": "text", - "desc": "Submitted by", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "_submitted_date", - "odktype": "datetime", - "desc": "Submitted date", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "_geopoint", - "odktype": "geopoint", - "desc": "GPS point", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "clm_deviceimei", - "odktype": "deviceid", - "desc": "Device IMEI", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "clm_start", - "odktype": "start", - "desc": "Start of survey", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "qst163", - "odktype": "select_one qst163_opts", - "desc": "Select the farmer", - "key": "true", - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASSc293cefb813b_lkpqst163", - "rfield": "qst163_cod" - }, - { - "name": "cal_qst163", - "odktype": "calculate", - "desc": "", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "whocontrolstheincome", - "odktype": "", - "desc": "Who controls the income", - "key": null, - "isMultiSelect": "true", - "multiSelectTable": "ASSc293cefb813b_geninfo_msel_whocontrolstheincome", - "rlookup": null, - "rtable": "ASSc293cefb813b_lkpwhocontrolstheincome", - "rfield": "whocontrolstheincome_cod" - }, - { - "name": "whocontrolstheincome_oth", - "odktype": "text", - "desc": "Other", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "farmgoelocation", - "odktype": "geopoint", - "desc": "Farm Geolocation", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "gender", - "odktype": "select_one gender_opts", - "desc": "What is the gender ?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASSc293cefb813b_lkpgender", - "rfield": "gender_cod" - }, - { - "name": "clm_end", - "odktype": "end", - "desc": "End of survey", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "rowuuid", - "odktype": "", - "desc": "Unique Row Identifier (UUID)", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - } - ] - } - ], - "packages": [ - { - "package_id": 1, - "farmername": "Amina", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Biofertilizer", - "alias_name": "Biofix" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Biofertilizer", - "alias_name": "Fertisoil" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Biofertilizer", - "alias_name": "Control" - } - ] - } - ] - }, - { - "package_id": 2, - "farmername": "Yakubu", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Biofertilizer", - "alias_name": "Legumefix" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Biofertilizer", - "alias_name": "Control" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Biofertilizer", - "alias_name": "Nodumax" - } - ] - } - ] - }, - { - "package_id": 3, - "farmername": "Yaw", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Biofertilizer", - "alias_name": "Nodumax" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Biofertilizer", - "alias_name": "Legumefix" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Biofertilizer", - "alias_name": "Biofix" - } - ] - } - ] - }, - { - "package_id": 4, - "farmername": "Kofi", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Biofertilizer", - "alias_name": "Biofix" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Biofertilizer", - "alias_name": "Nodumax" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Biofertilizer", - "alias_name": "Fertisoil" - } - ] - } - ] - }, - { - "package_id": 5, - "farmername": "Yaa", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Biofertilizer", - "alias_name": "Fertisoil" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Biofertilizer", - "alias_name": "Control" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Biofertilizer", - "alias_name": "Legumefix" - } - ] - } - ] - }, - { - "package_id": 6, - "farmername": "Adwoa", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Biofertilizer", - "alias_name": "Control" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Biofertilizer", - "alias_name": "Biofix" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Biofertilizer", - "alias_name": "Legumefix" - } - ] - } - ] - }, - { - "package_id": 7, - "farmername": "Manu", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Biofertilizer", - "alias_name": "Nodumax" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Biofertilizer", - "alias_name": "Fertisoil" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Biofertilizer", - "alias_name": "Control" - } - ] - } - ] - }, - { - "package_id": 8, - "farmername": "Anna", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Biofertilizer", - "alias_name": "Legumefix" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Biofertilizer", - "alias_name": "Nodumax" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Biofertilizer", - "alias_name": "Fertisoil" - } - ] - } - ] - }, - { - "package_id": 9, - "farmername": "Akos", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Biofertilizer", - "alias_name": "Control" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Biofertilizer", - "alias_name": "Biofix" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Biofertilizer", - "alias_name": "Nodumax" - } - ] - } - ] - }, - { - "package_id": 10, - "farmername": "Joe", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Biofertilizer", - "alias_name": "Fertisoil" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Biofertilizer", - "alias_name": "Legumefix" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Biofertilizer", - "alias_name": "Biofix" - } - ] - } - ] - } - ], - "specialfields": [ - { - "type": "Characteristic", - "name": "ASS398c17685db0_char_overallperf_pos", - "desc": "Overall, which option performed better?" - }, - { - "type": "Characteristic", - "name": "ASS398c17685db0_char_overallperf_neg", - "desc": "Overall, which option performed worst?" - }, - { - "type": "Performance", - "name": "ASS398c17685db0_perf_overallchar_1", - "desc": "Overall, whichone is best A or what you usually use?" - }, - { - "type": "Performance", - "name": "ASS398c17685db0_perf_overallchar_2", - "desc": "Overall, whichone is best B or what you usually use?" - }, - { - "type": "Performance", - "name": "ASS398c17685db0_perf_overallchar_3", - "desc": "Overall, whichone is best C or what you usually use?" - } - ], - "data": [ - { - "REG_surveyid": "3efaf4e0-7cfc-4bc6-ac8b-d20e7b543aa2", - "REG_originid": "ODKTOOLS", - "REG__submitted_by": "Francis", - "REG__submitted_date": "2020-04-09 09:36:12", - "REG__geopoint": null, - "REG_clm_deviceimei": "099a383eb7e53676", - "REG_clm_start": "2020-04-09 09:34:08", - "REG_qst162": "1", - "REG_farmername": "Amina", - "REG_village": "Kwae", - "REG_district": "Bibirem", - "REG_whocontrolstheincome": "1", - "REG_whocontrolstheincome_oth": null, - "REG_gender": 2, - "REG_farmgoelocation": "6.14295029 -0.90071416 195.54644775390625 3.7900925", - "REG_nodule": "C", - "REG_shootbiom": "C", - "REG_grainyield": "C", - "REG_clm_end": "2020-04-09 09:35:44", - "REG_rowuuid": "1cd62024-bc9e-4b31-b882-a5764979f458", - "ASS398c17685db0_surveyid": "6733b3a9-294f-436e-9ced-bf3db3654f09", - "ASS398c17685db0_originid": "ODKTOOLS", - "ASS398c17685db0__submitted_by": "George", - "ASS398c17685db0__submitted_date": "2020-04-09 10:02:34", - "ASS398c17685db0__geopoint": null, - "ASS398c17685db0_clm_deviceimei": "099a383eb7e53676", - "ASS398c17685db0_clm_start": "2020-04-09 10:01:27", - "ASS398c17685db0_qst163": 1, - "ASS398c17685db0_cal_qst163": "P:1-Amina-Bibirem-Kwae", - "ASS398c17685db0_char_overallperf_pos": 2, - "ASS398c17685db0_char_overallperf_neg": 1, - "ASS398c17685db0_nodule": "B", - "ASS398c17685db0_grainyield": "B", - "ASS398c17685db0_shootbiom": "B", - "ASS398c17685db0_perf_overallchar_1": 2, - "ASS398c17685db0_perf_overallchar_2": 1, - "ASS398c17685db0_perf_overallchar_3": 1, - "ASS398c17685db0_clm_end": "2020-04-09 10:02:25", - "ASS398c17685db0_rowuuid": "8f109abd-9ce1-4671-be17-a4e233288a0d", - "ASSc293cefb813b_surveyid": "f8f019f7-c2de-423c-88c6-fa8af34467af", - "ASSc293cefb813b_originid": "ODKTOOLS", - "ASSc293cefb813b__submitted_by": "George", - "ASSc293cefb813b__submitted_date": "2020-04-09 10:02:34", - "ASSc293cefb813b__geopoint": null, - "ASSc293cefb813b_clm_deviceimei": "099a383eb7e53676", - "ASSc293cefb813b_clm_start": "2020-04-09 10:01:03", - "ASSc293cefb813b_qst163": 1, - "ASSc293cefb813b_cal_qst163": "P:1-Amina-Bibirem-Kwae", - "ASSc293cefb813b_whocontrolstheincome": "2", - "ASSc293cefb813b_whocontrolstheincome_oth": null, - "ASSc293cefb813b_farmgoelocation": "6.14292475 -0.90077771 202.79022216796875 4.596965", - "ASSc293cefb813b_gender": 2, - "ASSc293cefb813b_clm_end": "2020-04-09 10:01:24", - "ASSc293cefb813b_rowuuid": "9034c117-0cef-44e4-8dfa-4f777498fc79" - }, - { - "REG_surveyid": "9fe39c41-41a9-4753-8130-f6818a12abe4", - "REG_originid": "ODKTOOLS", - "REG__submitted_by": "Kofman", - "REG__submitted_date": "2020-04-09 09:49:46", - "REG__geopoint": null, - "REG_clm_deviceimei": "099a383eb7e53676", - "REG_clm_start": "2020-04-09 09:49:02", - "REG_qst162": "10", - "REG_farmername": "Joe", - "REG_village": "Kwae", - "REG_district": "Bibirem", - "REG_whocontrolstheincome": "1", - "REG_whocontrolstheincome_oth": null, - "REG_gender": 2, - "REG_farmgoelocation": "6.14293216 -0.90078553 199.0318603515625 4.004051", - "REG_nodule": "A", - "REG_shootbiom": "A", - "REG_grainyield": "A", - "REG_clm_end": "2020-04-09 09:49:38", - "REG_rowuuid": "3fa96419-1091-49e6-8c1d-f5b61cebd3f6", - "ASS398c17685db0_surveyid": "923e40f7-f63e-4d33-a770-9a155da810b2", - "ASS398c17685db0_originid": "ODKTOOLS", - "ASS398c17685db0__submitted_by": "Kofman", - "ASS398c17685db0__submitted_date": "2020-04-09 09:59:58", - "ASS398c17685db0__geopoint": null, - "ASS398c17685db0_clm_deviceimei": "099a383eb7e53676", - "ASS398c17685db0_clm_start": "2020-04-09 09:59:02", - "ASS398c17685db0_qst163": 10, - "ASS398c17685db0_cal_qst163": "P:10-Joe-Bibirem-Kwae", - "ASS398c17685db0_char_overallperf_pos": 3, - "ASS398c17685db0_char_overallperf_neg": 2, - "ASS398c17685db0_nodule": "C", - "ASS398c17685db0_grainyield": "C", - "ASS398c17685db0_shootbiom": "C", - "ASS398c17685db0_perf_overallchar_1": 1, - "ASS398c17685db0_perf_overallchar_2": 2, - "ASS398c17685db0_perf_overallchar_3": 2, - "ASS398c17685db0_clm_end": "2020-04-09 09:59:49", - "ASS398c17685db0_rowuuid": "4d2219d7-1216-4c86-9104-c1411197d9c2", - "ASSc293cefb813b_surveyid": "f8079228-9261-4144-adcb-cd6c205c9dda", - "ASSc293cefb813b_originid": "ODKTOOLS", - "ASSc293cefb813b__submitted_by": "Kofman", - "ASSc293cefb813b__submitted_date": "2020-04-09 09:59:58", - "ASSc293cefb813b__geopoint": null, - "ASSc293cefb813b_clm_deviceimei": "099a383eb7e53676", - "ASSc293cefb813b_clm_start": "2020-04-09 09:58:44", - "ASSc293cefb813b_qst163": 10, - "ASSc293cefb813b_cal_qst163": "P:10-Joe-Bibirem-Kwae", - "ASSc293cefb813b_whocontrolstheincome": "1", - "ASSc293cefb813b_whocontrolstheincome_oth": null, - "ASSc293cefb813b_farmgoelocation": "6.14299502 -0.9007542 192.482177734375 4.7918224", - "ASSc293cefb813b_gender": 1, - "ASSc293cefb813b_clm_end": "2020-04-09 09:58:58", - "ASSc293cefb813b_rowuuid": "cafbe248-6caf-4a2b-b686-0bf2fa86725b" - }, - { - "REG_surveyid": "7d552812-3f05-43e1-901e-da987e23519a", - "REG_originid": "ODKTOOLS", - "REG__submitted_by": "Francis", - "REG__submitted_date": "2020-04-09 09:38:15", - "REG__geopoint": null, - "REG_clm_deviceimei": "099a383eb7e53676", - "REG_clm_start": "2020-04-09 09:36:44", - "REG_qst162": "2", - "REG_farmername": "Yakubu", - "REG_village": "Kwae", - "REG_district": null, - "REG_whocontrolstheincome": "1", - "REG_whocontrolstheincome_oth": null, - "REG_gender": 1, - "REG_farmgoelocation": "6.14297828 -0.90072728 208.0889892578125 4.551484", - "REG_nodule": "A", - "REG_shootbiom": "A", - "REG_grainyield": "A", - "REG_clm_end": "2020-04-09 09:38:06", - "REG_rowuuid": "87a59db1-5f8a-4240-8ec9-a342be82a258", - "ASS398c17685db0_surveyid": "d0a8c695-e8d6-4feb-864b-6b883d2e3b07", - "ASS398c17685db0_originid": "ODKTOOLS", - "ASS398c17685db0__submitted_by": "George", - "ASS398c17685db0__submitted_date": "2020-04-09 10:04:05", - "ASS398c17685db0__geopoint": null, - "ASS398c17685db0_clm_deviceimei": "099a383eb7e53676", - "ASS398c17685db0_clm_start": "2020-04-09 10:03:06", - "ASS398c17685db0_qst163": 2, - "ASS398c17685db0_cal_qst163": "P:2-Yakubu--Kwae", - "ASS398c17685db0_char_overallperf_pos": 1, - "ASS398c17685db0_char_overallperf_neg": 2, - "ASS398c17685db0_nodule": "A", - "ASS398c17685db0_grainyield": "A", - "ASS398c17685db0_shootbiom": "A", - "ASS398c17685db0_perf_overallchar_1": 1, - "ASS398c17685db0_perf_overallchar_2": 2, - "ASS398c17685db0_perf_overallchar_3": 1, - "ASS398c17685db0_clm_end": "2020-04-09 10:03:44", - "ASS398c17685db0_rowuuid": "4d13dd8b-2c79-4ea1-995b-c31a5533ba7d", - "ASSc293cefb813b_surveyid": "91622ca6-2804-43d6-9b0d-efc1927167ff", - "ASSc293cefb813b_originid": "ODKTOOLS", - "ASSc293cefb813b__submitted_by": "George", - "ASSc293cefb813b__submitted_date": "2020-04-09 10:04:04", - "ASSc293cefb813b__geopoint": null, - "ASSc293cefb813b_clm_deviceimei": "099a383eb7e53676", - "ASSc293cefb813b_clm_start": "2020-04-09 10:02:40", - "ASSc293cefb813b_qst163": 2, - "ASSc293cefb813b_cal_qst163": "P:2-Yakubu--Kwae", - "ASSc293cefb813b_whocontrolstheincome": "1", - "ASSc293cefb813b_whocontrolstheincome_oth": null, - "ASSc293cefb813b_farmgoelocation": "6.14299025 -0.90067285 216.07196044921875 4.1909785", - "ASSc293cefb813b_gender": 1, - "ASSc293cefb813b_clm_end": "2020-04-09 10:03:02", - "ASSc293cefb813b_rowuuid": "b2f72c24-df39-495c-bed1-e71ad897febf" - }, - { - "REG_surveyid": "147f0bc2-bf8d-43f8-89a1-84f4440c46ad", - "REG_originid": "ODKTOOLS", - "REG__submitted_by": "Francis", - "REG__submitted_date": "2020-04-09 09:39:36", - "REG__geopoint": null, - "REG_clm_deviceimei": "099a383eb7e53676", - "REG_clm_start": "2020-04-09 09:38:29", - "REG_qst162": "3", - "REG_farmername": "Yaw", - "REG_village": "Kwae", - "REG_district": "Bibirem", - "REG_whocontrolstheincome": "2", - "REG_whocontrolstheincome_oth": null, - "REG_gender": 1, - "REG_farmgoelocation": "6.14291258 -0.90079328 203.26123046875 4.640659", - "REG_nodule": "B", - "REG_shootbiom": "B", - "REG_grainyield": "B", - "REG_clm_end": "2020-04-09 09:39:27", - "REG_rowuuid": "77de05d8-c8b4-431e-86f8-28ffa8534781", - "ASS398c17685db0_surveyid": "8dd44742-a52a-423f-bc51-71c28a44de8e", - "ASS398c17685db0_originid": "ODKTOOLS", - "ASS398c17685db0__submitted_by": "George", - "ASS398c17685db0__submitted_date": "2020-04-09 10:06:20", - "ASS398c17685db0__geopoint": null, - "ASS398c17685db0_clm_deviceimei": "099a383eb7e53676", - "ASS398c17685db0_clm_start": "2020-04-09 10:05:23", - "ASS398c17685db0_qst163": 3, - "ASS398c17685db0_cal_qst163": "P:3-Yaw-Bibirem-Kwae", - "ASS398c17685db0_char_overallperf_pos": 2, - "ASS398c17685db0_char_overallperf_neg": 3, - "ASS398c17685db0_nodule": "B", - "ASS398c17685db0_grainyield": "B", - "ASS398c17685db0_shootbiom": "B", - "ASS398c17685db0_perf_overallchar_1": 1, - "ASS398c17685db0_perf_overallchar_2": 1, - "ASS398c17685db0_perf_overallchar_3": 2, - "ASS398c17685db0_clm_end": "2020-04-09 10:06:13", - "ASS398c17685db0_rowuuid": "c2327b86-aac7-45d3-8f21-31b4226d87d4", - "ASSc293cefb813b_surveyid": "4275e539-736f-48bd-93af-617ccbd0f73a", - "ASSc293cefb813b_originid": "ODKTOOLS", - "ASSc293cefb813b__submitted_by": "George", - "ASSc293cefb813b__submitted_date": "2020-04-09 10:06:20", - "ASSc293cefb813b__geopoint": null, - "ASSc293cefb813b_clm_deviceimei": "099a383eb7e53676", - "ASSc293cefb813b_clm_start": "2020-04-09 10:04:48", - "ASSc293cefb813b_qst163": 3, - "ASSc293cefb813b_cal_qst163": "P:3-Yaw-Bibirem-Kwae", - "ASSc293cefb813b_whocontrolstheincome": "1", - "ASSc293cefb813b_whocontrolstheincome_oth": null, - "ASSc293cefb813b_farmgoelocation": "6.1429148 -0.90072025 205.86767578125 4.544867", - "ASSc293cefb813b_gender": 1, - "ASSc293cefb813b_clm_end": "2020-04-09 10:05:17", - "ASSc293cefb813b_rowuuid": "f9a12839-ab4a-4402-85bf-646af7c2831c" - }, - { - "REG_surveyid": "ae2eb229-3247-4b11-ae62-ce95063b20f8", - "REG_originid": "ODKTOOLS", - "REG__submitted_by": "Francis", - "REG__submitted_date": "2020-04-09 09:41:19", - "REG__geopoint": null, - "REG_clm_deviceimei": "099a383eb7e53676", - "REG_clm_start": "2020-04-09 09:39:52", - "REG_qst162": "4", - "REG_farmername": "Kofi", - "REG_village": "Kwae", - "REG_district": "Bibirem", - "REG_whocontrolstheincome": "1", - "REG_whocontrolstheincome_oth": null, - "REG_gender": 1, - "REG_farmgoelocation": "6.14289935 -0.90074158 200.770263671875 4.2427015", - "REG_nodule": "C", - "REG_shootbiom": "A", - "REG_grainyield": "C", - "REG_clm_end": "2020-04-09 09:41:08", - "REG_rowuuid": "50cbe578-1a10-4c13-a7e0-c909fc0308f2", - "ASS398c17685db0_surveyid": "c1804ba4-a0d2-4f69-8d24-ee073226de6c", - "ASS398c17685db0_originid": "ODKTOOLS", - "ASS398c17685db0__submitted_by": "George", - "ASS398c17685db0__submitted_date": "2020-04-09 10:08:00", - "ASS398c17685db0__geopoint": null, - "ASS398c17685db0_clm_deviceimei": "099a383eb7e53676", - "ASS398c17685db0_clm_start": "2020-04-09 10:07:01", - "ASS398c17685db0_qst163": 4, - "ASS398c17685db0_cal_qst163": "P:4-Kofi-Bibirem-Kwae", - "ASS398c17685db0_char_overallperf_pos": 3, - "ASS398c17685db0_char_overallperf_neg": 1, - "ASS398c17685db0_nodule": "C", - "ASS398c17685db0_grainyield": "C", - "ASS398c17685db0_shootbiom": "C", - "ASS398c17685db0_perf_overallchar_1": 2, - "ASS398c17685db0_perf_overallchar_2": 1, - "ASS398c17685db0_perf_overallchar_3": 1, - "ASS398c17685db0_clm_end": "2020-04-09 10:07:51", - "ASS398c17685db0_rowuuid": "27d345b6-2d13-40fd-b006-f22d84294ee1", - "ASSc293cefb813b_surveyid": "358084b6-9c07-45e8-8d81-27c1d96e04ee", - "ASSc293cefb813b_originid": "ODKTOOLS", - "ASSc293cefb813b__submitted_by": "George", - "ASSc293cefb813b__submitted_date": "2020-04-09 10:07:59", - "ASSc293cefb813b__geopoint": null, - "ASSc293cefb813b_clm_deviceimei": "099a383eb7e53676", - "ASSc293cefb813b_clm_start": "2020-04-09 10:06:34", - "ASSc293cefb813b_qst163": 4, - "ASSc293cefb813b_cal_qst163": "P:4-Kofi-Bibirem-Kwae", - "ASSc293cefb813b_whocontrolstheincome": "1", - "ASSc293cefb813b_whocontrolstheincome_oth": null, - "ASSc293cefb813b_farmgoelocation": "6.14298852 -0.90075187 213.85003662109375 4.431617", - "ASSc293cefb813b_gender": 2, - "ASSc293cefb813b_clm_end": "2020-04-09 10:06:57", - "ASSc293cefb813b_rowuuid": "f22a77cb-d3d3-45e7-8135-bf39eebb748b" - }, - { - "REG_surveyid": "05b97f73-83ed-461e-8a35-6df2b5eeeb06", - "REG_originid": "ODKTOOLS", - "REG__submitted_by": "George", - "REG__submitted_date": "2020-04-09 09:43:19", - "REG__geopoint": null, - "REG_clm_deviceimei": "099a383eb7e53676", - "REG_clm_start": "2020-04-09 09:42:07", - "REG_qst162": "5", - "REG_farmername": "Yaa", - "REG_village": "Kwae", - "REG_district": "Bibirem", - "REG_whocontrolstheincome": "1", - "REG_whocontrolstheincome_oth": null, - "REG_gender": 2, - "REG_farmgoelocation": "6.14288141 -0.90080372 205.8109130859375 4.447491", - "REG_nodule": "A", - "REG_shootbiom": "C", - "REG_grainyield": "A", - "REG_clm_end": "2020-04-09 09:43:12", - "REG_rowuuid": "b6ab1ff7-2e24-4547-933c-f0932ab78dd2", - "ASS398c17685db0_surveyid": "992be63d-0c47-4078-ae41-18c173d12c75", - "ASS398c17685db0_originid": "ODKTOOLS", - "ASS398c17685db0__submitted_by": "George", - "ASS398c17685db0__submitted_date": "2020-04-09 10:09:31", - "ASS398c17685db0__geopoint": null, - "ASS398c17685db0_clm_deviceimei": "099a383eb7e53676", - "ASS398c17685db0_clm_start": "2020-04-09 10:08:35", - "ASS398c17685db0_qst163": 5, - "ASS398c17685db0_cal_qst163": "P:5-Yaa-Bibirem-Kwae", - "ASS398c17685db0_char_overallperf_pos": 1, - "ASS398c17685db0_char_overallperf_neg": 3, - "ASS398c17685db0_nodule": "A", - "ASS398c17685db0_grainyield": "A", - "ASS398c17685db0_shootbiom": "A", - "ASS398c17685db0_perf_overallchar_1": 1, - "ASS398c17685db0_perf_overallchar_2": 1, - "ASS398c17685db0_perf_overallchar_3": 2, - "ASS398c17685db0_clm_end": "2020-04-09 10:09:20", - "ASS398c17685db0_rowuuid": "401f741b-75da-4e74-8bdb-6eb3fc624fd9", - "ASSc293cefb813b_surveyid": "791ac772-5062-44a2-9bca-a413de374572", - "ASSc293cefb813b_originid": "ODKTOOLS", - "ASSc293cefb813b__submitted_by": "George", - "ASSc293cefb813b__submitted_date": "2020-04-09 10:09:30", - "ASSc293cefb813b__geopoint": null, - "ASSc293cefb813b_clm_deviceimei": "099a383eb7e53676", - "ASSc293cefb813b_clm_start": "2020-04-09 10:08:10", - "ASSc293cefb813b_qst163": 5, - "ASSc293cefb813b_cal_qst163": "P:5-Yaa-Bibirem-Kwae", - "ASSc293cefb813b_whocontrolstheincome": "2", - "ASSc293cefb813b_whocontrolstheincome_oth": null, - "ASSc293cefb813b_farmgoelocation": "6.14293315 -0.90075295 209.3438720703125 3.9814715", - "ASSc293cefb813b_gender": 2, - "ASSc293cefb813b_clm_end": "2020-04-09 10:08:31", - "ASSc293cefb813b_rowuuid": "cdb8994d-4f65-420e-ae58-34547762b788" - }, - { - "REG_surveyid": "4d30df4e-e4f0-4958-9456-c637a3de0d06", - "REG_originid": "ODKTOOLS", - "REG__submitted_by": "George", - "REG__submitted_date": "2020-04-09 09:44:41", - "REG__geopoint": null, - "REG_clm_deviceimei": "099a383eb7e53676", - "REG_clm_start": "2020-04-09 09:43:25", - "REG_qst162": "6", - "REG_farmername": "Adwoa", - "REG_village": "Kwae", - "REG_district": "Bibirem", - "REG_whocontrolstheincome": "2", - "REG_whocontrolstheincome_oth": null, - "REG_gender": 2, - "REG_farmgoelocation": "6.14292975 -0.90071303 211.3765869140625 4.7647142", - "REG_nodule": "B", - "REG_shootbiom": "C", - "REG_grainyield": "C", - "REG_clm_end": "2020-04-09 09:44:35", - "REG_rowuuid": "847c29bd-5c24-4787-bc75-1e84c1370141", - "ASS398c17685db0_surveyid": "6aba5b79-6c0e-419b-a389-2fd61a834b1a", - "ASS398c17685db0_originid": "ODKTOOLS", - "ASS398c17685db0__submitted_by": "George", - "ASS398c17685db0__submitted_date": "2020-04-09 10:11:39", - "ASS398c17685db0__geopoint": null, - "ASS398c17685db0_clm_deviceimei": "099a383eb7e53676", - "ASS398c17685db0_clm_start": "2020-04-09 10:10:51", - "ASS398c17685db0_qst163": 6, - "ASS398c17685db0_cal_qst163": "P:6-Adwoa-Bibirem-Kwae", - "ASS398c17685db0_char_overallperf_pos": 3, - "ASS398c17685db0_char_overallperf_neg": 1, - "ASS398c17685db0_nodule": "C", - "ASS398c17685db0_grainyield": "C", - "ASS398c17685db0_shootbiom": "C", - "ASS398c17685db0_perf_overallchar_1": 2, - "ASS398c17685db0_perf_overallchar_2": 1, - "ASS398c17685db0_perf_overallchar_3": 1, - "ASS398c17685db0_clm_end": "2020-04-09 10:11:30", - "ASS398c17685db0_rowuuid": "f170d05d-6faa-4035-a6c3-b78a0562033b", - "ASSc293cefb813b_surveyid": "ca3ab8a8-ff24-4086-bc64-ef0e424dcb86", - "ASSc293cefb813b_originid": "ODKTOOLS", - "ASSc293cefb813b__submitted_by": "George", - "ASSc293cefb813b__submitted_date": "2020-04-09 10:11:37", - "ASSc293cefb813b__geopoint": null, - "ASSc293cefb813b_clm_deviceimei": "099a383eb7e53676", - "ASSc293cefb813b_clm_start": "2020-04-09 10:10:29", - "ASSc293cefb813b_qst163": 6, - "ASSc293cefb813b_cal_qst163": "P:6-Adwoa-Bibirem-Kwae", - "ASSc293cefb813b_whocontrolstheincome": "2", - "ASSc293cefb813b_whocontrolstheincome_oth": null, - "ASSc293cefb813b_farmgoelocation": "6.14286157 -0.90077826 206.43646240234375 4.2048035", - "ASSc293cefb813b_gender": 2, - "ASSc293cefb813b_clm_end": "2020-04-09 10:10:48", - "ASSc293cefb813b_rowuuid": "06e74122-c7ac-400a-a518-eece890726ac" - }, - { - "REG_surveyid": "d11a666e-f711-40a8-b8a0-e59213b42bc1", - "REG_originid": "ODKTOOLS", - "REG__submitted_by": "George", - "REG__submitted_date": "2020-04-09 09:45:51", - "REG__geopoint": null, - "REG_clm_deviceimei": "099a383eb7e53676", - "REG_clm_start": "2020-04-09 09:44:46", - "REG_qst162": "7", - "REG_farmername": "Manu", - "REG_village": "Kwae", - "REG_district": "Bibirem", - "REG_whocontrolstheincome": "1", - "REG_whocontrolstheincome_oth": null, - "REG_gender": 1, - "REG_farmgoelocation": "6.14289891 -0.90067238 198.04803466796875 4.799225", - "REG_nodule": "A", - "REG_shootbiom": "B", - "REG_grainyield": "B", - "REG_clm_end": "2020-04-09 09:45:44", - "REG_rowuuid": "5d9ceec9-5a94-40bf-a52d-f112d46a91fe", - "ASS398c17685db0_surveyid": "9ba02ab3-8c37-4b3b-90ec-e65b371c1252", - "ASS398c17685db0_originid": "ODKTOOLS", - "ASS398c17685db0__submitted_by": "Francis", - "ASS398c17685db0__submitted_date": "2020-04-09 10:13:53", - "ASS398c17685db0__geopoint": null, - "ASS398c17685db0_clm_deviceimei": "099a383eb7e53676", - "ASS398c17685db0_clm_start": "2020-04-09 10:13:08", - "ASS398c17685db0_qst163": 7, - "ASS398c17685db0_cal_qst163": "P:7-Manu-Bibirem-Kwae", - "ASS398c17685db0_char_overallperf_pos": 2, - "ASS398c17685db0_char_overallperf_neg": 3, - "ASS398c17685db0_nodule": "B", - "ASS398c17685db0_grainyield": "B", - "ASS398c17685db0_shootbiom": "B", - "ASS398c17685db0_perf_overallchar_1": 1, - "ASS398c17685db0_perf_overallchar_2": 2, - "ASS398c17685db0_perf_overallchar_3": 1, - "ASS398c17685db0_clm_end": "2020-04-09 10:13:46", - "ASS398c17685db0_rowuuid": "744643e6-f479-413f-82fc-2c94c7673709", - "ASSc293cefb813b_surveyid": "dae857e8-fa5f-4858-b6ba-8990aa8e79c5", - "ASSc293cefb813b_originid": "ODKTOOLS", - "ASSc293cefb813b__submitted_by": "Francis", - "ASSc293cefb813b__submitted_date": "2020-04-09 10:13:53", - "ASSc293cefb813b__geopoint": null, - "ASSc293cefb813b_clm_deviceimei": "099a383eb7e53676", - "ASSc293cefb813b_clm_start": "2020-04-09 10:12:46", - "ASSc293cefb813b_qst163": 7, - "ASSc293cefb813b_cal_qst163": "P:7-Manu-Bibirem-Kwae", - "ASSc293cefb813b_whocontrolstheincome": "1", - "ASSc293cefb813b_whocontrolstheincome_oth": null, - "ASSc293cefb813b_farmgoelocation": "6.14294054 -0.90075607 200.69976806640625 3.7900925", - "ASSc293cefb813b_gender": 1, - "ASSc293cefb813b_clm_end": "2020-04-09 10:13:05", - "ASSc293cefb813b_rowuuid": "741dc86f-3469-41b3-b0c0-cf96acdf2ab1" - }, - { - "REG_surveyid": "e73ca391-4eab-4136-b2ce-01ecef883a5e", - "REG_originid": "ODKTOOLS", - "REG__submitted_by": "Kofman", - "REG__submitted_date": "2020-04-09 09:47:52", - "REG__geopoint": null, - "REG_clm_deviceimei": "099a383eb7e53676", - "REG_clm_start": "2020-04-09 09:47:01", - "REG_qst162": "8", - "REG_farmername": "Anna", - "REG_village": "Kwae", - "REG_district": "Bibirem", - "REG_whocontrolstheincome": "2", - "REG_whocontrolstheincome_oth": null, - "REG_gender": 2, - "REG_farmgoelocation": "6.14292621 -0.90073704 215.8431396484375 4.1088095", - "REG_nodule": "A", - "REG_shootbiom": "C", - "REG_grainyield": "C", - "REG_clm_end": "2020-04-09 09:47:45", - "REG_rowuuid": "63654389-da5c-49ab-8aab-f7c74605de6c", - "ASS398c17685db0_surveyid": "50994bd5-7284-4e7e-8e66-ab88c25340ad", - "ASS398c17685db0_originid": "ODKTOOLS", - "ASS398c17685db0__submitted_by": "Kofman", - "ASS398c17685db0__submitted_date": "2020-04-09 09:56:50", - "ASS398c17685db0__geopoint": null, - "ASS398c17685db0_clm_deviceimei": "099a383eb7e53676", - "ASS398c17685db0_clm_start": "2020-04-09 09:55:33", - "ASS398c17685db0_qst163": 8, - "ASS398c17685db0_cal_qst163": "P:8-Anna-Bibirem-Kwae", - "ASS398c17685db0_char_overallperf_pos": 2, - "ASS398c17685db0_char_overallperf_neg": 1, - "ASS398c17685db0_nodule": "B", - "ASS398c17685db0_grainyield": "B", - "ASS398c17685db0_shootbiom": "B", - "ASS398c17685db0_perf_overallchar_1": 1, - "ASS398c17685db0_perf_overallchar_2": 1, - "ASS398c17685db0_perf_overallchar_3": 1, - "ASS398c17685db0_clm_end": "2020-04-09 09:56:43", - "ASS398c17685db0_rowuuid": "0cf2ecb1-a5c5-40ed-ae92-e1f37c216f3f", - "ASSc293cefb813b_surveyid": "9da4ab10-b792-47ff-9f0d-8588ff2e1c94", - "ASSc293cefb813b_originid": "ODKTOOLS", - "ASSc293cefb813b__submitted_by": "Kofman", - "ASSc293cefb813b__submitted_date": "2020-04-09 09:55:25", - "ASSc293cefb813b__geopoint": null, - "ASSc293cefb813b_clm_deviceimei": "099a383eb7e53676", - "ASSc293cefb813b_clm_start": "2020-04-09 09:53:44", - "ASSc293cefb813b_qst163": 8, - "ASSc293cefb813b_cal_qst163": "P:8-Anna-Bibirem-Kwae", - "ASSc293cefb813b_whocontrolstheincome": "2", - "ASSc293cefb813b_whocontrolstheincome_oth": null, - "ASSc293cefb813b_farmgoelocation": "6.14292794 -0.90071744 210.56494140625 4.8063846", - "ASSc293cefb813b_gender": 1, - "ASSc293cefb813b_clm_end": "2020-04-09 09:55:17", - "ASSc293cefb813b_rowuuid": "2633827c-44d8-4ff6-9f58-3edd4df716b3" - }, - { - "REG_surveyid": "6097b68b-e2b5-48ee-924d-0527142dcd9c", - "REG_originid": "ODKTOOLS", - "REG__submitted_by": "Kofman", - "REG__submitted_date": "2020-04-09 09:48:51", - "REG__geopoint": null, - "REG_clm_deviceimei": "099a383eb7e53676", - "REG_clm_start": "2020-04-09 09:48:00", - "REG_qst162": "9", - "REG_farmername": "Akos", - "REG_village": "Kwae", - "REG_district": "Bibirem", - "REG_whocontrolstheincome": "1", - "REG_whocontrolstheincome_oth": null, - "REG_gender": 2, - "REG_farmgoelocation": "6.14295267 -0.90071121 207.08685302734375 4.08649", - "REG_nodule": "C", - "REG_shootbiom": "C", - "REG_grainyield": "C", - "REG_clm_end": "2020-04-09 09:48:44", - "REG_rowuuid": "9a606347-ce7a-46f0-a542-56df772facc1", - "ASS398c17685db0_surveyid": "3a263a6b-c857-4eb9-93d3-a130b8b5e1d6", - "ASS398c17685db0_originid": "ODKTOOLS", - "ASS398c17685db0__submitted_by": "Kofman", - "ASS398c17685db0__submitted_date": "2020-04-09 09:58:40", - "ASS398c17685db0__geopoint": null, - "ASS398c17685db0_clm_deviceimei": "099a383eb7e53676", - "ASS398c17685db0_clm_start": "2020-04-09 09:57:51", - "ASS398c17685db0_qst163": 9, - "ASS398c17685db0_cal_qst163": "P:9-Akos-Bibirem-Kwae", - "ASS398c17685db0_char_overallperf_pos": 3, - "ASS398c17685db0_char_overallperf_neg": 2, - "ASS398c17685db0_nodule": "C", - "ASS398c17685db0_grainyield": "C", - "ASS398c17685db0_shootbiom": "C", - "ASS398c17685db0_perf_overallchar_1": 1, - "ASS398c17685db0_perf_overallchar_2": 2, - "ASS398c17685db0_perf_overallchar_3": 1, - "ASS398c17685db0_clm_end": "2020-04-09 09:58:34", - "ASS398c17685db0_rowuuid": "45fb5792-0251-4b1f-9547-d68c1bdd9abe", - "ASSc293cefb813b_surveyid": "4d33265a-30ca-491e-bb44-73bcb452b95d", - "ASSc293cefb813b_originid": "ODKTOOLS", - "ASSc293cefb813b__submitted_by": "Kofman", - "ASSc293cefb813b__submitted_date": "2020-04-09 09:57:47", - "ASSc293cefb813b__geopoint": null, - "ASSc293cefb813b_clm_deviceimei": "099a383eb7e53676", - "ASSc293cefb813b_clm_start": "2020-04-09 09:57:16", - "ASSc293cefb813b_qst163": 9, - "ASSc293cefb813b_cal_qst163": "P:9-Akos-Bibirem-Kwae", - "ASSc293cefb813b_whocontrolstheincome": "2", - "ASSc293cefb813b_whocontrolstheincome_oth": null, - "ASSc293cefb813b_farmgoelocation": "6.14295803 -0.90073504 196.249755859375 4.467993", - "ASSc293cefb813b_gender": 2, - "ASSc293cefb813b_clm_end": "2020-04-09 09:57:41", - "ASSc293cefb813b_rowuuid": "88c322c3-edf3-4ddf-987d-42cb1ae26116" - } - ], - "importantfields": [ - { - "type": "PackageID", - "field": "REG_QST162", - "desc": "Package ID" - }, - { - "type": "FarmerName", - "field": "REG_farmername", - "desc": "Name of registered farmer" - }, - { - "type": "OverallCharPos", - "field": "ASS398c17685db0_char_overallperf_pos", - "desc": "Over all characteristic positive" - }, - { - "type": "OverallCharNeg", - "field": "ASS398c17685db0_char_overallperf_neg", - "desc": "Over all characteristic negative" - }, - { - "type": "OverallPerf1", - "field": "ASS398c17685db0_perf_overallchar_1", - "desc": "Over all performance of A against current" - }, - { - "type": "OverallPerf2", - "field": "ASS398c17685db0_perf_overallchar_2", - "desc": "Over all performance of B against current" - }, - { - "type": "OverallPerf3", - "field": "ASS398c17685db0_perf_overallchar_3", - "desc": "Over all performance of C against current" - } - ] -} \ No newline at end of file diff --git a/dev/data/bmadriz01/data.json b/dev/data/bmadriz01/data.json deleted file mode 100644 index a383a75..0000000 --- a/dev/data/bmadriz01/data.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "Characteristics": [ - { - "name": "Rendimiento", - "id": 1334, - "vars": [ - { - "name": "ASS53b537262b8a_char_bm01_pos" - }, - { - "name": "ASS53b537262b8a_char_bm01_neg" - } - ] - }, - { - "name": "Overall Characteristic", - "id": 204, - "vars": [ - { - "name": "ASSd2f91f545928_char_overallperf_pos" - }, - { - "name": "ASSd2f91f545928_char_overallperf_neg" - } - ] - } - ], - "Performance": [], - "Explanatory": [] -} \ No newline at end of file diff --git a/dev/data/bmadriz01/info.json b/dev/data/bmadriz01/info.json deleted file mode 100644 index e70b44f..0000000 --- a/dev/data/bmadriz01/info.json +++ /dev/null @@ -1,1400 +0,0 @@ -{ - "project": { - "user_name": "bmadriz", - "project_cod": "bmadriz01", - "project_name": "Proyecto uno server pruebas", - "project_abstract": "Primera prueba en server de pruebas", - "project_tags": "Pruebas,development", - "project_pi": "Brandon Madriz", - "project_piemail": "bmadriz@mrbotcr.com", - "project_active": 1, - "project_public": 0, - "project_dashboard": 1, - "project_regstatus": 2, - "project_assstatus": 0, - "project_createcomb": 0, - "project_createpkgs": 0, - "project_numobs": 10, - "project_numcom": 3, - "project_lat": "", - "project_lon": "", - "project_creationdate": "2020-04-03 05:40:13", - "project_localvariety": 1, - "project_cnty": "CR", - "extra": null - }, - "registry": { - "lkptables": [], - "fields": [ - { - "name": "surveyid", - "odktype": "", - "desc": "Submission ID", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "originid", - "odktype": "", - "desc": "Origin", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "_submitted_by", - "odktype": "text", - "desc": "Submitted by", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "_submitted_date", - "odktype": "datetime", - "desc": "Submitted date", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "_geopoint", - "odktype": "geopoint", - "desc": "GPS point", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "clm_deviceimei", - "odktype": "deviceid", - "desc": "Device IMEI", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "clm_start", - "odktype": "start", - "desc": "Start of survey", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "qst162", - "odktype": "barcode", - "desc": "Package code", - "key": "true", - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "farmername", - "odktype": "text", - "desc": "Farmer name", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "clm_end", - "odktype": "end", - "desc": "End of survey", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "rowuuid", - "odktype": "", - "desc": "Unique Row Identifier (UUID)", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - } - ] - }, - "assessments": [ - { - "code": "53b537262b8a", - "desc": "Envios", - "lkptables": [ - { - "name": "ASS53b537262b8a_lkpchar_bm01_pos", - "desc": "Lookup table (Cúal variedad le rindió más ?)", - "fields": [ - { - "name": "char_bm01_pos_cod", - "desc": "Code", - "key": "true" - }, - { - "name": "char_bm01_pos_des", - "desc": "Description", - "key": null - } - ], - "values": [ - { - "char_bm01_pos_cod": 1, - "char_bm01_pos_des": "Option A" - }, - { - "char_bm01_pos_cod": 2, - "char_bm01_pos_des": "Option B" - }, - { - "char_bm01_pos_cod": 3, - "char_bm01_pos_des": "Option C" - } - ] - }, - { - "name": "ASS53b537262b8a_lkpqst163", - "desc": "Lookup table (Select the farmer)", - "fields": [ - { - "name": "qst163_cod", - "desc": "Code", - "key": "true" - }, - { - "name": "qst163_des", - "desc": "Description", - "key": null - } - ], - "values": [ - { - "qst163_cod": 1, - "qst163_des": "P:1-Brandon" - }, - { - "qst163_cod": 2, - "qst163_des": "P:2-Maria" - }, - { - "qst163_cod": 3, - "qst163_des": "P:3-Hugo" - }, - { - "qst163_cod": 4, - "qst163_des": "P:4-Lucia" - }, - { - "qst163_cod": 5, - "qst163_des": "P:5-Ashley" - }, - { - "qst163_cod": 6, - "qst163_des": "P:6-Rosa" - }, - { - "qst163_cod": 7, - "qst163_des": "P:7-Michael" - }, - { - "qst163_cod": 8, - "qst163_des": "P:8-Rafael" - }, - { - "qst163_cod": 9, - "qst163_des": "P:9-Calos" - }, - { - "qst163_cod": 10, - "qst163_des": "P:10-Hillary" - } - ] - } - ], - "fields": [ - { - "name": "surveyid", - "odktype": "", - "desc": "Submission ID", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "originid", - "odktype": "", - "desc": "Origin", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "_submitted_by", - "odktype": "text", - "desc": "Submitted by", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "_submitted_date", - "odktype": "datetime", - "desc": "Submitted date", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "_geopoint", - "odktype": "geopoint", - "desc": "GPS point", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "clm_deviceimei", - "odktype": "deviceid", - "desc": "Device IMEI", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "clm_start", - "odktype": "start", - "desc": "Start of survey", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "qst163", - "odktype": "select_one qst163_opts", - "desc": "Select the farmer", - "key": "true", - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASS53b537262b8a_lkpqst163", - "rfield": "qst163_cod" - }, - { - "name": "cal_qst163", - "odktype": "calculate", - "desc": "", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "char_bm01_pos", - "odktype": "select_one char_bm01_pos_opts", - "desc": "Cúal variedad le rindió más ?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASS53b537262b8a_lkpchar_bm01_pos", - "rfield": "char_bm01_pos_cod" - }, - { - "name": "char_bm01_neg", - "odktype": "select_one char_bm01_neg_opts", - "desc": "Cúal variedad fue menos rendidora ?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASS53b537262b8a_lkpchar_bm01_pos", - "rfield": "char_bm01_pos_cod" - }, - { - "name": "clm_end", - "odktype": "end", - "desc": "End of survey", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "rowuuid", - "odktype": "", - "desc": "Unique Row Identifier (UUID)", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - } - ] - }, - { - "code": "d2f91f545928", - "desc": "desempeño general", - "lkptables": [ - { - "name": "ASSd2f91f545928_lkpchar_overallperf_pos", - "desc": "Lookup table (Overall, which option performed better?)", - "fields": [ - { - "name": "char_overallperf_pos_cod", - "desc": "Code", - "key": "true" - }, - { - "name": "char_overallperf_pos_des", - "desc": "Description", - "key": null - } - ], - "values": [ - { - "char_overallperf_pos_cod": 1, - "char_overallperf_pos_des": "Option A" - }, - { - "char_overallperf_pos_cod": 2, - "char_overallperf_pos_des": "Option B" - }, - { - "char_overallperf_pos_cod": 3, - "char_overallperf_pos_des": "Option C" - } - ] - }, - { - "name": "ASSd2f91f545928_lkpqst163", - "desc": "Lookup table (Select the farmer)", - "fields": [ - { - "name": "qst163_cod", - "desc": "Code", - "key": "true" - }, - { - "name": "qst163_des", - "desc": "Description", - "key": null - } - ], - "values": [ - { - "qst163_cod": 1, - "qst163_des": "P:1-Brandon" - }, - { - "qst163_cod": 2, - "qst163_des": "P:2-Maria" - }, - { - "qst163_cod": 3, - "qst163_des": "P:3-Hugo" - }, - { - "qst163_cod": 4, - "qst163_des": "P:4-Lucia" - }, - { - "qst163_cod": 5, - "qst163_des": "P:5-Ashley" - }, - { - "qst163_cod": 6, - "qst163_des": "P:6-Rosa" - }, - { - "qst163_cod": 7, - "qst163_des": "P:7-Michael" - }, - { - "qst163_cod": 8, - "qst163_des": "P:8-Rafael" - }, - { - "qst163_cod": 9, - "qst163_des": "P:9-Calos" - }, - { - "qst163_cod": 10, - "qst163_des": "P:10-Hillary" - } - ] - } - ], - "fields": [ - { - "name": "surveyid", - "odktype": "", - "desc": "Submission ID", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "originid", - "odktype": "", - "desc": "Origin", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "_submitted_by", - "odktype": "text", - "desc": "Submitted by", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "_submitted_date", - "odktype": "datetime", - "desc": "Submitted date", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "_geopoint", - "odktype": "geopoint", - "desc": "GPS point", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "clm_deviceimei", - "odktype": "deviceid", - "desc": "Device IMEI", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "clm_start", - "odktype": "start", - "desc": "Start of survey", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "qst163", - "odktype": "select_one qst163_opts", - "desc": "Select the farmer", - "key": "true", - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASSd2f91f545928_lkpqst163", - "rfield": "qst163_cod" - }, - { - "name": "cal_qst163", - "odktype": "calculate", - "desc": "", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "char_overallperf_pos", - "odktype": "select_one char_overallperf_pos_opts", - "desc": "Overall, which option performed better?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASSd2f91f545928_lkpchar_overallperf_pos", - "rfield": "char_overallperf_pos_cod" - }, - { - "name": "char_overallperf_neg", - "odktype": "select_one char_overallperf_neg_opts", - "desc": "Overall, which option performed worst?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASSd2f91f545928_lkpchar_overallperf_pos", - "rfield": "char_overallperf_pos_cod" - }, - { - "name": "clm_end", - "odktype": "end", - "desc": "End of survey", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "rowuuid", - "odktype": "", - "desc": "Unique Row Identifier (UUID)", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - } - ] - } - ], - "packages": [ - { - "package_id": 1, - "farmername": "Brandon", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Bean varieties", - "alias_name": "INTA Fuerte Sequia" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Bean varieties", - "alias_name": "INTA Matagalpa" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Bean varieties", - "alias_name": "INTA Ferroso" - } - ] - } - ] - }, - { - "package_id": 2, - "farmername": "Maria", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Bean varieties", - "alias_name": "INTA Rojo" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Bean varieties", - "alias_name": "INTA Ferroso" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Bean varieties", - "alias_name": "INTA Centro Sur" - } - ] - } - ] - }, - { - "package_id": 3, - "farmername": "Hugo", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Bean varieties", - "alias_name": "INTA Centro Sur" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Bean varieties", - "alias_name": "INTA Fuerte Sequia" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Bean varieties", - "alias_name": "INTA Rojo" - } - ] - } - ] - }, - { - "package_id": 4, - "farmername": "Lucia", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Bean varieties", - "alias_name": "INTA Matagalpa" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Bean varieties", - "alias_name": "INTA Rojo" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Bean varieties", - "alias_name": "INTA Fuerte Sequia" - } - ] - } - ] - }, - { - "package_id": 5, - "farmername": "Ashley ", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Bean varieties", - "alias_name": "INTA Ferroso" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Bean varieties", - "alias_name": "INTA Centro Sur" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Bean varieties", - "alias_name": "INTA Matagalpa" - } - ] - } - ] - }, - { - "package_id": 6, - "farmername": "Rosa", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Bean varieties", - "alias_name": "INTA Fuerte Sequia" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Bean varieties", - "alias_name": "INTA Ferroso" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Bean varieties", - "alias_name": "INTA Centro Sur" - } - ] - } - ] - }, - { - "package_id": 7, - "farmername": "Michael", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Bean varieties", - "alias_name": "INTA Rojo" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Bean varieties", - "alias_name": "INTA Matagalpa" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Bean varieties", - "alias_name": "INTA Ferroso" - } - ] - } - ] - }, - { - "package_id": 8, - "farmername": "Rafael", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Bean varieties", - "alias_name": "INTA Matagalpa" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Bean varieties", - "alias_name": "INTA Centro Sur" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Bean varieties", - "alias_name": "INTA Rojo" - } - ] - } - ] - }, - { - "package_id": 9, - "farmername": "Calos", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Bean varieties", - "alias_name": "INTA Ferroso" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Bean varieties", - "alias_name": "INTA Rojo" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Bean varieties", - "alias_name": "INTA Fuerte Sequia" - } - ] - } - ] - }, - { - "package_id": 10, - "farmername": "Hillary ", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Bean varieties", - "alias_name": "INTA Centro Sur" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Bean varieties", - "alias_name": "INTA Fuerte Sequia" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Bean varieties", - "alias_name": "INTA Matagalpa" - } - ] - } - ] - } - ], - "specialfields": [ - { - "type": "Characteristic", - "name": "ASS53b537262b8a_char_bm01_pos", - "desc": "Cúal variedad le rindió más ?" - }, - { - "type": "Characteristic", - "name": "ASS53b537262b8a_char_bm01_neg", - "desc": "Cúal variedad fue menos rendidora ?" - }, - { - "type": "Characteristic", - "name": "ASSd2f91f545928_char_overallperf_pos", - "desc": "Overall, which option performed better?" - }, - { - "type": "Characteristic", - "name": "ASSd2f91f545928_char_overallperf_neg", - "desc": "Overall, which option performed worst?" - } - ], - "data": [ - { - "REG_surveyid": "a521b573-6241-48b2-878b-bd3eb642a067", - "REG_originid": "ODKTOOLS", - "REG__submitted_by": "victor", - "REG__submitted_date": "2020-04-03 15:11:49", - "REG__geopoint": null, - "REG_clm_deviceimei": "867128035634212", - "REG_clm_start": "2020-04-03 09:11:15", - "REG_qst162": "1", - "REG_farmername": "Brandon", - "REG_clm_end": "2020-04-03 09:11:24", - "REG_rowuuid": "0e37d09d-5403-482b-bbca-649ff5439320", - "ASS53b537262b8a_surveyid": "1322b3d3-52b3-46ba-a5d1-351e916b471c", - "ASS53b537262b8a_originid": "ODKTOOLS", - "ASS53b537262b8a__submitted_by": "victor", - "ASS53b537262b8a__submitted_date": "2020-04-03 15:19:41", - "ASS53b537262b8a__geopoint": null, - "ASS53b537262b8a_clm_deviceimei": "867128035634212", - "ASS53b537262b8a_clm_start": "2020-04-03 09:20:39", - "ASS53b537262b8a_qst163": 1, - "ASS53b537262b8a_cal_qst163": "P:1-Brandon", - "ASS53b537262b8a_char_bm01_pos": 3, - "ASS53b537262b8a_char_bm01_neg": 1, - "ASS53b537262b8a_clm_end": "2020-04-03 09:20:43", - "ASS53b537262b8a_rowuuid": "280a36de-7679-4343-8412-623c2fc553e7", - "ASSd2f91f545928_surveyid": "582c4f54-a272-49e3-8580-872a1961b06b", - "ASSd2f91f545928_originid": "ODKTOOLS", - "ASSd2f91f545928__submitted_by": "victor", - "ASSd2f91f545928__submitted_date": "2020-04-03 15:27:17", - "ASSd2f91f545928__geopoint": null, - "ASSd2f91f545928_clm_deviceimei": "867128035634212", - "ASSd2f91f545928_clm_start": "2020-04-03 09:27:16", - "ASSd2f91f545928_qst163": 1, - "ASSd2f91f545928_cal_qst163": "P:1-Brandon", - "ASSd2f91f545928_char_overallperf_pos": 1, - "ASSd2f91f545928_char_overallperf_neg": 2, - "ASSd2f91f545928_clm_end": "2020-04-03 09:27:20", - "ASSd2f91f545928_rowuuid": "160acefa-3e03-49ab-be7f-8b20dff142bf" - }, - { - "REG_surveyid": "09181a92-05bb-47ce-8714-9f70ca40bcac", - "REG_originid": "ODKTOOLS", - "REG__submitted_by": "victor", - "REG__submitted_date": "2020-04-03 15:14:50", - "REG__geopoint": null, - "REG_clm_deviceimei": "867128035634212", - "REG_clm_start": "2020-04-03 09:15:30", - "REG_qst162": "10", - "REG_farmername": "Hillary ", - "REG_clm_end": "2020-04-03 09:15:57", - "REG_rowuuid": "c81ec0ee-e5a8-4e35-abfa-fa83a0c88d25", - "ASS53b537262b8a_surveyid": "ae912325-bbe2-4b19-88f9-43fb2ba84ce0", - "ASS53b537262b8a_originid": "ODKTOOLS", - "ASS53b537262b8a__submitted_by": "victor", - "ASS53b537262b8a__submitted_date": "2020-04-03 15:19:37", - "ASS53b537262b8a__geopoint": null, - "ASS53b537262b8a_clm_deviceimei": "867128035634212", - "ASS53b537262b8a_clm_start": "2020-04-03 09:19:28", - "ASS53b537262b8a_qst163": 10, - "ASS53b537262b8a_cal_qst163": "P:10-Hillary", - "ASS53b537262b8a_char_bm01_pos": 2, - "ASS53b537262b8a_char_bm01_neg": 1, - "ASS53b537262b8a_clm_end": "2020-04-03 09:19:32", - "ASS53b537262b8a_rowuuid": "547d2fa0-ddec-4bfc-90e6-2a1336cdf334", - "ASSd2f91f545928_surveyid": "e2bdbfbb-7788-4f01-a7c3-ed61c9a099a2", - "ASSd2f91f545928_originid": "ODKTOOLS", - "ASSd2f91f545928__submitted_by": "victor", - "ASSd2f91f545928__submitted_date": "2020-04-03 15:27:17", - "ASSd2f91f545928__geopoint": null, - "ASSd2f91f545928_clm_deviceimei": "867128035634212", - "ASSd2f91f545928_clm_start": "2020-04-03 09:27:22", - "ASSd2f91f545928_qst163": 10, - "ASSd2f91f545928_cal_qst163": "P:10-Hillary", - "ASSd2f91f545928_char_overallperf_pos": 2, - "ASSd2f91f545928_char_overallperf_neg": 1, - "ASSd2f91f545928_clm_end": "2020-04-03 09:27:26", - "ASSd2f91f545928_rowuuid": "b8c8b3db-75b4-4ab2-aebf-ed44f481d34f" - }, - { - "REG_surveyid": "b39354b6-7bd5-40b1-b552-a60e76818dbb", - "REG_originid": "ODKTOOLS", - "REG__submitted_by": "victor", - "REG__submitted_date": "2020-04-03 15:11:49", - "REG__geopoint": null, - "REG_clm_deviceimei": "867128035634212", - "REG_clm_start": "2020-04-03 09:11:26", - "REG_qst162": "2", - "REG_farmername": "Maria", - "REG_clm_end": "2020-04-03 09:11:33", - "REG_rowuuid": "c280c291-89e0-4108-8a5a-9c75e1dcbe51", - "ASS53b537262b8a_surveyid": "7643c8fb-4687-457b-a267-d6ca7a34ad1a", - "ASS53b537262b8a_originid": "ODKTOOLS", - "ASS53b537262b8a__submitted_by": "victor", - "ASS53b537262b8a__submitted_date": "2020-04-03 15:19:38", - "ASS53b537262b8a__geopoint": null, - "ASS53b537262b8a_clm_deviceimei": "867128035634212", - "ASS53b537262b8a_clm_start": "2020-04-03 09:19:34", - "ASS53b537262b8a_qst163": 2, - "ASS53b537262b8a_cal_qst163": "P:2-Maria", - "ASS53b537262b8a_char_bm01_pos": 2, - "ASS53b537262b8a_char_bm01_neg": 1, - "ASS53b537262b8a_clm_end": "2020-04-03 09:19:38", - "ASS53b537262b8a_rowuuid": "753e376e-94ac-46de-ab97-6ef045fb2482", - "ASSd2f91f545928_surveyid": "b93e150a-b2fa-4df8-af51-7516cb864836", - "ASSd2f91f545928_originid": "ODKTOOLS", - "ASSd2f91f545928__submitted_by": "victor", - "ASSd2f91f545928__submitted_date": "2020-04-03 15:27:17", - "ASSd2f91f545928__geopoint": null, - "ASSd2f91f545928_clm_deviceimei": "867128035634212", - "ASSd2f91f545928_clm_start": "2020-04-03 09:27:28", - "ASSd2f91f545928_qst163": 2, - "ASSd2f91f545928_cal_qst163": "P:2-Maria", - "ASSd2f91f545928_char_overallperf_pos": 3, - "ASSd2f91f545928_char_overallperf_neg": 1, - "ASSd2f91f545928_clm_end": "2020-04-03 09:27:32", - "ASSd2f91f545928_rowuuid": "dd8f2799-1c81-4605-9474-976e536ea9c1" - }, - { - "REG_surveyid": "73d89d00-2a08-4dfa-a532-1fc87972aac9", - "REG_originid": "ODKTOOLS", - "REG__submitted_by": "victor", - "REG__submitted_date": "2020-04-03 15:11:50", - "REG__geopoint": null, - "REG_clm_deviceimei": "867128035634212", - "REG_clm_start": "2020-04-03 09:11:35", - "REG_qst162": "3", - "REG_farmername": "Hugo", - "REG_clm_end": "2020-04-03 09:11:42", - "REG_rowuuid": "924cc8d2-2768-4346-aa1d-52c0d6b32f5d", - "ASS53b537262b8a_surveyid": "f5a2b0f1-9db2-4787-974e-82140ebdd752", - "ASS53b537262b8a_originid": "ODKTOOLS", - "ASS53b537262b8a__submitted_by": "victor", - "ASS53b537262b8a__submitted_date": "2020-04-03 15:19:38", - "ASS53b537262b8a__geopoint": null, - "ASS53b537262b8a_clm_deviceimei": "867128035634212", - "ASS53b537262b8a_clm_start": "2020-04-03 09:19:40", - "ASS53b537262b8a_qst163": 3, - "ASS53b537262b8a_cal_qst163": "P:3-Hugo", - "ASS53b537262b8a_char_bm01_pos": 2, - "ASS53b537262b8a_char_bm01_neg": 3, - "ASS53b537262b8a_clm_end": "2020-04-03 09:19:47", - "ASS53b537262b8a_rowuuid": "a74c21ae-0936-4dcc-8e29-bb826a9cdb44", - "ASSd2f91f545928_surveyid": "c873fb92-bfef-4e53-9019-64a6e4aab424", - "ASSd2f91f545928_originid": "ODKTOOLS", - "ASSd2f91f545928__submitted_by": "victor", - "ASSd2f91f545928__submitted_date": "2020-04-03 15:27:17", - "ASSd2f91f545928__geopoint": null, - "ASSd2f91f545928_clm_deviceimei": "867128035634212", - "ASSd2f91f545928_clm_start": "2020-04-03 09:27:35", - "ASSd2f91f545928_qst163": 3, - "ASSd2f91f545928_cal_qst163": "P:3-Hugo", - "ASSd2f91f545928_char_overallperf_pos": 2, - "ASSd2f91f545928_char_overallperf_neg": 3, - "ASSd2f91f545928_clm_end": "2020-04-03 09:27:39", - "ASSd2f91f545928_rowuuid": "4fd2e099-22dc-472d-a107-7bd1e8a7a359" - }, - { - "REG_surveyid": "7e670654-ccac-4862-8555-dd7d2b8a2af9", - "REG_originid": "ODKTOOLS", - "REG__submitted_by": "victor", - "REG__submitted_date": "2020-04-03 15:11:50", - "REG__geopoint": null, - "REG_clm_deviceimei": "867128035634212", - "REG_clm_start": "2020-04-03 09:11:44", - "REG_qst162": "4", - "REG_farmername": "Lucia", - "REG_clm_end": "2020-04-03 09:11:55", - "REG_rowuuid": "345bbe01-16a2-45c9-944f-79fbbaa703d5", - "ASS53b537262b8a_surveyid": "28902d15-71a3-4d65-9317-cca2ab697a3f", - "ASS53b537262b8a_originid": "ODKTOOLS", - "ASS53b537262b8a__submitted_by": "victor", - "ASS53b537262b8a__submitted_date": "2020-04-03 15:19:39", - "ASS53b537262b8a__geopoint": null, - "ASS53b537262b8a_clm_deviceimei": "867128035634212", - "ASS53b537262b8a_clm_start": "2020-04-03 09:19:50", - "ASS53b537262b8a_qst163": 4, - "ASS53b537262b8a_cal_qst163": "P:4-Lucia", - "ASS53b537262b8a_char_bm01_pos": 3, - "ASS53b537262b8a_char_bm01_neg": 2, - "ASS53b537262b8a_clm_end": "2020-04-03 09:19:57", - "ASS53b537262b8a_rowuuid": "30fff397-5644-4e26-ae3c-06091aefbffb", - "ASSd2f91f545928_surveyid": "e75846c2-2282-4aee-9908-6263942d2706", - "ASSd2f91f545928_originid": "ODKTOOLS", - "ASSd2f91f545928__submitted_by": "victor", - "ASSd2f91f545928__submitted_date": "2020-04-03 15:27:18", - "ASSd2f91f545928__geopoint": null, - "ASSd2f91f545928_clm_deviceimei": "867128035634212", - "ASSd2f91f545928_clm_start": "2020-04-03 09:27:41", - "ASSd2f91f545928_qst163": 4, - "ASSd2f91f545928_cal_qst163": "P:4-Lucia", - "ASSd2f91f545928_char_overallperf_pos": 3, - "ASSd2f91f545928_char_overallperf_neg": 1, - "ASSd2f91f545928_clm_end": "2020-04-03 09:27:45", - "ASSd2f91f545928_rowuuid": "565713b9-84e8-486d-9c59-0d350ef4d84b" - }, - { - "REG_surveyid": "88f4f31d-15fc-4cc5-be52-2526d33c194d", - "REG_originid": "ODKTOOLS", - "REG__submitted_by": "victor", - "REG__submitted_date": "2020-04-03 15:11:50", - "REG__geopoint": null, - "REG_clm_deviceimei": "867128035634212", - "REG_clm_start": "2020-04-03 09:12:00", - "REG_qst162": "5", - "REG_farmername": "Ashley ", - "REG_clm_end": "2020-04-03 09:12:09", - "REG_rowuuid": "c46e3432-317a-4d0b-8acf-952b97d2c0a4", - "ASS53b537262b8a_surveyid": "ebb556af-cc55-41f4-ac52-3e8d7642be5d", - "ASS53b537262b8a_originid": "ODKTOOLS", - "ASS53b537262b8a__submitted_by": "victor", - "ASS53b537262b8a__submitted_date": "2020-04-03 15:19:39", - "ASS53b537262b8a__geopoint": null, - "ASS53b537262b8a_clm_deviceimei": "867128035634212", - "ASS53b537262b8a_clm_start": "2020-04-03 09:19:59", - "ASS53b537262b8a_qst163": 5, - "ASS53b537262b8a_cal_qst163": "P:5-Ashley", - "ASS53b537262b8a_char_bm01_pos": 1, - "ASS53b537262b8a_char_bm01_neg": 2, - "ASS53b537262b8a_clm_end": "2020-04-03 09:20:06", - "ASS53b537262b8a_rowuuid": "b95eab81-ea5c-4b93-99c4-ec96fc192e88", - "ASSd2f91f545928_surveyid": "35bec4a4-7930-432f-9ca9-84440b679c38", - "ASSd2f91f545928_originid": "ODKTOOLS", - "ASSd2f91f545928__submitted_by": "victor", - "ASSd2f91f545928__submitted_date": "2020-04-03 15:27:19", - "ASSd2f91f545928__geopoint": null, - "ASSd2f91f545928_clm_deviceimei": "867128035634212", - "ASSd2f91f545928_clm_start": "2020-04-03 09:27:53", - "ASSd2f91f545928_qst163": 5, - "ASSd2f91f545928_cal_qst163": "P:5-Ashley", - "ASSd2f91f545928_char_overallperf_pos": 2, - "ASSd2f91f545928_char_overallperf_neg": 3, - "ASSd2f91f545928_clm_end": "2020-04-03 09:27:57", - "ASSd2f91f545928_rowuuid": "a72b5afd-4fea-4f87-aec8-e0acfc855604" - }, - { - "REG_surveyid": "14547a4f-692f-4460-8582-3e006c2b1e47", - "REG_originid": "ODKTOOLS", - "REG__submitted_by": "victor", - "REG__submitted_date": "2020-04-03 15:11:51", - "REG__geopoint": null, - "REG_clm_deviceimei": "867128035634212", - "REG_clm_start": "2020-04-03 09:12:10", - "REG_qst162": "6", - "REG_farmername": "Rosa", - "REG_clm_end": "2020-04-03 09:12:17", - "REG_rowuuid": "bb5f4fe8-e41f-4cab-a6d0-8715c37aa13d", - "ASS53b537262b8a_surveyid": "e4aa3ed1-2caf-4b2e-8ee7-b9623a3ed276", - "ASS53b537262b8a_originid": "ODKTOOLS", - "ASS53b537262b8a__submitted_by": "victor", - "ASS53b537262b8a__submitted_date": "2020-04-03 15:19:39", - "ASS53b537262b8a__geopoint": null, - "ASS53b537262b8a_clm_deviceimei": "867128035634212", - "ASS53b537262b8a_clm_start": "2020-04-03 09:20:08", - "ASS53b537262b8a_qst163": 6, - "ASS53b537262b8a_cal_qst163": "P:6-Rosa", - "ASS53b537262b8a_char_bm01_pos": 3, - "ASS53b537262b8a_char_bm01_neg": 1, - "ASS53b537262b8a_clm_end": "2020-04-03 09:20:14", - "ASS53b537262b8a_rowuuid": "efe5a509-5ccf-422a-8706-f782096bf03e", - "ASSd2f91f545928_surveyid": "114d56e3-1e10-4269-a65a-4241d65dc0d7", - "ASSd2f91f545928_originid": "ODKTOOLS", - "ASSd2f91f545928__submitted_by": "victor", - "ASSd2f91f545928__submitted_date": "2020-04-03 15:27:19", - "ASSd2f91f545928__geopoint": null, - "ASSd2f91f545928_clm_deviceimei": "867128035634212", - "ASSd2f91f545928_clm_start": "2020-04-03 09:27:59", - "ASSd2f91f545928_qst163": 6, - "ASSd2f91f545928_cal_qst163": "P:6-Rosa", - "ASSd2f91f545928_char_overallperf_pos": 3, - "ASSd2f91f545928_char_overallperf_neg": 1, - "ASSd2f91f545928_clm_end": "2020-04-03 09:28:04", - "ASSd2f91f545928_rowuuid": "4b3ae01f-210b-4de1-97fd-778156e1af55" - }, - { - "REG_surveyid": "09dfad5c-322c-4356-8d71-7f0658b937d9", - "REG_originid": "ODKTOOLS", - "REG__submitted_by": "victor", - "REG__submitted_date": "2020-04-03 15:13:00", - "REG__geopoint": null, - "REG_clm_deviceimei": "867128035634212", - "REG_clm_start": "2020-04-03 09:13:17", - "REG_qst162": "7", - "REG_farmername": "Michael", - "REG_clm_end": "2020-04-03 09:13:29", - "REG_rowuuid": "62cb3ff6-5f73-49d9-ae25-f2be60cb2905", - "ASS53b537262b8a_surveyid": "0e85fefd-09b6-4ebe-8ee3-c478bfbb8504", - "ASS53b537262b8a_originid": "ODKTOOLS", - "ASS53b537262b8a__submitted_by": "victor", - "ASS53b537262b8a__submitted_date": "2020-04-03 15:19:40", - "ASS53b537262b8a__geopoint": null, - "ASS53b537262b8a_clm_deviceimei": "867128035634212", - "ASS53b537262b8a_clm_start": "2020-04-03 09:20:16", - "ASS53b537262b8a_qst163": 7, - "ASS53b537262b8a_cal_qst163": "P:7-Michael", - "ASS53b537262b8a_char_bm01_pos": 3, - "ASS53b537262b8a_char_bm01_neg": 1, - "ASS53b537262b8a_clm_end": "2020-04-03 09:20:21", - "ASS53b537262b8a_rowuuid": "a59328a1-0734-41f0-822b-b928dfd14416", - "ASSd2f91f545928_surveyid": "8a8f4a88-3ed8-4f3f-95b2-997829241aaf", - "ASSd2f91f545928_originid": "ODKTOOLS", - "ASSd2f91f545928__submitted_by": "victor", - "ASSd2f91f545928__submitted_date": "2020-04-03 15:27:19", - "ASSd2f91f545928__geopoint": null, - "ASSd2f91f545928_clm_deviceimei": "867128035634212", - "ASSd2f91f545928_clm_start": "2020-04-03 09:28:06", - "ASSd2f91f545928_qst163": 7, - "ASSd2f91f545928_cal_qst163": "P:7-Michael", - "ASSd2f91f545928_char_overallperf_pos": 3, - "ASSd2f91f545928_char_overallperf_neg": 1, - "ASSd2f91f545928_clm_end": "2020-04-03 09:28:11", - "ASSd2f91f545928_rowuuid": "9ee1b094-4a0d-4322-ace1-e8974fe939b7" - }, - { - "REG_surveyid": "8675a73a-d552-4f79-b9ac-ea663976fde0", - "REG_originid": "ODKTOOLS", - "REG__submitted_by": "victor", - "REG__submitted_date": "2020-04-03 15:11:51", - "REG__geopoint": null, - "REG_clm_deviceimei": "867128035634212", - "REG_clm_start": "2020-04-03 09:12:46", - "REG_qst162": "8", - "REG_farmername": "Rafael", - "REG_clm_end": "2020-04-03 09:12:56", - "REG_rowuuid": "43f53a69-42cd-4f5e-9309-4df969be7395", - "ASS53b537262b8a_surveyid": "6825ef27-10ec-4161-9496-1715270ddec3", - "ASS53b537262b8a_originid": "ODKTOOLS", - "ASS53b537262b8a__submitted_by": "victor", - "ASS53b537262b8a__submitted_date": "2020-04-03 15:19:40", - "ASS53b537262b8a__geopoint": null, - "ASS53b537262b8a_clm_deviceimei": "867128035634212", - "ASS53b537262b8a_clm_start": "2020-04-03 09:20:23", - "ASS53b537262b8a_qst163": 8, - "ASS53b537262b8a_cal_qst163": "P:8-Rafael", - "ASS53b537262b8a_char_bm01_pos": 3, - "ASS53b537262b8a_char_bm01_neg": 1, - "ASS53b537262b8a_clm_end": "2020-04-03 09:20:28", - "ASS53b537262b8a_rowuuid": "dd6f31d0-15aa-42e0-ae2d-5def4b167e59", - "ASSd2f91f545928_surveyid": "ec029d06-194b-439c-8ac3-52b3f7b799cb", - "ASSd2f91f545928_originid": "ODKTOOLS", - "ASSd2f91f545928__submitted_by": "victor", - "ASSd2f91f545928__submitted_date": "2020-04-03 15:27:20", - "ASSd2f91f545928__geopoint": null, - "ASSd2f91f545928_clm_deviceimei": "867128035634212", - "ASSd2f91f545928_clm_start": "2020-04-03 09:28:12", - "ASSd2f91f545928_qst163": 8, - "ASSd2f91f545928_cal_qst163": "P:8-Rafael", - "ASSd2f91f545928_char_overallperf_pos": 3, - "ASSd2f91f545928_char_overallperf_neg": 2, - "ASSd2f91f545928_clm_end": "2020-04-03 09:28:18", - "ASSd2f91f545928_rowuuid": "117677eb-45bf-4f78-bb61-c6215c19c5fb" - }, - { - "REG_surveyid": "5f4f66ac-374e-4b24-b0a7-1670bbf6b8a6", - "REG_originid": "ODKTOOLS", - "REG__submitted_by": "victor", - "REG__submitted_date": "2020-04-03 15:13:01", - "REG__geopoint": null, - "REG_clm_deviceimei": "867128035634212", - "REG_clm_start": "2020-04-03 09:13:41", - "REG_qst162": "9", - "REG_farmername": "Calos", - "REG_clm_end": "2020-04-03 09:14:08", - "REG_rowuuid": "9ce45bd7-0b19-480f-b2d9-922e0f1b5fae", - "ASS53b537262b8a_surveyid": "afaab2e7-0df7-4a90-8ccc-2da180324c6c", - "ASS53b537262b8a_originid": "ODKTOOLS", - "ASS53b537262b8a__submitted_by": "victor", - "ASS53b537262b8a__submitted_date": "2020-04-03 15:19:40", - "ASS53b537262b8a__geopoint": null, - "ASS53b537262b8a_clm_deviceimei": "867128035634212", - "ASS53b537262b8a_clm_start": "2020-04-03 09:20:30", - "ASS53b537262b8a_qst163": 9, - "ASS53b537262b8a_cal_qst163": "P:9-Calos", - "ASS53b537262b8a_char_bm01_pos": 1, - "ASS53b537262b8a_char_bm01_neg": 2, - "ASS53b537262b8a_clm_end": "2020-04-03 09:20:37", - "ASS53b537262b8a_rowuuid": "caa2d252-ed5d-4b35-a502-8700901ef781", - "ASSd2f91f545928_surveyid": "e322b563-327a-4405-a774-b4cc379d24e6", - "ASSd2f91f545928_originid": "ODKTOOLS", - "ASSd2f91f545928__submitted_by": "victor", - "ASSd2f91f545928__submitted_date": "2020-04-03 15:27:20", - "ASSd2f91f545928__geopoint": null, - "ASSd2f91f545928_clm_deviceimei": "867128035634212", - "ASSd2f91f545928_clm_start": "2020-04-03 09:28:20", - "ASSd2f91f545928_qst163": 9, - "ASSd2f91f545928_cal_qst163": "P:9-Calos", - "ASSd2f91f545928_char_overallperf_pos": 3, - "ASSd2f91f545928_char_overallperf_neg": 2, - "ASSd2f91f545928_clm_end": "2020-04-03 09:28:24", - "ASSd2f91f545928_rowuuid": "3aaf5abe-a049-4e97-9cf9-57b3777b4c30" - } - ], - "importantfields": [ - { - "type": "PackageID", - "field": "REG_QST162", - "desc": "Package ID" - }, - { - "type": "FarmerName", - "field": "REG_farmername", - "desc": "Name of registered farmer" - }, - { - "type": "OverallCharPos", - "field": "ASSd2f91f545928_char_overallperf_pos", - "desc": "Over all characteristic positive" - }, - { - "type": "OverallCharNeg", - "field": "ASSd2f91f545928_char_overallperf_neg", - "desc": "Over all characteristic negative" - } - ] -} \ No newline at end of file diff --git a/dev/data/chocolate/data.json b/dev/data/chocolate/data.json deleted file mode 100644 index 9e815df..0000000 --- a/dev/data/chocolate/data.json +++ /dev/null @@ -1,72 +0,0 @@ -{ - "Characteristics": [ - { - "name": "Sweetness", - "id": 389, - "vars": [ - { - "name": "ASS908dc3e808d7_char_sweetness_pos" - }, - { - "name": "ASS908dc3e808d7_char_sweetness_neg" - } - ] - }, - { - "name": "Bitterness", - "id": 390, - "vars": [ - { - "name": "ASS908dc3e808d7_char_bitterness_pos" - }, - { - "name": "ASS908dc3e808d7_char_bitterness_neg" - } - ] - }, - { - "name": "Cocoa content", - "id": 391, - "vars": [ - { - "name": "ASS908dc3e808d7_char_cocoacontent_pos" - }, - { - "name": "ASS908dc3e808d7_char_cocoacontent_neg" - } - ] - }, - { - "name": "Dark color", - "id": 393, - "vars": [ - { - "name": "ASS908dc3e808d7_char_darkcolor_pos" - }, - { - "name": "ASS908dc3e808d7_char_darkcolor_neg" - } - ] - }, - { - "name": "Overall Characteristic", - "id": 204, - "vars": [ - { - "name": "ASS908dc3e808d7_char_overallperf_pos" - }, - { - "name": "ASS908dc3e808d7_char_overallperf_neg" - } - ] - } - ], - "Performance": [], - "Explanatory": [ - { - "name": "What is the gender ?", - "id": 237, - "vars": "REG_gender" - } - ] -} \ No newline at end of file diff --git a/dev/data/chocolate/info.json b/dev/data/chocolate/info.json deleted file mode 100644 index 37d10bf..0000000 --- a/dev/data/chocolate/info.json +++ /dev/null @@ -1,1975 +0,0 @@ -{ - "project": { - "user_name": "gosset", - "project_cod": "chocolatesnepal", - "project_name": "Chocolates Nepal", - "project_abstract": "Chocolates Nepal", - "project_tags": "nepal", - "project_pi": "KdS", - "project_piemail": "kds@mail.org", - "project_active": 1, - "project_public": 0, - "project_dashboard": 1, - "project_regstatus": 2, - "project_assstatus": 0, - "project_createcomb": 0, - "project_createpkgs": 0, - "project_numobs": 26, - "project_numcom": 3, - "project_lat": "9.90471351", - "project_lon": "-83.685279", - "project_creationdate": "2019-10-27 10:30:11", - "project_localvariety": 0, - "extra": null - }, - "registry": { - "lkptables": [ - { - "name": "REG_lkpgender", - "desc": "Lookup table (What is the gender ?)", - "fields": [ - { - "name": "gender_cod", - "desc": "Code", - "key": "true" - }, - { - "name": "gender_des", - "desc": "Description", - "key": null - } - ], - "values": [ - { - "gender_cod": 1, - "gender_des": "Male" - }, - { - "gender_cod": 2, - "gender_des": "Female" - } - ] - } - ], - "fields": [ - { - "name": "surveyid", - "odktype": "", - "desc": "Submission ID", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "originid", - "odktype": "", - "desc": "Origin", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "clm_deviceimei", - "odktype": "deviceid", - "desc": "Device IMEI", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "clm_start", - "odktype": "start", - "desc": "Start of survey", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "clm_end", - "odktype": "end", - "desc": "End of survey", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "qst162", - "odktype": "barcode", - "desc": "Package code", - "key": "true", - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "farmername", - "odktype": "text", - "desc": "Farmer name", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "country", - "odktype": "text", - "desc": "Country", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "age", - "odktype": "integer", - "desc": "How old are you?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "gender", - "odktype": "select_one gender_opts", - "desc": "What is the gender ?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "REG_lkpgender", - "rfield": "gender_cod" - }, - { - "name": "rowuuid", - "odktype": "", - "desc": "Unique Row Identifier (UUID)", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - } - ] - }, - "assessments": [ - { - "code": "908dc3e808d7", - "desc": "Assessment", - "lkptables": [ - { - "name": "ASS908dc3e808d7_lkpchar_sweetness_pos", - "desc": "Lookup table (Which one is more sweet?)", - "fields": [ - { - "name": "char_sweetness_pos_cod", - "desc": "Code", - "key": "true" - }, - { - "name": "char_sweetness_pos_des", - "desc": "Description", - "key": null - } - ], - "values": [ - { - "char_sweetness_pos_cod": 1, - "char_sweetness_pos_des": "Option A" - }, - { - "char_sweetness_pos_cod": 2, - "char_sweetness_pos_des": "Option B" - }, - { - "char_sweetness_pos_cod": 3, - "char_sweetness_pos_des": "Option C" - } - ] - }, - { - "name": "ASS908dc3e808d7_lkpqst163", - "desc": "Lookup table (Select the farmer)", - "fields": [ - { - "name": "qst163_cod", - "desc": "Code", - "key": "true" - }, - { - "name": "qst163_des", - "desc": "Description", - "key": null - } - ], - "values": [ - { - "qst163_cod": 1, - "qst163_des": "P:1-Mahoussi" - }, - { - "qst163_cod": 2, - "qst163_des": "P:2-Sara" - }, - { - "qst163_cod": 3, - "qst163_des": "P:3-Sumini" - }, - { - "qst163_cod": 4, - "qst163_des": "P:4-Issa" - }, - { - "qst163_cod": 5, - "qst163_des": "P:5-Rasyid" - }, - { - "qst163_cod": 6, - "qst163_des": "P:6-Yolanda" - }, - { - "qst163_cod": 7, - "qst163_des": "P:7-Kari" - }, - { - "qst163_cod": 8, - "qst163_des": "P:8-Nosa" - }, - { - "qst163_cod": 9, - "qst163_des": "P:9-Lucia" - }, - { - "qst163_cod": 10, - "qst163_des": "P:10-Heba" - }, - { - "qst163_cod": 11, - "qst163_des": "P:11-Nataly" - }, - { - "qst163_cod": 12, - "qst163_des": "P:12-Olga" - }, - { - "qst163_cod": 13, - "qst163_des": "P:13-Jacopo" - }, - { - "qst163_cod": 14, - "qst163_des": "P:14-Marwa" - }, - { - "qst163_cod": 15, - "qst163_des": "P:15-Temi" - }, - { - "qst163_cod": 16, - "qst163_des": "P:16-Nahed" - }, - { - "qst163_cod": 17, - "qst163_des": "P:17-Afefe" - }, - { - "qst163_cod": 18, - "qst163_des": "P:18-Munsanda" - }, - { - "qst163_cod": 19, - "qst163_des": "P:19-Brenda" - }, - { - "qst163_cod": 20, - "qst163_des": "P:20-Omnie" - }, - { - "qst163_cod": 21, - "qst163_des": "P:21-Faisal" - }, - { - "qst163_cod": 22, - "qst163_des": "P:22-Domingos" - } - ] - } - ], - "fields": [ - { - "name": "surveyid", - "odktype": "", - "desc": "Submission ID", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "originid", - "odktype": "", - "desc": "Origin", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "clm_deviceimei", - "odktype": "deviceid", - "desc": "Device IMEI", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "clm_start", - "odktype": "start", - "desc": "Start of survey", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "clm_end", - "odktype": "end", - "desc": "End of survey", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "qst163", - "odktype": "select_one qst163_opts", - "desc": "Select the farmer", - "key": "true", - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASS908dc3e808d7_lkpqst163", - "rfield": "qst163_cod" - }, - { - "name": "char_sweetness_pos", - "odktype": "select_one char_sweetness_pos_opts", - "desc": "Which one is more sweet?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASS908dc3e808d7_lkpchar_sweetness_pos", - "rfield": "char_sweetness_pos_cod" - }, - { - "name": "char_sweetness_neg", - "odktype": "select_one char_sweetness_neg_opts", - "desc": "Which one is less sweet?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASS908dc3e808d7_lkpchar_sweetness_pos", - "rfield": "char_sweetness_pos_cod" - }, - { - "name": "char_bitterness_pos", - "odktype": "select_one char_bitterness_pos_opts", - "desc": "Which one more bitter?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASS908dc3e808d7_lkpchar_sweetness_pos", - "rfield": "char_sweetness_pos_cod" - }, - { - "name": "char_bitterness_neg", - "odktype": "select_one char_bitterness_neg_opts", - "desc": "Which one is less bitter?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASS908dc3e808d7_lkpchar_sweetness_pos", - "rfield": "char_sweetness_pos_cod" - }, - { - "name": "char_cocoacontent_pos", - "odktype": "select_one char_cocoacontent_pos_opts", - "desc": "Which one has more cocoa mass?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASS908dc3e808d7_lkpchar_sweetness_pos", - "rfield": "char_sweetness_pos_cod" - }, - { - "name": "char_cocoacontent_neg", - "odktype": "select_one char_cocoacontent_neg_opts", - "desc": "Which one has less cocoa mass?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASS908dc3e808d7_lkpchar_sweetness_pos", - "rfield": "char_sweetness_pos_cod" - }, - { - "name": "char_darkcolor_pos", - "odktype": "select_one char_darkcolor_pos_opts", - "desc": "Which one is more dark?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASS908dc3e808d7_lkpchar_sweetness_pos", - "rfield": "char_sweetness_pos_cod" - }, - { - "name": "char_darkcolor_neg", - "odktype": "select_one char_darkcolor_neg_opts", - "desc": "Which one is less dark?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASS908dc3e808d7_lkpchar_sweetness_pos", - "rfield": "char_sweetness_pos_cod" - }, - { - "name": "char_overallperf_pos", - "odktype": "select_one char_overallperf_pos_opts", - "desc": "Overall, which option performed better?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASS908dc3e808d7_lkpchar_sweetness_pos", - "rfield": "char_sweetness_pos_cod" - }, - { - "name": "char_overallperf_neg", - "odktype": "select_one char_overallperf_neg_opts", - "desc": "Overall, which option performed worst?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASS908dc3e808d7_lkpchar_sweetness_pos", - "rfield": "char_sweetness_pos_cod" - }, - { - "name": "rowuuid", - "odktype": "", - "desc": "Unique Row Identifier (UUID)", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - } - ] - } - ], - "packages": [ - { - "package_id": 1, - "farmername": "Mahoussi", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Chocolate brands", - "alias_name": "Amul Milk" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Chocolate brands", - "alias_name": "Cadbury Dairy Milk" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Chocolate brands", - "alias_name": "Nestle Classic" - } - ] - } - ] - }, - { - "package_id": 2, - "farmername": "Sara", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Chocolate brands", - "alias_name": "Lindt 90" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Chocolate brands", - "alias_name": "Amul Milk" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Chocolate brands", - "alias_name": "Cadbury Dairy Milk" - } - ] - } - ] - }, - { - "package_id": 3, - "farmername": "Sumini", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Chocolate brands", - "alias_name": "Nestle Classic" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Chocolate brands", - "alias_name": "Lindt 90" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Chocolate brands", - "alias_name": "Amul Milk" - } - ] - } - ] - }, - { - "package_id": 4, - "farmername": "Issa", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Chocolate brands", - "alias_name": "Cadbury Dairy Milk" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Chocolate brands", - "alias_name": "Nestle Classic" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Chocolate brands", - "alias_name": "Lindt 90" - } - ] - } - ] - }, - { - "package_id": 5, - "farmername": "Rasyid", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Chocolate brands", - "alias_name": "Amul Milk" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Chocolate brands", - "alias_name": "Cadbury Dairy Milk" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Chocolate brands", - "alias_name": "Nestle Classic" - } - ] - } - ] - }, - { - "package_id": 6, - "farmername": "Yolanda", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Chocolate brands", - "alias_name": "Lindt 90" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Chocolate brands", - "alias_name": "Nestle Classic" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Chocolate brands", - "alias_name": "Amul Milk" - } - ] - } - ] - }, - { - "package_id": 7, - "farmername": "Kari", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Chocolate brands", - "alias_name": "Nestle Classic" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Chocolate brands", - "alias_name": "Lindt 90" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Chocolate brands", - "alias_name": "Cadbury Dairy Milk" - } - ] - } - ] - }, - { - "package_id": 8, - "farmername": "Nosa", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Chocolate brands", - "alias_name": "Cadbury Dairy Milk" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Chocolate brands", - "alias_name": "Amul Milk" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Chocolate brands", - "alias_name": "Lindt 90" - } - ] - } - ] - }, - { - "package_id": 9, - "farmername": "Lucia", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Chocolate brands", - "alias_name": "Amul Milk" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Chocolate brands", - "alias_name": "Cadbury Dairy Milk" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Chocolate brands", - "alias_name": "Nestle Classic" - } - ] - } - ] - }, - { - "package_id": 10, - "farmername": "Heba", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Chocolate brands", - "alias_name": "Lindt 90" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Chocolate brands", - "alias_name": "Nestle Classic" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Chocolate brands", - "alias_name": "Cadbury Dairy Milk" - } - ] - } - ] - }, - { - "package_id": 11, - "farmername": "Nataly", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Chocolate brands", - "alias_name": "Nestle Classic" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Chocolate brands", - "alias_name": "Lindt 90" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Chocolate brands", - "alias_name": "Amul Milk" - } - ] - } - ] - }, - { - "package_id": 12, - "farmername": "Olga", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Chocolate brands", - "alias_name": "Cadbury Dairy Milk" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Chocolate brands", - "alias_name": "Amul Milk" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Chocolate brands", - "alias_name": "Lindt 90" - } - ] - } - ] - }, - { - "package_id": 13, - "farmername": "Jacopo", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Chocolate brands", - "alias_name": "Lindt 90" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Chocolate brands", - "alias_name": "Amul Milk" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Chocolate brands", - "alias_name": "Nestle Classic" - } - ] - } - ] - }, - { - "package_id": 14, - "farmername": "Marwa", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Chocolate brands", - "alias_name": "Cadbury Dairy Milk" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Chocolate brands", - "alias_name": "Nestle Classic" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Chocolate brands", - "alias_name": "Lindt 90" - } - ] - } - ] - }, - { - "package_id": 15, - "farmername": "Temi", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Chocolate brands", - "alias_name": "Amul Milk" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Chocolate brands", - "alias_name": "Lindt 90" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Chocolate brands", - "alias_name": "Cadbury Dairy Milk" - } - ] - } - ] - }, - { - "package_id": 16, - "farmername": "Nahed", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Chocolate brands", - "alias_name": "Nestle Classic" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Chocolate brands", - "alias_name": "Cadbury Dairy Milk" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Chocolate brands", - "alias_name": "Amul Milk" - } - ] - } - ] - }, - { - "package_id": 17, - "farmername": "Afefe", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Chocolate brands", - "alias_name": "Amul Milk" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Chocolate brands", - "alias_name": "Cadbury Dairy Milk" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Chocolate brands", - "alias_name": "Nestle Classic" - } - ] - } - ] - }, - { - "package_id": 18, - "farmername": "Munsanda", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Chocolate brands", - "alias_name": "Lindt 90" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Chocolate brands", - "alias_name": "Amul Milk" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Chocolate brands", - "alias_name": "Cadbury Dairy Milk" - } - ] - } - ] - }, - { - "package_id": 19, - "farmername": "Brenda", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Chocolate brands", - "alias_name": "Nestle Classic" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Chocolate brands", - "alias_name": "Lindt 90" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Chocolate brands", - "alias_name": "Amul Milk" - } - ] - } - ] - }, - { - "package_id": 20, - "farmername": "Omnie", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Chocolate brands", - "alias_name": "Cadbury Dairy Milk" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Chocolate brands", - "alias_name": "Nestle Classic" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Chocolate brands", - "alias_name": "Lindt 90" - } - ] - } - ] - }, - { - "package_id": 21, - "farmername": "Faisal", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Chocolate brands", - "alias_name": "Lindt 90" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Chocolate brands", - "alias_name": "Amul Milk" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Chocolate brands", - "alias_name": "Cadbury Dairy Milk" - } - ] - } - ] - }, - { - "package_id": 22, - "farmername": "Domingos", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Chocolate brands", - "alias_name": "Amul Milk" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Chocolate brands", - "alias_name": "Lindt 90" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Chocolate brands", - "alias_name": "Nestle Classic" - } - ] - } - ] - } - ], - "specialfields": [ - { - "type": "Characteristic", - "name": "ASS908dc3e808d7_char_sweetness_pos", - "desc": "Which one is more sweet?" - }, - { - "type": "Characteristic", - "name": "ASS908dc3e808d7_char_sweetness_neg", - "desc": "Which one is less sweet?" - }, - { - "type": "Characteristic", - "name": "ASS908dc3e808d7_char_bitterness_pos", - "desc": "Which one more bitter?" - }, - { - "type": "Characteristic", - "name": "ASS908dc3e808d7_char_bitterness_neg", - "desc": "Which one is less bitter?" - }, - { - "type": "Characteristic", - "name": "ASS908dc3e808d7_char_cocoacontent_pos", - "desc": "Which one has more cocoa mass?" - }, - { - "type": "Characteristic", - "name": "ASS908dc3e808d7_char_cocoacontent_neg", - "desc": "Which one has less cocoa mass?" - }, - { - "type": "Characteristic", - "name": "ASS908dc3e808d7_char_darkcolor_pos", - "desc": "Which one is more dark?" - }, - { - "type": "Characteristic", - "name": "ASS908dc3e808d7_char_darkcolor_neg", - "desc": "Which one is less dark?" - }, - { - "type": "Characteristic", - "name": "ASS908dc3e808d7_char_overallperf_pos", - "desc": "Overall, which option performed better?" - }, - { - "type": "Characteristic", - "name": "ASS908dc3e808d7_char_overallperf_neg", - "desc": "Overall, which option performed worst?" - } - ], - "data": [ - { - "REG_surveyid": "064a0dc1-22b8-40fc-8747-3996f502e334", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "358624090903126", - "REG_clm_start": "2019-10-28 14:29:48", - "REG_clm_end": "2019-10-28 14:30:21", - "REG_qst162": "1", - "REG_farmername": "Mahoussi", - "REG_country": "Benin", - "REG_age": 25, - "REG_gender": 1, - "REG_rowuuid": "4a3112c9-c51b-48f7-b3c6-9f84a338979b", - "ASS908dc3e808d7_surveyid": "6355b8f4-cc47-4fbf-b040-742109d3a2b1", - "ASS908dc3e808d7_originid": "ODKTOOLS", - "ASS908dc3e808d7_clm_deviceimei": "358624090903126", - "ASS908dc3e808d7_clm_start": "2019-10-28 14:49:54", - "ASS908dc3e808d7_clm_end": "2019-10-28 14:51:08", - "ASS908dc3e808d7_qst163": 1, - "ASS908dc3e808d7_char_sweetness_pos": 3, - "ASS908dc3e808d7_char_sweetness_neg": 1, - "ASS908dc3e808d7_char_bitterness_pos": 1, - "ASS908dc3e808d7_char_bitterness_neg": 3, - "ASS908dc3e808d7_char_cocoacontent_pos": 1, - "ASS908dc3e808d7_char_cocoacontent_neg": 3, - "ASS908dc3e808d7_char_darkcolor_pos": 1, - "ASS908dc3e808d7_char_darkcolor_neg": 3, - "ASS908dc3e808d7_char_overallperf_pos": 1, - "ASS908dc3e808d7_char_overallperf_neg": 2, - "ASS908dc3e808d7_rowuuid": "c260a900-04f2-4d51-a710-24eabea19428" - }, - { - "REG_surveyid": "bd2ecc78-f536-49e5-9f11-84bcc5c37272", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "358624090903126", - "REG_clm_start": "2019-10-28 14:35:40", - "REG_clm_end": "2019-10-28 14:36:33", - "REG_qst162": "10", - "REG_farmername": "Heba", - "REG_country": "Jordan", - "REG_age": 30, - "REG_gender": 2, - "REG_rowuuid": "3c78d86a-8e04-4a38-b973-9e4844ea51de", - "ASS908dc3e808d7_surveyid": "eb25ae5e-1f8e-4e61-8502-e7fc476bf902", - "ASS908dc3e808d7_originid": "ODKTOOLS", - "ASS908dc3e808d7_clm_deviceimei": "358624090903126", - "ASS908dc3e808d7_clm_start": "2019-10-28 15:09:21", - "ASS908dc3e808d7_clm_end": "2019-10-28 15:09:39", - "ASS908dc3e808d7_qst163": 10, - "ASS908dc3e808d7_char_sweetness_pos": 2, - "ASS908dc3e808d7_char_sweetness_neg": 1, - "ASS908dc3e808d7_char_bitterness_pos": 1, - "ASS908dc3e808d7_char_bitterness_neg": 2, - "ASS908dc3e808d7_char_cocoacontent_pos": 2, - "ASS908dc3e808d7_char_cocoacontent_neg": 1, - "ASS908dc3e808d7_char_darkcolor_pos": 1, - "ASS908dc3e808d7_char_darkcolor_neg": 3, - "ASS908dc3e808d7_char_overallperf_pos": 2, - "ASS908dc3e808d7_char_overallperf_neg": 1, - "ASS908dc3e808d7_rowuuid": "04f5698a-098c-4e1f-918b-caf670038eff" - }, - { - "REG_surveyid": "07a1f18b-00bd-4b40-9386-8f83a33985d4", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "358624090903126", - "REG_clm_start": "2019-10-28 14:36:38", - "REG_clm_end": "2019-10-28 14:37:09", - "REG_qst162": "11", - "REG_farmername": "Nataly", - "REG_country": "Peru", - "REG_age": 32, - "REG_gender": 2, - "REG_rowuuid": "0d83e6f2-ccec-45c1-b046-cea5e6ebb0fd", - "ASS908dc3e808d7_surveyid": "e6d84438-e8a4-44ba-a5a1-014803e3c741", - "ASS908dc3e808d7_originid": "ODKTOOLS", - "ASS908dc3e808d7_clm_deviceimei": "358624090903126", - "ASS908dc3e808d7_clm_start": "2019-10-28 15:05:42", - "ASS908dc3e808d7_clm_end": "2019-10-28 15:06:07", - "ASS908dc3e808d7_qst163": 11, - "ASS908dc3e808d7_char_sweetness_pos": 1, - "ASS908dc3e808d7_char_sweetness_neg": 2, - "ASS908dc3e808d7_char_bitterness_pos": 2, - "ASS908dc3e808d7_char_bitterness_neg": 1, - "ASS908dc3e808d7_char_cocoacontent_pos": 1, - "ASS908dc3e808d7_char_cocoacontent_neg": 2, - "ASS908dc3e808d7_char_darkcolor_pos": 2, - "ASS908dc3e808d7_char_darkcolor_neg": 1, - "ASS908dc3e808d7_char_overallperf_pos": 2, - "ASS908dc3e808d7_char_overallperf_neg": 1, - "ASS908dc3e808d7_rowuuid": "12da02f9-526e-406e-ab35-75f1cd5810b6" - }, - { - "REG_surveyid": "4f648590-3064-4fea-aaa4-7a3fb2aefab1", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "358624090903126", - "REG_clm_start": "2019-10-28 14:37:15", - "REG_clm_end": "2019-10-28 14:37:40", - "REG_qst162": "12", - "REG_farmername": "Olga", - "REG_country": "Colombia", - "REG_age": 47, - "REG_gender": 2, - "REG_rowuuid": "a8ffd812-0747-4abe-b8d2-c8d7f726ef12", - "ASS908dc3e808d7_surveyid": "a98b9e1e-5aa0-456e-8154-f9be9334f5c4", - "ASS908dc3e808d7_originid": "ODKTOOLS", - "ASS908dc3e808d7_clm_deviceimei": "358624090903126", - "ASS908dc3e808d7_clm_start": "2019-10-28 15:06:10", - "ASS908dc3e808d7_clm_end": "2019-10-28 15:06:30", - "ASS908dc3e808d7_qst163": 12, - "ASS908dc3e808d7_char_sweetness_pos": 1, - "ASS908dc3e808d7_char_sweetness_neg": 3, - "ASS908dc3e808d7_char_bitterness_pos": 3, - "ASS908dc3e808d7_char_bitterness_neg": 2, - "ASS908dc3e808d7_char_cocoacontent_pos": 3, - "ASS908dc3e808d7_char_cocoacontent_neg": 2, - "ASS908dc3e808d7_char_darkcolor_pos": 3, - "ASS908dc3e808d7_char_darkcolor_neg": 1, - "ASS908dc3e808d7_char_overallperf_pos": 3, - "ASS908dc3e808d7_char_overallperf_neg": 2, - "ASS908dc3e808d7_rowuuid": "f0244f1e-9f00-475c-8127-eeca6f6c7838" - }, - { - "REG_surveyid": "4a2e4cd6-d5ab-460c-b244-e12c29f7cf5c", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "358624090903126", - "REG_clm_start": "2019-10-28 14:37:51", - "REG_clm_end": "2019-10-28 14:38:17", - "REG_qst162": "13", - "REG_farmername": "Jacopo", - "REG_country": "Italy", - "REG_age": 39, - "REG_gender": 1, - "REG_rowuuid": "0a01a58d-6015-4004-95c2-73eda09ee70c", - "ASS908dc3e808d7_surveyid": "2f4f27a2-1f95-44af-9524-7e8af3428bbc", - "ASS908dc3e808d7_originid": "ODKTOOLS", - "ASS908dc3e808d7_clm_deviceimei": "358624090903126", - "ASS908dc3e808d7_clm_start": "2019-10-28 15:06:34", - "ASS908dc3e808d7_clm_end": "2019-10-28 15:06:53", - "ASS908dc3e808d7_qst163": 13, - "ASS908dc3e808d7_char_sweetness_pos": 2, - "ASS908dc3e808d7_char_sweetness_neg": 1, - "ASS908dc3e808d7_char_bitterness_pos": 1, - "ASS908dc3e808d7_char_bitterness_neg": 3, - "ASS908dc3e808d7_char_cocoacontent_pos": 1, - "ASS908dc3e808d7_char_cocoacontent_neg": 2, - "ASS908dc3e808d7_char_darkcolor_pos": 1, - "ASS908dc3e808d7_char_darkcolor_neg": 3, - "ASS908dc3e808d7_char_overallperf_pos": 1, - "ASS908dc3e808d7_char_overallperf_neg": 2, - "ASS908dc3e808d7_rowuuid": "8f29d0e9-1550-4bed-b797-629115d8f72a" - }, - { - "REG_surveyid": "9294566a-a689-4b87-b803-2f46194c1e6d", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "358624090903126", - "REG_clm_start": "2019-10-28 14:38:20", - "REG_clm_end": "2019-10-28 14:38:44", - "REG_qst162": "14", - "REG_farmername": "Marwa", - "REG_country": "Egypt", - "REG_age": 37, - "REG_gender": 2, - "REG_rowuuid": "bb9b6e5b-d3e1-4cc4-9434-f425c2d34318", - "ASS908dc3e808d7_surveyid": "52602a83-b9d5-404a-86ba-a4a9e30cd383", - "ASS908dc3e808d7_originid": "ODKTOOLS", - "ASS908dc3e808d7_clm_deviceimei": "358624090903126", - "ASS908dc3e808d7_clm_start": "2019-10-28 15:06:54", - "ASS908dc3e808d7_clm_end": "2019-10-28 15:07:20", - "ASS908dc3e808d7_qst163": 14, - "ASS908dc3e808d7_char_sweetness_pos": 1, - "ASS908dc3e808d7_char_sweetness_neg": 3, - "ASS908dc3e808d7_char_bitterness_pos": 3, - "ASS908dc3e808d7_char_bitterness_neg": 2, - "ASS908dc3e808d7_char_cocoacontent_pos": 1, - "ASS908dc3e808d7_char_cocoacontent_neg": 3, - "ASS908dc3e808d7_char_darkcolor_pos": 3, - "ASS908dc3e808d7_char_darkcolor_neg": 1, - "ASS908dc3e808d7_char_overallperf_pos": 2, - "ASS908dc3e808d7_char_overallperf_neg": 3, - "ASS908dc3e808d7_rowuuid": "021aa3b3-8146-4035-b4c1-9a7d6cb0ae93" - }, - { - "REG_surveyid": "4a881137-6d9c-4f47-b47e-66615a2f59bc", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "358624090903126", - "REG_clm_start": "2019-10-28 14:38:49", - "REG_clm_end": "2019-10-28 14:39:24", - "REG_qst162": "15", - "REG_farmername": "Temi", - "REG_country": "Nigeria", - "REG_age": 42, - "REG_gender": 2, - "REG_rowuuid": "cf244cb8-8a77-4a8e-9268-ca5071d1e9e0", - "ASS908dc3e808d7_surveyid": "128f7a7e-5aaa-4798-929b-20ebd801f7cd", - "ASS908dc3e808d7_originid": "ODKTOOLS", - "ASS908dc3e808d7_clm_deviceimei": "358624090903126", - "ASS908dc3e808d7_clm_start": "2019-10-28 14:57:19", - "ASS908dc3e808d7_clm_end": "2019-10-28 14:58:16", - "ASS908dc3e808d7_qst163": 15, - "ASS908dc3e808d7_char_sweetness_pos": 3, - "ASS908dc3e808d7_char_sweetness_neg": 2, - "ASS908dc3e808d7_char_bitterness_pos": 2, - "ASS908dc3e808d7_char_bitterness_neg": 3, - "ASS908dc3e808d7_char_cocoacontent_pos": 2, - "ASS908dc3e808d7_char_cocoacontent_neg": 3, - "ASS908dc3e808d7_char_darkcolor_pos": 2, - "ASS908dc3e808d7_char_darkcolor_neg": 1, - "ASS908dc3e808d7_char_overallperf_pos": 1, - "ASS908dc3e808d7_char_overallperf_neg": 2, - "ASS908dc3e808d7_rowuuid": "ea4e08dc-c9b9-4c0f-9d5e-29d0d3b21bcb" - }, - { - "REG_surveyid": "ff5143ed-6551-4610-b15d-8b67121b625f", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "358624090903126", - "REG_clm_start": "2019-10-28 14:39:30", - "REG_clm_end": "2019-10-28 14:39:57", - "REG_qst162": "16", - "REG_farmername": "Nahed", - "REG_country": "Egypt", - "REG_age": 57, - "REG_gender": 2, - "REG_rowuuid": "a9e6745a-c311-4b16-b005-3fef45500b71", - "ASS908dc3e808d7_surveyid": "bf446f8a-fce7-4ed8-976b-7b894e72a0e7", - "ASS908dc3e808d7_originid": "ODKTOOLS", - "ASS908dc3e808d7_clm_deviceimei": "358624090903126", - "ASS908dc3e808d7_clm_start": "2019-10-28 14:55:25", - "ASS908dc3e808d7_clm_end": "2019-10-28 14:55:45", - "ASS908dc3e808d7_qst163": 16, - "ASS908dc3e808d7_char_sweetness_pos": 1, - "ASS908dc3e808d7_char_sweetness_neg": 2, - "ASS908dc3e808d7_char_bitterness_pos": 2, - "ASS908dc3e808d7_char_bitterness_neg": 3, - "ASS908dc3e808d7_char_cocoacontent_pos": 3, - "ASS908dc3e808d7_char_cocoacontent_neg": 1, - "ASS908dc3e808d7_char_darkcolor_pos": 3, - "ASS908dc3e808d7_char_darkcolor_neg": 1, - "ASS908dc3e808d7_char_overallperf_pos": 2, - "ASS908dc3e808d7_char_overallperf_neg": 1, - "ASS908dc3e808d7_rowuuid": "91ce0a11-2478-4500-bf21-810b1e853142" - }, - { - "REG_surveyid": "08c56ff1-18f4-494d-b2ca-316374cde224", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "358624090903126", - "REG_clm_start": "2019-10-28 14:40:02", - "REG_clm_end": "2019-10-28 14:40:31", - "REG_qst162": "17", - "REG_farmername": "Afefe", - "REG_country": "Egypt", - "REG_age": 39, - "REG_gender": 1, - "REG_rowuuid": "b2994023-51a1-4baa-a4c4-ae59d579d691", - "ASS908dc3e808d7_surveyid": "1e6ab44b-23de-4009-b210-08e456b9bd2d", - "ASS908dc3e808d7_originid": "ODKTOOLS", - "ASS908dc3e808d7_clm_deviceimei": "358624090903126", - "ASS908dc3e808d7_clm_start": "2019-10-28 15:02:09", - "ASS908dc3e808d7_clm_end": "2019-10-28 15:02:30", - "ASS908dc3e808d7_qst163": 17, - "ASS908dc3e808d7_char_sweetness_pos": 3, - "ASS908dc3e808d7_char_sweetness_neg": 1, - "ASS908dc3e808d7_char_bitterness_pos": 1, - "ASS908dc3e808d7_char_bitterness_neg": 3, - "ASS908dc3e808d7_char_cocoacontent_pos": 2, - "ASS908dc3e808d7_char_cocoacontent_neg": 1, - "ASS908dc3e808d7_char_darkcolor_pos": 1, - "ASS908dc3e808d7_char_darkcolor_neg": 2, - "ASS908dc3e808d7_char_overallperf_pos": 3, - "ASS908dc3e808d7_char_overallperf_neg": 1, - "ASS908dc3e808d7_rowuuid": "c08df3c8-b648-4a14-99c6-35995957621d" - }, - { - "REG_surveyid": "eb3f9389-8eeb-4912-9c0a-94f9bb08991f", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "358624090903126", - "REG_clm_start": "2019-10-28 14:40:37", - "REG_clm_end": "2019-10-28 14:40:59", - "REG_qst162": "18", - "REG_farmername": "Munsanda", - "REG_country": "Zambia", - "REG_age": 34, - "REG_gender": 2, - "REG_rowuuid": "0d5aaac6-c3df-445b-ac9a-86108b654da3", - "ASS908dc3e808d7_surveyid": "f8fcbe93-627c-4a57-a5e6-f5a41ae47075", - "ASS908dc3e808d7_originid": "ODKTOOLS", - "ASS908dc3e808d7_clm_deviceimei": "358624090903126", - "ASS908dc3e808d7_clm_start": "2019-10-28 14:54:58", - "ASS908dc3e808d7_clm_end": "2019-10-28 14:55:21", - "ASS908dc3e808d7_qst163": 18, - "ASS908dc3e808d7_char_sweetness_pos": 2, - "ASS908dc3e808d7_char_sweetness_neg": 1, - "ASS908dc3e808d7_char_bitterness_pos": 1, - "ASS908dc3e808d7_char_bitterness_neg": 3, - "ASS908dc3e808d7_char_cocoacontent_pos": 1, - "ASS908dc3e808d7_char_cocoacontent_neg": 3, - "ASS908dc3e808d7_char_darkcolor_pos": 1, - "ASS908dc3e808d7_char_darkcolor_neg": 3, - "ASS908dc3e808d7_char_overallperf_pos": 2, - "ASS908dc3e808d7_char_overallperf_neg": 1, - "ASS908dc3e808d7_rowuuid": "2ba0a4ff-787e-44b8-88e3-cb0a731561a3" - }, - { - "REG_surveyid": "1286777c-6b53-4a72-b765-83f781974533", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "358624090903126", - "REG_clm_start": "2019-10-28 14:41:14", - "REG_clm_end": "2019-10-28 14:41:38", - "REG_qst162": "19", - "REG_farmername": "Brenda", - "REG_country": "Uganda", - "REG_age": 48, - "REG_gender": 2, - "REG_rowuuid": "43f95d04-6ba1-4e96-81bd-7244d630a4bc", - "ASS908dc3e808d7_surveyid": "2fa463cc-dfae-4e85-a746-e7d93982b26c", - "ASS908dc3e808d7_originid": "ODKTOOLS", - "ASS908dc3e808d7_clm_deviceimei": "358624090903126", - "ASS908dc3e808d7_clm_start": "2019-10-28 14:58:19", - "ASS908dc3e808d7_clm_end": "2019-10-28 14:58:38", - "ASS908dc3e808d7_qst163": 19, - "ASS908dc3e808d7_char_sweetness_pos": 1, - "ASS908dc3e808d7_char_sweetness_neg": 2, - "ASS908dc3e808d7_char_bitterness_pos": 2, - "ASS908dc3e808d7_char_bitterness_neg": 3, - "ASS908dc3e808d7_char_cocoacontent_pos": 2, - "ASS908dc3e808d7_char_cocoacontent_neg": 3, - "ASS908dc3e808d7_char_darkcolor_pos": 2, - "ASS908dc3e808d7_char_darkcolor_neg": 1, - "ASS908dc3e808d7_char_overallperf_pos": 1, - "ASS908dc3e808d7_char_overallperf_neg": 3, - "ASS908dc3e808d7_rowuuid": "f02036b3-60b1-4e9a-a6fe-c724fb7f788d" - }, - { - "REG_surveyid": "6e349294-f665-48e1-b7b9-e209a5f102c2", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "358624090903126", - "REG_clm_start": "2019-10-28 14:30:28", - "REG_clm_end": "2019-10-28 14:30:57", - "REG_qst162": "2", - "REG_farmername": "Sara", - "REG_country": "Egypt", - "REG_age": 38, - "REG_gender": 2, - "REG_rowuuid": "f59b1bc7-7443-4118-9411-796dca37ba42", - "ASS908dc3e808d7_surveyid": "52890131-0f5f-4381-bba1-754da11c6f6b", - "ASS908dc3e808d7_originid": "ODKTOOLS", - "ASS908dc3e808d7_clm_deviceimei": "358624090903126", - "ASS908dc3e808d7_clm_start": "2019-10-28 14:51:11", - "ASS908dc3e808d7_clm_end": "2019-10-28 14:51:34", - "ASS908dc3e808d7_qst163": 2, - "ASS908dc3e808d7_char_sweetness_pos": 2, - "ASS908dc3e808d7_char_sweetness_neg": 1, - "ASS908dc3e808d7_char_bitterness_pos": 1, - "ASS908dc3e808d7_char_bitterness_neg": 2, - "ASS908dc3e808d7_char_cocoacontent_pos": 1, - "ASS908dc3e808d7_char_cocoacontent_neg": 3, - "ASS908dc3e808d7_char_darkcolor_pos": 1, - "ASS908dc3e808d7_char_darkcolor_neg": 3, - "ASS908dc3e808d7_char_overallperf_pos": 3, - "ASS908dc3e808d7_char_overallperf_neg": 1, - "ASS908dc3e808d7_rowuuid": "aaccdcd7-9bc8-47e6-9f31-0a523a200b46" - }, - { - "REG_surveyid": "b7a365f1-ab47-42cc-9063-005ff4deeb2e", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "358624090903126", - "REG_clm_start": "2019-10-28 14:41:44", - "REG_clm_end": "2019-10-28 14:42:19", - "REG_qst162": "20", - "REG_farmername": "Omnie", - "REG_country": "Egypt", - "REG_age": 47, - "REG_gender": 2, - "REG_rowuuid": "8fb152cb-79bb-427a-94e7-9febdc9c5117", - "ASS908dc3e808d7_surveyid": "a85d3380-eb25-4f37-96e1-0867de6326c4", - "ASS908dc3e808d7_originid": "ODKTOOLS", - "ASS908dc3e808d7_clm_deviceimei": "358624090903126", - "ASS908dc3e808d7_clm_start": "2019-10-28 14:56:14", - "ASS908dc3e808d7_clm_end": "2019-10-28 14:57:16", - "ASS908dc3e808d7_qst163": 20, - "ASS908dc3e808d7_char_sweetness_pos": 1, - "ASS908dc3e808d7_char_sweetness_neg": 3, - "ASS908dc3e808d7_char_bitterness_pos": 3, - "ASS908dc3e808d7_char_bitterness_neg": 1, - "ASS908dc3e808d7_char_cocoacontent_pos": 1, - "ASS908dc3e808d7_char_cocoacontent_neg": 2, - "ASS908dc3e808d7_char_darkcolor_pos": 3, - "ASS908dc3e808d7_char_darkcolor_neg": 2, - "ASS908dc3e808d7_char_overallperf_pos": 1, - "ASS908dc3e808d7_char_overallperf_neg": 3, - "ASS908dc3e808d7_rowuuid": "d342b0f1-05bb-439e-ae25-04658e920c22" - }, - { - "REG_surveyid": "68d8f3ce-365a-459e-9be0-0717433c7dd5", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "358624090903126", - "REG_clm_start": "2019-10-28 14:42:28", - "REG_clm_end": "2019-10-28 14:43:13", - "REG_qst162": "21", - "REG_farmername": "Faisal", - "REG_country": "Bangladesh", - "REG_age": 53, - "REG_gender": 1, - "REG_rowuuid": "461bb67e-b21a-490d-901f-09cca8689873", - "ASS908dc3e808d7_surveyid": "5f7005da-ee64-4d05-ad3a-f0894d0fe025", - "ASS908dc3e808d7_originid": "ODKTOOLS", - "ASS908dc3e808d7_clm_deviceimei": "358624090903126", - "ASS908dc3e808d7_clm_start": "2019-10-28 15:02:32", - "ASS908dc3e808d7_clm_end": "2019-10-28 15:03:06", - "ASS908dc3e808d7_qst163": 21, - "ASS908dc3e808d7_char_sweetness_pos": 2, - "ASS908dc3e808d7_char_sweetness_neg": 3, - "ASS908dc3e808d7_char_bitterness_pos": null, - "ASS908dc3e808d7_char_bitterness_neg": null, - "ASS908dc3e808d7_char_cocoacontent_pos": 1, - "ASS908dc3e808d7_char_cocoacontent_neg": 3, - "ASS908dc3e808d7_char_darkcolor_pos": 1, - "ASS908dc3e808d7_char_darkcolor_neg": 3, - "ASS908dc3e808d7_char_overallperf_pos": 2, - "ASS908dc3e808d7_char_overallperf_neg": 1, - "ASS908dc3e808d7_rowuuid": "3a0b2963-1b7e-431e-8882-b923a6380589" - }, - { - "REG_surveyid": "5d7f4858-dd50-4d76-b9a2-dbd305bad78f", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "358624090903126", - "REG_clm_start": "2019-10-28 14:43:19", - "REG_clm_end": "2019-10-28 14:43:44", - "REG_qst162": "22", - "REG_farmername": "Domingos", - "REG_country": "Mozambique", - "REG_age": 31, - "REG_gender": 1, - "REG_rowuuid": "2053e448-1b9d-4fd6-aa17-e616b148833c", - "ASS908dc3e808d7_surveyid": "3575a017-4311-4b31-a68f-74c9fa5da871", - "ASS908dc3e808d7_originid": "ODKTOOLS", - "ASS908dc3e808d7_clm_deviceimei": "358624090903126", - "ASS908dc3e808d7_clm_start": "2019-10-28 14:55:48", - "ASS908dc3e808d7_clm_end": "2019-10-28 14:56:10", - "ASS908dc3e808d7_qst163": 22, - "ASS908dc3e808d7_char_sweetness_pos": 3, - "ASS908dc3e808d7_char_sweetness_neg": 1, - "ASS908dc3e808d7_char_bitterness_pos": 2, - "ASS908dc3e808d7_char_bitterness_neg": 1, - "ASS908dc3e808d7_char_cocoacontent_pos": 2, - "ASS908dc3e808d7_char_cocoacontent_neg": 1, - "ASS908dc3e808d7_char_darkcolor_pos": 2, - "ASS908dc3e808d7_char_darkcolor_neg": 3, - "ASS908dc3e808d7_char_overallperf_pos": 3, - "ASS908dc3e808d7_char_overallperf_neg": 2, - "ASS908dc3e808d7_rowuuid": "b9ebd05e-4f9d-4e9b-a000-9328e790aae9" - }, - { - "REG_surveyid": "35195ba1-e0f2-4996-ac9a-d3a598b8822d", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "358624090903126", - "REG_clm_start": "2019-10-28 14:31:03", - "REG_clm_end": "2019-10-28 14:31:31", - "REG_qst162": "3", - "REG_farmername": "Sumini", - "REG_country": "Zambia", - "REG_age": 30, - "REG_gender": 2, - "REG_rowuuid": "8e9d994d-4ef5-4810-bd69-ffd3228b0450", - "ASS908dc3e808d7_surveyid": "92178ef3-768a-4410-a9fd-f41f3b40f5a9", - "ASS908dc3e808d7_originid": "ODKTOOLS", - "ASS908dc3e808d7_clm_deviceimei": "358624090903126", - "ASS908dc3e808d7_clm_start": "2019-10-28 14:51:36", - "ASS908dc3e808d7_clm_end": "2019-10-28 14:52:23", - "ASS908dc3e808d7_qst163": 3, - "ASS908dc3e808d7_char_sweetness_pos": 1, - "ASS908dc3e808d7_char_sweetness_neg": 2, - "ASS908dc3e808d7_char_bitterness_pos": 2, - "ASS908dc3e808d7_char_bitterness_neg": 1, - "ASS908dc3e808d7_char_cocoacontent_pos": 1, - "ASS908dc3e808d7_char_cocoacontent_neg": 2, - "ASS908dc3e808d7_char_darkcolor_pos": 2, - "ASS908dc3e808d7_char_darkcolor_neg": 1, - "ASS908dc3e808d7_char_overallperf_pos": 1, - "ASS908dc3e808d7_char_overallperf_neg": 2, - "ASS908dc3e808d7_rowuuid": "33cf20f7-5997-4726-88ed-89c8760555b4" - }, - { - "REG_surveyid": "88a183a9-8567-433c-aa47-cdbbb5668578", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "358624090903126", - "REG_clm_start": "2019-10-28 14:31:34", - "REG_clm_end": "2019-10-28 14:31:58", - "REG_qst162": "4", - "REG_farmername": "Issa", - "REG_country": "Mali", - "REG_age": 47, - "REG_gender": 1, - "REG_rowuuid": "3097610a-be9d-4b34-b0f7-00f99bf4c85b", - "ASS908dc3e808d7_surveyid": "115e9ce8-3c55-4852-b717-33168cd25232", - "ASS908dc3e808d7_originid": "ODKTOOLS", - "ASS908dc3e808d7_clm_deviceimei": "358624090903126", - "ASS908dc3e808d7_clm_start": "2019-10-28 14:52:41", - "ASS908dc3e808d7_clm_end": "2019-10-28 14:54:08", - "ASS908dc3e808d7_qst163": 4, - "ASS908dc3e808d7_char_sweetness_pos": 1, - "ASS908dc3e808d7_char_sweetness_neg": 3, - "ASS908dc3e808d7_char_bitterness_pos": 3, - "ASS908dc3e808d7_char_bitterness_neg": 1, - "ASS908dc3e808d7_char_cocoacontent_pos": 3, - "ASS908dc3e808d7_char_cocoacontent_neg": 2, - "ASS908dc3e808d7_char_darkcolor_pos": 3, - "ASS908dc3e808d7_char_darkcolor_neg": 1, - "ASS908dc3e808d7_char_overallperf_pos": 2, - "ASS908dc3e808d7_char_overallperf_neg": 3, - "ASS908dc3e808d7_rowuuid": "4244d3d5-2e2a-40c0-9590-1841a42a532d" - }, - { - "REG_surveyid": "6d76a820-dccf-4e5e-8740-0208964e083c", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "358624090903126", - "REG_clm_start": "2019-10-28 14:32:16", - "REG_clm_end": "2019-10-28 14:32:42", - "REG_qst162": "5", - "REG_farmername": "Rasyid", - "REG_country": "Indonesia", - "REG_age": 35, - "REG_gender": 1, - "REG_rowuuid": "ca57bb94-7003-4fb6-99b4-209855a4933f", - "ASS908dc3e808d7_surveyid": "3e2b379b-7eed-4fbf-814a-180436b07569", - "ASS908dc3e808d7_originid": "ODKTOOLS", - "ASS908dc3e808d7_clm_deviceimei": "358624090903126", - "ASS908dc3e808d7_clm_start": "2019-10-28 14:54:33", - "ASS908dc3e808d7_clm_end": "2019-10-28 14:54:55", - "ASS908dc3e808d7_qst163": 5, - "ASS908dc3e808d7_char_sweetness_pos": 2, - "ASS908dc3e808d7_char_sweetness_neg": 1, - "ASS908dc3e808d7_char_bitterness_pos": 1, - "ASS908dc3e808d7_char_bitterness_neg": 3, - "ASS908dc3e808d7_char_cocoacontent_pos": 2, - "ASS908dc3e808d7_char_cocoacontent_neg": 3, - "ASS908dc3e808d7_char_darkcolor_pos": 1, - "ASS908dc3e808d7_char_darkcolor_neg": 2, - "ASS908dc3e808d7_char_overallperf_pos": 2, - "ASS908dc3e808d7_char_overallperf_neg": 3, - "ASS908dc3e808d7_rowuuid": "b0461ae7-5d7b-4325-86cf-83fda517cff6" - }, - { - "REG_surveyid": "6ac719e1-583e-41f5-bdfd-ad85fd690a8e", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "358624090903126", - "REG_clm_start": "2019-10-28 14:33:13", - "REG_clm_end": "2019-10-28 14:33:34", - "REG_qst162": "6", - "REG_farmername": "Yolanda", - "REG_country": "Indonesia", - "REG_age": 34, - "REG_gender": 2, - "REG_rowuuid": "40c92bfc-daf4-4c39-80c8-605e006e4ec9", - "ASS908dc3e808d7_surveyid": "6fafaf98-b297-425c-8b97-fec5ad7d3e67", - "ASS908dc3e808d7_originid": "ODKTOOLS", - "ASS908dc3e808d7_clm_deviceimei": "358624090903126", - "ASS908dc3e808d7_clm_start": "2019-10-28 14:54:10", - "ASS908dc3e808d7_clm_end": "2019-10-28 14:54:31", - "ASS908dc3e808d7_qst163": 6, - "ASS908dc3e808d7_char_sweetness_pos": 3, - "ASS908dc3e808d7_char_sweetness_neg": 2, - "ASS908dc3e808d7_char_bitterness_pos": 1, - "ASS908dc3e808d7_char_bitterness_neg": 2, - "ASS908dc3e808d7_char_cocoacontent_pos": 1, - "ASS908dc3e808d7_char_cocoacontent_neg": 3, - "ASS908dc3e808d7_char_darkcolor_pos": 1, - "ASS908dc3e808d7_char_darkcolor_neg": 3, - "ASS908dc3e808d7_char_overallperf_pos": 2, - "ASS908dc3e808d7_char_overallperf_neg": 1, - "ASS908dc3e808d7_rowuuid": "50216a97-207a-4407-854e-27ec4db32030" - }, - { - "REG_surveyid": "124b14d9-dfea-4ce9-9361-4efaf96d88b9", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "358624090903126", - "REG_clm_start": "2019-10-28 14:33:41", - "REG_clm_end": "2019-10-28 14:34:23", - "REG_qst162": "7", - "REG_farmername": "Kari", - "REG_country": "Sri Lanka", - "REG_age": 42, - "REG_gender": 1, - "REG_rowuuid": "cb02ce73-8bd9-4c47-8fe3-ae62f85b3870", - "ASS908dc3e808d7_surveyid": "0c7d2ea1-c738-4bb8-9c29-3bdb79d49378", - "ASS908dc3e808d7_originid": "ODKTOOLS", - "ASS908dc3e808d7_clm_deviceimei": "358624090903126", - "ASS908dc3e808d7_clm_start": "2019-10-28 15:03:37", - "ASS908dc3e808d7_clm_end": "2019-10-28 15:03:58", - "ASS908dc3e808d7_qst163": 7, - "ASS908dc3e808d7_char_sweetness_pos": 3, - "ASS908dc3e808d7_char_sweetness_neg": 2, - "ASS908dc3e808d7_char_bitterness_pos": 2, - "ASS908dc3e808d7_char_bitterness_neg": 1, - "ASS908dc3e808d7_char_cocoacontent_pos": 2, - "ASS908dc3e808d7_char_cocoacontent_neg": 1, - "ASS908dc3e808d7_char_darkcolor_pos": 2, - "ASS908dc3e808d7_char_darkcolor_neg": 1, - "ASS908dc3e808d7_char_overallperf_pos": 3, - "ASS908dc3e808d7_char_overallperf_neg": 2, - "ASS908dc3e808d7_rowuuid": "2010863b-3a93-45cc-9d45-11eafb1a4418" - }, - { - "REG_surveyid": "5cf5421d-1e21-4f53-a40d-f3d061bb39dc", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "358624090903126", - "REG_clm_start": "2019-10-28 14:34:27", - "REG_clm_end": "2019-10-28 14:34:57", - "REG_qst162": "8", - "REG_farmername": "Nosa", - "REG_country": "Sudan", - "REG_age": 34, - "REG_gender": 2, - "REG_rowuuid": "ff6d6df7-585c-4fe4-9484-a42862cc54e7", - "ASS908dc3e808d7_surveyid": "f0c3a0fe-c820-4b7b-826c-7c1bcc48cb43", - "ASS908dc3e808d7_originid": "ODKTOOLS", - "ASS908dc3e808d7_clm_deviceimei": "358624090903126", - "ASS908dc3e808d7_clm_start": "2019-10-28 15:03:09", - "ASS908dc3e808d7_clm_end": "2019-10-28 15:03:34", - "ASS908dc3e808d7_qst163": 8, - "ASS908dc3e808d7_char_sweetness_pos": 2, - "ASS908dc3e808d7_char_sweetness_neg": 3, - "ASS908dc3e808d7_char_bitterness_pos": 3, - "ASS908dc3e808d7_char_bitterness_neg": 1, - "ASS908dc3e808d7_char_cocoacontent_pos": 3, - "ASS908dc3e808d7_char_cocoacontent_neg": 1, - "ASS908dc3e808d7_char_darkcolor_pos": 3, - "ASS908dc3e808d7_char_darkcolor_neg": 1, - "ASS908dc3e808d7_char_overallperf_pos": 2, - "ASS908dc3e808d7_char_overallperf_neg": 3, - "ASS908dc3e808d7_rowuuid": "6912141a-4229-48bd-9060-00de09a5ffba" - }, - { - "REG_surveyid": "860764f2-42d7-4e20-a081-0d43d45a13d6", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "358624090903126", - "REG_clm_start": "2019-10-28 14:35:03", - "REG_clm_end": "2019-10-28 14:35:33", - "REG_qst162": "9", - "REG_farmername": "Lucia", - "REG_country": "South Africa", - "REG_age": 29, - "REG_gender": 2, - "REG_rowuuid": "72a8c33e-71fa-4a29-a3ee-9a86c884ae40", - "ASS908dc3e808d7_surveyid": "1407580e-45c5-48c3-aa26-9bfbf14f9928", - "ASS908dc3e808d7_originid": "ODKTOOLS", - "ASS908dc3e808d7_clm_deviceimei": "358624090903126", - "ASS908dc3e808d7_clm_start": "2019-10-28 15:05:23", - "ASS908dc3e808d7_clm_end": "2019-10-28 15:05:40", - "ASS908dc3e808d7_qst163": 9, - "ASS908dc3e808d7_char_sweetness_pos": 2, - "ASS908dc3e808d7_char_sweetness_neg": 1, - "ASS908dc3e808d7_char_bitterness_pos": 1, - "ASS908dc3e808d7_char_bitterness_neg": 3, - "ASS908dc3e808d7_char_cocoacontent_pos": 1, - "ASS908dc3e808d7_char_cocoacontent_neg": 2, - "ASS908dc3e808d7_char_darkcolor_pos": 1, - "ASS908dc3e808d7_char_darkcolor_neg": 2, - "ASS908dc3e808d7_char_overallperf_pos": 2, - "ASS908dc3e808d7_char_overallperf_neg": 1, - "ASS908dc3e808d7_rowuuid": "85203b73-47d4-4243-9306-18953128a378" - } - ], - "importantfields": [ - { - "type": "PackageID", - "field": "REG_QST162", - "desc": "Package ID" - }, - { - "type": "FarmerName", - "field": "REG_farmername", - "desc": "Name of registered farmer" - }, - { - "type": "OverallCharPos", - "field": "ASS908dc3e808d7_char_overallperf_pos", - "desc": "Over all characteristic positive" - }, - { - "type": "OverallCharNeg", - "field": "ASS908dc3e808d7_char_overallperf_neg", - "desc": "Over all characteristic negative" - } - ] -} \ No newline at end of file diff --git a/dev/data/chocolate_ghana/data.json b/dev/data/chocolate_ghana/data.json deleted file mode 100644 index 90c50cd..0000000 --- a/dev/data/chocolate_ghana/data.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "Characteristics": [ - { - "name": "About intelligence", - "id": 242, - "vars": [ - { - "name": "ASS0a0076896de8_char_intelligence_pos" - }, - { - "name": "ASS0a0076896de8_char_intelligence_neg" - } - ] - }, - { - "name": "Overall Characteristic", - "id": 204, - "vars": [ - { - "name": "ASS853ae88d793c_char_overallperf_pos" - }, - { - "name": "ASS853ae88d793c_char_overallperf_neg" - } - ] - } - ], - "Performance": [ - { - "name": "Overall performace", - "id": 205, - "vars": [ - { - "name": "ASS853ae88d793c_perf_overallchar_1" - }, - { - "name": "ASS853ae88d793c_perf_overallchar_2" - }, - { - "name": "ASS853ae88d793c_perf_overallchar_3" - } - ] - } - ], - "Explanatory": [ - { - "name": "What is the gender ?", - "id": 237, - "vars": "REG_gender" - } - ] -} \ No newline at end of file diff --git a/dev/data/chocolate_ghana/info.json b/dev/data/chocolate_ghana/info.json deleted file mode 100644 index 1735c07..0000000 --- a/dev/data/chocolate_ghana/info.json +++ /dev/null @@ -1,2574 +0,0 @@ -{ - "project": { - "user_name": "tcarey54", - "project_cod": "p20201", - "project_name": "Chocoloate bar tricot", - "project_abstract": "exercise", - "project_tags": "testing", - "project_pi": "Ted Carey", - "project_piemail": "tcarey@ksu.edu", - "project_active": 1, - "project_public": 0, - "project_dashboard": 1, - "project_regstatus": 2, - "project_assstatus": 0, - "project_createcomb": 0, - "project_createpkgs": 0, - "project_numobs": 25, - "project_numcom": 3, - "project_lat": "9.90471351", - "project_lon": "-83.685279", - "project_creationdate": "2020-03-09 14:19:43", - "project_localvariety": 1, - "extra": null - }, - "registry": { - "lkptables": [ - { - "name": "REG_lkpgender", - "desc": "Lookup table (What is the gender ?)", - "fields": [ - { - "name": "gender_cod", - "desc": "Code", - "key": "true" - }, - { - "name": "gender_des", - "desc": "Description", - "key": null - } - ], - "values": [ - { - "gender_cod": 1, - "gender_des": "Male" - }, - { - "gender_cod": 2, - "gender_des": "Female" - } - ] - } - ], - "fields": [ - { - "name": "surveyid", - "odktype": "", - "desc": "Submission ID", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "originid", - "odktype": "", - "desc": "Origin", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "clm_deviceimei", - "odktype": "deviceid", - "desc": "Device IMEI", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "clm_start", - "odktype": "start", - "desc": "Start of survey", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "qst162", - "odktype": "barcode", - "desc": "Package code", - "key": "true", - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "farmername", - "odktype": "text", - "desc": "Farmer name", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "telephone", - "odktype": "text", - "desc": "What is the farmer's Telephone?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "age", - "odktype": "integer", - "desc": "How old are you?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "respondent", - "odktype": "text", - "desc": "What is your name", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "nationality", - "odktype": "text", - "desc": "What is your Nationality", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "gender", - "odktype": "select_one gender_opts", - "desc": "What is the gender ?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "REG_lkpgender", - "rfield": "gender_cod" - }, - { - "name": "clm_end", - "odktype": "end", - "desc": "End of survey", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "rowuuid", - "odktype": "", - "desc": "Unique Row Identifier (UUID)", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - } - ] - }, - "assessments": [ - { - "code": "0a0076896de8", - "desc": "test", - "lkptables": [ - { - "name": "ASS0a0076896de8_lkpchar_intelligence_pos", - "desc": "Lookup table (Which color is most associated with intelligence?)", - "fields": [ - { - "name": "char_intelligence_pos_cod", - "desc": "Code", - "key": "true" - }, - { - "name": "char_intelligence_pos_des", - "desc": "Description", - "key": null - } - ], - "values": [ - { - "char_intelligence_pos_cod": 1, - "char_intelligence_pos_des": "Option A" - }, - { - "char_intelligence_pos_cod": 2, - "char_intelligence_pos_des": "Option B" - }, - { - "char_intelligence_pos_cod": 3, - "char_intelligence_pos_des": "Option C" - } - ] - }, - { - "name": "ASS0a0076896de8_lkpqst163", - "desc": "Lookup table (Select the farmer)", - "fields": [ - { - "name": "qst163_cod", - "desc": "Code", - "key": "true" - }, - { - "name": "qst163_des", - "desc": "Description", - "key": null - } - ], - "values": [ - { - "qst163_cod": 1, - "qst163_des": "P:1-Michael" - }, - { - "qst163_cod": 2, - "qst163_des": "P:2-Harriet" - }, - { - "qst163_cod": 3, - "qst163_des": "P:3-Christian" - }, - { - "qst163_cod": 4, - "qst163_des": "P:4-Hagar Opong" - }, - { - "qst163_cod": 5, - "qst163_des": "P:5-Joyce" - }, - { - "qst163_cod": 6, - "qst163_des": "P:6-Dan" - }, - { - "qst163_cod": 7, - "qst163_des": "P:7-Simon Imoro" - }, - { - "qst163_cod": 8, - "qst163_des": "P:8-Fatawu" - }, - { - "qst163_cod": 9, - "qst163_des": "P:9-Hadjor" - }, - { - "qst163_cod": 10, - "qst163_des": "P:10-Madam Leticia" - }, - { - "qst163_cod": 11, - "qst163_des": "P:11-Kwabena Acheremu" - }, - { - "qst163_cod": 12, - "qst163_des": "P:12-Mamadou Cisse" - }, - { - "qst163_cod": 13, - "qst163_des": "P:13-Ted" - }, - { - "qst163_cod": 14, - "qst163_des": "P:14-Ernest" - }, - { - "qst163_cod": 15, - "qst163_des": "P:15-Mr Yussiph" - }, - { - "qst163_cod": 16, - "qst163_des": "P:16-Dery" - }, - { - "qst163_cod": 17, - "qst163_des": "P:17-Mr.Dauda" - }, - { - "qst163_cod": 18, - "qst163_des": "P:18-Erna" - }, - { - "qst163_cod": 19, - "qst163_des": "P:19-Hajia Habiba" - }, - { - "qst163_cod": 20, - "qst163_des": "P:20-Martin" - }, - { - "qst163_cod": 21, - "qst163_des": "P:21-Adoffo" - }, - { - "qst163_cod": 22, - "qst163_des": "P:22-Joseph" - }, - { - "qst163_cod": 23, - "qst163_des": "P:23-Reuben" - }, - { - "qst163_cod": 24, - "qst163_des": "P:24-Baidoo" - }, - { - "qst163_cod": 25, - "qst163_des": "P:25-Mr.kwesi" - } - ] - } - ], - "fields": [ - { - "name": "surveyid", - "odktype": "", - "desc": "Submission ID", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "originid", - "odktype": "", - "desc": "Origin", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "clm_deviceimei", - "odktype": "deviceid", - "desc": "Device IMEI", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "clm_start", - "odktype": "start", - "desc": "Start of survey", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "qst163", - "odktype": "select_one qst163_opts", - "desc": "Select the farmer", - "key": "true", - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASS0a0076896de8_lkpqst163", - "rfield": "qst163_cod" - }, - { - "name": "char_intelligence_pos", - "odktype": "select_one char_intelligence_pos_opts", - "desc": "Which color is most associated with intelligence?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASS0a0076896de8_lkpchar_intelligence_pos", - "rfield": "char_intelligence_pos_cod" - }, - { - "name": "char_intelligence_neg", - "odktype": "select_one char_intelligence_neg_opts", - "desc": "Which color is least associated with intelligence?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASS0a0076896de8_lkpchar_intelligence_pos", - "rfield": "char_intelligence_pos_cod" - }, - { - "name": "clm_end", - "odktype": "end", - "desc": "End of survey", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "rowuuid", - "odktype": "", - "desc": "Unique Row Identifier (UUID)", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - } - ] - }, - { - "code": "853ae88d793c", - "desc": "Taste Test", - "lkptables": [ - { - "name": "ASS853ae88d793c_lkpqst163", - "desc": "Lookup table (Select the farmer)", - "fields": [ - { - "name": "qst163_cod", - "desc": "Code", - "key": "true" - }, - { - "name": "qst163_des", - "desc": "Description", - "key": null - } - ], - "values": [ - { - "qst163_cod": 1, - "qst163_des": "P:1-Michael" - }, - { - "qst163_cod": 2, - "qst163_des": "P:2-Harriet" - }, - { - "qst163_cod": 3, - "qst163_des": "P:3-Christian" - }, - { - "qst163_cod": 4, - "qst163_des": "P:4-Hagar Opong" - }, - { - "qst163_cod": 5, - "qst163_des": "P:5-Joyce" - }, - { - "qst163_cod": 6, - "qst163_des": "P:6-Dan" - }, - { - "qst163_cod": 7, - "qst163_des": "P:7-Simon Imoro" - }, - { - "qst163_cod": 8, - "qst163_des": "P:8-Fatawu" - }, - { - "qst163_cod": 9, - "qst163_des": "P:9-Hadjor" - }, - { - "qst163_cod": 10, - "qst163_des": "P:10-Madam Leticia" - }, - { - "qst163_cod": 11, - "qst163_des": "P:11-Kwabena Acheremu" - }, - { - "qst163_cod": 12, - "qst163_des": "P:12-Mamadou Cisse" - }, - { - "qst163_cod": 13, - "qst163_des": "P:13-Ted" - }, - { - "qst163_cod": 14, - "qst163_des": "P:14-Ernest" - }, - { - "qst163_cod": 15, - "qst163_des": "P:15-Mr Yussiph" - }, - { - "qst163_cod": 16, - "qst163_des": "P:16-Dery" - }, - { - "qst163_cod": 17, - "qst163_des": "P:17-Mr.Dauda" - }, - { - "qst163_cod": 18, - "qst163_des": "P:18-Erna" - }, - { - "qst163_cod": 19, - "qst163_des": "P:19-Hajia Habiba" - }, - { - "qst163_cod": 20, - "qst163_des": "P:20-Martin" - }, - { - "qst163_cod": 21, - "qst163_des": "P:21-Adoffo" - }, - { - "qst163_cod": 22, - "qst163_des": "P:22-Joseph" - }, - { - "qst163_cod": 23, - "qst163_des": "P:23-Reuben" - }, - { - "qst163_cod": 24, - "qst163_des": "P:24-Baidoo" - }, - { - "qst163_cod": 25, - "qst163_des": "P:25-Mr.kwesi" - } - ] - }, - { - "name": "ASS853ae88d793c_lkpchar_overallperf_pos", - "desc": "Lookup table (Overall, which option performed better?)", - "fields": [ - { - "name": "char_overallperf_pos_cod", - "desc": "Code", - "key": "true" - }, - { - "name": "char_overallperf_pos_des", - "desc": "Description", - "key": null - } - ], - "values": [ - { - "char_overallperf_pos_cod": 1, - "char_overallperf_pos_des": "Option A" - }, - { - "char_overallperf_pos_cod": 2, - "char_overallperf_pos_des": "Option B" - }, - { - "char_overallperf_pos_cod": 3, - "char_overallperf_pos_des": "Option C" - } - ] - }, - { - "name": "ASS853ae88d793c_lkpperf_overallchar_1", - "desc": "Lookup table (Overall, whichone is best A or what you usually use?)", - "fields": [ - { - "name": "perf_overallchar_1_cod", - "desc": "Code", - "key": "true" - }, - { - "name": "perf_overallchar_1_des", - "desc": "Description", - "key": null - } - ], - "values": [ - { - "perf_overallchar_1_cod": 1, - "perf_overallchar_1_des": "Better" - }, - { - "perf_overallchar_1_cod": 2, - "perf_overallchar_1_des": "Worst" - } - ] - } - ], - "fields": [ - { - "name": "surveyid", - "odktype": "", - "desc": "Submission ID", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "originid", - "odktype": "", - "desc": "Origin", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "clm_deviceimei", - "odktype": "deviceid", - "desc": "Device IMEI", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "clm_start", - "odktype": "start", - "desc": "Start of survey", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "qst163", - "odktype": "select_one qst163_opts", - "desc": "Select the farmer", - "key": "true", - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASS853ae88d793c_lkpqst163", - "rfield": "qst163_cod" - }, - { - "name": "char_overallperf_pos", - "odktype": "select_one char_overallperf_pos_opts", - "desc": "Overall, which option performed better?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASS853ae88d793c_lkpchar_overallperf_pos", - "rfield": "char_overallperf_pos_cod" - }, - { - "name": "char_overallperf_neg", - "odktype": "select_one char_overallperf_neg_opts", - "desc": "Overall, which option performed worst?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASS853ae88d793c_lkpchar_overallperf_pos", - "rfield": "char_overallperf_pos_cod" - }, - { - "name": "perf_overallchar_1", - "odktype": "select_one perf_overallchar_1_opts", - "desc": "Overall, whichone is best A or what you usually use?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASS853ae88d793c_lkpperf_overallchar_1", - "rfield": "perf_overallchar_1_cod" - }, - { - "name": "perf_overallchar_2", - "odktype": "select_one perf_overallchar_2_opts", - "desc": "Overall, whichone is best B or what you usually use?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASS853ae88d793c_lkpperf_overallchar_1", - "rfield": "perf_overallchar_1_cod" - }, - { - "name": "perf_overallchar_3", - "odktype": "select_one perf_overallchar_3_opts", - "desc": "Overall, whichone is best C or what you usually use?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASS853ae88d793c_lkpperf_overallchar_1", - "rfield": "perf_overallchar_1_cod" - }, - { - "name": "clm_end", - "odktype": "end", - "desc": "End of survey", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "rowuuid", - "odktype": "", - "desc": "Unique Row Identifier (UUID)", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - } - ] - } - ], - "packages": [ - { - "package_id": 1, - "farmername": "Michael", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Niche Milk Chocolate 38% Cocoa" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Niche Coffee Flavoured Milk Chocolate" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Golden Tree Kingsbite Milk Chocolate 40% Cocoa" - } - ] - } - ] - }, - { - "package_id": 2, - "farmername": "Harriet ", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Niche Lime Flavoured Milk Chocolate" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Golden Tree Kingsbite Milk Chocolate 40% Cocoa" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Niche Coconut Flavoured Milk Chocolate" - } - ] - } - ] - }, - { - "package_id": 3, - "farmername": "Christian", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Niche Coffee Flavoured Milk Chocolate" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Niche Coconut Flavoured Milk Chocolate" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Niche Milk Chocolate 38% Cocoa" - } - ] - } - ] - }, - { - "package_id": 4, - "farmername": "Hagar Opong", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Niche Coconut Flavoured Milk Chocolate" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Niche Lime Flavoured Milk Chocolate" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Golden Tree Kingsbite Milk Chocolate 40% Cocoa" - } - ] - } - ] - }, - { - "package_id": 5, - "farmername": "Joyce", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Niche Coffee Flavoured Milk Chocolate" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Niche Milk Chocolate 38% Cocoa" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Niche Lime Flavoured Milk Chocolate" - } - ] - } - ] - }, - { - "package_id": 6, - "farmername": "Dan", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Golden Tree Kingsbite Milk Chocolate 40% Cocoa" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Niche Milk Chocolate 38% Cocoa" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Niche Coconut Flavoured Milk Chocolate" - } - ] - } - ] - }, - { - "package_id": 7, - "farmername": "Simon Imoro", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Niche Lime Flavoured Milk Chocolate" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Golden Tree Kingsbite Milk Chocolate 40% Cocoa" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Niche Coffee Flavoured Milk Chocolate" - } - ] - } - ] - }, - { - "package_id": 8, - "farmername": "Fatawu", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Niche Milk Chocolate 38% Cocoa" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Niche Coconut Flavoured Milk Chocolate" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Niche Lime Flavoured Milk Chocolate" - } - ] - } - ] - }, - { - "package_id": 9, - "farmername": "Hadjor", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Niche Coconut Flavoured Milk Chocolate" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Niche Coffee Flavoured Milk Chocolate" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Niche Milk Chocolate 38% Cocoa" - } - ] - } - ] - }, - { - "package_id": 10, - "farmername": "Madam Leticia", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Golden Tree Kingsbite Milk Chocolate 40% Cocoa" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Niche Lime Flavoured Milk Chocolate" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Niche Coffee Flavoured Milk Chocolate" - } - ] - } - ] - }, - { - "package_id": 11, - "farmername": "Kwabena Acheremu", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Niche Milk Chocolate 38% Cocoa" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Niche Coffee Flavoured Milk Chocolate" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Niche Lime Flavoured Milk Chocolate" - } - ] - } - ] - }, - { - "package_id": 12, - "farmername": "Mamadou Cisse", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Niche Coffee Flavoured Milk Chocolate" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Niche Coconut Flavoured Milk Chocolate" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Golden Tree Kingsbite Milk Chocolate 40% Cocoa" - } - ] - } - ] - }, - { - "package_id": 13, - "farmername": "Ted", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Niche Lime Flavoured Milk Chocolate" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Golden Tree Kingsbite Milk Chocolate 40% Cocoa" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Niche Coconut Flavoured Milk Chocolate" - } - ] - } - ] - }, - { - "package_id": 14, - "farmername": "Ernest", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Niche Coconut Flavoured Milk Chocolate" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Niche Milk Chocolate 38% Cocoa" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Golden Tree Kingsbite Milk Chocolate 40% Cocoa" - } - ] - } - ] - }, - { - "package_id": 15, - "farmername": "Mr Yussiph", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Golden Tree Kingsbite Milk Chocolate 40% Cocoa" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Niche Lime Flavoured Milk Chocolate" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Niche Coffee Flavoured Milk Chocolate" - } - ] - } - ] - }, - { - "package_id": 16, - "farmername": "Dery", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Niche Lime Flavoured Milk Chocolate" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Niche Coconut Flavoured Milk Chocolate" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Niche Milk Chocolate 38% Cocoa" - } - ] - } - ] - }, - { - "package_id": 17, - "farmername": "Mr.Dauda", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Niche Milk Chocolate 38% Cocoa" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Golden Tree Kingsbite Milk Chocolate 40% Cocoa" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Niche Coffee Flavoured Milk Chocolate" - } - ] - } - ] - }, - { - "package_id": 18, - "farmername": "Erna", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Niche Coconut Flavoured Milk Chocolate" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Niche Milk Chocolate 38% Cocoa" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Niche Lime Flavoured Milk Chocolate" - } - ] - } - ] - }, - { - "package_id": 19, - "farmername": "Hajia Habiba", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Golden Tree Kingsbite Milk Chocolate 40% Cocoa" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Niche Coffee Flavoured Milk Chocolate" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Niche Milk Chocolate 38% Cocoa" - } - ] - } - ] - }, - { - "package_id": 20, - "farmername": "Martin", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Niche Coffee Flavoured Milk Chocolate" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Niche Lime Flavoured Milk Chocolate" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Niche Coconut Flavoured Milk Chocolate" - } - ] - } - ] - }, - { - "package_id": 21, - "farmername": "Adoffo", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Niche Coffee Flavoured Milk Chocolate" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Niche Coconut Flavoured Milk Chocolate" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Golden Tree Kingsbite Milk Chocolate 40% Cocoa" - } - ] - } - ] - }, - { - "package_id": 22, - "farmername": "Joseph", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Niche Milk Chocolate 38% Cocoa" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Golden Tree Kingsbite Milk Chocolate 40% Cocoa" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Niche Lime Flavoured Milk Chocolate" - } - ] - } - ] - }, - { - "package_id": 23, - "farmername": "Reuben", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Niche Lime Flavoured Milk Chocolate" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Niche Coffee Flavoured Milk Chocolate" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Niche Coconut Flavoured Milk Chocolate" - } - ] - } - ] - }, - { - "package_id": 24, - "farmername": "Baidoo", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Golden Tree Kingsbite Milk Chocolate 40% Cocoa" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Niche Lime Flavoured Milk Chocolate" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Niche Milk Chocolate 38% Cocoa" - } - ] - } - ] - }, - { - "package_id": 25, - "farmername": "Mr.kwesi", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Niche Coconut Flavoured Milk Chocolate" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Golden Tree Kingsbite Milk Chocolate 40% Cocoa" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Milk chocolate brands with 5 levels", - "alias_name": "Niche Coffee Flavoured Milk Chocolate" - } - ] - } - ] - } - ], - "specialfields": [ - { - "type": "Characteristic", - "name": "ASS0a0076896de8_char_intelligence_pos", - "desc": "Which color is most associated with intelligence?" - }, - { - "type": "Characteristic", - "name": "ASS0a0076896de8_char_intelligence_neg", - "desc": "Which color is least associated with intelligence?" - }, - { - "type": "Characteristic", - "name": "ASS853ae88d793c_char_overallperf_pos", - "desc": "Overall, which option performed better?" - }, - { - "type": "Characteristic", - "name": "ASS853ae88d793c_char_overallperf_neg", - "desc": "Overall, which option performed worst?" - }, - { - "type": "Performance", - "name": "ASS853ae88d793c_perf_overallchar_1", - "desc": "Overall, whichone is best A or what you usually use?" - }, - { - "type": "Performance", - "name": "ASS853ae88d793c_perf_overallchar_2", - "desc": "Overall, whichone is best B or what you usually use?" - }, - { - "type": "Performance", - "name": "ASS853ae88d793c_perf_overallchar_3", - "desc": "Overall, whichone is best C or what you usually use?" - } - ], - "data": [ - { - "REG_surveyid": "344f2837-a426-46bf-9adf-dcf0a7afac69", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "d465379e9a04c2fe", - "REG_clm_start": "2020-03-10 16:15:33", - "REG_qst162": "1", - "REG_farmername": "Michael", - "REG_telephone": "0553730046", - "REG_age": 31, - "REG_respondent": "Michael", - "REG_nationality": "Ghanaian", - "REG_gender": 1, - "REG_clm_end": "2020-03-10 16:18:44", - "REG_rowuuid": "b4b36838-3a0f-49a7-86db-02b0acc1c28d", - "ASS0a0076896de8_surveyid": "452f4baf-24df-475c-9a2e-10fb469caf02", - "ASS0a0076896de8_originid": "ODKTOOLS", - "ASS0a0076896de8_clm_deviceimei": "867128035634212", - "ASS0a0076896de8_clm_start": "2020-03-10 22:32:52", - "ASS0a0076896de8_qst163": 1, - "ASS0a0076896de8_char_intelligence_pos": 1, - "ASS0a0076896de8_char_intelligence_neg": 2, - "ASS0a0076896de8_clm_end": "2020-03-10 22:33:05", - "ASS0a0076896de8_rowuuid": "525aec33-2d41-4d8f-9b28-7e3001436bf1", - "ASS853ae88d793c_surveyid": "075b8e0f-df2d-4070-a3df-cfdcfdfd0447", - "ASS853ae88d793c_originid": "ODKTOOLS", - "ASS853ae88d793c_clm_deviceimei": "359675104585266", - "ASS853ae88d793c_clm_start": "2020-03-10 16:39:58", - "ASS853ae88d793c_qst163": 1, - "ASS853ae88d793c_char_overallperf_pos": 1, - "ASS853ae88d793c_char_overallperf_neg": 2, - "ASS853ae88d793c_perf_overallchar_1": 1, - "ASS853ae88d793c_perf_overallchar_2": 2, - "ASS853ae88d793c_perf_overallchar_3": 1, - "ASS853ae88d793c_clm_end": "2020-03-10 16:40:41", - "ASS853ae88d793c_rowuuid": "cf9d1d67-df8d-490c-946e-c4d9197c261d" - }, - { - "REG_surveyid": "b53e43be-5b88-4d91-bc78-7641813d985d", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "359675104585266", - "REG_clm_start": "2020-03-10 16:09:39", - "REG_qst162": "10", - "REG_farmername": "Madam Leticia", - "REG_telephone": "0243038979", - "REG_age": 28, - "REG_respondent": "Madam Leticia", - "REG_nationality": "Ghanaian", - "REG_gender": 2, - "REG_clm_end": "2020-03-10 16:12:06", - "REG_rowuuid": "f5d8ba43-b498-44a3-980c-b64daa4ef01a", - "ASS0a0076896de8_surveyid": "9d3d6043-edc2-4a66-8e39-5ff7a30392a2", - "ASS0a0076896de8_originid": "ODKTOOLS", - "ASS0a0076896de8_clm_deviceimei": "867128035634212", - "ASS0a0076896de8_clm_start": "2020-03-10 22:33:08", - "ASS0a0076896de8_qst163": 10, - "ASS0a0076896de8_char_intelligence_pos": 1, - "ASS0a0076896de8_char_intelligence_neg": 2, - "ASS0a0076896de8_clm_end": "2020-03-10 22:33:14", - "ASS0a0076896de8_rowuuid": "0417eac2-d092-408e-80c4-9fd40ed6da92", - "ASS853ae88d793c_surveyid": "02d73917-a4da-4d99-9975-87371a777903", - "ASS853ae88d793c_originid": "ODKTOOLS", - "ASS853ae88d793c_clm_deviceimei": "359675104585266", - "ASS853ae88d793c_clm_start": "2020-03-10 16:37:30", - "ASS853ae88d793c_qst163": 10, - "ASS853ae88d793c_char_overallperf_pos": 1, - "ASS853ae88d793c_char_overallperf_neg": 2, - "ASS853ae88d793c_perf_overallchar_1": 1, - "ASS853ae88d793c_perf_overallchar_2": 2, - "ASS853ae88d793c_perf_overallchar_3": 1, - "ASS853ae88d793c_clm_end": "2020-03-10 16:38:34", - "ASS853ae88d793c_rowuuid": "fe54f018-92af-40bb-8c9f-af3df5ffe0f9" - }, - { - "REG_surveyid": "1610b7f6-14bb-4855-9a41-14209345b29b", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "357103074125114", - "REG_clm_start": "2020-03-10 14:02:51", - "REG_qst162": "11", - "REG_farmername": "Kwabena Acheremu", - "REG_telephone": "0243960803", - "REG_age": 53, - "REG_respondent": "Kwabena", - "REG_nationality": "Ghanaian ", - "REG_gender": 1, - "REG_clm_end": "2020-03-10 15:54:39", - "REG_rowuuid": "065662c7-c897-40fd-8625-b18b7bd22742", - "ASS0a0076896de8_surveyid": "e871d351-e4a6-44ad-9905-a05eac32981d", - "ASS0a0076896de8_originid": "ODKTOOLS", - "ASS0a0076896de8_clm_deviceimei": "867128035634212", - "ASS0a0076896de8_clm_start": "2020-03-10 22:33:16", - "ASS0a0076896de8_qst163": 11, - "ASS0a0076896de8_char_intelligence_pos": 1, - "ASS0a0076896de8_char_intelligence_neg": 2, - "ASS0a0076896de8_clm_end": "2020-03-10 22:33:25", - "ASS0a0076896de8_rowuuid": "1c6d6750-8dbb-408c-b46a-2d0e870ffdf6", - "ASS853ae88d793c_surveyid": "e77b1317-36e4-4b88-aec9-87845e773092", - "ASS853ae88d793c_originid": "ODKTOOLS", - "ASS853ae88d793c_clm_deviceimei": "357103074125114", - "ASS853ae88d793c_clm_start": "2020-03-10 16:27:39", - "ASS853ae88d793c_qst163": 11, - "ASS853ae88d793c_char_overallperf_pos": 3, - "ASS853ae88d793c_char_overallperf_neg": 2, - "ASS853ae88d793c_perf_overallchar_1": 2, - "ASS853ae88d793c_perf_overallchar_2": 2, - "ASS853ae88d793c_perf_overallchar_3": 1, - "ASS853ae88d793c_clm_end": "2020-03-10 16:30:48", - "ASS853ae88d793c_rowuuid": "b0d3d691-599f-45ec-99ab-772e4d47d852" - }, - { - "REG_surveyid": "f2d67817-811d-4dc7-bf30-343ab0dc61b5", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "d465379e9a04c2fe", - "REG_clm_start": "2020-03-10 15:58:01", - "REG_qst162": "12", - "REG_farmername": "Mamadou Cisse", - "REG_telephone": "0247223730", - "REG_age": 43, - "REG_respondent": "Mamadou Cisse", - "REG_nationality": "Duych", - "REG_gender": 1, - "REG_clm_end": "2020-03-10 15:58:56", - "REG_rowuuid": "37be32f9-e3ba-432d-b2e1-3df2c82a2f60", - "ASS0a0076896de8_surveyid": "6bb68cf4-26f4-450a-a2ec-2c827336e0c6", - "ASS0a0076896de8_originid": "ODKTOOLS", - "ASS0a0076896de8_clm_deviceimei": "867128035634212", - "ASS0a0076896de8_clm_start": "2020-03-10 22:33:27", - "ASS0a0076896de8_qst163": 12, - "ASS0a0076896de8_char_intelligence_pos": 1, - "ASS0a0076896de8_char_intelligence_neg": 2, - "ASS0a0076896de8_clm_end": "2020-03-10 22:33:33", - "ASS0a0076896de8_rowuuid": "aa4137ff-cfe2-45df-9d8d-1239d0451313", - "ASS853ae88d793c_surveyid": "418f4fdc-27a0-4173-8e31-12c57db6b40f", - "ASS853ae88d793c_originid": "ODKTOOLS", - "ASS853ae88d793c_clm_deviceimei": "357103074121568", - "ASS853ae88d793c_clm_start": "2020-03-10 16:30:47", - "ASS853ae88d793c_qst163": 12, - "ASS853ae88d793c_char_overallperf_pos": 2, - "ASS853ae88d793c_char_overallperf_neg": 3, - "ASS853ae88d793c_perf_overallchar_1": 2, - "ASS853ae88d793c_perf_overallchar_2": 2, - "ASS853ae88d793c_perf_overallchar_3": 2, - "ASS853ae88d793c_clm_end": "2020-03-10 16:31:52", - "ASS853ae88d793c_rowuuid": "779a7429-23d3-47eb-bfa4-c6132b888d02" - }, - { - "REG_surveyid": "370501ad-fb19-45f1-9c38-f10ce7286a9a", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "357103074121568", - "REG_clm_start": "2020-03-10 15:56:15", - "REG_qst162": "13", - "REG_farmername": "Ted", - "REG_telephone": "0546948599", - "REG_age": null, - "REG_respondent": "Ted", - "REG_nationality": "Usa", - "REG_gender": 1, - "REG_clm_end": "2020-03-10 15:57:27", - "REG_rowuuid": "ac15666a-8625-4b68-9c34-5fb4af7dbaec", - "ASS0a0076896de8_surveyid": "346ff12a-39f8-438e-b532-e3b762f1d5cd", - "ASS0a0076896de8_originid": "ODKTOOLS", - "ASS0a0076896de8_clm_deviceimei": "867128035634212", - "ASS0a0076896de8_clm_start": "2020-03-10 22:33:35", - "ASS0a0076896de8_qst163": 13, - "ASS0a0076896de8_char_intelligence_pos": 1, - "ASS0a0076896de8_char_intelligence_neg": 2, - "ASS0a0076896de8_clm_end": "2020-03-10 22:33:41", - "ASS0a0076896de8_rowuuid": "6295949d-5ec0-4573-9be2-83efb6d0442f", - "ASS853ae88d793c_surveyid": "c0cde0d8-adfc-4180-ac1a-6e987aaba53b", - "ASS853ae88d793c_originid": "ODKTOOLS", - "ASS853ae88d793c_clm_deviceimei": "357103074121568", - "ASS853ae88d793c_clm_start": "2020-03-10 16:34:41", - "ASS853ae88d793c_qst163": 13, - "ASS853ae88d793c_char_overallperf_pos": 1, - "ASS853ae88d793c_char_overallperf_neg": 3, - "ASS853ae88d793c_perf_overallchar_1": 1, - "ASS853ae88d793c_perf_overallchar_2": 2, - "ASS853ae88d793c_perf_overallchar_3": 2, - "ASS853ae88d793c_clm_end": "2020-03-10 16:37:27", - "ASS853ae88d793c_rowuuid": "51f6a912-01f7-400b-850d-9ad47fe42a76" - }, - { - "REG_surveyid": "254d15f7-41d2-4f0d-971b-e1753211caa5", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "357103074124430", - "REG_clm_start": "2020-03-10 15:56:49", - "REG_qst162": "14", - "REG_farmername": "Ernest", - "REG_telephone": "0244155180", - "REG_age": 45, - "REG_respondent": "Ernest", - "REG_nationality": "GHANAIAN", - "REG_gender": 1, - "REG_clm_end": "2020-03-10 15:58:01", - "REG_rowuuid": "2107ad47-692e-4d59-a1f0-430c73da4722", - "ASS0a0076896de8_surveyid": "f6dcd8fc-5f77-45a7-a1f0-5ddedf32bd4f", - "ASS0a0076896de8_originid": "ODKTOOLS", - "ASS0a0076896de8_clm_deviceimei": "867128035634212", - "ASS0a0076896de8_clm_start": "2020-03-10 22:33:44", - "ASS0a0076896de8_qst163": 14, - "ASS0a0076896de8_char_intelligence_pos": 1, - "ASS0a0076896de8_char_intelligence_neg": 2, - "ASS0a0076896de8_clm_end": "2020-03-10 22:33:49", - "ASS0a0076896de8_rowuuid": "a8a573e7-dd01-4336-a2fb-e6690c689676", - "ASS853ae88d793c_surveyid": "b8cb7f68-53cc-4355-9ddb-be4940f33fb1", - "ASS853ae88d793c_originid": "ODKTOOLS", - "ASS853ae88d793c_clm_deviceimei": "357103074124430", - "ASS853ae88d793c_clm_start": "2020-03-10 16:27:38", - "ASS853ae88d793c_qst163": 14, - "ASS853ae88d793c_char_overallperf_pos": 1, - "ASS853ae88d793c_char_overallperf_neg": 3, - "ASS853ae88d793c_perf_overallchar_1": 1, - "ASS853ae88d793c_perf_overallchar_2": 2, - "ASS853ae88d793c_perf_overallchar_3": 2, - "ASS853ae88d793c_clm_end": "2020-03-10 16:29:33", - "ASS853ae88d793c_rowuuid": "478ff350-8d80-45fb-a50b-acda876af055" - }, - { - "REG_surveyid": "55ff9002-570a-4376-ba21-b14625f7f536", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "359675104585266", - "REG_clm_start": "2020-03-10 16:14:36", - "REG_qst162": "15", - "REG_farmername": "Mr Yussiph", - "REG_telephone": "0249553269", - "REG_age": 34, - "REG_respondent": "Mr.Yussiph", - "REG_nationality": "Ghanaian", - "REG_gender": 1, - "REG_clm_end": "2020-03-10 16:16:16", - "REG_rowuuid": "179e261d-d9c4-4bb8-a458-e7025b666ea0", - "ASS0a0076896de8_surveyid": "37c1a308-5278-4b52-89cf-922f8ecb81f0", - "ASS0a0076896de8_originid": "ODKTOOLS", - "ASS0a0076896de8_clm_deviceimei": "867128035634212", - "ASS0a0076896de8_clm_start": "2020-03-10 22:33:51", - "ASS0a0076896de8_qst163": 15, - "ASS0a0076896de8_char_intelligence_pos": 1, - "ASS0a0076896de8_char_intelligence_neg": 2, - "ASS0a0076896de8_clm_end": "2020-03-10 22:33:57", - "ASS0a0076896de8_rowuuid": "729c541f-886c-4f35-b885-fc16249c7cfc", - "ASS853ae88d793c_surveyid": "594af1dd-d825-46ca-b859-13029cef68c9", - "ASS853ae88d793c_originid": "ODKTOOLS", - "ASS853ae88d793c_clm_deviceimei": "357103074125114", - "ASS853ae88d793c_clm_start": "2020-03-10 16:32:26", - "ASS853ae88d793c_qst163": 15, - "ASS853ae88d793c_char_overallperf_pos": 3, - "ASS853ae88d793c_char_overallperf_neg": 1, - "ASS853ae88d793c_perf_overallchar_1": 2, - "ASS853ae88d793c_perf_overallchar_2": 2, - "ASS853ae88d793c_perf_overallchar_3": 2, - "ASS853ae88d793c_clm_end": "2020-03-10 16:34:46", - "ASS853ae88d793c_rowuuid": "c9a434f7-5f82-4275-8dd5-f1d7faf8846e" - }, - { - "REG_surveyid": "bc950ee6-46a9-4cf0-86b5-f256045d4536", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "359675104585266", - "REG_clm_start": "2020-03-10 14:11:31", - "REG_qst162": "16", - "REG_farmername": "Dery", - "REG_telephone": "0240939906", - "REG_age": 35, - "REG_respondent": "M.Dery", - "REG_nationality": "Ghanaian", - "REG_gender": 1, - "REG_clm_end": "2020-03-10 15:59:24", - "REG_rowuuid": "c94e962e-3b0c-46dd-b075-fd8078367fa4", - "ASS0a0076896de8_surveyid": "8b06cc24-df39-48aa-9540-0c3a33d5ff9b", - "ASS0a0076896de8_originid": "ODKTOOLS", - "ASS0a0076896de8_clm_deviceimei": "867128035634212", - "ASS0a0076896de8_clm_start": "2020-03-10 22:33:59", - "ASS0a0076896de8_qst163": 16, - "ASS0a0076896de8_char_intelligence_pos": 1, - "ASS0a0076896de8_char_intelligence_neg": 2, - "ASS0a0076896de8_clm_end": "2020-03-10 22:34:06", - "ASS0a0076896de8_rowuuid": "69fe80f7-a9b6-47e0-b02b-b0995cbae084", - "ASS853ae88d793c_surveyid": "0ab3377a-f787-4418-9eeb-10db5aa8339c", - "ASS853ae88d793c_originid": "ODKTOOLS", - "ASS853ae88d793c_clm_deviceimei": "359675104585266", - "ASS853ae88d793c_clm_start": "2020-03-10 16:27:22", - "ASS853ae88d793c_qst163": 16, - "ASS853ae88d793c_char_overallperf_pos": 3, - "ASS853ae88d793c_char_overallperf_neg": 1, - "ASS853ae88d793c_perf_overallchar_1": 2, - "ASS853ae88d793c_perf_overallchar_2": 1, - "ASS853ae88d793c_perf_overallchar_3": 1, - "ASS853ae88d793c_clm_end": "2020-03-10 16:30:14", - "ASS853ae88d793c_rowuuid": "bb444290-d0a2-49ac-abfc-97ed6f788f32" - }, - { - "REG_surveyid": "f68f239c-b809-4e36-aff2-29fadb05cb82", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "359675104585266", - "REG_clm_start": "2020-03-10 15:56:30", - "REG_qst162": "17", - "REG_farmername": "Mr.Dauda", - "REG_telephone": "0244978988", - "REG_age": 44, - "REG_respondent": "Mr. Dauda", - "REG_nationality": "Ghanaian", - "REG_gender": 1, - "REG_clm_end": "2020-03-10 15:58:42", - "REG_rowuuid": "b925fcbf-2b7e-46fd-9a31-b2677dad474d", - "ASS0a0076896de8_surveyid": "b5185c16-364b-45c6-a437-c177ca21c43e", - "ASS0a0076896de8_originid": "ODKTOOLS", - "ASS0a0076896de8_clm_deviceimei": "867128035634212", - "ASS0a0076896de8_clm_start": "2020-03-10 22:34:08", - "ASS0a0076896de8_qst163": 17, - "ASS0a0076896de8_char_intelligence_pos": 1, - "ASS0a0076896de8_char_intelligence_neg": 2, - "ASS0a0076896de8_clm_end": "2020-03-10 22:34:13", - "ASS0a0076896de8_rowuuid": "e6762ccb-d9c8-434a-b5ab-574c8ee13bd3", - "ASS853ae88d793c_surveyid": "7dc329ab-7e17-4b0c-b641-2aad4fe5aac8", - "ASS853ae88d793c_originid": "ODKTOOLS", - "ASS853ae88d793c_clm_deviceimei": "359675104585266", - "ASS853ae88d793c_clm_start": "2020-03-10 16:30:18", - "ASS853ae88d793c_qst163": 17, - "ASS853ae88d793c_char_overallperf_pos": 3, - "ASS853ae88d793c_char_overallperf_neg": 1, - "ASS853ae88d793c_perf_overallchar_1": 2, - "ASS853ae88d793c_perf_overallchar_2": 1, - "ASS853ae88d793c_perf_overallchar_3": 1, - "ASS853ae88d793c_clm_end": "2020-03-10 16:31:49", - "ASS853ae88d793c_rowuuid": "c2679f8a-dc52-4009-ac5a-ad0b77778c57" - }, - { - "REG_surveyid": "c1a6fb61-47d1-4b9b-b8ed-8587e52187bb", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "d465379e9a04c2fe", - "REG_clm_start": "2020-03-10 15:53:09", - "REG_qst162": "18", - "REG_farmername": "Erna", - "REG_telephone": "0555009189", - "REG_age": 62, - "REG_respondent": "Erna", - "REG_nationality": "Netherlands", - "REG_gender": 2, - "REG_clm_end": "2020-03-10 15:56:17", - "REG_rowuuid": "16869bf0-429e-4f1f-905e-57ed9bb22d0e", - "ASS0a0076896de8_surveyid": "53ce2ee9-ab42-4d1c-bd69-9cef07fbaf42", - "ASS0a0076896de8_originid": "ODKTOOLS", - "ASS0a0076896de8_clm_deviceimei": "867128035634212", - "ASS0a0076896de8_clm_start": "2020-03-10 22:34:15", - "ASS0a0076896de8_qst163": 18, - "ASS0a0076896de8_char_intelligence_pos": 1, - "ASS0a0076896de8_char_intelligence_neg": 2, - "ASS0a0076896de8_clm_end": "2020-03-10 22:34:21", - "ASS0a0076896de8_rowuuid": "9c70b066-9310-47f4-9f95-c5bd537dff34", - "ASS853ae88d793c_surveyid": "b0c0c1ec-6f87-4560-af7d-8bf1208abb29", - "ASS853ae88d793c_originid": "ODKTOOLS", - "ASS853ae88d793c_clm_deviceimei": "d465379e9a04c2fe", - "ASS853ae88d793c_clm_start": "2020-03-10 16:33:21", - "ASS853ae88d793c_qst163": 18, - "ASS853ae88d793c_char_overallperf_pos": 2, - "ASS853ae88d793c_char_overallperf_neg": 3, - "ASS853ae88d793c_perf_overallchar_1": 2, - "ASS853ae88d793c_perf_overallchar_2": 1, - "ASS853ae88d793c_perf_overallchar_3": 2, - "ASS853ae88d793c_clm_end": "2020-03-10 16:34:17", - "ASS853ae88d793c_rowuuid": "0653651e-8ffc-4b1c-ac4b-111455bfbb55" - }, - { - "REG_surveyid": "c49463fa-bb9d-4db5-99b8-9f5aca82bcc1", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "357103074125114", - "REG_clm_start": "2020-03-10 15:56:25", - "REG_qst162": "19", - "REG_farmername": "Hajia Habiba", - "REG_telephone": "0593316011", - "REG_age": 54, - "REG_respondent": "Hajia Habiba", - "REG_nationality": "Ghanaian ", - "REG_gender": 2, - "REG_clm_end": "2020-03-10 15:57:48", - "REG_rowuuid": "065b4167-c831-4d8a-894f-acf5ab375108", - "ASS0a0076896de8_surveyid": "97d0f11c-d539-44d9-a787-8b54d4770373", - "ASS0a0076896de8_originid": "ODKTOOLS", - "ASS0a0076896de8_clm_deviceimei": "867128035634212", - "ASS0a0076896de8_clm_start": "2020-03-10 22:34:23", - "ASS0a0076896de8_qst163": 19, - "ASS0a0076896de8_char_intelligence_pos": 1, - "ASS0a0076896de8_char_intelligence_neg": 2, - "ASS0a0076896de8_clm_end": "2020-03-10 22:34:29", - "ASS0a0076896de8_rowuuid": "63e19840-71cb-4758-bd60-ab2abdb8507a", - "ASS853ae88d793c_surveyid": "1d50ae73-7c8b-4d28-95da-9934552131fd", - "ASS853ae88d793c_originid": "ODKTOOLS", - "ASS853ae88d793c_clm_deviceimei": "357103074124430", - "ASS853ae88d793c_clm_start": "2020-03-10 16:30:00", - "ASS853ae88d793c_qst163": 19, - "ASS853ae88d793c_char_overallperf_pos": 1, - "ASS853ae88d793c_char_overallperf_neg": 2, - "ASS853ae88d793c_perf_overallchar_1": 1, - "ASS853ae88d793c_perf_overallchar_2": 2, - "ASS853ae88d793c_perf_overallchar_3": 2, - "ASS853ae88d793c_clm_end": "2020-03-10 16:31:46", - "ASS853ae88d793c_rowuuid": "ac0b46dd-4e64-4eb6-bffb-09b5c1251679" - }, - { - "REG_surveyid": "ea3adc7c-25ea-46a9-a6ee-572afab29b4f", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "357103074125114", - "REG_clm_start": "2020-03-10 16:19:02", - "REG_qst162": "2", - "REG_farmername": "Harriet ", - "REG_telephone": "0244544659", - "REG_age": 43, - "REG_respondent": "Harriet ", - "REG_nationality": "Ghanaian ", - "REG_gender": 2, - "REG_clm_end": "2020-03-10 16:20:16", - "REG_rowuuid": "87db3cf9-ee01-438c-bfdf-9b78b479df35", - "ASS0a0076896de8_surveyid": "1feea361-2606-4e06-9c28-555c1b4bf18c", - "ASS0a0076896de8_originid": "ODKTOOLS", - "ASS0a0076896de8_clm_deviceimei": "867128035634212", - "ASS0a0076896de8_clm_start": "2020-03-10 22:34:40", - "ASS0a0076896de8_qst163": 2, - "ASS0a0076896de8_char_intelligence_pos": 1, - "ASS0a0076896de8_char_intelligence_neg": 2, - "ASS0a0076896de8_clm_end": "2020-03-10 22:34:46", - "ASS0a0076896de8_rowuuid": "68df57c0-6333-41f7-ac3e-f34cfcfbe836", - "ASS853ae88d793c_surveyid": "3f20994f-1a10-44ca-a3fc-4e5493072cc3", - "ASS853ae88d793c_originid": "ODKTOOLS", - "ASS853ae88d793c_clm_deviceimei": "d465379e9a04c2fe", - "ASS853ae88d793c_clm_start": "2020-03-10 16:39:27", - "ASS853ae88d793c_qst163": 2, - "ASS853ae88d793c_char_overallperf_pos": 1, - "ASS853ae88d793c_char_overallperf_neg": 3, - "ASS853ae88d793c_perf_overallchar_1": 1, - "ASS853ae88d793c_perf_overallchar_2": 1, - "ASS853ae88d793c_perf_overallchar_3": 2, - "ASS853ae88d793c_clm_end": "2020-03-10 16:40:44", - "ASS853ae88d793c_rowuuid": "68a77628-dc99-4eed-9bd0-1c219ba85a53" - }, - { - "REG_surveyid": "5cf9460e-4252-411e-b67d-c34f65549b2c", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "357103074121568", - "REG_clm_start": "2020-03-10 15:57:43", - "REG_qst162": "20", - "REG_farmername": "Martin", - "REG_telephone": "0246410786", - "REG_age": 29, - "REG_respondent": "Martin", - "REG_nationality": "Ghanaian", - "REG_gender": 1, - "REG_clm_end": "2020-03-10 15:59:02", - "REG_rowuuid": "a36c5d39-d58e-4c2f-9491-09642135d384", - "ASS0a0076896de8_surveyid": "eb9a35bf-056e-444a-8f57-89a23fbfeb5a", - "ASS0a0076896de8_originid": "ODKTOOLS", - "ASS0a0076896de8_clm_deviceimei": "867128035634212", - "ASS0a0076896de8_clm_start": "2020-03-10 22:34:48", - "ASS0a0076896de8_qst163": 20, - "ASS0a0076896de8_char_intelligence_pos": 1, - "ASS0a0076896de8_char_intelligence_neg": 2, - "ASS0a0076896de8_clm_end": "2020-03-10 22:34:54", - "ASS0a0076896de8_rowuuid": "78847ef2-ccf1-46f2-a23e-8a77836ec192", - "ASS853ae88d793c_surveyid": "336bb343-eb56-43f8-87a8-6dacccfbe848", - "ASS853ae88d793c_originid": "ODKTOOLS", - "ASS853ae88d793c_clm_deviceimei": "357103074124430", - "ASS853ae88d793c_clm_start": "2020-03-10 16:31:55", - "ASS853ae88d793c_qst163": 20, - "ASS853ae88d793c_char_overallperf_pos": 1, - "ASS853ae88d793c_char_overallperf_neg": 3, - "ASS853ae88d793c_perf_overallchar_1": 2, - "ASS853ae88d793c_perf_overallchar_2": 2, - "ASS853ae88d793c_perf_overallchar_3": 2, - "ASS853ae88d793c_clm_end": "2020-03-10 16:33:06", - "ASS853ae88d793c_rowuuid": "a256803b-6e6b-4bf3-8ef2-c1330713754d" - }, - { - "REG_surveyid": "d56bbbfe-11c9-4509-a736-305994125a48", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "d465379e9a04c2fe", - "REG_clm_start": "2020-03-10 14:01:13", - "REG_qst162": "21", - "REG_farmername": "Adoffo", - "REG_telephone": "0208198214", - "REG_age": 48, - "REG_respondent": "Kwadwo", - "REG_nationality": "Ghanaian", - "REG_gender": 1, - "REG_clm_end": "2020-03-10 15:52:18", - "REG_rowuuid": "4665b56b-b28b-48da-bc27-ec65c2f1e630", - "ASS0a0076896de8_surveyid": "b6d75f89-574d-445c-817c-ffc72e5fcfae", - "ASS0a0076896de8_originid": "ODKTOOLS", - "ASS0a0076896de8_clm_deviceimei": "867128035634212", - "ASS0a0076896de8_clm_start": "2020-03-10 22:34:56", - "ASS0a0076896de8_qst163": 21, - "ASS0a0076896de8_char_intelligence_pos": 1, - "ASS0a0076896de8_char_intelligence_neg": 2, - "ASS0a0076896de8_clm_end": "2020-03-10 22:35:02", - "ASS0a0076896de8_rowuuid": "c71d5ab4-8781-4115-a7ad-27ca08ead8c7", - "ASS853ae88d793c_surveyid": "0f79f436-62e7-4739-96cc-c0d16aa91b17", - "ASS853ae88d793c_originid": "ODKTOOLS", - "ASS853ae88d793c_clm_deviceimei": "d465379e9a04c2fe", - "ASS853ae88d793c_clm_start": "2020-03-10 16:27:16", - "ASS853ae88d793c_qst163": 21, - "ASS853ae88d793c_char_overallperf_pos": 2, - "ASS853ae88d793c_char_overallperf_neg": 3, - "ASS853ae88d793c_perf_overallchar_1": 1, - "ASS853ae88d793c_perf_overallchar_2": 1, - "ASS853ae88d793c_perf_overallchar_3": 2, - "ASS853ae88d793c_clm_end": "2020-03-10 16:33:17", - "ASS853ae88d793c_rowuuid": "8bc39354-41f1-48c4-aab0-9a1d85785ac4" - }, - { - "REG_surveyid": "f2135551-4c46-4151-9138-9f19dfbc9dd5", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "357103074121568", - "REG_clm_start": "2020-03-10 14:15:20", - "REG_qst162": "22", - "REG_farmername": "Joseph", - "REG_telephone": "0244134568", - "REG_age": null, - "REG_respondent": "Jos", - "REG_nationality": "Ghanaian", - "REG_gender": 1, - "REG_clm_end": "2020-03-10 15:53:24", - "REG_rowuuid": "6360b77f-44ff-4a66-9e20-2fc06ad18430", - "ASS0a0076896de8_surveyid": "05a8d702-8c9d-4def-86e5-f6bab1ee7ff9", - "ASS0a0076896de8_originid": "ODKTOOLS", - "ASS0a0076896de8_clm_deviceimei": "867128035634212", - "ASS0a0076896de8_clm_start": "2020-03-10 22:35:04", - "ASS0a0076896de8_qst163": 22, - "ASS0a0076896de8_char_intelligence_pos": 1, - "ASS0a0076896de8_char_intelligence_neg": 2, - "ASS0a0076896de8_clm_end": "2020-03-10 22:35:09", - "ASS0a0076896de8_rowuuid": "2ae56f43-80e2-4434-9856-5a435010644a", - "ASS853ae88d793c_surveyid": "60e9b214-4096-45d7-8005-0d3d2a19f221", - "ASS853ae88d793c_originid": "ODKTOOLS", - "ASS853ae88d793c_clm_deviceimei": "357103074121568", - "ASS853ae88d793c_clm_start": "2020-03-10 16:27:41", - "ASS853ae88d793c_qst163": 22, - "ASS853ae88d793c_char_overallperf_pos": 2, - "ASS853ae88d793c_char_overallperf_neg": 3, - "ASS853ae88d793c_perf_overallchar_1": 2, - "ASS853ae88d793c_perf_overallchar_2": 2, - "ASS853ae88d793c_perf_overallchar_3": 2, - "ASS853ae88d793c_clm_end": "2020-03-10 16:30:26", - "ASS853ae88d793c_rowuuid": "b645b26a-6ea1-4519-bbb5-b981e21a6aac" - }, - { - "REG_surveyid": "d1594b9a-4809-42a7-b974-985c18006aa7", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "357103074124430", - "REG_clm_start": "2020-03-10 15:47:13", - "REG_qst162": "23", - "REG_farmername": "Reuben", - "REG_telephone": "0559113250", - "REG_age": 41, - "REG_respondent": "Reuben", - "REG_nationality": "Ugandan", - "REG_gender": 1, - "REG_clm_end": "2020-03-10 15:56:00", - "REG_rowuuid": "3094bf80-958a-4b10-bdb5-506321b76445", - "ASS0a0076896de8_surveyid": "84321c92-6c57-4687-83ba-355afc623b9a", - "ASS0a0076896de8_originid": "ODKTOOLS", - "ASS0a0076896de8_clm_deviceimei": "867128035634212", - "ASS0a0076896de8_clm_start": "2020-03-10 22:35:12", - "ASS0a0076896de8_qst163": 23, - "ASS0a0076896de8_char_intelligence_pos": 1, - "ASS0a0076896de8_char_intelligence_neg": 2, - "ASS0a0076896de8_clm_end": "2020-03-10 22:35:19", - "ASS0a0076896de8_rowuuid": "29b702cc-3565-438d-9595-be5256ed2634", - "ASS853ae88d793c_surveyid": "dba37ce8-90e4-4895-b05f-c13b191211a9", - "ASS853ae88d793c_originid": "ODKTOOLS", - "ASS853ae88d793c_clm_deviceimei": "357103074124430", - "ASS853ae88d793c_clm_start": "2020-03-10 16:33:13", - "ASS853ae88d793c_qst163": 23, - "ASS853ae88d793c_char_overallperf_pos": 2, - "ASS853ae88d793c_char_overallperf_neg": 1, - "ASS853ae88d793c_perf_overallchar_1": 1, - "ASS853ae88d793c_perf_overallchar_2": 1, - "ASS853ae88d793c_perf_overallchar_3": 2, - "ASS853ae88d793c_clm_end": "2020-03-10 16:34:47", - "ASS853ae88d793c_rowuuid": "1b3d9c29-9a68-46d2-8824-797cd0516006" - }, - { - "REG_surveyid": "e35b315a-145d-42a5-8113-e6acf07e90f1", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "d465379e9a04c2fe", - "REG_clm_start": "2020-03-10 15:56:28", - "REG_qst162": "24", - "REG_farmername": "Baidoo", - "REG_telephone": "0243825724", - "REG_age": 32, - "REG_respondent": "Baidoo", - "REG_nationality": "Ghanaian", - "REG_gender": 1, - "REG_clm_end": "2020-03-10 15:57:35", - "REG_rowuuid": "905fcdcb-1046-41e2-a5b1-f053bc5e08e9", - "ASS0a0076896de8_surveyid": "f9f5ea3e-7bc7-49d3-b2e9-09a7f5b29930", - "ASS0a0076896de8_originid": "ODKTOOLS", - "ASS0a0076896de8_clm_deviceimei": "867128035634212", - "ASS0a0076896de8_clm_start": "2020-03-10 22:35:21", - "ASS0a0076896de8_qst163": 24, - "ASS0a0076896de8_char_intelligence_pos": 1, - "ASS0a0076896de8_char_intelligence_neg": 2, - "ASS0a0076896de8_clm_end": "2020-03-10 22:35:26", - "ASS0a0076896de8_rowuuid": "36d9d7bc-fe9c-4a35-9c8c-66ada841345c", - "ASS853ae88d793c_surveyid": "5fac2082-41f3-470d-b298-2a7acf843e29", - "ASS853ae88d793c_originid": "ODKTOOLS", - "ASS853ae88d793c_clm_deviceimei": "359675104585266", - "ASS853ae88d793c_clm_start": "2020-03-10 16:34:22", - "ASS853ae88d793c_qst163": 24, - "ASS853ae88d793c_char_overallperf_pos": 3, - "ASS853ae88d793c_char_overallperf_neg": 1, - "ASS853ae88d793c_perf_overallchar_1": 1, - "ASS853ae88d793c_perf_overallchar_2": 2, - "ASS853ae88d793c_perf_overallchar_3": 1, - "ASS853ae88d793c_clm_end": "2020-03-10 16:35:33", - "ASS853ae88d793c_rowuuid": "8fdc5c7f-997b-44c2-b551-8d5cb601ee29" - }, - { - "REG_surveyid": "3a42abe0-1a54-4fa7-88b6-1b3868b8532f", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "359675104585266", - "REG_clm_start": "2020-03-10 15:54:54", - "REG_qst162": "25", - "REG_farmername": "Mr.kwesi", - "REG_telephone": "0207844832", - "REG_age": 42, - "REG_respondent": "Mr.Kwesi", - "REG_nationality": "Ghanaian", - "REG_gender": 1, - "REG_clm_end": "2020-03-10 15:59:56", - "REG_rowuuid": "67897a1f-8cf4-4d74-a3d9-db8e769e46a0", - "ASS0a0076896de8_surveyid": "a8e5d5c7-f905-4473-b301-3c32ff3703b1", - "ASS0a0076896de8_originid": "ODKTOOLS", - "ASS0a0076896de8_clm_deviceimei": "867128035634212", - "ASS0a0076896de8_clm_start": "2020-03-10 22:35:29", - "ASS0a0076896de8_qst163": 25, - "ASS0a0076896de8_char_intelligence_pos": 1, - "ASS0a0076896de8_char_intelligence_neg": 2, - "ASS0a0076896de8_clm_end": "2020-03-10 22:35:35", - "ASS0a0076896de8_rowuuid": "c24cebf0-8601-4688-a3e1-41fa8c5ed425", - "ASS853ae88d793c_surveyid": "2e391f0a-a717-4ca5-bdbd-2e26c3686303", - "ASS853ae88d793c_originid": "ODKTOOLS", - "ASS853ae88d793c_clm_deviceimei": "357103074121568", - "ASS853ae88d793c_clm_start": "2020-03-10 16:32:18", - "ASS853ae88d793c_qst163": 25, - "ASS853ae88d793c_char_overallperf_pos": 2, - "ASS853ae88d793c_char_overallperf_neg": 3, - "ASS853ae88d793c_perf_overallchar_1": 1, - "ASS853ae88d793c_perf_overallchar_2": 1, - "ASS853ae88d793c_perf_overallchar_3": 2, - "ASS853ae88d793c_clm_end": "2020-03-10 16:33:48", - "ASS853ae88d793c_rowuuid": "9e7fed70-1ad1-4b31-9a36-d5969280cadc" - }, - { - "REG_surveyid": "ceb941bb-1f90-4571-aa06-db1695d85f37", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "357103074124430", - "REG_clm_start": "2020-03-10 16:18:07", - "REG_qst162": "3", - "REG_farmername": "Christian", - "REG_telephone": "0543385663", - "REG_age": 29, - "REG_respondent": "Christian", - "REG_nationality": "Ghanian", - "REG_gender": 2, - "REG_clm_end": "2020-03-10 16:19:32", - "REG_rowuuid": "cf71bfae-763a-4a59-a67e-8f49755fc158", - "ASS0a0076896de8_surveyid": "8eb683f7-2a12-4838-b0a0-43425dbe0ec2", - "ASS0a0076896de8_originid": "ODKTOOLS", - "ASS0a0076896de8_clm_deviceimei": "867128035634212", - "ASS0a0076896de8_clm_start": "2020-03-10 22:35:37", - "ASS0a0076896de8_qst163": 3, - "ASS0a0076896de8_char_intelligence_pos": 2, - "ASS0a0076896de8_char_intelligence_neg": 3, - "ASS0a0076896de8_clm_end": "2020-03-10 22:35:44", - "ASS0a0076896de8_rowuuid": "e8e2a90a-7811-487f-8825-84eb74dbabe8", - "ASS853ae88d793c_surveyid": "48783b8c-dabb-435a-9bab-6806f5a4c637", - "ASS853ae88d793c_originid": "ODKTOOLS", - "ASS853ae88d793c_clm_deviceimei": "359675104585266", - "ASS853ae88d793c_clm_start": "2020-03-10 16:40:50", - "ASS853ae88d793c_qst163": 3, - "ASS853ae88d793c_char_overallperf_pos": 1, - "ASS853ae88d793c_char_overallperf_neg": 2, - "ASS853ae88d793c_perf_overallchar_1": 1, - "ASS853ae88d793c_perf_overallchar_2": 2, - "ASS853ae88d793c_perf_overallchar_3": 1, - "ASS853ae88d793c_clm_end": "2020-03-10 16:41:55", - "ASS853ae88d793c_rowuuid": "81151da5-91e5-426c-9c75-15e5e6570f48" - }, - { - "REG_surveyid": "66e6afc5-8da0-49b5-bda2-c3f4ba07447d", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "357103074125114", - "REG_clm_start": "2020-03-10 16:14:06", - "REG_qst162": "4", - "REG_farmername": "Hagar Opong", - "REG_telephone": "0557456797", - "REG_age": 21, - "REG_respondent": "Hagar Opong", - "REG_nationality": "Ghanaian ", - "REG_gender": 2, - "REG_clm_end": "2020-03-10 16:15:03", - "REG_rowuuid": "fb0e0816-e91c-4358-8211-8b9c07d70e9d", - "ASS0a0076896de8_surveyid": "2d08bb38-3cf2-435c-a2ec-17c67b130e56", - "ASS0a0076896de8_originid": "ODKTOOLS", - "ASS0a0076896de8_clm_deviceimei": "867128035634212", - "ASS0a0076896de8_clm_start": "2020-03-10 22:35:47", - "ASS0a0076896de8_qst163": 4, - "ASS0a0076896de8_char_intelligence_pos": 2, - "ASS0a0076896de8_char_intelligence_neg": 1, - "ASS0a0076896de8_clm_end": "2020-03-10 22:35:58", - "ASS0a0076896de8_rowuuid": "593be97d-7a47-42a4-a5da-0403e3c53167", - "ASS853ae88d793c_surveyid": "c2e6ddcc-bc12-48bc-94fa-8f92c13c1540", - "ASS853ae88d793c_originid": "ODKTOOLS", - "ASS853ae88d793c_clm_deviceimei": "359675104585266", - "ASS853ae88d793c_clm_start": "2020-03-10 16:31:52", - "ASS853ae88d793c_qst163": 4, - "ASS853ae88d793c_char_overallperf_pos": 2, - "ASS853ae88d793c_char_overallperf_neg": 3, - "ASS853ae88d793c_perf_overallchar_1": 1, - "ASS853ae88d793c_perf_overallchar_2": 1, - "ASS853ae88d793c_perf_overallchar_3": 2, - "ASS853ae88d793c_clm_end": "2020-03-10 16:33:46", - "ASS853ae88d793c_rowuuid": "8c84eb34-21ed-498c-9ea8-c2f49822b310" - }, - { - "REG_surveyid": "ec251867-bbf7-49b4-b596-8d32e911ec97", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "d465379e9a04c2fe", - "REG_clm_start": "2020-03-10 16:09:01", - "REG_qst162": "5", - "REG_farmername": "Joyce", - "REG_telephone": "0242020339", - "REG_age": 32, - "REG_respondent": "Joyce", - "REG_nationality": "Ghanaian", - "REG_gender": 2, - "REG_clm_end": "2020-03-10 16:10:17", - "REG_rowuuid": "4bc799ef-5e61-409f-a47f-a2fcc7ffc910", - "ASS0a0076896de8_surveyid": "6bf09f02-6c03-4b7e-b2ea-389933a1f21b", - "ASS0a0076896de8_originid": "ODKTOOLS", - "ASS0a0076896de8_clm_deviceimei": "867128035634212", - "ASS0a0076896de8_clm_start": "2020-03-10 22:36:00", - "ASS0a0076896de8_qst163": 5, - "ASS0a0076896de8_char_intelligence_pos": 3, - "ASS0a0076896de8_char_intelligence_neg": 2, - "ASS0a0076896de8_clm_end": "2020-03-10 22:36:07", - "ASS0a0076896de8_rowuuid": "f0aae714-76ad-4391-918e-7ad02e7decc7", - "ASS853ae88d793c_surveyid": "8b3e3fe3-fbd1-49fc-9d40-fb75e2849c88", - "ASS853ae88d793c_originid": "ODKTOOLS", - "ASS853ae88d793c_clm_deviceimei": "d465379e9a04c2fe", - "ASS853ae88d793c_clm_start": "2020-03-10 16:35:08", - "ASS853ae88d793c_qst163": 5, - "ASS853ae88d793c_char_overallperf_pos": 1, - "ASS853ae88d793c_char_overallperf_neg": 3, - "ASS853ae88d793c_perf_overallchar_1": 1, - "ASS853ae88d793c_perf_overallchar_2": 1, - "ASS853ae88d793c_perf_overallchar_3": 2, - "ASS853ae88d793c_clm_end": "2020-03-10 16:36:53", - "ASS853ae88d793c_rowuuid": "920a8efe-8e71-4eee-952f-908557576f15" - }, - { - "REG_surveyid": "33dcb319-e5f6-426a-ad81-7ebd38590901", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "d465379e9a04c2fe", - "REG_clm_start": "2020-03-10 16:00:40", - "REG_qst162": "6", - "REG_farmername": "Dan", - "REG_telephone": "0249485491", - "REG_age": 33, - "REG_respondent": "Dan", - "REG_nationality": "Ghanaian", - "REG_gender": 1, - "REG_clm_end": "2020-03-10 16:03:08", - "REG_rowuuid": "7cace6ac-eb92-4c19-9f3f-80f8e79c04f1", - "ASS0a0076896de8_surveyid": "5a212993-2c76-452c-afca-358c819670ca", - "ASS0a0076896de8_originid": "ODKTOOLS", - "ASS0a0076896de8_clm_deviceimei": "867128035634212", - "ASS0a0076896de8_clm_start": "2020-03-10 22:36:09", - "ASS0a0076896de8_qst163": 6, - "ASS0a0076896de8_char_intelligence_pos": 3, - "ASS0a0076896de8_char_intelligence_neg": 1, - "ASS0a0076896de8_clm_end": "2020-03-10 22:36:15", - "ASS0a0076896de8_rowuuid": "051c0943-6e03-4ab1-814d-498e6d38153c", - "ASS853ae88d793c_surveyid": "6cbddb00-9286-4a4a-9603-31fd1977cdcb", - "ASS853ae88d793c_originid": "ODKTOOLS", - "ASS853ae88d793c_clm_deviceimei": "d465379e9a04c2fe", - "ASS853ae88d793c_clm_start": "2020-03-10 16:36:58", - "ASS853ae88d793c_qst163": 6, - "ASS853ae88d793c_char_overallperf_pos": 1, - "ASS853ae88d793c_char_overallperf_neg": 3, - "ASS853ae88d793c_perf_overallchar_1": 1, - "ASS853ae88d793c_perf_overallchar_2": 1, - "ASS853ae88d793c_perf_overallchar_3": 2, - "ASS853ae88d793c_clm_end": "2020-03-10 16:39:00", - "ASS853ae88d793c_rowuuid": "0ee243db-9930-4ff0-932b-391628d59197" - }, - { - "REG_surveyid": "c4aa5e53-7f7e-4a82-9192-e8c62c6f3e20", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "357103074125114", - "REG_clm_start": "2020-03-10 15:58:16", - "REG_qst162": "7", - "REG_farmername": "Simon Imoro", - "REG_telephone": "0240724708", - "REG_age": 33, - "REG_respondent": "Simon Imoro", - "REG_nationality": "Ghanaian ", - "REG_gender": 1, - "REG_clm_end": "2020-03-10 15:59:15", - "REG_rowuuid": "62e7e4b7-f52e-4bcd-b2e6-b367f90b81d7", - "ASS0a0076896de8_surveyid": "6b0ce919-1f2b-4e8d-8033-60359af43080", - "ASS0a0076896de8_originid": "ODKTOOLS", - "ASS0a0076896de8_clm_deviceimei": "867128035634212", - "ASS0a0076896de8_clm_start": "2020-03-10 22:36:17", - "ASS0a0076896de8_qst163": 7, - "ASS0a0076896de8_char_intelligence_pos": 3, - "ASS0a0076896de8_char_intelligence_neg": 1, - "ASS0a0076896de8_clm_end": "2020-03-10 22:36:27", - "ASS0a0076896de8_rowuuid": "ea51e836-fa70-41ee-8578-e8bc615a4937", - "ASS853ae88d793c_surveyid": "20fb9ffb-68c8-4561-91ad-d704d16b075b", - "ASS853ae88d793c_originid": "ODKTOOLS", - "ASS853ae88d793c_clm_deviceimei": "357103074125114", - "ASS853ae88d793c_clm_start": "2020-03-10 16:35:28", - "ASS853ae88d793c_qst163": 7, - "ASS853ae88d793c_char_overallperf_pos": 2, - "ASS853ae88d793c_char_overallperf_neg": 3, - "ASS853ae88d793c_perf_overallchar_1": 2, - "ASS853ae88d793c_perf_overallchar_2": 1, - "ASS853ae88d793c_perf_overallchar_3": 2, - "ASS853ae88d793c_clm_end": "2020-03-10 16:36:28", - "ASS853ae88d793c_rowuuid": "7a7359db-da64-46a2-a94c-41711467d63e" - }, - { - "REG_surveyid": "47eb6456-58ca-4944-9006-c4e3990d1bbd", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "357103074124430", - "REG_clm_start": "2020-03-10 15:58:51", - "REG_qst162": "8", - "REG_farmername": "Fatawu", - "REG_telephone": "0245735920", - "REG_age": 32, - "REG_respondent": "Fatawu", - "REG_nationality": "Ghanaian", - "REG_gender": 1, - "REG_clm_end": "2020-03-10 16:00:03", - "REG_rowuuid": "babd79d7-5ed7-4983-88c0-74a85b2ea3b7", - "ASS0a0076896de8_surveyid": "1b4b0dde-cc91-44bd-9e70-856e114feca9", - "ASS0a0076896de8_originid": "ODKTOOLS", - "ASS0a0076896de8_clm_deviceimei": "867128035634212", - "ASS0a0076896de8_clm_start": "2020-03-10 22:36:31", - "ASS0a0076896de8_qst163": 8, - "ASS0a0076896de8_char_intelligence_pos": 2, - "ASS0a0076896de8_char_intelligence_neg": 1, - "ASS0a0076896de8_clm_end": "2020-03-10 22:36:39", - "ASS0a0076896de8_rowuuid": "20a91edc-2726-43a7-b814-ea434f149ba6", - "ASS853ae88d793c_surveyid": "d4baaa6c-a5da-421a-abe0-5750ba59d96e", - "ASS853ae88d793c_originid": "ODKTOOLS", - "ASS853ae88d793c_clm_deviceimei": "357103074125114", - "ASS853ae88d793c_clm_start": "2020-03-10 16:30:53", - "ASS853ae88d793c_qst163": 8, - "ASS853ae88d793c_char_overallperf_pos": 1, - "ASS853ae88d793c_char_overallperf_neg": 2, - "ASS853ae88d793c_perf_overallchar_1": 1, - "ASS853ae88d793c_perf_overallchar_2": 1, - "ASS853ae88d793c_perf_overallchar_3": 2, - "ASS853ae88d793c_clm_end": "2020-03-10 16:32:04", - "ASS853ae88d793c_rowuuid": "87d3338a-70d8-4b64-925c-f27d806879f4" - }, - { - "REG_surveyid": "e590bd40-9c79-4141-9169-175822287536", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "359675104585266", - "REG_clm_start": "2020-03-10 16:01:23", - "REG_qst162": "9", - "REG_farmername": "Hadjor", - "REG_telephone": "0245296143", - "REG_age": 25, - "REG_respondent": "Hadjor", - "REG_nationality": "Ghanaian", - "REG_gender": 1, - "REG_clm_end": "2020-03-10 16:02:30", - "REG_rowuuid": "090e256d-50d0-4061-a26a-aba2ad7f8000", - "ASS0a0076896de8_surveyid": "f61ee417-27a6-4ada-9879-d77008a1eeef", - "ASS0a0076896de8_originid": "ODKTOOLS", - "ASS0a0076896de8_clm_deviceimei": "867128035634212", - "ASS0a0076896de8_clm_start": "2020-03-10 22:36:40", - "ASS0a0076896de8_qst163": 9, - "ASS0a0076896de8_char_intelligence_pos": 1, - "ASS0a0076896de8_char_intelligence_neg": 3, - "ASS0a0076896de8_clm_end": "2020-03-10 22:36:49", - "ASS0a0076896de8_rowuuid": "8045f924-8cbd-497c-87b9-04f54a0e2c1b", - "ASS853ae88d793c_surveyid": "31ab7819-7cfd-425d-9c39-a8a254a4e51d", - "ASS853ae88d793c_originid": "ODKTOOLS", - "ASS853ae88d793c_clm_deviceimei": "359675104585266", - "ASS853ae88d793c_clm_start": "2020-03-10 16:36:02", - "ASS853ae88d793c_qst163": 9, - "ASS853ae88d793c_char_overallperf_pos": 1, - "ASS853ae88d793c_char_overallperf_neg": 3, - "ASS853ae88d793c_perf_overallchar_1": 1, - "ASS853ae88d793c_perf_overallchar_2": 1, - "ASS853ae88d793c_perf_overallchar_3": 2, - "ASS853ae88d793c_clm_end": "2020-03-10 16:37:08", - "ASS853ae88d793c_rowuuid": "8a6a78ea-2dda-495f-aca6-c8a754f00fe6" - } - ], - "importantfields": [ - { - "type": "PackageID", - "field": "REG_QST162", - "desc": "Package ID" - }, - { - "type": "FarmerName", - "field": "REG_farmername", - "desc": "Name of registered farmer" - }, - { - "type": "OverallCharPos", - "field": "ASS853ae88d793c_char_overallperf_pos", - "desc": "Over all characteristic positive" - }, - { - "type": "OverallCharNeg", - "field": "ASS853ae88d793c_char_overallperf_neg", - "desc": "Over all characteristic negative" - }, - { - "type": "OverallPerf1", - "field": "ASS853ae88d793c_perf_overallchar_1", - "desc": "Over all performance of A against current" - }, - { - "type": "OverallPerf2", - "field": "ASS853ae88d793c_perf_overallchar_2", - "desc": "Over all performance of B against current" - }, - { - "type": "OverallPerf3", - "field": "ASS853ae88d793c_perf_overallchar_3", - "desc": "Over all performance of C against current" - } - ] -} \ No newline at end of file diff --git a/dev/data/colors/data.json b/dev/data/colors/data.json deleted file mode 100644 index 682b7c6..0000000 --- a/dev/data/colors/data.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "Characteristics": [ - { - "name": "About intelligence", - "id": 242, - "vars": [ - { - "name": "ASSa835e1bb425d_char_intelligence_pos" - }, - { - "name": "ASSa835e1bb425d_char_intelligence_neg" - } - ] - }, - { - "name": "Overall Characteristic", - "id": 204, - "vars": [ - { - "name": "ASSbb39cf90c91c_char_overallperf_pos" - }, - { - "name": "ASSbb39cf90c91c_char_overallperf_neg" - } - ] - } - ], - "Performance": [ - { - "name": "Overall performace", - "id": 205, - "vars": [ - { - "name": "ASSbb39cf90c91c_perf_overallchar_1" - }, - { - "name": "ASSbb39cf90c91c_perf_overallchar_2" - }, - { - "name": "ASSbb39cf90c91c_perf_overallchar_3" - } - ] - } - ], - "Explanatory": [ - { - "name": "What is the gender ?", - "id": 237, - "vars": "REG_gender" - } - ] -} \ No newline at end of file diff --git a/dev/data/colors/info.json b/dev/data/colors/info.json deleted file mode 100644 index 37780a8..0000000 --- a/dev/data/colors/info.json +++ /dev/null @@ -1,1116 +0,0 @@ -{ - "project": { - "user_name": "jacobvanetten", - "project_cod": "ColG", - "project_name": "Colors Ghana", - "project_abstract": "Little test", - "project_tags": "color,test,course", - "project_pi": "Jacob van Etten", - "project_piemail": "j.vanetten@cgiar.org", - "project_active": 1, - "project_public": 0, - "project_dashboard": 1, - "project_regstatus": 2, - "project_assstatus": 0, - "project_createcomb": 0, - "project_createpkgs": 0, - "project_numobs": 20, - "project_numcom": 3, - "project_lat": "10.596611", - "project_lon": "-0.013403", - "project_creationdate": "2020-03-10 15:58:36", - "project_localvariety": 1, - "extra": null - }, - "registry": { - "lkptables": [ - { - "name": "REG_lkpgender", - "desc": "Lookup table (What is the gender ?)", - "fields": [ - { - "name": "gender_cod", - "desc": "Code", - "key": "true" - }, - { - "name": "gender_des", - "desc": "Description", - "key": null - } - ], - "values": [ - { - "gender_cod": 1, - "gender_des": "Male" - }, - { - "gender_cod": 2, - "gender_des": "Female" - } - ] - } - ], - "fields": [ - { - "name": "surveyid", - "odktype": "", - "desc": "Submission ID", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "originid", - "odktype": "", - "desc": "Origin", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "clm_deviceimei", - "odktype": "deviceid", - "desc": "Device IMEI", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "clm_start", - "odktype": "start", - "desc": "Start of survey", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "qst162", - "odktype": "barcode", - "desc": "Package code", - "key": "true", - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "farmername", - "odktype": "text", - "desc": "Farmer name", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "gender", - "odktype": "select_one gender_opts", - "desc": "What is the gender ?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "REG_lkpgender", - "rfield": "gender_cod" - }, - { - "name": "clm_end", - "odktype": "end", - "desc": "End of survey", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "rowuuid", - "odktype": "", - "desc": "Unique Row Identifier (UUID)", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - } - ] - }, - "assessments": [ - { - "code": "a835e1bb425d", - "desc": "test", - "lkptables": [ - { - "name": "ASSa835e1bb425d_lkpchar_intelligence_pos", - "desc": "Lookup table (Which color is most associated with intelligence?)", - "fields": [ - { - "name": "char_intelligence_pos_cod", - "desc": "Code", - "key": "true" - }, - { - "name": "char_intelligence_pos_des", - "desc": "Description", - "key": null - } - ], - "values": [ - { - "char_intelligence_pos_cod": 1, - "char_intelligence_pos_des": "Option A" - }, - { - "char_intelligence_pos_cod": 2, - "char_intelligence_pos_des": "Option B" - }, - { - "char_intelligence_pos_cod": 3, - "char_intelligence_pos_des": "Option C" - } - ] - }, - { - "name": "ASSa835e1bb425d_lkpqst163", - "desc": "Lookup table (Select the farmer)", - "fields": [ - { - "name": "qst163_cod", - "desc": "Code", - "key": "true" - }, - { - "name": "qst163_des", - "desc": "Description", - "key": null - } - ], - "values": [ - { - "qst163_cod": 2, - "qst163_des": "P:2-George Bush" - }, - { - "qst163_cod": 3, - "qst163_des": "P:3-JU3" - }, - { - "qst163_cod": 4, - "qst163_des": "P:4-Eric" - }, - { - "qst163_cod": 6, - "qst163_des": "P:6-Amponsah" - }, - { - "qst163_cod": 7, - "qst163_des": "P:7-Ishak Abdul-Fatawu" - }, - { - "qst163_cod": 8, - "qst163_des": "P:8-FRANCIS" - }, - { - "qst163_cod": 9, - "qst163_des": "P:9-Martin Nketiah" - } - ] - } - ], - "fields": [ - { - "name": "surveyid", - "odktype": "", - "desc": "Submission ID", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "originid", - "odktype": "", - "desc": "Origin", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "clm_deviceimei", - "odktype": "deviceid", - "desc": "Device IMEI", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "clm_start", - "odktype": "start", - "desc": "Start of survey", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "qst163", - "odktype": "select_one qst163_opts", - "desc": "Select the farmer", - "key": "true", - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASSa835e1bb425d_lkpqst163", - "rfield": "qst163_cod" - }, - { - "name": "char_intelligence_pos", - "odktype": "select_one char_intelligence_pos_opts", - "desc": "Which color is most associated with intelligence?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASSa835e1bb425d_lkpchar_intelligence_pos", - "rfield": "char_intelligence_pos_cod" - }, - { - "name": "char_intelligence_neg", - "odktype": "select_one char_intelligence_neg_opts", - "desc": "Which color is least associated with intelligence?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASSa835e1bb425d_lkpchar_intelligence_pos", - "rfield": "char_intelligence_pos_cod" - }, - { - "name": "clm_end", - "odktype": "end", - "desc": "End of survey", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "rowuuid", - "odktype": "", - "desc": "Unique Row Identifier (UUID)", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - } - ] - }, - { - "code": "bb39cf90c91c", - "desc": "Immediate", - "lkptables": [ - { - "name": "ASSbb39cf90c91c_lkpqst163", - "desc": "Lookup table (Select the farmer)", - "fields": [ - { - "name": "qst163_cod", - "desc": "Code", - "key": "true" - }, - { - "name": "qst163_des", - "desc": "Description", - "key": null - } - ], - "values": [ - { - "qst163_cod": 2, - "qst163_des": "P:2-George Bush" - }, - { - "qst163_cod": 3, - "qst163_des": "P:3-JU3" - }, - { - "qst163_cod": 4, - "qst163_des": "P:4-Eric" - }, - { - "qst163_cod": 6, - "qst163_des": "P:6-Amponsah" - }, - { - "qst163_cod": 7, - "qst163_des": "P:7-Ishak Abdul-Fatawu" - }, - { - "qst163_cod": 8, - "qst163_des": "P:8-FRANCIS" - }, - { - "qst163_cod": 9, - "qst163_des": "P:9-Martin Nketiah" - } - ] - }, - { - "name": "ASSbb39cf90c91c_lkpchar_overallperf_pos", - "desc": "Lookup table (Overall, which option performed better?)", - "fields": [ - { - "name": "char_overallperf_pos_cod", - "desc": "Code", - "key": "true" - }, - { - "name": "char_overallperf_pos_des", - "desc": "Description", - "key": null - } - ], - "values": [ - { - "char_overallperf_pos_cod": 1, - "char_overallperf_pos_des": "Option A" - }, - { - "char_overallperf_pos_cod": 2, - "char_overallperf_pos_des": "Option B" - }, - { - "char_overallperf_pos_cod": 3, - "char_overallperf_pos_des": "Option C" - } - ] - }, - { - "name": "ASSbb39cf90c91c_lkpperf_overallchar_1", - "desc": "Lookup table (Overall, whichone is best A or what you usually use?)", - "fields": [ - { - "name": "perf_overallchar_1_cod", - "desc": "Code", - "key": "true" - }, - { - "name": "perf_overallchar_1_des", - "desc": "Description", - "key": null - } - ], - "values": [ - { - "perf_overallchar_1_cod": 1, - "perf_overallchar_1_des": "Better" - }, - { - "perf_overallchar_1_cod": 2, - "perf_overallchar_1_des": "Worst" - } - ] - } - ], - "fields": [ - { - "name": "surveyid", - "odktype": "", - "desc": "Submission ID", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "originid", - "odktype": "", - "desc": "Origin", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "clm_deviceimei", - "odktype": "deviceid", - "desc": "Device IMEI", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "clm_start", - "odktype": "start", - "desc": "Start of survey", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "qst163", - "odktype": "select_one qst163_opts", - "desc": "Select the farmer", - "key": "true", - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASSbb39cf90c91c_lkpqst163", - "rfield": "qst163_cod" - }, - { - "name": "char_overallperf_pos", - "odktype": "select_one char_overallperf_pos_opts", - "desc": "Overall, which option performed better?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASSbb39cf90c91c_lkpchar_overallperf_pos", - "rfield": "char_overallperf_pos_cod" - }, - { - "name": "char_overallperf_neg", - "odktype": "select_one char_overallperf_neg_opts", - "desc": "Overall, which option performed worst?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASSbb39cf90c91c_lkpchar_overallperf_pos", - "rfield": "char_overallperf_pos_cod" - }, - { - "name": "perf_overallchar_1", - "odktype": "select_one perf_overallchar_1_opts", - "desc": "Overall, whichone is best A or what you usually use?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASSbb39cf90c91c_lkpperf_overallchar_1", - "rfield": "perf_overallchar_1_cod" - }, - { - "name": "perf_overallchar_2", - "odktype": "select_one perf_overallchar_2_opts", - "desc": "Overall, whichone is best B or what you usually use?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASSbb39cf90c91c_lkpperf_overallchar_1", - "rfield": "perf_overallchar_1_cod" - }, - { - "name": "perf_overallchar_3", - "odktype": "select_one perf_overallchar_3_opts", - "desc": "Overall, whichone is best C or what you usually use?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASSbb39cf90c91c_lkpperf_overallchar_1", - "rfield": "perf_overallchar_1_cod" - }, - { - "name": "clm_end", - "odktype": "end", - "desc": "End of survey", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "rowuuid", - "odktype": "", - "desc": "Unique Row Identifier (UUID)", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - } - ] - } - ], - "packages": [ - { - "package_id": 2, - "farmername": "George Bush ", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Blue" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Yellow" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "White" - } - ] - } - ] - }, - { - "package_id": 3, - "farmername": "JU3", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "White" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Red" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Blue" - } - ] - } - ] - }, - { - "package_id": 4, - "farmername": "Eric", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Red" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "White" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Black" - } - ] - } - ] - }, - { - "package_id": 6, - "farmername": "Amponsah", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Blue" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Black" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Red" - } - ] - } - ] - }, - { - "package_id": 7, - "farmername": "Ishak Abdul-Fatawu ", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Yellow" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "White" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Black" - } - ] - } - ] - }, - { - "package_id": 8, - "farmername": "FRANCIS", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Red" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Yellow" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Blue" - } - ] - } - ] - }, - { - "package_id": 9, - "farmername": "Martin Nketiah ", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Black" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "Blue" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Colors", - "alias_name": "White" - } - ] - } - ] - } - ], - "specialfields": [ - { - "type": "Characteristic", - "name": "ASSa835e1bb425d_char_intelligence_pos", - "desc": "Which color is most associated with intelligence?" - }, - { - "type": "Characteristic", - "name": "ASSa835e1bb425d_char_intelligence_neg", - "desc": "Which color is least associated with intelligence?" - }, - { - "type": "Characteristic", - "name": "ASSbb39cf90c91c_char_overallperf_pos", - "desc": "Overall, which option performed better?" - }, - { - "type": "Characteristic", - "name": "ASSbb39cf90c91c_char_overallperf_neg", - "desc": "Overall, which option performed worst?" - }, - { - "type": "Performance", - "name": "ASSbb39cf90c91c_perf_overallchar_1", - "desc": "Overall, whichone is best A or what you usually use?" - }, - { - "type": "Performance", - "name": "ASSbb39cf90c91c_perf_overallchar_2", - "desc": "Overall, whichone is best B or what you usually use?" - }, - { - "type": "Performance", - "name": "ASSbb39cf90c91c_perf_overallchar_3", - "desc": "Overall, whichone is best C or what you usually use?" - } - ], - "data": [ - { - "REG_surveyid": "c0ef0da3-1ead-4992-9d2a-8b07fb800e94", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "357470090556246", - "REG_clm_start": "2020-03-10 16:19:45", - "REG_qst162": "2", - "REG_farmername": "George Bush ", - "REG_gender": 1, - "REG_clm_end": "2020-03-10 16:26:37", - "REG_rowuuid": "60ec10b2-88f1-4b78-802b-a6177d706064", - "ASSa835e1bb425d_surveyid": "3ba283e2-36db-432c-b006-e177d83ddfb2", - "ASSa835e1bb425d_originid": "ODKTOOLS", - "ASSa835e1bb425d_clm_deviceimei": "867128035634212", - "ASSa835e1bb425d_clm_start": "2020-03-10 22:43:22", - "ASSa835e1bb425d_qst163": 2, - "ASSa835e1bb425d_char_intelligence_pos": 1, - "ASSa835e1bb425d_char_intelligence_neg": 2, - "ASSa835e1bb425d_clm_end": "2020-03-10 22:43:27", - "ASSa835e1bb425d_rowuuid": "ff1726e8-5408-4655-a498-3b164e5fb1d2", - "ASSbb39cf90c91c_surveyid": "b8ed5e03-f003-4311-a655-40d390780edd", - "ASSbb39cf90c91c_originid": "ODKTOOLS", - "ASSbb39cf90c91c_clm_deviceimei": "357470090556246", - "ASSbb39cf90c91c_clm_start": "2020-03-10 16:37:16", - "ASSbb39cf90c91c_qst163": 2, - "ASSbb39cf90c91c_char_overallperf_pos": 1, - "ASSbb39cf90c91c_char_overallperf_neg": 2, - "ASSbb39cf90c91c_perf_overallchar_1": 1, - "ASSbb39cf90c91c_perf_overallchar_2": 2, - "ASSbb39cf90c91c_perf_overallchar_3": 2, - "ASSbb39cf90c91c_clm_end": "2020-03-10 16:46:00", - "ASSbb39cf90c91c_rowuuid": "ce262198-1dd4-4a11-b17d-f085473be184" - }, - { - "REG_surveyid": "6f314f4a-fdc2-417c-9c4e-b4d5de3e0643", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "352029110937490", - "REG_clm_start": "2020-03-10 16:20:32", - "REG_qst162": "3", - "REG_farmername": "JU3", - "REG_gender": 1, - "REG_clm_end": "2020-03-10 16:27:17", - "REG_rowuuid": "0a7dcaf6-fc82-4fa8-8231-bc0b1cfcbe9d", - "ASSa835e1bb425d_surveyid": "2f649eb5-6a77-4ab0-a1db-61102fc6067a", - "ASSa835e1bb425d_originid": "ODKTOOLS", - "ASSa835e1bb425d_clm_deviceimei": "867128035634212", - "ASSa835e1bb425d_clm_start": "2020-03-10 22:43:29", - "ASSa835e1bb425d_qst163": 3, - "ASSa835e1bb425d_char_intelligence_pos": 2, - "ASSa835e1bb425d_char_intelligence_neg": 1, - "ASSa835e1bb425d_clm_end": "2020-03-10 22:43:34", - "ASSa835e1bb425d_rowuuid": "339f691d-f94b-4539-ae2e-9a2e043e0863", - "ASSbb39cf90c91c_surveyid": "7b25faef-759f-4521-adba-d5c88b7902ff", - "ASSbb39cf90c91c_originid": "ODKTOOLS", - "ASSbb39cf90c91c_clm_deviceimei": "352029110937490", - "ASSbb39cf90c91c_clm_start": "2020-03-10 16:43:37", - "ASSbb39cf90c91c_qst163": 3, - "ASSbb39cf90c91c_char_overallperf_pos": 2, - "ASSbb39cf90c91c_char_overallperf_neg": 3, - "ASSbb39cf90c91c_perf_overallchar_1": 1, - "ASSbb39cf90c91c_perf_overallchar_2": 1, - "ASSbb39cf90c91c_perf_overallchar_3": 2, - "ASSbb39cf90c91c_clm_end": "2020-03-10 16:44:37", - "ASSbb39cf90c91c_rowuuid": "e62b39c2-3dc3-437e-8bc4-009e7acdecf6" - }, - { - "REG_surveyid": "024ff012-4dfe-4533-9e76-d8414246ceab", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "359665088899528", - "REG_clm_start": "2020-03-10 16:22:00", - "REG_qst162": "4", - "REG_farmername": "Eric", - "REG_gender": 2, - "REG_clm_end": "2020-03-10 16:24:59", - "REG_rowuuid": "446389d7-3ce0-498f-81a8-691e88950fcd", - "ASSa835e1bb425d_surveyid": "efb8f390-083c-4c30-b739-58591272339a", - "ASSa835e1bb425d_originid": "ODKTOOLS", - "ASSa835e1bb425d_clm_deviceimei": "867128035634212", - "ASSa835e1bb425d_clm_start": "2020-03-10 22:43:36", - "ASSa835e1bb425d_qst163": 4, - "ASSa835e1bb425d_char_intelligence_pos": 3, - "ASSa835e1bb425d_char_intelligence_neg": 1, - "ASSa835e1bb425d_clm_end": "2020-03-10 22:43:41", - "ASSa835e1bb425d_rowuuid": "ec546f1b-17a1-4471-8425-f219c0f724a5", - "ASSbb39cf90c91c_surveyid": "54c2a74c-e7ed-4fdc-b5ce-daf1ee1ca80b", - "ASSbb39cf90c91c_originid": "ODKTOOLS", - "ASSbb39cf90c91c_clm_deviceimei": "359665088899528", - "ASSbb39cf90c91c_clm_start": "2020-03-10 16:37:11", - "ASSbb39cf90c91c_qst163": 4, - "ASSbb39cf90c91c_char_overallperf_pos": 1, - "ASSbb39cf90c91c_char_overallperf_neg": 2, - "ASSbb39cf90c91c_perf_overallchar_1": 1, - "ASSbb39cf90c91c_perf_overallchar_2": 1, - "ASSbb39cf90c91c_perf_overallchar_3": 2, - "ASSbb39cf90c91c_clm_end": "2020-03-10 16:39:47", - "ASSbb39cf90c91c_rowuuid": "fdda0ddb-3af9-49c3-9225-e271ff36c64f" - }, - { - "REG_surveyid": "33e303a6-21a4-4dcc-a79d-42abe4e714a9", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "354481115943858", - "REG_clm_start": "2020-03-10 16:20:40", - "REG_qst162": "6", - "REG_farmername": "Amponsah", - "REG_gender": 1, - "REG_clm_end": "2020-03-10 16:27:28", - "REG_rowuuid": "0d1e6e69-17ff-4ba1-bff0-b25ba1cc4aa2", - "ASSa835e1bb425d_surveyid": "d74120cf-4949-4bc5-a061-96ff45c7e442", - "ASSa835e1bb425d_originid": "ODKTOOLS", - "ASSa835e1bb425d_clm_deviceimei": "867128035634212", - "ASSa835e1bb425d_clm_start": "2020-03-10 22:43:43", - "ASSa835e1bb425d_qst163": 6, - "ASSa835e1bb425d_char_intelligence_pos": 3, - "ASSa835e1bb425d_char_intelligence_neg": 1, - "ASSa835e1bb425d_clm_end": "2020-03-10 22:43:47", - "ASSa835e1bb425d_rowuuid": "69a26443-9ccb-4297-8339-53b3387a8323", - "ASSbb39cf90c91c_surveyid": "ab8c077f-e3a5-44b7-81c9-1ef6b966f1f5", - "ASSbb39cf90c91c_originid": "ODKTOOLS", - "ASSbb39cf90c91c_clm_deviceimei": "354481115943858", - "ASSbb39cf90c91c_clm_start": "2020-03-10 16:38:17", - "ASSbb39cf90c91c_qst163": 6, - "ASSbb39cf90c91c_char_overallperf_pos": 1, - "ASSbb39cf90c91c_char_overallperf_neg": 2, - "ASSbb39cf90c91c_perf_overallchar_1": 1, - "ASSbb39cf90c91c_perf_overallchar_2": 2, - "ASSbb39cf90c91c_perf_overallchar_3": 1, - "ASSbb39cf90c91c_clm_end": "2020-03-10 16:57:08", - "ASSbb39cf90c91c_rowuuid": "3997ab94-0123-4724-aa19-f855fc31e471" - }, - { - "REG_surveyid": "8010cb2f-6b5f-41ca-9a09-e492abd17066", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "352401107495529", - "REG_clm_start": "2020-03-10 16:21:46", - "REG_qst162": "7", - "REG_farmername": "Ishak Abdul-Fatawu ", - "REG_gender": 1, - "REG_clm_end": "2020-03-10 16:27:30", - "REG_rowuuid": "abf406ed-7fcd-4626-a3b6-de0e74874b86", - "ASSa835e1bb425d_surveyid": "d0184802-8f23-4a61-898a-cb99e65c36f9", - "ASSa835e1bb425d_originid": "ODKTOOLS", - "ASSa835e1bb425d_clm_deviceimei": "867128035634212", - "ASSa835e1bb425d_clm_start": "2020-03-10 22:43:49", - "ASSa835e1bb425d_qst163": 7, - "ASSa835e1bb425d_char_intelligence_pos": 1, - "ASSa835e1bb425d_char_intelligence_neg": 2, - "ASSa835e1bb425d_clm_end": "2020-03-10 22:43:56", - "ASSa835e1bb425d_rowuuid": "f291dcec-3eca-44ce-86b3-3e522c114a21", - "ASSbb39cf90c91c_surveyid": "1114d7dc-8a6c-4e9b-9f94-c6daefb86821", - "ASSbb39cf90c91c_originid": "ODKTOOLS", - "ASSbb39cf90c91c_clm_deviceimei": "352401107495529", - "ASSbb39cf90c91c_clm_start": "2020-03-10 16:38:28", - "ASSbb39cf90c91c_qst163": 7, - "ASSbb39cf90c91c_char_overallperf_pos": 2, - "ASSbb39cf90c91c_char_overallperf_neg": 3, - "ASSbb39cf90c91c_perf_overallchar_1": 1, - "ASSbb39cf90c91c_perf_overallchar_2": 1, - "ASSbb39cf90c91c_perf_overallchar_3": 2, - "ASSbb39cf90c91c_clm_end": "2020-03-10 16:40:32", - "ASSbb39cf90c91c_rowuuid": "4aa10383-f462-43bf-8dbb-32fcd68a2916" - }, - { - "REG_surveyid": "eb04ae07-38fb-4ebc-b7c7-e2afc4b2e193", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "358942094868800", - "REG_clm_start": "2020-03-10 16:22:00", - "REG_qst162": "8", - "REG_farmername": "FRANCIS", - "REG_gender": 1, - "REG_clm_end": "2020-03-10 16:23:29", - "REG_rowuuid": "55115ff9-4c07-4c44-acef-fb52af254240", - "ASSa835e1bb425d_surveyid": "eaaa22fe-41fe-4f6b-a3b3-34c31a7e4f4f", - "ASSa835e1bb425d_originid": "ODKTOOLS", - "ASSa835e1bb425d_clm_deviceimei": "867128035634212", - "ASSa835e1bb425d_clm_start": "2020-03-10 22:43:57", - "ASSa835e1bb425d_qst163": 8, - "ASSa835e1bb425d_char_intelligence_pos": 3, - "ASSa835e1bb425d_char_intelligence_neg": 2, - "ASSa835e1bb425d_clm_end": "2020-03-10 22:44:02", - "ASSa835e1bb425d_rowuuid": "5789ff53-a3be-461f-91f7-eb9276d14c31", - "ASSbb39cf90c91c_surveyid": "6721db03-065b-4551-9228-8e8674b1dd4a", - "ASSbb39cf90c91c_originid": "ODKTOOLS", - "ASSbb39cf90c91c_clm_deviceimei": "358942094868800", - "ASSbb39cf90c91c_clm_start": "2020-03-10 16:34:57", - "ASSbb39cf90c91c_qst163": 8, - "ASSbb39cf90c91c_char_overallperf_pos": 1, - "ASSbb39cf90c91c_char_overallperf_neg": 3, - "ASSbb39cf90c91c_perf_overallchar_1": 2, - "ASSbb39cf90c91c_perf_overallchar_2": 1, - "ASSbb39cf90c91c_perf_overallchar_3": 1, - "ASSbb39cf90c91c_clm_end": "2020-03-10 16:37:03", - "ASSbb39cf90c91c_rowuuid": "79a58067-4d44-40d2-85c9-89f027885ea0" - }, - { - "REG_surveyid": "7c98a4cc-39f6-4c8f-9228-c30fac341a58", - "REG_originid": "ODKTOOLS", - "REG_clm_deviceimei": "359703072118926", - "REG_clm_start": "2020-03-10 16:20:37", - "REG_qst162": "9", - "REG_farmername": "Martin Nketiah ", - "REG_gender": 1, - "REG_clm_end": "2020-03-10 16:27:39", - "REG_rowuuid": "825fa4f5-2cb7-4861-b639-ca18312523d9", - "ASSa835e1bb425d_surveyid": "056b3029-884c-4340-b3a4-0958337e9a8d", - "ASSa835e1bb425d_originid": "ODKTOOLS", - "ASSa835e1bb425d_clm_deviceimei": "867128035634212", - "ASSa835e1bb425d_clm_start": "2020-03-10 22:44:04", - "ASSa835e1bb425d_qst163": 9, - "ASSa835e1bb425d_char_intelligence_pos": 2, - "ASSa835e1bb425d_char_intelligence_neg": 3, - "ASSa835e1bb425d_clm_end": "2020-03-10 22:44:10", - "ASSa835e1bb425d_rowuuid": "e1a2f1d2-f91c-4d81-a3a6-2cf2725c9099", - "ASSbb39cf90c91c_surveyid": "32c9bee8-8055-4301-a5dd-eec39b4a4793", - "ASSbb39cf90c91c_originid": "ODKTOOLS", - "ASSbb39cf90c91c_clm_deviceimei": "359703072118926", - "ASSbb39cf90c91c_clm_start": "2020-03-10 16:39:07", - "ASSbb39cf90c91c_qst163": 9, - "ASSbb39cf90c91c_char_overallperf_pos": 3, - "ASSbb39cf90c91c_char_overallperf_neg": 1, - "ASSbb39cf90c91c_perf_overallchar_1": 2, - "ASSbb39cf90c91c_perf_overallchar_2": 1, - "ASSbb39cf90c91c_perf_overallchar_3": 1, - "ASSbb39cf90c91c_clm_end": "2020-03-10 16:41:45", - "ASSbb39cf90c91c_rowuuid": "15266521-bcfa-481a-9ea1-9f7b9328a904" - } - ], - "importantfields": [ - { - "type": "PackageID", - "field": "REG_QST162", - "desc": "Package ID" - }, - { - "type": "FarmerName", - "field": "REG_farmername", - "desc": "Name of registered farmer" - }, - { - "type": "OverallCharPos", - "field": "ASSbb39cf90c91c_char_overallperf_pos", - "desc": "Over all characteristic positive" - }, - { - "type": "OverallCharNeg", - "field": "ASSbb39cf90c91c_char_overallperf_neg", - "desc": "Over all characteristic negative" - }, - { - "type": "OverallPerf1", - "field": "ASSbb39cf90c91c_perf_overallchar_1", - "desc": "Over all performance of A against current" - }, - { - "type": "OverallPerf2", - "field": "ASSbb39cf90c91c_perf_overallchar_2", - "desc": "Over all performance of B against current" - }, - { - "type": "OverallPerf3", - "field": "ASSbb39cf90c91c_perf_overallchar_3", - "desc": "Over all performance of C against current" - } - ] -} \ No newline at end of file diff --git a/dev/data/techapp/data.json b/dev/data/techapp/data.json deleted file mode 100644 index f8ff2b9..0000000 --- a/dev/data/techapp/data.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "Characteristics": [ - { - "name": "Sobre usabilidad", - "id": 1057, - "vars": [ - { - "name": "ASS4190297175ce_char_usabilidad_pos" - }, - { - "name": "ASS4190297175ce_char_usabilidad_neg" - } - ] - }, - { - "name": "Sobre comunicación", - "id": 1058, - "vars": [ - { - "name": "ASS4190297175ce_char_comunicacion_pos" - }, - { - "name": "ASS4190297175ce_char_comunicacion_neg" - } - ] - }, - { - "name": "Overall Characteristic", - "id": 204, - "vars": [ - { - "name": "ASS4190297175ce_char_overallperf_pos" - }, - { - "name": "ASS4190297175ce_char_overallperf_neg" - } - ] - } - ], - "Performance": [ - { - "name": "Overall performace", - "id": 205, - "vars": [ - { - "name": "ASS4190297175ce_perf_overallchar_1" - }, - { - "name": "ASS4190297175ce_perf_overallchar_2" - }, - { - "name": "ASS4190297175ce_perf_overallchar_3" - } - ] - } - ], - "Explanatory": [ - { - "name": "¿Utiliza Whatsapp con ' ?", - "id": 1051, - "vars": "REG_p3p" - } - ] -} \ No newline at end of file diff --git a/dev/data/techapp/info.json b/dev/data/techapp/info.json deleted file mode 100644 index d530174..0000000 --- a/dev/data/techapp/info.json +++ /dev/null @@ -1,1312 +0,0 @@ -{ - "project": { - "user_name": "bmadriz", - "project_cod": "ProyectoCompleto", - "project_name": "አማርኛ amarəñña", - "project_abstract": "አማርኛ amarəñña", - "project_tags": "አማርኛ amarəñña", - "project_pi": "Brandón français", - "project_piemail": "b.madriz@cgiar.org", - "project_active": 1, - "project_public": 0, - "project_dashboard": 1, - "project_regstatus": 2, - "project_assstatus": 0, - "project_createcomb": 0, - "project_createpkgs": 0, - "project_numobs": 10, - "project_numcom": 3, - "project_lat": "9.90471351", - "project_lon": "-83.685279", - "project_creationdate": "2020-02-05 13:56:17", - "project_localvariety": 1, - "extra": null - }, - "registry": { - "lkptables": [ - { - "name": "REG_lkpp3p", - "desc": "Lookup table (¿Utiliza Whatsapp?)", - "fields": [ - { - "name": "p3p_cod", - "desc": "Code", - "key": "true" - }, - { - "name": "p3p_des", - "desc": "Description", - "key": null - } - ], - "values": [ - { - "p3p_cod": 1, - "p3p_des": "Si" - }, - { - "p3p_cod": 2, - "p3p_des": "No" - } - ] - } - ], - "fields": [ - { - "name": "surveyid", - "odktype": "", - "desc": "Submission ID", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "originid", - "odktype": "", - "desc": "Origin", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "_submitted_by", - "odktype": "text", - "desc": "Submitted by", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "_submitted_date", - "odktype": "datetime", - "desc": "Submitted date", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "_geopoint", - "odktype": "geopoint", - "desc": "GPS point", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "clm_deviceimei", - "odktype": "deviceid", - "desc": "Device IMEI", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "clm_start", - "odktype": "start", - "desc": "Start of survey", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "qst162", - "odktype": "barcode", - "desc": "Package code", - "key": "true", - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "farmername", - "odktype": "text", - "desc": "Farmer name", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "cat", - "odktype": "integer", - "desc": "Cuantos años tiene ?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "p3p", - "odktype": "select_one p3p_opts", - "desc": "¿Utiliza Whatsapp?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "REG_lkpp3p", - "rfield": "p3p_cod" - }, - { - "name": "vivienda", - "odktype": "geopoint", - "desc": "Donde está ubicado su hogar", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "clm_end", - "odktype": "end", - "desc": "End of survey", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "rowuuid", - "odktype": "", - "desc": "Unique Row Identifier (UUID)", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - } - ] - }, - "assessments": [ - { - "code": "4190297175ce", - "desc": "Evalucion de aplicaciones", - "lkptables": [ - { - "name": "ASS4190297175ce_lkpqst163", - "desc": "Lookup table (Select the farmer)", - "fields": [ - { - "name": "qst163_cod", - "desc": "Code", - "key": "true" - }, - { - "name": "qst163_des", - "desc": "Description", - "key": null - } - ], - "values": [ - { - "qst163_cod": 1, - "qst163_des": "P:1-Brandon" - }, - { - "qst163_cod": 2, - "qst163_des": "P:2-Lucia" - }, - { - "qst163_cod": 3, - "qst163_des": "P:3-Hugo" - }, - { - "qst163_cod": 4, - "qst163_des": "P:4-Maria" - }, - { - "qst163_cod": 5, - "qst163_des": "P:5-Keilyn" - }, - { - "qst163_cod": 6, - "qst163_des": "P:6-Valeria" - }, - { - "qst163_cod": 7, - "qst163_des": "P:7-Ashley" - }, - { - "qst163_cod": 8, - "qst163_des": "P:8-Josue" - }, - { - "qst163_cod": 9, - "qst163_des": "P:9-Pablo" - }, - { - "qst163_cod": 10, - "qst163_des": "P:10-Juan" - } - ] - }, - { - "name": "ASS4190297175ce_lkpchar_usabilidad_pos", - "desc": "Lookup table (Cúal aplicación es más fácil de usar ?)", - "fields": [ - { - "name": "char_usabilidad_pos_cod", - "desc": "Code", - "key": "true" - }, - { - "name": "char_usabilidad_pos_des", - "desc": "Description", - "key": null - } - ], - "values": [ - { - "char_usabilidad_pos_cod": 1, - "char_usabilidad_pos_des": "Option A" - }, - { - "char_usabilidad_pos_cod": 2, - "char_usabilidad_pos_des": "Option B" - }, - { - "char_usabilidad_pos_cod": 3, - "char_usabilidad_pos_des": "Option C" - } - ] - }, - { - "name": "ASS4190297175ce_lkpperf_overallchar_1", - "desc": "Lookup table (Overall, whichone is best A or what you usually use?)", - "fields": [ - { - "name": "perf_overallchar_1_cod", - "desc": "Code", - "key": "true" - }, - { - "name": "perf_overallchar_1_des", - "desc": "Description", - "key": null - } - ], - "values": [ - { - "perf_overallchar_1_cod": 1, - "perf_overallchar_1_des": "Better" - }, - { - "perf_overallchar_1_cod": 2, - "perf_overallchar_1_des": "Worst" - } - ] - } - ], - "fields": [ - { - "name": "surveyid", - "odktype": "", - "desc": "Submission ID", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "originid", - "odktype": "", - "desc": "Origin", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "_submitted_by", - "odktype": "text", - "desc": "Submitted by", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "_submitted_date", - "odktype": "datetime", - "desc": "Submitted date", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "_geopoint", - "odktype": "geopoint", - "desc": "GPS point", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "clm_deviceimei", - "odktype": "deviceid", - "desc": "Device IMEI", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "clm_start", - "odktype": "start", - "desc": "Start of survey", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "qst163", - "odktype": "select_one qst163_opts", - "desc": "Select the farmer", - "key": "true", - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASS4190297175ce_lkpqst163", - "rfield": "qst163_cod" - }, - { - "name": "char_usabilidad_pos", - "odktype": "select_one char_usabilidad_pos_opts", - "desc": "Cúal aplicación es más fácil de usar ?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASS4190297175ce_lkpchar_usabilidad_pos", - "rfield": "char_usabilidad_pos_cod" - }, - { - "name": "char_usabilidad_neg", - "odktype": "select_one char_usabilidad_neg_opts", - "desc": "Cúal aplicación es más dificil de usar ?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASS4190297175ce_lkpchar_usabilidad_pos", - "rfield": "char_usabilidad_pos_cod" - }, - { - "name": "char_comunicacion_pos", - "odktype": "select_one char_comunicacion_pos_opts", - "desc": "Cúal aplicación es más rápida para comunicarse con otra persona ?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASS4190297175ce_lkpchar_usabilidad_pos", - "rfield": "char_usabilidad_pos_cod" - }, - { - "name": "char_comunicacion_neg", - "odktype": "select_one char_comunicacion_neg_opts", - "desc": "Cúal aplicación es más lenta para comunicarse con otra persona ?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASS4190297175ce_lkpchar_usabilidad_pos", - "rfield": "char_usabilidad_pos_cod" - }, - { - "name": "char_overallperf_pos", - "odktype": "select_one char_overallperf_pos_opts", - "desc": "Overall, which option performed better?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASS4190297175ce_lkpchar_usabilidad_pos", - "rfield": "char_usabilidad_pos_cod" - }, - { - "name": "char_overallperf_neg", - "odktype": "select_one char_overallperf_neg_opts", - "desc": "Overall, which option performed worst?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASS4190297175ce_lkpchar_usabilidad_pos", - "rfield": "char_usabilidad_pos_cod" - }, - { - "name": "perf_overallchar_1", - "odktype": "select_one perf_overallchar_1_opts", - "desc": "Overall, whichone is best A or what you usually use?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASS4190297175ce_lkpperf_overallchar_1", - "rfield": "perf_overallchar_1_cod" - }, - { - "name": "perf_overallchar_2", - "odktype": "select_one perf_overallchar_2_opts", - "desc": "Overall, whichone is best B or what you usually use?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASS4190297175ce_lkpperf_overallchar_1", - "rfield": "perf_overallchar_1_cod" - }, - { - "name": "perf_overallchar_3", - "odktype": "select_one perf_overallchar_3_opts", - "desc": "Overall, whichone is best C or what you usually use?", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": "true", - "rtable": "ASS4190297175ce_lkpperf_overallchar_1", - "rfield": "perf_overallchar_1_cod" - }, - { - "name": "clm_end", - "odktype": "end", - "desc": "End of survey", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - }, - { - "name": "rowuuid", - "odktype": "", - "desc": "Unique Row Identifier (UUID)", - "key": null, - "isMultiSelect": null, - "multiSelectTable": null, - "rlookup": null, - "rtable": null, - "rfield": null - } - ] - } - ], - "packages": [ - { - "package_id": 1, - "farmername": "Brandon ", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Aplicaciones 2.0", - "alias_name": "Telegram" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Aplicaciones 2.0", - "alias_name": "Odk Collect" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Aplicaciones 2.0", - "alias_name": "Facebook" - } - ] - } - ] - }, - { - "package_id": 2, - "farmername": "Lucia", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Aplicaciones 2.0", - "alias_name": "Whatsapp" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Aplicaciones 2.0", - "alias_name": "Telegram" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Aplicaciones 2.0", - "alias_name": "Odk Collect" - } - ] - } - ] - }, - { - "package_id": 3, - "farmername": "Hugo", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Aplicaciones 2.0", - "alias_name": "Facebook" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Aplicaciones 2.0", - "alias_name": "Whatsapp" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Aplicaciones 2.0", - "alias_name": "Telegram" - } - ] - } - ] - }, - { - "package_id": 4, - "farmername": "Maria", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Aplicaciones 2.0", - "alias_name": "Odk Collect" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Aplicaciones 2.0", - "alias_name": "Facebook" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Aplicaciones 2.0", - "alias_name": "Whatsapp" - } - ] - } - ] - }, - { - "package_id": 5, - "farmername": "Keilyn", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Aplicaciones 2.0", - "alias_name": "Whatsapp" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Aplicaciones 2.0", - "alias_name": "Telegram" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Aplicaciones 2.0", - "alias_name": "Odk Collect" - } - ] - } - ] - }, - { - "package_id": 6, - "farmername": "Valeria", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Aplicaciones 2.0", - "alias_name": "Telegram" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Aplicaciones 2.0", - "alias_name": "Odk Collect" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Aplicaciones 2.0", - "alias_name": "Facebook" - } - ] - } - ] - }, - { - "package_id": 7, - "farmername": "Ashley", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Aplicaciones 2.0", - "alias_name": "Facebook" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Aplicaciones 2.0", - "alias_name": "Whatsapp" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Aplicaciones 2.0", - "alias_name": "Telegram" - } - ] - } - ] - }, - { - "package_id": 8, - "farmername": "Josue ", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Aplicaciones 2.0", - "alias_name": "Odk Collect" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Aplicaciones 2.0", - "alias_name": "Facebook" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Aplicaciones 2.0", - "alias_name": "Whatsapp" - } - ] - } - ] - }, - { - "package_id": 9, - "farmername": "Pablo", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Aplicaciones 2.0", - "alias_name": "Whatsapp" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Aplicaciones 2.0", - "alias_name": "Odk Collect" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Aplicaciones 2.0", - "alias_name": "Facebook" - } - ] - } - ] - }, - { - "package_id": 10, - "farmername": "Juan", - "comps": [ - { - "comb_order": 1, - "technologies": [ - { - "tech_name": "Aplicaciones 2.0", - "alias_name": "Telegram" - } - ] - }, - { - "comb_order": 2, - "technologies": [ - { - "tech_name": "Aplicaciones 2.0", - "alias_name": "Whatsapp" - } - ] - }, - { - "comb_order": 3, - "technologies": [ - { - "tech_name": "Aplicaciones 2.0", - "alias_name": "Odk Collect" - } - ] - } - ] - } - ], - "specialfields": [ - { - "type": "Characteristic", - "name": "ASS4190297175ce_char_usabilidad_pos", - "desc": "Cúal aplicación es más fácil de usar ?" - }, - { - "type": "Characteristic", - "name": "ASS4190297175ce_char_usabilidad_neg", - "desc": "Cúal aplicación es más dificil de usar ?" - }, - { - "type": "Characteristic", - "name": "ASS4190297175ce_char_comunicacion_pos", - "desc": "Cúal aplicación es más rápida para comunicarse con otra persona ?" - }, - { - "type": "Characteristic", - "name": "ASS4190297175ce_char_comunicacion_neg", - "desc": "Cúal aplicación es más lenta para comunicarse con otra persona ?" - }, - { - "type": "Characteristic", - "name": "ASS4190297175ce_char_overallperf_pos", - "desc": "Overall, which option performed better?" - }, - { - "type": "Characteristic", - "name": "ASS4190297175ce_char_overallperf_neg", - "desc": "Overall, which option performed worst?" - }, - { - "type": "Performance", - "name": "ASS4190297175ce_perf_overallchar_1", - "desc": "Overall, whichone is best A or what you usually use?" - }, - { - "type": "Performance", - "name": "ASS4190297175ce_perf_overallchar_2", - "desc": "Overall, whichone is best B or what you usually use?" - }, - { - "type": "Performance", - "name": "ASS4190297175ce_perf_overallchar_3", - "desc": "Overall, whichone is best C or what you usually use?" - } - ], - "data": [ - { - "REG_surveyid": "7cff5672-7189-4b24-9ff1-988866e9be33", - "REG_originid": "ODKTOOLS", - "REG__submitted_by": "victor", - "REG__submitted_date": "2020-02-05 14:18:17", - "REG__geopoint": null, - "REG_clm_deviceimei": "867128035634212", - "REG_clm_start": "2020-02-05 14:15:00", - "REG_qst162": "1", - "REG_farmername": "Brandon ", - "REG_cat": 25, - "REG_p3p": 1, - "REG_vivienda": "9.8919698 -83.6526647 0.0 20.0", - "REG_clm_end": "2020-02-05 14:15:52", - "REG_rowuuid": "415bbb1b-ed28-493c-aa78-fdf1f50441f8", - "ASS4190297175ce_surveyid": "193708a3-bc69-47c3-93d6-a034e50a97bc", - "ASS4190297175ce_originid": "ODKTOOLS", - "ASS4190297175ce__submitted_by": "victor", - "ASS4190297175ce__submitted_date": "2020-02-05 14:32:42", - "ASS4190297175ce__geopoint": null, - "ASS4190297175ce_clm_deviceimei": "867128035634212", - "ASS4190297175ce_clm_start": "2020-02-05 14:25:57", - "ASS4190297175ce_qst163": 1, - "ASS4190297175ce_char_usabilidad_pos": 1, - "ASS4190297175ce_char_usabilidad_neg": 2, - "ASS4190297175ce_char_comunicacion_pos": 3, - "ASS4190297175ce_char_comunicacion_neg": 1, - "ASS4190297175ce_char_overallperf_pos": 1, - "ASS4190297175ce_char_overallperf_neg": 3, - "ASS4190297175ce_perf_overallchar_1": 1, - "ASS4190297175ce_perf_overallchar_2": 2, - "ASS4190297175ce_perf_overallchar_3": 2, - "ASS4190297175ce_clm_end": "2020-02-05 14:27:04", - "ASS4190297175ce_rowuuid": "84f6fdff-127a-4270-8b1b-d0fc03b9cf7d" - }, - { - "REG_surveyid": "a6900c64-9b7a-48d3-a11d-2a1c4f427b36", - "REG_originid": "ODKTOOLS", - "REG__submitted_by": "victor", - "REG__submitted_date": "2020-02-05 14:18:18", - "REG__geopoint": null, - "REG_clm_deviceimei": "867128035634212", - "REG_clm_start": "2020-02-05 14:18:56", - "REG_qst162": "10", - "REG_farmername": "Juan", - "REG_cat": 80, - "REG_p3p": 2, - "REG_vivienda": null, - "REG_clm_end": "2020-02-05 14:19:10", - "REG_rowuuid": "d6659aa0-84d0-484d-bfc3-71cdcc29813d", - "ASS4190297175ce_surveyid": "df5c997e-4a24-4804-84bc-007385a0ee57", - "ASS4190297175ce_originid": "ODKTOOLS", - "ASS4190297175ce__submitted_by": "victor", - "ASS4190297175ce__submitted_date": "2020-02-05 14:32:43", - "ASS4190297175ce__geopoint": null, - "ASS4190297175ce_clm_deviceimei": "867128035634212", - "ASS4190297175ce_clm_start": "2020-02-05 14:31:13", - "ASS4190297175ce_qst163": 10, - "ASS4190297175ce_char_usabilidad_pos": 2, - "ASS4190297175ce_char_usabilidad_neg": 3, - "ASS4190297175ce_char_comunicacion_pos": 1, - "ASS4190297175ce_char_comunicacion_neg": 2, - "ASS4190297175ce_char_overallperf_pos": 2, - "ASS4190297175ce_char_overallperf_neg": 3, - "ASS4190297175ce_perf_overallchar_1": 1, - "ASS4190297175ce_perf_overallchar_2": 1, - "ASS4190297175ce_perf_overallchar_3": 2, - "ASS4190297175ce_clm_end": "2020-02-05 14:31:45", - "ASS4190297175ce_rowuuid": "4f63174c-6e18-4b6a-a970-2aa3cbdbee1c" - }, - { - "REG_surveyid": "a5f73907-36fc-4253-940a-a9eee0b8786a", - "REG_originid": "ODKTOOLS", - "REG__submitted_by": "victor", - "REG__submitted_date": "2020-02-05 14:18:17", - "REG__geopoint": null, - "REG_clm_deviceimei": "867128035634212", - "REG_clm_start": "2020-02-05 14:15:55", - "REG_qst162": "2", - "REG_farmername": "Lucia", - "REG_cat": 49, - "REG_p3p": 1, - "REG_vivienda": null, - "REG_clm_end": "2020-02-05 14:16:45", - "REG_rowuuid": "8e0640a9-855c-488f-91b1-cba70144469b", - "ASS4190297175ce_surveyid": "244cf8a6-4620-4123-9ebf-82121f2ff638", - "ASS4190297175ce_originid": "ODKTOOLS", - "ASS4190297175ce__submitted_by": "victor", - "ASS4190297175ce__submitted_date": "2020-02-05 14:32:42", - "ASS4190297175ce__geopoint": null, - "ASS4190297175ce_clm_deviceimei": "867128035634212", - "ASS4190297175ce_clm_start": "2020-02-05 14:27:07", - "ASS4190297175ce_qst163": 2, - "ASS4190297175ce_char_usabilidad_pos": 1, - "ASS4190297175ce_char_usabilidad_neg": 3, - "ASS4190297175ce_char_comunicacion_pos": 1, - "ASS4190297175ce_char_comunicacion_neg": 3, - "ASS4190297175ce_char_overallperf_pos": 1, - "ASS4190297175ce_char_overallperf_neg": 3, - "ASS4190297175ce_perf_overallchar_1": 1, - "ASS4190297175ce_perf_overallchar_2": 1, - "ASS4190297175ce_perf_overallchar_3": 2, - "ASS4190297175ce_clm_end": "2020-02-05 14:27:38", - "ASS4190297175ce_rowuuid": "0cb54761-c3db-4c30-befa-410fa55816b5" - }, - { - "REG_surveyid": "28605a36-2f06-46e9-811b-46275f8a1af6", - "REG_originid": "ODKTOOLS", - "REG__submitted_by": "victor", - "REG__submitted_date": "2020-02-05 14:18:17", - "REG__geopoint": null, - "REG_clm_deviceimei": "867128035634212", - "REG_clm_start": "2020-02-05 14:16:49", - "REG_qst162": "3", - "REG_farmername": "Hugo", - "REG_cat": 49, - "REG_p3p": 1, - "REG_vivienda": null, - "REG_clm_end": "2020-02-05 14:17:03", - "REG_rowuuid": "e8c19810-994d-44dc-815f-f1045736051b", - "ASS4190297175ce_surveyid": "cf94aef8-7631-4bf3-959e-7b4a3812b0ef", - "ASS4190297175ce_originid": "ODKTOOLS", - "ASS4190297175ce__submitted_by": "victor", - "ASS4190297175ce__submitted_date": "2020-02-05 14:32:42", - "ASS4190297175ce__geopoint": null, - "ASS4190297175ce_clm_deviceimei": "867128035634212", - "ASS4190297175ce_clm_start": "2020-02-05 14:27:40", - "ASS4190297175ce_qst163": 3, - "ASS4190297175ce_char_usabilidad_pos": 2, - "ASS4190297175ce_char_usabilidad_neg": 1, - "ASS4190297175ce_char_comunicacion_pos": 2, - "ASS4190297175ce_char_comunicacion_neg": 1, - "ASS4190297175ce_char_overallperf_pos": 2, - "ASS4190297175ce_char_overallperf_neg": 1, - "ASS4190297175ce_perf_overallchar_1": 2, - "ASS4190297175ce_perf_overallchar_2": 1, - "ASS4190297175ce_perf_overallchar_3": 1, - "ASS4190297175ce_clm_end": "2020-02-05 14:28:12", - "ASS4190297175ce_rowuuid": "e3d4273d-51f2-4b12-bb4f-2e69f366d96c" - }, - { - "REG_surveyid": "550d38cf-700f-49e7-9218-105d7998cbb2", - "REG_originid": "ODKTOOLS", - "REG__submitted_by": "victor", - "REG__submitted_date": "2020-02-05 14:18:17", - "REG__geopoint": null, - "REG_clm_deviceimei": "867128035634212", - "REG_clm_start": "2020-02-05 14:17:06", - "REG_qst162": "4", - "REG_farmername": "Maria", - "REG_cat": 27, - "REG_p3p": 2, - "REG_vivienda": null, - "REG_clm_end": "2020-02-05 14:17:19", - "REG_rowuuid": "b8f0fbdd-b174-41b1-a049-5d24900f0040", - "ASS4190297175ce_surveyid": "fceb9a22-b937-4fb6-bb70-ad25f0ce35a9", - "ASS4190297175ce_originid": "ODKTOOLS", - "ASS4190297175ce__submitted_by": "victor", - "ASS4190297175ce__submitted_date": "2020-02-05 14:32:42", - "ASS4190297175ce__geopoint": null, - "ASS4190297175ce_clm_deviceimei": "867128035634212", - "ASS4190297175ce_clm_start": "2020-02-05 14:28:14", - "ASS4190297175ce_qst163": 4, - "ASS4190297175ce_char_usabilidad_pos": 3, - "ASS4190297175ce_char_usabilidad_neg": 1, - "ASS4190297175ce_char_comunicacion_pos": 3, - "ASS4190297175ce_char_comunicacion_neg": 1, - "ASS4190297175ce_char_overallperf_pos": 3, - "ASS4190297175ce_char_overallperf_neg": 1, - "ASS4190297175ce_perf_overallchar_1": 2, - "ASS4190297175ce_perf_overallchar_2": 2, - "ASS4190297175ce_perf_overallchar_3": 1, - "ASS4190297175ce_clm_end": "2020-02-05 14:28:47", - "ASS4190297175ce_rowuuid": "7f9210e2-537a-431b-bac0-797cee02ee29" - }, - { - "REG_surveyid": "3950572b-0fe2-4d4f-8edc-bc3feda245d0", - "REG_originid": "ODKTOOLS", - "REG__submitted_by": "victor", - "REG__submitted_date": "2020-02-05 14:18:17", - "REG__geopoint": null, - "REG_clm_deviceimei": "867128035634212", - "REG_clm_start": "2020-02-05 14:17:24", - "REG_qst162": "5", - "REG_farmername": "Keilyn", - "REG_cat": 24, - "REG_p3p": 1, - "REG_vivienda": null, - "REG_clm_end": "2020-02-05 14:17:41", - "REG_rowuuid": "b0f15fda-e991-43fd-885f-e0c6c5d81988", - "ASS4190297175ce_surveyid": "e1cf2aae-02de-4ff9-b946-4678c3d4fbf9", - "ASS4190297175ce_originid": "ODKTOOLS", - "ASS4190297175ce__submitted_by": "victor", - "ASS4190297175ce__submitted_date": "2020-02-05 14:32:42", - "ASS4190297175ce__geopoint": null, - "ASS4190297175ce_clm_deviceimei": "867128035634212", - "ASS4190297175ce_clm_start": "2020-02-05 14:28:50", - "ASS4190297175ce_qst163": 5, - "ASS4190297175ce_char_usabilidad_pos": 1, - "ASS4190297175ce_char_usabilidad_neg": 3, - "ASS4190297175ce_char_comunicacion_pos": 2, - "ASS4190297175ce_char_comunicacion_neg": 1, - "ASS4190297175ce_char_overallperf_pos": 2, - "ASS4190297175ce_char_overallperf_neg": 3, - "ASS4190297175ce_perf_overallchar_1": 2, - "ASS4190297175ce_perf_overallchar_2": 1, - "ASS4190297175ce_perf_overallchar_3": 2, - "ASS4190297175ce_clm_end": "2020-02-05 14:29:20", - "ASS4190297175ce_rowuuid": "39079cb8-ee12-4625-8c70-da7863e3183c" - }, - { - "REG_surveyid": "d22ae5a7-8b95-4394-8a16-f65c0463463d", - "REG_originid": "ODKTOOLS", - "REG__submitted_by": "victor", - "REG__submitted_date": "2020-02-05 14:18:18", - "REG__geopoint": null, - "REG_clm_deviceimei": "867128035634212", - "REG_clm_start": "2020-02-05 14:17:43", - "REG_qst162": "6", - "REG_farmername": "Valeria", - "REG_cat": 13, - "REG_p3p": 1, - "REG_vivienda": null, - "REG_clm_end": "2020-02-05 14:17:58", - "REG_rowuuid": "e1bfa485-9d75-4dea-ae78-2a403b0151d9", - "ASS4190297175ce_surveyid": "4e354fb1-179a-49ad-bd76-add34e61ff2a", - "ASS4190297175ce_originid": "ODKTOOLS", - "ASS4190297175ce__submitted_by": "victor", - "ASS4190297175ce__submitted_date": "2020-02-05 14:32:42", - "ASS4190297175ce__geopoint": null, - "ASS4190297175ce_clm_deviceimei": "867128035634212", - "ASS4190297175ce_clm_start": "2020-02-05 14:29:22", - "ASS4190297175ce_qst163": 6, - "ASS4190297175ce_char_usabilidad_pos": 1, - "ASS4190297175ce_char_usabilidad_neg": 2, - "ASS4190297175ce_char_comunicacion_pos": 1, - "ASS4190297175ce_char_comunicacion_neg": 3, - "ASS4190297175ce_char_overallperf_pos": 1, - "ASS4190297175ce_char_overallperf_neg": 2, - "ASS4190297175ce_perf_overallchar_1": 1, - "ASS4190297175ce_perf_overallchar_2": 2, - "ASS4190297175ce_perf_overallchar_3": 2, - "ASS4190297175ce_clm_end": "2020-02-05 14:29:56", - "ASS4190297175ce_rowuuid": "033d12a8-f90b-4dc4-856f-df1158075fbf" - }, - { - "REG_surveyid": "59b78b54-5710-44d9-9e7c-21d1bb0ea5aa", - "REG_originid": "ODKTOOLS", - "REG__submitted_by": "victor", - "REG__submitted_date": "2020-02-05 14:18:18", - "REG__geopoint": null, - "REG_clm_deviceimei": "867128035634212", - "REG_clm_start": "2020-02-05 14:18:04", - "REG_qst162": "7", - "REG_farmername": "Ashley", - "REG_cat": 6, - "REG_p3p": 2, - "REG_vivienda": null, - "REG_clm_end": "2020-02-05 14:18:21", - "REG_rowuuid": "facb9c0b-1049-4bc8-8e22-a8b404750128", - "ASS4190297175ce_surveyid": "b65ceb9b-de13-41c0-af91-e94e0a448a3a", - "ASS4190297175ce_originid": "ODKTOOLS", - "ASS4190297175ce__submitted_by": "victor", - "ASS4190297175ce__submitted_date": "2020-02-05 14:32:43", - "ASS4190297175ce__geopoint": null, - "ASS4190297175ce_clm_deviceimei": "867128035634212", - "ASS4190297175ce_clm_start": "2020-02-05 14:29:58", - "ASS4190297175ce_qst163": 7, - "ASS4190297175ce_char_usabilidad_pos": 1, - "ASS4190297175ce_char_usabilidad_neg": 2, - "ASS4190297175ce_char_comunicacion_pos": 3, - "ASS4190297175ce_char_comunicacion_neg": 1, - "ASS4190297175ce_char_overallperf_pos": 3, - "ASS4190297175ce_char_overallperf_neg": 1, - "ASS4190297175ce_perf_overallchar_1": 1, - "ASS4190297175ce_perf_overallchar_2": 1, - "ASS4190297175ce_perf_overallchar_3": 1, - "ASS4190297175ce_clm_end": "2020-02-05 14:30:28", - "ASS4190297175ce_rowuuid": "abfec105-ca1a-45a9-a09d-73d1c7eec945" - }, - { - "REG_surveyid": "ea55ef8d-4dc0-4025-9396-64bae8cfbcaa", - "REG_originid": "ODKTOOLS", - "REG__submitted_by": "victor", - "REG__submitted_date": "2020-02-05 14:18:18", - "REG__geopoint": null, - "REG_clm_deviceimei": "867128035634212", - "REG_clm_start": "2020-02-05 14:18:23", - "REG_qst162": "8", - "REG_farmername": "Josue ", - "REG_cat": 27, - "REG_p3p": 1, - "REG_vivienda": null, - "REG_clm_end": "2020-02-05 14:18:34", - "REG_rowuuid": "7d04375e-37fe-47f2-bc5b-d251b24cb9c3", - "ASS4190297175ce_surveyid": "c73d79ad-8194-45e3-820b-ed87c0514bd0", - "ASS4190297175ce_originid": "ODKTOOLS", - "ASS4190297175ce__submitted_by": "victor", - "ASS4190297175ce__submitted_date": "2020-02-05 14:32:43", - "ASS4190297175ce__geopoint": null, - "ASS4190297175ce_clm_deviceimei": "867128035634212", - "ASS4190297175ce_clm_start": "2020-02-05 14:30:30", - "ASS4190297175ce_qst163": 8, - "ASS4190297175ce_char_usabilidad_pos": 1, - "ASS4190297175ce_char_usabilidad_neg": 2, - "ASS4190297175ce_char_comunicacion_pos": 3, - "ASS4190297175ce_char_comunicacion_neg": 2, - "ASS4190297175ce_char_overallperf_pos": 1, - "ASS4190297175ce_char_overallperf_neg": 2, - "ASS4190297175ce_perf_overallchar_1": 1, - "ASS4190297175ce_perf_overallchar_2": 1, - "ASS4190297175ce_perf_overallchar_3": 1, - "ASS4190297175ce_clm_end": "2020-02-05 14:30:50", - "ASS4190297175ce_rowuuid": "08deedde-1a9c-46ef-a9bd-662f2da35600" - }, - { - "REG_surveyid": "ae69e424-7884-412b-a8a6-f12a154a6f40", - "REG_originid": "ODKTOOLS", - "REG__submitted_by": "victor", - "REG__submitted_date": "2020-02-05 14:18:18", - "REG__geopoint": null, - "REG_clm_deviceimei": "867128035634212", - "REG_clm_start": "2020-02-05 14:18:39", - "REG_qst162": "9", - "REG_farmername": "Pablo", - "REG_cat": 24, - "REG_p3p": 1, - "REG_vivienda": null, - "REG_clm_end": "2020-02-05 14:18:55", - "REG_rowuuid": "cf961829-9294-4561-baed-3ebbe6b8610c", - "ASS4190297175ce_surveyid": "24ef6c9a-28ac-4860-9a8e-732a12e8115a", - "ASS4190297175ce_originid": "ODKTOOLS", - "ASS4190297175ce__submitted_by": "victor", - "ASS4190297175ce__submitted_date": "2020-02-05 14:32:43", - "ASS4190297175ce__geopoint": null, - "ASS4190297175ce_clm_deviceimei": "867128035634212", - "ASS4190297175ce_clm_start": "2020-02-05 14:30:54", - "ASS4190297175ce_qst163": 9, - "ASS4190297175ce_char_usabilidad_pos": 1, - "ASS4190297175ce_char_usabilidad_neg": 2, - "ASS4190297175ce_char_comunicacion_pos": 1, - "ASS4190297175ce_char_comunicacion_neg": 2, - "ASS4190297175ce_char_overallperf_pos": 1, - "ASS4190297175ce_char_overallperf_neg": 2, - "ASS4190297175ce_perf_overallchar_1": 2, - "ASS4190297175ce_perf_overallchar_2": 1, - "ASS4190297175ce_perf_overallchar_3": 1, - "ASS4190297175ce_clm_end": "2020-02-05 14:31:11", - "ASS4190297175ce_rowuuid": "3cbfae01-a400-4d43-bae5-75dd268d642f" - } - ], - "importantfields": [ - { - "type": "PackageID", - "field": "REG_QST162", - "desc": "Package ID" - }, - { - "type": "FarmerName", - "field": "REG_farmername", - "desc": "Name of registered farmer" - }, - { - "type": "OverallCharPos", - "field": "ASS4190297175ce_char_overallperf_pos", - "desc": "Over all characteristic positive" - }, - { - "type": "OverallCharNeg", - "field": "ASS4190297175ce_char_overallperf_neg", - "desc": "Over all characteristic negative" - }, - { - "type": "OverallPerf1", - "field": "ASS4190297175ce_perf_overallchar_1", - "desc": "Over all performance of A against current" - }, - { - "type": "OverallPerf2", - "field": "ASS4190297175ce_perf_overallchar_2", - "desc": "Over all performance of B against current" - }, - { - "type": "OverallPerf3", - "field": "ASS4190297175ce_perf_overallchar_3", - "desc": "Over all performance of C against current" - } - ] -} \ No newline at end of file diff --git a/dev/out_platform_analysis/CR2020_proj_make_pars.R b/dev/out_platform_analysis/CR2020_proj_make_pars.R deleted file mode 100644 index 90cdf89..0000000 --- a/dev/out_platform_analysis/CR2020_proj_make_pars.R +++ /dev/null @@ -1,176 +0,0 @@ -## Packages #### -library("ClimMobTools") -library("gosset") -library("PlackettLuce") -library("partykit") -library("qvcalc") -library("psychotools") -library("jsonlite") -library("multcompView") -library("knitr") -library("rmarkdown") -library("pls") -library("gtools") -library("ggplot2") -library("igraph") -library("mapview") -library("ggrepel") -library("ggparty") -library("patchwork") -library("readxl") - -source(paste0("R/functions.R")) - -# Read the data - -# ................................ -# Make list of parameters #### -charpattern <- c("_overallperf_", "_love_") -newname <- c("Overall Characteristic","Love") - -chars <- data.frame() - -for(i in seq_along(charpattern)){ - index <- charpattern[i] - index <- which(grepl(index, names(cmdata))) - - ch <- data.frame(quest_1 = names(cmdata)[index[1]], - quest_2 = names(cmdata)[index[2]], - n_quest = 2, - char_full = newname[i], - char = newname[i]) - - chars <- rbind(chars, ch) - -} - - -perf <- data.frame(quest_1 = "finalevaluation_ASS90dd6f89c1df_perf_overallchar_1", - quest_2 = "finalevaluation_ASS90dd6f89c1df_perf_overallchar_2", - quest_3 = "finalevaluation_ASS90dd6f89c1df_perf_overallchar_3", - n_quest = 3, - perf_full = "Overall performance", - perf = "overall_performance") - -expl <- data.frame(name = c("What is the gender?", "Longitude", "Latitude"), - id = NA, - vars = c("registration_REG_gender","registration_REG_lon","registration_REG_lat")) - - - -pars <- list(chars = chars, expl = expl, perf = perf) -rm(ch, chars, expl, perf, i, charpattern, key, newname, index) -# ................................................................ -# ................................................................ -# ................................................................ -# ................................................................ -# Dataset parameters #### -option <- "color" -ranker <- "participant" -extension <- "docx" -language <- "en" -fullpath <- getwd() - -Option <- ClimMobTools:::.title_case(option) - -# the project name -projname <- which(grepl("project_name", names(cmdata))) -projname <- cmdata[1, projname] - -pathname <- paste0("dev/output/",projname,"/") - -# variables to produce split of results into multiple groups. -expvar <- pars$expl$vars -expvar_full <- pars$expl$name - -# number of rankers -nranker <- nrow(cmdata) - -itemnames <- cmdata[, grepl("package_item", names(cmdata))] - -# Number of items each participant evaluates -ncomp <- ncol(itemnames) - -# Name of items tested -items <- unique(sort(unlist(itemnames))) - -# Number o items tested -nitems <- length(items) - -# Number of characteristics (traits) avaluated -ntrait <- nrow(pars$chars) - -# Colnames where items are placed within cmdata -itemnames <- names(itemnames) - -# number of questions -nquest <- pars$chars$n_quest[1] - -# define which function should be called to build the rankings -if (ncomp == 3) { - rankwith <- "rank_tricot" -} - -if (ncomp > 3) { - rankwith <- "rank_numeric" -} - -# ................................................................ -# ................................................................ -# Statistic parameters #### -# Set maximum proportion of missing data allowed in a characteristic evaluation -# before it is excluded. -missper <- 0.5 - -# Set minimum proportion of valid observations in explanatory variables -missexp <- 0.8 - -# Set minimum split size for tree models. -minsplit <- ceiling(nrow(cmdata) * 0.1) -if (minsplit < 10) {minsplit <- 10} -# Set alpha -sig_level <- 0.1 - -# method for adjustments for confidence intervals and setting widths for comparison. -# Defaults to B-H (Benjamini an Hochberg). Any of the methods from p.adjust will work here -# though: "holm", "hochberg", "hommel", "bonferroni", "BH", "BY", "fdr", "none" -ci_adjust <- "BH" - -# confidence interval level for comparison plots with error bars. 84% to give an -# approximate 5% significance level for comparisons of non-overlapping confidence -# intervals (e.g. https://www.ncbi.nlm.nih.gov/pmc/articles/PMC524673/) -# should probably allow alternatives to be 0.9, 0.95 or 0.99 -ci_level <- 0.84 - -# resolution of display items -dpi <- 250 -out_width <- "100%" - - -# participant report params -info_table_items <- c() #info.table.items <- c("variety 1", "variety 2", "variety 3") -info_table_info <- c() #info.table.info <- c("plant it early", "good in high altitude", "") -info_table_typeinfo <- "" #info.table.typeinfo <- "expert advice" - -# ................................................................ -# ................................................................ -# Run analysis #### -dir.create(pathname, showWarnings = FALSE, recursive = TRUE) -source(paste0("R/analysis_climmob.R")) - -# ................................................................ -# ................................................................ -# Write outputs #### -rankers <- ClimMobTools:::.pluralize(ranker) -options <- ClimMobTools:::.pluralize(option) -nothertraits <- ntrait - 1 - -#determine format based on extensions -output_format <- ifelse(extension == "docx","word_document", - paste0(extension,"_document")) - -# produce main report if output type is "summary" or "both" -rmarkdown::render(paste0("report/", language, "/mainreport/mainreport.Rmd"), - output_dir = pathname, - output_format = output_format, - output_file = paste0(projname,"_report",".",extension)) diff --git a/dev/out_platform_analysis/ethiopia_proj_make_pars.R b/dev/out_platform_analysis/ethiopia_proj_make_pars.R deleted file mode 100644 index 8db22ef..0000000 --- a/dev/out_platform_analysis/ethiopia_proj_make_pars.R +++ /dev/null @@ -1,194 +0,0 @@ -## Packages #### -library("ClimMobTools") -library("gosset") -library("PlackettLuce") -library("partykit") -library("qvcalc") -library("psychotools") -library("jsonlite") -library("multcompView") -library("knitr") -library("rmarkdown") -library("pls") -library("gtools") -library("ggplot2") -library("igraph") -library("mapview") -library("ggrepel") -library("ggparty") -library("patchwork") - -source(paste0("R/functions.R")) - - -key <- "096a48e3-b2fa-40ce-b3bf-c3f91edc0b55" - -cmdata <- getDataCM(key, "ARDBFB2019", pivot.wider = TRUE, tidynames = FALSE) - -# replace randomization -pkg <- read.csv("dev/data/ARDBFB2019/pkgs_ILRIDBFB2019.csv") -pkg[,1] <- gsub("Package #","", pkg[,1]) -pkg[2:4] <- lapply(pkg[2:4], function(x){ - gsub("\n| ","",x) -}) -names(pkg) <- c("id",paste0("package_item_", LETTERS[1:3])) - -cmdata <- cmdata[,-match(paste0("package_item_", LETTERS[1:3]), names(cmdata))] - -# combine new packages -cmdata <- merge(cmdata, pkg, by = "id", all.x = TRUE) - -cmdata - -#write.csv(cmdata, "dev/data/ARDBFB2019/ARDBFB2019_data.csv", row.names = FALSE) - -charpattern <- c("_overallperf_","_frf_","_prf_","_drf_","_emf_","_phf_","_tilf_","_splf_","_nsf_","_gyf_") -newname <- c("Overall Characteristic","Frost tolerant","Pest tolerant","Disease resistance","Earlines", - "Plant height","Tillering","Spike length","Seeds per spike","Grain yield") - -chars <- data.frame() - -for(i in seq_along(charpattern)){ - index <- charpattern[i] - index <- which(grepl(index, names(cmdata))) - - ch <- data.frame(quest_1 = names(cmdata)[index[1]], - quest_2 = names(cmdata)[index[2]], - n_quest = 2, - char_full = newname[i], - char = newname[i]) - - chars <- rbind(chars, ch) - -} - - -perf <- data.frame(quest_1 = "farmersevaluationsecond_ASS8d8942ff1f4c_perf_overallchar_1", - quest_2 = "farmersevaluationsecond_ASS8d8942ff1f4c_perf_overallchar_2", - quest_3 = "farmersevaluationsecond_ASS8d8942ff1f4c_perf_overallchar_3", - n_quest = 3, - perf_full = "Overall performance", - perf = "overall_performance") - -expl <- data.frame(name = c("What is the gender?","Main crop", "Longitude", "Latitude"), - id = NA, - vars = c("registration_REG_gender","geopoint_ASSec43b9cf61d6_pc","geopoint_ASSec43b9cf61d6_lon","geopoint_ASSec43b9cf61d6_lat")) - - - -pars <- list(chars = chars, expl = expl, perf = perf) -rm(ch, chars, expl, perf, i, charpattern, key, newname, index, pkg) -# ................................................................ -# ................................................................ -# ................................................................ -# ................................................................ -# Dataset parameters #### -option <- "variety" -ranker <- "farmer" -extension <- "docx" -language <- "en" -fullpath <- getwd() - -Option <- ClimMobTools:::.title_case(option) - -# the project name -projname <- which(grepl("project_name", names(cmdata))) -projname <- cmdata[1, projname] - -pathname <- paste0("dev/output/",projname,"/") - -# variables to produce split of results into multiple groups. -expvar <- pars$expl$vars -expvar_full <- pars$expl$name - -# number of rankers -nranker <- nrow(cmdata) - -itemnames <- cmdata[, grepl("package_item", names(cmdata))] - -# Number of items each participant evaluates -ncomp <- ncol(itemnames) - -# Name of items tested -items <- unique(sort(unlist(itemnames))) - -# Number o items tested -nitems <- length(items) - -# Number of characteristics (traits) avaluated -ntrait <- nrow(pars$chars) - -# Colnames where items are placed within cmdata -itemnames <- names(itemnames) - -# number of questions -nquest <- pars$chars$n_quest[1] - -# define which function should be called to build the rankings -if (ncomp == 3) { - rankwith <- "rank_tricot" -} - -if (ncomp > 3) { - rankwith <- "rank_numeric" -} - -# ................................................................ -# ................................................................ -# Statistic parameters #### -# Set maximum proportion of missing data allowed in a characteristic evaluation -# before it is excluded. -missper <- 0.5 - -# Set minimum proportion of valid observations in explanatory variables -missexp <- 0.8 - -# Set minimum split size for tree models. -minsplit <- ceiling(nrow(cmdata) * 0.1) -if (minsplit < 10) {minsplit <- 10} -# Set alpha -sig_level <- 0.1 - -# method for adjustments for confidence intervals and setting widths for comparison. -# Defaults to B-H (Benjamini an Hochberg). Any of the methods from p.adjust will work here -# though: "holm", "hochberg", "hommel", "bonferroni", "BH", "BY", "fdr", "none" -ci_adjust <- "BH" - -# confidence interval level for comparison plots with error bars. 84% to give an -# approximate 5% significance level for comparisons of non-overlapping confidence -# intervals (e.g. https://www.ncbi.nlm.nih.gov/pmc/articles/PMC524673/) -# should probably allow alternatives to be 0.9, 0.95 or 0.99 -ci_level <- 0.84 - -# resolution of display items -dpi <- 250 -out_width <- "100%" - - -# participant report params -info_table_items <- c() #info.table.items <- c("variety 1", "variety 2", "variety 3") -info_table_info <- c() #info.table.info <- c("plant it early", "good in high altitude", "") -info_table_typeinfo <- "" #info.table.typeinfo <- "expert advice" - -# ................................................................ -# ................................................................ -# Run analysis #### -dir.create(pathname, showWarnings = FALSE, recursive = TRUE) -source(paste0("R/analysis_climmob.R")) - -# ................................................................ -# ................................................................ -# Write outputs #### -rankers <- ClimMobTools:::.pluralize(ranker) -options <- ClimMobTools:::.pluralize(option) -nothertraits <- ntrait - 1 - -#determine format based on extensions -output_format <- ifelse(extension == "docx","word_document", - paste0(extension,"_document")) - -# produce main report if output type is "summary" or "both" -rmarkdown::render(paste0("report/", language, "/mainreport/mainreport.Rmd"), - output_dir = pathname, - output_format = output_format, - output_file = paste0(projname,"_report",".",extension)) diff --git a/dev/out_platform_analysis/nextgencassava.R b/dev/out_platform_analysis/nextgencassava.R deleted file mode 100644 index bdf5bfd..0000000 --- a/dev/out_platform_analysis/nextgencassava.R +++ /dev/null @@ -1,193 +0,0 @@ -## Packages #### -library("readxl") -library("here") -library("janitor") - -list.files("data") - -dt <- read_excel("dev/data/nextgencassava/nextgencassava.xlsx", na = c(".", " ")) - -dt <- as.data.frame(dt) - -# ............................. -# ............................. -# fix col names in dt #### -n1 <- as.vector(names(dt)) -n2 <- as.vector(t(dt[1,])) -n3 <- as.vector(t(dt[2,])) - -n <- paste(n1, n2, "_", n3, collapse = ",") - -n <- gsub("NA|[...]|[/]| |[0-9]+", "", n) -n <- gsub("\\s*\\([^\\)]+\\)", "", n) - -n <- strsplit(tolower(n), ",")[[1]] - -index_w <- which(grepl("_worstoff", n)) - -chars <- n[index_w-1] - -chars <- gsub("_best","",chars) - -n[index_w] <- paste0(chars, n[index_w]) - -n <- gsub("imonth|month|off", "", n) - -n[15:24] <- paste0("first_month_", n[15:24]) - -n[25:36] <- paste0("third_month_", n[25:36]) - -n[37:48] <- paste0("sixth_month_", n[37:48]) - -n[49:58] <- paste0("nineth_month_", n[49:58]) - -n <- gsub("_$", "", n) - -names(dt) <- n - -# remove first two rows since it is the col names -dt <- dt[-c(1:2), ] - - -# ............................. -# ............................. -# fix variety names #### -vars <- paste0("variety", letters[1:3]) -itemnames <- unique(unlist(dt[, vars])) - -dt[, vars] <- lapply(dt[,vars], function(x) { - x <- gsub("[Cassava varieties: ]", "",x) - x <- gsub("[\r\n]", "", x) - x <- gsub("V", "", x) - x <- gsub(" ", "", x) - x <- gsub("ITA-", "IITA-", x) - x <- gsub("IIITA-", "IITA-", x) - x <- gsub("_[0-9]+$","", x) - x <- gsub("-[0-9]+$","", x) - x <- gsub("IITA", "", x) - x <- gsub("_", "", x) - x <- gsub("-", "", x) -}) - -dt <- dt[!is.na(dt$varietya), ] - -itemnames <- sort(unique(unlist(dt[, vars]))) - -itemnames - -# ............................. -# ............................. -# check explanatory variables -variables <- c("sex","communityme") - -dt[, variables[1]] <- ifelse(dt[, variables[1]] == "Male", "M", - ifelse(dt[, variables[1]] == "Female", "F", - dt[, variables[1]])) - -#keep <- dt$sex == "F" -#dt <- dt[keep, ] - -names(dt) - -# Organise colnames as required by ClimMob -names(dt)[names(dt)=="nineth_month_suitabilitytosoilandenvironment_best"] <- "overallperf_best" -names(dt)[names(dt)=="nineth_month_suitabilitytosoilandenvironment_worst"] <- "overallperf_worst" -names(dt)[names(dt)=="sex"] <- "REG_gender" -names(dt)[names(dt)=="varietya"] <- "package_item_A" -names(dt)[names(dt)=="varietyb"] <- "package_item_B" -names(dt)[names(dt)=="varietyc"] <- "package_item_C" - -# Gender -summary(as.factor(dt$REG_gender)) - -# Check item names -unique(unlist(dt[,paste0("package_item_", LETTERS[1:3])])) - -cmdata <- dt - -# Now fix the answers as required by ClimMob - -# ................................ -# Make list of parameters #### -charpattern <- union("overallperf", unique(gsub("_best|_worst","", names(dt)[15:56]))) -charpattern <- paste0(charpattern) -# newname <- c("Overall Characteristic","1st month overall","1st month germination", -# "1st month plant growth", "1st month weed competitiveness") -newname <- union("overall", unique(gsub("_best|_worst","", names(dt)[15:56]))) - -chars <- data.frame() - -for(i in seq_along(charpattern)){ - index <- charpattern[i] - index <- which(grepl(index, names(cmdata))) - - ch <- data.frame(quest_1 = names(cmdata)[index[1]], - quest_2 = names(cmdata)[index[2]], - n_quest = 2, - char_full = newname[i], - char = newname[i]) - - chars <- rbind(chars, ch) - -} - - -perf <- NULL - -expl <- data.frame(name = c("Gender","Community"), - id = NA, - vars = c("REG_gender","communityme")) - - -pars <- list(chars = chars, expl = expl, perf = perf) -rm(ch, dt, chars, expl, perf, i, charpattern, newname, index) - - -# remove ties -for(i in seq_along(pars$chars$quest_1)) { - - b <- pars$chars$quest_1[i] - w <- pars$chars$quest_2[i] - - o <- cmdata[, b] == cmdata[, w] - - o <- ifelse(is.na(o), TRUE, o) - - - cmdata[o, b] <- NA - cmdata[o, w] <- NA - - -} - -# get the arguments from -cmdata$project_name <- "Cassava" -tag <- "cassava" -pathname <- paste0("dev/output/",tag,"/") -infosheets <- FALSE -language <- "en" -extension <- "docx" -ranker <- "farmer" -option <- "variety" -fullpath <- getwd() - -# ................................................................ -# ................................................................ -# Run analysis #### -dir.create(pathname, showWarnings = FALSE, recursive = TRUE) - -source(paste0(fullpath, "/R/analysis_climmob.R")) - -# ................................................................ -# ................................................................ -# Write outputs #### -#determine format based on extensions -output_format <- ifelse(extension == "docx","word_document", - paste0(extension,"_document")) - -# produce main report if output type is "summary" or "both" -rmarkdown::render(paste0(fullpath, "/report/", language, "/mainreport/mainreport.Rmd"), - output_dir = pathname, - output_format = output_format, - output_file = paste0(projname,"_report",".",extension)) - diff --git a/dev/out_platform_analysis/run_climmobv2.R b/dev/out_platform_analysis/run_climmobv2.R deleted file mode 100644 index 86324e3..0000000 --- a/dev/out_platform_analysis/run_climmobv2.R +++ /dev/null @@ -1,145 +0,0 @@ -# Make pars for projects in ClimMob v2.1 -library("janitor") - -list.dirs("dev/data") - -path <- "dev/data/nic_apante_2015/" - -projname <- "nic_apante_2015" - -dt <- read.csv(paste0(path, projname, ".csv"), na.strings = c("")) -pkg <- read.csv(paste0(path,"paquete_", projname, ".csv"), na.strings = c("")) - -names(pkg) <- c("id", paste0("package_item_", LETTERS[1:3])) -pkg$package_project_name <- projname - -head(pkg) - -names(dt) <- make_clean_names(names(dt)) - -names(dt)[names(dt)=="codigo_paquetes"] <- "id" - -dt <- dt[!is.na(dt$id), ] - -dt <- merge(pkg, dt, by = "id", all.y = TRUE) - -class(dt) <- union('CM_df', class(dt)) - -nmdt <- names(dt) - -nmdt[nmdt=="genero_m_f" | nmdt=="gender_m_f"] <- "registration_REG_gender" - -nmdt[nmdt=="edad" | nmdt=="age"] <- "registration_REG_age" - -nmdt[nmdt=="nombre_del_padre_o_nombre_del_marido_esposa"] <- "registration_REG_father_name" - -nmdt[nmdt=="distrito_o_region"] <- "registration_REG_district" - -nmdt[nmdt=="nombre_y_apellidos"] <- "package_farmername" - -nmdt[nmdt=="localizacion_latitud"] <- "firstassess_lat" - -nmdt[nmdt=="localizacion_longitud"] <- "firstassess_lon" - -nmdt[nmdt=="fecha_de_siembra_yyyy_mm_dd"] <- "firstassess_planting_date" - -nmdt[nmdt=="fecha_de_cosecha_yyyy_mm_dd"] <- "firstassess_harvesting_date" - -nmdt[nmdt=="riego_si_no"] <- "firstassess_irrigation" - -nmdt[nmdt=="pendiente_alta_media_plana"] <- "firstassess_slope" - -nmdt[nmdt=="calidad_de_suelo_buena_mala_regular"] <- "firstassess_soil_quality" - -nmdt[nmdt=="cuanto_llovio_durante_la_epoca_de_cultivo_mucho_normal_poco_nada"] <- "firstassess_rain" - -nmdt[nmdt=="como_llovio_continua_intermitente_no_llovio_nada"] <- "firstassess_rain_how" - -nmdt[nmdt=="la_epoca_de_cultivo_fue_mas_caliente_o_mas_frio_que_de_costumbre_mas_caliente_de_lo_normal_como_siempre_mas_fria_de_lo_normal"] <- "firstassess_temperature_how" - - -names(dt) <- nmdt - -dt - -# look for the characteristics -chr <- which(grepl("caracteristica|characteristic", names(dt))) - -overall <- unlist(dt[1,chr]) -overall <- which(grepl("VS_Local", overall)) -overall <- chr[overall] - -chr <- chr[chr!=overall] - -chars <- data.frame() - -for(i in seq_along(chr)){ - index <- chr[i] - char_i <- dt[1, index] - - newmame_i <- make_clean_names(char_i) - newname_i <- gsub("_a_b_c","", newmame_i) - - names(dt)[index+1] <- paste0("ASS0dfe2b4467a3_char_", newname_i, "_pos") - names(dt)[index+2] <- paste0("ASS0dfe2b4467a3_char_", newname_i, "_neg") - - ch <- data.frame(quest_1 = paste0("ASS0dfe2b4467a3_char_", newname_i, "_pos"), - quest_2 = paste0("ASS0dfe2b4467a3_char_", newname_i, "_neg"), - n_quest = 2, - char_full = NA, - char = newname_i) - - chars <- rbind(chars, ch) - -} - -if (length(overall) > 0L) { - - - for(i in 1:3) { - dt[,overall + i] <- ifelse(dt[,overall + i] == "Mejor", "Better", - ifelse(dt[,overall + i] == "Peor", "Worse", dt[,overall + i])) - - names(dt)[overall+i] <- paste0("ASS0dfe2b4467a3_perf_overallchar_",i) - } - - perf <- data.frame(quest_1 = names(dt)[overall+1], - quest_2 = names(dt)[overall+2], - quest_3 = names(dt)[overall+3], - n_quest = 3, - perf_full = "Overall performance", - perf = "overall_performance") - -} - -dt <- dt[-c(chr, overall)] - - -# Fix some variables -dt$registration_REG_gender <- ifelse(dt$registration_REG_gender == "M", "Man", - ifelse(dt$registration_REG_gender == "F", "Woman", - dt$registration_REG_gender)) - -# Make the parameters -chars$char_full <- c("Vigor", "Plant size", "Resistance to pests", "Resistance to diseases", - "Resistance to drought", "Yield", "Market value", "Taste", - "Overall Characteristic") - -neworder <- match(union("Overall Characteristic", chars$char_full), chars$char_full) - -chars <- chars[neworder,] - - -expl <- data.frame(name = c("What is the gender?","What is the age?", "Longitude", "Latitude"), - id = NA, - vars = c("REG_gender","REG_age","firstassess_lon","firstassess_lat")) - - - -pars <- list(chars = chars, expl = expl, perf = perf) - -cmdata <- dt - -option <- "variety" - -rm(dt,neworder,overall,projname,chr,pkg,perf,ch,expl,chars) diff --git a/dev/out_platform_analysis/sweet_potato_comm_tasting.R b/dev/out_platform_analysis/sweet_potato_comm_tasting.R deleted file mode 100644 index 1f0c8d8..0000000 --- a/dev/out_platform_analysis/sweet_potato_comm_tasting.R +++ /dev/null @@ -1,157 +0,0 @@ -## Packages #### -library("readxl") -library("here") -library("janitor") - -# Read the data -list.files("dev/data/sp_taste/") - -dt <- read_xls(here("dev/data/sp_taste/", "COMMUNITY Tasting COMPLETE DATA_Tricot study.xls"), - na = "NA") -names(dt) <- make_clean_names(names(dt)) - -dt <- as.data.frame(as.matrix(dt)) - -# add project name -dt$project_name <- "Community tasting" - -# Organise colnames as required by ClimMob -names(dt)[names(dt)=="best_code"] <- "best_overallperf" -names(dt)[names(dt)=="worst_code"] <- "worst_overallperf" -names(dt)[names(dt)=="gender"] <- "REG_gender" -names(dt)[names(dt)=="name_a"] <- "package_item_A" -names(dt)[names(dt)=="name_b"] <- "package_item_B" -names(dt)[names(dt)=="name_c"] <- "package_item_C" - -# Gender -summary(as.factor(dt$REG_gender)) - -dt$REG_gender <- ifelse(dt$REG_gender == "Female", "Woman", - ifelse(dt$REG_gender == "Male", "Man", dt$REG_gender)) - -summary(as.factor(dt$REG_gender)) -# Check item names -unique(unlist(dt[,paste0("package_item_", LETTERS[1:3])])) - -# remove equal best and worst -out <- dt$best_overallperf == dt$worst_overallperf -dt$best_overallperf[out] <- NA -dt$worst_overallperf[out] <- NA - - -cmdata <- dt - -# Now fix the answers as required by ClimMob - -# They must have A, B or C -charpattern <- c("_color","_taste") - -for(i in seq_along(charpattern)) { - index <- charpattern[i] - b <- paste0("best", index) - w <- paste0("worst", index) - - cmdata[,b] <- ifelse(cmdata[,b] == "Yes", cmdata$best_overallperf, cmdata[,b]) - cmdata[,w] <- ifelse(cmdata[,w] == "Yes", cmdata$worst_overallperf, cmdata[,w]) - - overall <- cmdata[,c("best_overallperf", "worst_overallperf")] - - nr <- nrow(overall) - - for(j in seq_len(nr)){ - # the overall best and worst for that observer - opt <- as.vector(t(overall[j,])) - # the answer for the characteristic for that observer - bw <- as.vector(t(cmdata[j,c(b,w)])) - # if NA, then all is NA - if (any(is.na(opt))) { - cmdata[j, c(b,w)] <- c(NA, NA) - cmdata[j,c("best_overallperf", "worst_overallperf")] <- c(NA, NA) - next - } - # if both No then this require a reordering - # the best will be the one not mentioned here - # the middle will be the one placed as worst in overall - # the worst will be the one placed as best in overall - if (all(bw == "No")) { - cmdata[j, b] <- LETTERS[1:3][!LETTERS[1:3] %in% opt] - cmdata[j, w] <- opt[1] - } - - # if the overall worst get No for that characteristic than it is placed and the middle one - if (all((bw == "No") == c(FALSE, TRUE))) { - cmdata[j, w] <- LETTERS[1:3][!LETTERS[1:3] %in% opt] - } - - # if the overall best get No for that characteristic than it is placed and the middle one - if (all((bw == "No") == c(TRUE, FALSE))) { - cmdata[j, b] <- LETTERS[1:3][!LETTERS[1:3] %in% opt] - } - - } - -} - -# ................................ -# Make list of parameters #### -charpattern <- union("_overallperf", charpattern) -charpattern <- paste0(charpattern, "$") -newname <- c("Overall Characteristic","Color","Taste","Other") - -chars <- data.frame() - -for(i in seq_along(charpattern)){ - index <- charpattern[i] - index <- which(grepl(index, names(cmdata))) - - ch <- data.frame(quest_1 = names(cmdata)[index[1]], - quest_2 = names(cmdata)[index[2]], - n_quest = 2, - char_full = newname[i], - char = newname[i]) - - chars <- rbind(chars, ch) - -} - - -perf <- NULL - -expl <- data.frame(name = c("Gender","District"), - id = NA, - vars = c("REG_gender","district")) - - -pars <- list(chars = chars, expl = expl, perf = perf) -rm(ch, dt, chars, expl, perf, i, charpattern, newname, index) - -# get the arguments from -tag <- "community_tasting" -pathname <- paste0("dev/output/",tag,"/") -infosheets <- FALSE -language <- "en" -extension <- "docx" -ranker <- "participant" -option <- "variety" -fullpath <- getwd() - -# ................................................................ -# ................................................................ -# Run analysis #### -dir.create(pathname, showWarnings = FALSE, recursive = TRUE) - -source(paste0(fullpath, "/R/analysis_climmob.R")) - -# ................................................................ -# ................................................................ -# Write outputs #### -#determine format based on extensions -output_format <- ifelse(extension == "docx","word_document", - paste0(extension,"_document")) - -# produce main report if output type is "summary" or "both" -rmarkdown::render(paste0(fullpath, "/report/", language, "/mainreport/mainreport.Rmd"), - output_dir = pathname, - output_format = output_format, - output_file = paste0(projname,"_report",".",extension)) - diff --git a/dev/out_platform_analysis/sweet_potato_tasting.R b/dev/out_platform_analysis/sweet_potato_tasting.R deleted file mode 100644 index aa5afe4..0000000 --- a/dev/out_platform_analysis/sweet_potato_tasting.R +++ /dev/null @@ -1,164 +0,0 @@ -## Packages #### -library("readxl") -library("here") -library("janitor") - -# Read the data -list.files("dev/data/sp_taste/") - -dt <- read_xls(here("dev/data/sp_taste/", "Home tasting DATA_tricot study.xls"), - na = c("NA","Invalid response","99")) -names(dt) <- make_clean_names(names(dt)) - -dt <- as.data.frame(as.matrix(dt)) - -# add project name -dt$project_name <- "Home tasting" - -# Organise colnames as required by ClimMob -names(dt)[names(dt)=="best_code"] <- "best_overallperf" -names(dt)[names(dt)=="worst_code"] <- "worst_overallperf" -names(dt)[names(dt)=="gender"] <- "REG_gender" -names(dt)[names(dt)=="name_a"] <- "package_item_A" -names(dt)[names(dt)=="name_b"] <- "package_item_B" -names(dt)[names(dt)=="name_c"] <- "package_item_C" - -# Gender -summary(as.factor(dt$REG_gender)) - -dt$REG_gender <- ifelse(dt$REG_gender == "Female", "Woman", - ifelse(dt$REG_gender == "Male", "Man", dt$REG_gender)) - -summary(as.factor(dt$REG_gender)) -# Check item names -unique(unlist(dt[,paste0("package_item_", LETTERS[1:3])])) - -# remove NAs in package vars -keep <- apply(dt[,paste0("package_item_", LETTERS[1:3])], 1, function(x){ - !any(is.na(x)) -}) - -dt <- dt[keep, ] - -# remove equal best and worst -out <- dt$best_overallperf == dt$worst_overallperf -dt$best_overallperf[out] <- NA -dt$worst_overallperf[out] <- NA - - -cmdata <- dt - -# Now fix the answers as required by ClimMob - -# They must have A, B or C -charpattern <- c("_color","_taste") - -for(i in seq_along(charpattern)) { - index <- charpattern[i] - b <- paste0("best", index) - w <- paste0("worst", index) - - cmdata[,b] <- ifelse(cmdata[,b] == "Yes", cmdata$best_overallperf, cmdata[,b]) - cmdata[,w] <- ifelse(cmdata[,w] == "Yes", cmdata$worst_overallperf, cmdata[,w]) - - overall <- cmdata[,c("best_overallperf", "worst_overallperf")] - - nr <- nrow(overall) - - for(j in seq_len(nr)){ - # the overall best and worst for that observer - opt <- as.vector(t(overall[j,])) - # the answer for the characteristic for that observer - bw <- as.vector(t(cmdata[j,c(b,w)])) - # if NA, then all is NA - if (any(is.na(opt))) { - cmdata[j, c(b,w)] <- c(NA, NA) - cmdata[j,c("best_overallperf", "worst_overallperf")] <- c(NA, NA) - next - } - # if both No then this require a reordering - # the best will be the one not mentioned here - # the middle will be the one placed as worst in overall - # the worst will be the one placed as best in overall - if (all(bw == "No")) { - cmdata[j, b] <- LETTERS[1:3][!LETTERS[1:3] %in% opt] - cmdata[j, w] <- opt[1] - } - - # if the overall worst get No for that characteristic than it is placed and the middle one - if (all((bw == "No") == c(FALSE, TRUE))) { - cmdata[j, w] <- LETTERS[1:3][!LETTERS[1:3] %in% opt] - } - - # if the overall best get No for that characteristic than it is placed and the middle one - if (all((bw == "No") == c(TRUE, FALSE))) { - cmdata[j, b] <- LETTERS[1:3][!LETTERS[1:3] %in% opt] - } - - } - -} - -# ................................ -# Make list of parameters #### -charpattern <- union("_overallperf", charpattern) -charpattern <- paste0(charpattern, "$") -newname <- c("Overall Characteristic","Color","Taste","Other") - -chars <- data.frame() - -for(i in seq_along(charpattern)){ - index <- charpattern[i] - index <- which(grepl(index, names(cmdata))) - - ch <- data.frame(quest_1 = names(cmdata)[index[1]], - quest_2 = names(cmdata)[index[2]], - n_quest = 2, - char_full = newname[i], - char = newname[i]) - - chars <- rbind(chars, ch) - -} - - -perf <- NULL - -expl <- data.frame(name = c("Gender","District"), - id = NA, - vars = c("REG_gender","district")) - - -pars <- list(chars = chars, expl = expl, perf = perf) -rm(ch, dt, chars, expl, perf, i, charpattern, newname, index) - -# get the arguments from -tag <- "home_tasting" -pathname <- paste0("dev/output/",tag,"/") -infosheets <- FALSE -language <- "en" -extension <- "docx" -ranker <- "participant" -option <- "variety" -fullpath <- getwd() - -# ................................................................ -# ................................................................ -# Run analysis #### -dir.create(pathname, showWarnings = FALSE, recursive = TRUE) - -source(paste0(fullpath, "/R/analysis_climmob.R")) - -# ................................................................ -# ................................................................ -# Write outputs #### -#determine format based on extensions -output_format <- ifelse(extension == "docx","word_document", - paste0(extension,"_document")) - -# produce main report if output type is "summary" or "both" -rmarkdown::render(paste0(fullpath, "/report/", language, "/mainreport/mainreport.Rmd"), - output_dir = pathname, - output_format = output_format, - output_file = paste0(projname,"_report",".",extension)) - diff --git a/dev/stats4dev_report/Climmob.R b/dev/stats4dev_report/Climmob.R deleted file mode 100644 index c81a94e..0000000 --- a/dev/stats4dev_report/Climmob.R +++ /dev/null @@ -1,41 +0,0 @@ -####Climmob.R - -#On server shoudln't need to set wd if everything is hosted in sensible place with sensible defaults. -#setwd("C:/Users/sdumb/Dropbox (SSD)/Climmob Project/ClimmobReport") - -#1. Call all relevant libraries -source("ClimmobReport/Setup/dependencies.R") - -#2. load user written functions -source("ClimmobReport/Setup/functions.R") - -#3. Bring in user specified parameters for reporting process (needs to dynamically link to interface in climmob so suer can set/modify these values) -source("ClimmobReport/Setup/params.R") - -#4. Get data off server and manipulate into required format -source("ClimmobReport/Setup/data.R") - -#5. Run analysis of data -source("ClimmobReport/Setup/analysis.R") - -#6. Output results - -#determine format based on extensions -output_format = ifelse(extension=="docx","word_document",paste0(extension,"_document")) - -#produce main report if output type is "summary" or "both" -if(output!="farmer"){ - rmarkdown::render("Main Report/mainreport.Rmd",output_dir=paste(getwd(),"Output",sep="/"),output_format=output_format, - output_file = paste0(nameproj," Report",".",extension)) -} - -#produce farmer reports if output type is "farmer" or "both" -if(output!="summary"){ - source("Farmer Reports/farmerreport.R") -} - -##Would be good to add a line at this point putting everything into a zip file? - -#Then removing the temporary versions? - -rm(list=ls()) diff --git a/dev/stats4dev_report/Documentation/ClimMob Reporting Stats4SD Summary of Work Completed.docx b/dev/stats4dev_report/Documentation/ClimMob Reporting Stats4SD Summary of Work Completed.docx deleted file mode 100644 index e92734f..0000000 Binary files a/dev/stats4dev_report/Documentation/ClimMob Reporting Stats4SD Summary of Work Completed.docx and /dev/null differ diff --git a/dev/stats4dev_report/Documentation/diagram.pptx b/dev/stats4dev_report/Documentation/diagram.pptx deleted file mode 100644 index f2c56cf..0000000 Binary files a/dev/stats4dev_report/Documentation/diagram.pptx and /dev/null differ diff --git a/dev/stats4dev_report/Farmer Reports/Word_Style.docx b/dev/stats4dev_report/Farmer Reports/Word_Style.docx deleted file mode 100644 index 4ea27d9..0000000 Binary files a/dev/stats4dev_report/Farmer Reports/Word_Style.docx and /dev/null differ diff --git a/dev/stats4dev_report/Farmer Reports/farmerreport.R b/dev/stats4dev_report/Farmer Reports/farmerreport.R deleted file mode 100644 index 1b9307e..0000000 --- a/dev/stats4dev_report/Farmer Reports/farmerreport.R +++ /dev/null @@ -1,322 +0,0 @@ - -# if no info is provided at the input stage, the back of the sheet will just show the list of options and the farmer can add info if they wish -info_table <- data.frame(options=sort(fav2$variety), info="") - -# if info/expert advice about options are provided at the input stage, these will be used instead of the list of items -if(length(info.table.info)>0){ - info_table <- data.frame(options=info.table.items, info=info.table.info) -} - - -# additional potential parameters -trait2show<-c() #only shows overall ranking at this stage - - -############################################### -# create table - -# make overall table -df_feedback_overall <- cbind(df, get_ranking(a=df[,vars[1]], - b=df[,vars[2]], - c=df[,vars[3]], - best=df[,overall[1]], - worst=df[,overall[2]] -)) - - -df_feedback <- list(overall=df_feedback_overall) - -# make other trait table - not used for now -for(trait_i in trait2show){ - pos_trait <- which(trait_names==trait_i)*2-1 - df_feedback_trait_i <- cbind(df, get_ranking(a=df[,vars[1]], - b=df[,vars[2]], - c=df[,vars[3]], - best=df[,pos_trait], - worst=df[,pos_trait+1] - )) - - df_feedback[[trait_i]] <- df_feedback_trait_i -} - -trait2show <-c("overall", trait2show) - - -############################################### -# sorting various information by % Top Ranked (based on data rather than model for now) - Overall only - -# variety ordered by % Top Ranked -global_ranking <- fav2 %>% arrange(desc(`% Top Ranked`)) %>% pull(variety) %>% as.character() -# ordered % Top Ranked -global_ranking_score <- fav2 %>% arrange(desc(`% Top Ranked`)) %>% pull(`% Top Ranked`) -# nb of times variety was Top Ranked ordered by % Top Ranked -global_top <- fav2 %>% mutate(N_top=as.numeric(`% Top Ranked`*N))%>% arrange(desc(`% Top Ranked`)) %>% pull(N_top) -# nb of farmers who ranked the variety, ordered by % Top Ranked -global_N <- fav2 %>% arrange(desc(`% Top Ranked`)) %>% pull(N) - - - -############################################### -# define colours, line widths, styles etc. - you can safely play with all of it - -grey_col <- colors()[230] -grey_col1 <- colors()[235] -grey_col2 <- colors()[240] -grey_col3 <- colors()[245] -grey_dark <- colors()[190] -grey_dark2 <- colors()[205] -grey_dark2 <- grey_dark -text_colors<-c(red="#B2182B", grey=colors()[200], blue="#2166AC") -emoji_colors<-c(red="#e7b9bf", grey=grey_col2, blue="#bcd1e6") -text_colors<-c(red=colors()[205], grey=colors()[195], blue="#2166AC") -emoji_colors<-c(red=grey_col2, grey=grey_col2, blue="#bcd1e6") -text_colors<-c(red=colors()[195], grey=grey_dark, blue="black") -emoji_colors<-c(red=grey_col2, grey=grey_col1, blue=grey_col) -emoji_colors<-c(red=grey_col, grey=grey_col, blue=grey_col) -textsize_1=0.6 -textsize_2=1.1 -textsize_3=1.3 -arrowsize=3 -arrowlength=0.07 -boxwidth=1 -emojiradius=0.4 -color4you=T -transparency <-1 -smiley_thickness <-1 - - -############################################### -# some position parameters to play with the style of the form - -#vertical parameters -n_toplines <- 7 #How many lines in the top box -yspace_top <- 0.6 #line height in the top box -yspace_box<-3 #space between top box and title -yspace_title<-4 #space between title and ranking info -yspace_header<-1.5 #space between header and ranking info (for the item sheet) -yspace<-1 #line height in the ranking info -htitle<-3.5 #height of the title box - -n_items <- length(global_ranking) #number of varieties/items - -#modify parameters to deal with high number of items -if(n_items>23){ - yspace<-.5 - textsize_2=.8 - emojiradius=0.3 - if(n_items>43){ - yspace<-.3 - textsize_2=.5 - emojiradius=0.2 - if(n_items>73){ - yspace<-.15 - textsize_2=.27 - textsize_1=.4 - } - } -} - - -#horonzital parameters -xstart<-0 -xend<-25 -xtop<-0.5 -#xtitle<-c(11, 11.2) -xtitle<-c(12.5, 12.5) -xsmileys<-4.8 -xarrowVtext<-2.2 -xarrowV<-5.5 -xranking<-7 -xarrowH<- c(15, 17) -xsmiley<-18 -xranking2<-18.8 -charperunit <- (xend-xstart)/(70) -xinfo<-10 #for item sheet - - -############################################### -# function to calculate the position of the items/varieties in relation to the title - -make_y_bloc <- function(nb_items){ - return(c(title=0,header=-yspace_title+yspace_header, -yspace_title-(0:(nb_items-1))*yspace)) -} - -############################################### -# preparing the design of the form - -#vertical positioning -ytop <- -(1:n_toplines)*yspace_top #positions of the lines in the box -ytopbox<-rev(range(ytop))+c(yspace_top,-yspace_top) #position of the box top and bottom -y <- ytopbox[2] - yspace_box + make_y_bloc(n_items) #position of the items/varieties in the ranking -y2<- - yspace_box + make_y_bloc(nrow(info_table)) #position of the items/varieties in the info list for items sheet - -#nb of characters of each item - used to calculate the pproximate width of the ranker's items arrows -global_width <- nchar(as.character(global_ranking)) - -#colors of the items/varieties -global_ranking_colors <- rgb(colorRamp(text_colors)(scale01(global_ranking_score)), max=255) - - -############################################### -# create a black arrow, saved as external file - -png("Farmer Reports/png Files/mask.png") -ytmp1<-max(last(y), -35) -ytmp2<-y[3] -grid.polygon(c(-.3, .3, .3, .5, 0, -.5, -.3), - c(ytmp1, ytmp1, ytmp2-yspace/2, ytmp2-yspace/2*1.2, ytmp2, ytmp2-yspace/2*1.2, ytmp2-yspace/2), gp=gpar(fill="black"), - def="native", - vp=viewport(xs=c(-.5, .5), ys=c(ytmp1, ytmp2))) -dev.off() - -############################################### -# read back in the arrow as colour matrix - -m <- readPNG("Farmer Reports/png Files/mask.png", native=FALSE) -mask <- matrix(rgb(m[,,1],m[,,2],m[,,3]), - nrow=nrow(m)) -rmat <- matrix(grey(seq(0,1,length=nrow(m))), - nrow=nrow(m), ncol=ncol(m)) -rmat[mask == "#FFFFFF"] <- NA - - - - - - -############################################### -# make the list of items/varieties with info png file - -png("Farmer Reports/png Files/items.png", width= 8.27, height= 11.7, units="in", res=300) -par(mai=c(0,0,0,0), omi=c(.8,.5,.8,.5), lheight=.9) -plot.new() -plot.window(ylim=c(-35,0), xlim=c(xstart, xend)) - -#title -rect(xleft=xstart,ybottom=y2["title"]-htitle*1/3, xright = xend, ytop = y2["title"]+htitle/3, col=grey_dark, border=NA)#col=grey_col2 -text(xtitle[2], y2["title"], paste("Information about the", options), font=2, cex=textsize_3, col="white") - -#header -text(xstart,y2["header"],options, adj=c(0,NA), cex=textsize_3, font=2) -text(xinfo,y2["header"],info.table.typeinfo, adj=c(0,NA), cex=textsize_3, font=2) - -#List items/varieties -text(xstart,y2[-(1:2)],info_table$options, adj=c(0,NA), cex=textsize_1) -#Items/varieties info/advice -text(xinfo,y2[-(1:2)],info_table$info, adj=c(0,NA), cex=textsize_1) - -dev.off() - - - - -############################################### -# make all the personalized results png files, by looping over all the ranker.ids - - -for(ranker_id in ranker.ids){ - - #name of ranker - name <- df$package_farmername[df$id==ranker_id] - - - ############################################### - # varieties ranked by the ranker, ordered - Overall only for now - - your_ranking <- df_feedback[["overall"]] %>% - filter(id==ranker_id) %>% - select(best1, middle1, worst1)%>% - unlist()%>% - as.character() - - - ############################################### - # ranker parameters - - y_yours <- y[-(1:2)][match(your_ranking,global_ranking)] #position of the ranker's items - width_yours <- global_width[match(your_ranking,global_ranking)] #approximate width of the ranker's items - for the sizes of the arrows - - - ############################################### - # make the farmer result png file - - farmerPath <- paste0("Farmer Reports/png Files/",ranker_id,".png") - - png(farmerPath, width= 8.27, height= 11.7, units="in", res=300) - par(mai=c(0,0,0,0), omi=c(.8,.5,.8,.5)) - plot.new() - plot.window(ylim=c(-35,0), xlim=c(xstart, xend)) - - #top_box - rect(xleft=xstart,ybottom=ytopbox[2], xright = xend, ytop = ytopbox[1], col=NA, border = grey_col, lty = 2, lwd=boxwidth) - text(x=xtop,y=ytop[1], paste("Certification sheet of:",name), cex=textsize_1, adj=c(0, NA)) - text(x=xtop,y=ytop[3], paste(nrow(df), rankers, "participated in this experiment."), cex=textsize_1, adj=c(0, NA)) - text(x=xtop,y=ytop[4], paste("Each of these",rankers, "ranked three", options, "out of all the", options, "of the experiment (information about the",options,"are given at the back)"),cex=textsize_1, adj=c(0, NA)) - text(x=xtop,y=ytop[5], paste0("You ranked these three ",options,": ", paste(sort(as.character(your_ranking)), collapse=", ")), cex=textsize_1, adj=c(0, NA)) - text(x=xtop,y=ytop[7], "Thank you for your participation", font=2, cex=textsize_1, adj=c(0, NA)) - - #title - rect(xleft=xstart,ybottom=y[1]-htitle*1/2, xright = xend, ytop = y[1]+htitle/2, col=grey_dark, border=NA)#col=grey_col2 - text(xtitle[2], y["title"]+textsize_3*.8, paste(nrow(df_feedback_overall), rankers, "(including you) were asked to rank the three",options, "they got, to answer the question"), adj=c(0.5,NA), font=1, cex=textsize_1, col="white") - text(xtitle[2], y["title"], metadat$desc[metadat$type=="overall"][1], adj=c(0.5,NA), font=2, cex=textsize_3, col="white") - text(xtitle[2], y["title"]-textsize_3*.8, "Adding up all the responses resulted in the following ranking:", adj=c(0.5,NA), font=1, cex=textsize_1, col="white") - - #global ranking left text - text(xarrowVtext,y[3]+.6, "most often favourite", adj=c(.5,NA), cex=textsize_1*1.2, font=2) - text(xarrowVtext,y[3], paste(first(global_N), rankers, "ranked this", option), adj=c(.5,NA), cex=textsize_1*.8) - text(xarrowVtext,y[3]-.4, paste(first(global_top),rankers,"ranked it as the top one"), adj=c(.5,NA), cex=textsize_1*.8) - text(xarrowVtext,last(y)+.6, "least often favourite", adj=c(.5,NA), cex=textsize_1*1.2, col=grey_dark2, font=2) - text(xarrowVtext,last(y), paste(last(global_N), rankers, "ranked this", option), adj=c(.5,NA), cex=textsize_1*.8, col=grey_dark2) - text(xarrowVtext,last(y)-.4, paste(last(global_top),rankers,"ranked it as the top one"), adj=c(.5,NA), cex=textsize_1*.8, col=grey_dark2) - - #global ranking arrow - rasterImage(rmat, xarrowV+.5, last(y)+1, xarrowV-.5, y[3]-1) - draw.emojis(xsmileys+c(0.3,.8,1,1.5),y[3]+c(-.1,.4,-.3,.2), radius=emojiradius*0.8, type="happy",border=grey_dark, thickness=smiley_thickness, col=emoji_colors["blue"]) - draw.emojis(xsmileys+c(0.3,.8,1,1.5),last(y)+c(-.1,.4,-.3,.2), radius=emojiradius*0.8, type="sad",border=grey_dark2, thickness=smiley_thickness, col=emoji_colors["red"]) - - #global ranking - text(xranking,y[-(1:2)],global_ranking, adj=c(0,NA), col=global_ranking_colors, cex=textsize_2)#*sqrt(yspace) - - #ranker's own ranking - arrows(rep(xarrowH[2],3), y0= y_yours, x1=xranking+width_yours*charperunit*(textsize_2)+1, y1=y_yours, - lwd=arrowsize, length=arrowlength,col=if(color4you) rev(emoji_colors) else grey_col2) - draw.emojis(xsmiley,y_yours, radius=emojiradius, type=c("happy", "neutral", "sad"), - col=if(color4you) rev(emoji_colors) else emoji_colors["grey"], border=grey_dark, thickness=smiley_thickness) - text(xranking2,y_yours,paste("You ranked this",option, c("as the top one", "second", "third")), - adj=c(0,NA), cex=textsize_1, col=if(color4you) rev(text_colors) else text_colors["grey"]) - - dev.off() - -} - - - -# Some code to make sure the png files are created before moving on - but shouldn't be an issue anymore -#start_time <- Sys.time() -#while((!file.exists("./Farmer Reports/results.png") | !file.exists("./Farmer Reports/items.png"))& (Sys.time()-start_time)<15){ -# Sys.sleep(1) -#} - - -############################################### -# create all the farmer feedback reports, by looping over all the ranker.ids - -for(ranker_id in ranker.ids){ - #ranker description - name <- df$package_farmername[df$id==ranker_id] - ranker_description <- paste0(name,ranker_id) - rmarkdown::render("Farmer Reports/farmerreport.Rmd",output_dir=paste(getwd(),"Output/Farmer Reports",sep="/"),output_format=output_format, - output_file = paste0(nameproj,"Farmer Report",ranker_description,".",extension)) - -} - - -############################################### -# empty png folder - -unlink("Farmer Reports/png Files/mask.png") -unlink("Farmer Reports/png Files/items.png") -for(ranker_id in ranker.ids){ - unlink(paste0("Farmer Reports/png Files/",ranker_id,".png")) -} - diff --git a/dev/stats4dev_report/Farmer Reports/farmerreport.Rmd b/dev/stats4dev_report/Farmer Reports/farmerreport.Rmd deleted file mode 100644 index dd3ad47..0000000 --- a/dev/stats4dev_report/Farmer Reports/farmerreport.Rmd +++ /dev/null @@ -1,17 +0,0 @@ ---- -geometry: left=0cm,right=0cm,top=-1cm,bottom=-1cm -output: - pdf_document: default - word_document: - reference_docx: Word_Style.docx - html_document: - df_print: paged ---- -```{r setup_opts, include=FALSE} -knitr::opts_chunk$set(echo = FALSE,error = FALSE,message=FALSE,warning = FALSE) -``` - -```{r image-ref-for-in-text, echo = FALSE, message=FALSE, fig.align='center', out.width='.99\\linewidth', fig.pos='H'} -knitr::include_graphics(paste0("png Files/",ranker_id,".png")) -knitr::include_graphics("png Files/items.png") -``` diff --git a/dev/stats4dev_report/Main Report/Word_Style.docx b/dev/stats4dev_report/Main Report/Word_Style.docx deleted file mode 100644 index 9fa60f7..0000000 Binary files a/dev/stats4dev_report/Main Report/Word_Style.docx and /dev/null differ diff --git a/dev/stats4dev_report/Main Report/covar_analysis.Rmd b/dev/stats4dev_report/Main Report/covar_analysis.Rmd deleted file mode 100644 index bb8d010..0000000 --- a/dev/stats4dev_report/Main Report/covar_analysis.Rmd +++ /dev/null @@ -1,163 +0,0 @@ - -```{r,warning=FALSE,message=FALSE,echo=FALSE} - gsplit=TRUE - -dt.fr$miss_tmp<-factor(is.na(dt.fr[covars[i]]),levels=c(FALSE,TRUE),labels=c("Complete","Missing")) - -misstable<-data.frame(table(dt.fr$miss_tmp)) -misstable$Percent<-percent(misstable$Freq/sum(misstable$Freq)) -colnames(misstable)[1]<-colnames(dt.fr)[covars[i]] - -if(covars[i]==gender|length(gender)==0){ - gsplit=FALSE -} - - if(is.numeric(dt.fr[,covars[i]])){ - vartable<-data.frame(Variable=colnames(dt.fr)[covars[i]], - Mean=round(mean(dt.fr[,covars[i]],na.rm=TRUE),2), - Median=round(median(dt.fr[,covars[i]],na.rm=TRUE),1), - Minimum=min(dt.fr[,covars[i]],na.rm=TRUE),Maximum=max(dt.fr[,covars[i]],na.rm=TRUE), - "Standard Deviation"=round(sd(dt.fr[,covars[i]],na.rm=TRUE),2),check.names = FALSE) - -if(gsplit==FALSE){ - - - p1<- ggplot(data=dataset,aes_string(x=colnames(dt.fr)[covars[i]]))+ - geom_histogram(col="black",fill=alpha("red",0.5),bins=20)+ - ggtitle(paste("Histogram of",colnames(dt.fr)[covars[i]]))+ylab("Frequency")+ - scale_y_continuous(sec.axis = sec_axis(~./nrow(dataset),labels=scales::percent, - name="Percentage")) -} - else{ - dt.fr$gender<-factor(dt.fr[,gender]) - vartable1<-data.frame(Variable=colnames(dt.fr)[covars[i]],gender=levels(dt.fr[,gender]), - Mean=round(tapply(dt.fr[,covars[i]],dt.fr[,gender],mean,na.rm=TRUE),2), - Median=round(tapply(dt.fr[,covars[i]],dt.fr[,gender],median,na.rm=TRUE),2), - Minimum=round(tapply(dt.fr[,covars[i]],dt.fr[,gender],min,na.rm=TRUE),2), - Maximum=round(tapply(dt.fr[,covars[i]],dt.fr[,gender],max,na.rm=TRUE),2), - "Standard Deviation"=round(tapply(dt.fr[,covars[i]],dt.fr[,gender],sd,na.rm=TRUE),2),check.names = FALSE) - - - vartable$gender<-"Overall" -vartable<-merge(vartable1,vartable,all=TRUE) - - p1<- ggplot(data=dataset[is.na(dataset$gender)==FALSE,],aes_string(x=colnames(dt.fr)[covars[i]]))+facet_wrap(~gender)+ - geom_histogram(col="black",fill=alpha("red",0.5),bins=20)+ - ggtitle(paste("Histogram of",colnames(dt.fr)[covars[i]]))+ylab("Frequency")+ - scale_y_continuous(sec.axis = sec_axis(~./nrow(dataset),labels=scales::percent, - name="Percentage")) - } - - - } - if(class(dt.fr[,covars[i]])=="Date"){ - - - vartable<-data.frame(Variable=colnames(dt.fr)[covars[i]], - "Median Date"=as.Date(median(dt.fr[,covars[i]],na.rm=TRUE)), - "Earliest Date"=as.Date(min(dt.fr[,covars[i]],na.rm=TRUE)), - "Final Date"=as.Date(max(dt.fr[,covars[i]],na.rm=TRUE)),check.names = FALSE) - - if(gsplit==TRUE){ - dt.fr$gender<-factor(dt.fr[,gender]) - vartable1<-data.frame(Variable=colnames(dt.fr)[covars[i]],gender=levels(dt.fr[,gender]), - "Median Date"=as.Date(tapply(dt.fr[,covars[i]],dt.fr[,gender],median,na.rm=TRUE), - origin = "1970-01-01"), - "Earliest Date"=as.Date(tapply(dt.fr[,covars[i]],dt.fr[,gender],min,na.rm=TRUE), origin = "1970-01-01"),"Final Date"=as.Date(tapply(dt.fr[,covars[i]],dt.fr[,gender],max,na.rm=TRUE), origin = "1970-01-01"),check.names = FALSE) - -vartable$gender<-"Overall" -vartable<-merge(vartable1,vartable,all=TRUE) - - p1<- ggplot(data=dataset[is.na(dataset$gender)==FALSE,],aes_string(x=colnames(dt.fr)[covars[i]]))+ - facet_wrap(~gender)+ - geom_histogram(col="black",fill=alpha("blue",0.5))+ - ggtitle(paste("Histogram of",colnames(dt.fr)[covars[i]]))+ylab("Frequency")+ -scale_x_date(date_labels = "%d-%b")+ - scale_y_continuous(sec.axis = sec_axis(~./nrow(dataset),labels=scales::percent, - name="Percentage"))+ - theme(axis.text.x = element_text(angle=90)) - } - else{ - - - p1<- ggplot(data=dataset,aes_string(x=colnames(dt.fr)[covars[i]]))+ - geom_histogram(col="black",fill=alpha("blue",0.5))+ - ggtitle(paste("Histogram of",colnames(dt.fr)[covars[i]]))+ylab("Frequency")+ -scale_x_date(date_labels = "%d-%b")+ - scale_y_continuous(sec.axis = sec_axis(~./nrow(dataset),labels=scales::percent, - name="Percentage")) - } -} - if(is.character(dt.fr[,covars[i]])|is.factor(dt.fr[,covars[i]])){ - - vartable<-data.frame(table(dt.fr[,covars[i]])) -colnames(vartable)<-c(colnames(dt.fr)[covars[i]],"Frequency") - vartable<-vartable %>% - mutate("% of Respondents"=percent(Frequency/sum(Frequency),1)) - - dt.fr$tmp<-factor(dt.fr[,colnames(dt.fr)[covars[i]]], - levels=rev(sort(unique(dt.fr[,colnames(dt.fr)[covars[i]]])))) - if(gsplit==TRUE){ - - vartable1<-data.frame(table(dt.fr[,covars[i]],dt.fr[,gender])) - - vartable1<-vartable1 %>% group_by(Var2) %>% mutate(per=Freq/sum(Freq)) %>% - ungroup() %>% mutate(per=percent(per))%>% select(Var1,Var2,per) %>% spread(Var2,per) -colnames(vartable1)[2:3]<-paste("% Within",colnames(vartable1)[2:3]) -vartable<-cbind(vartable,vartable1[,2:3]) - - - - p1<- ggplot(data=dt.fr[is.na(dt.fr[,gender])==FALSE,],aes_string(x="tmp",fill=colnames(dt.fr)[gender]))+ - geom_bar(col="black")+coord_flip()+ - ggtitle(paste("Barchart of",colnames(dt.fr)[covars[i]]))+ylab("Frequency")+ - scale_y_continuous(name="Count")+xlab(colnames(dt.fr)[covars[i]]) - - } - else{ - p1<- ggplot(data=dt.fr,aes_string(x="tmp"))+ - geom_bar(col="black",fill=alpha("forestgreen",0.5))+coord_flip()+ - ggtitle(paste("Barchart of",colnames(dt.fr)[covars[i]]))+ylab("Frequency")+ - scale_y_continuous(sec.axis = sec_axis(~./sum(vartable$Frequency),labels=scales::percent, - name="Percentage"))+xlab(colnames(dt.fr)[covars[i]]) - - } - } - - -``` - - - -**`r colnames(dt.fr)[covars[i]]` ** - -```{r} -kable(misstable,caption=paste0("Table 3.",i,".1"," Missing Values in ",colnames(dt.fr)[covars[i]])) -``` - - - -```{r} -vartable %>% kable(caption=paste0("Table 3.",i,".2"," Summary statistics for ",colnames(dt.fr)[covars[i]])) -``` - -*Figure `r paste("3.",i,sep="")`* -```{r} -plot(p1) -``` - -```{r} -exclusionmessage<-"" - -if(stoplist[i]==1){ -exclusionmessage<-paste0("NOTE: The variable ",colnames(dt.fr)[covars[i]]," was flagged to be excluded as a possible covariate for the statistical modelling. This was because not all of the ",options," were present in all of the different ",colnames(dt.fr)[covars[i]]," groups. To be able to consider the effect of this variable, consider manually grouping some of the levels together, where appropriate.") -} -if(stoplist[i]==2){ -exclusionmessage<-paste0("NOTE: The variable ",colnames(dt.fr)[covars[i]]," was flagged to be excluded as a possible covariate for the statistical modelling. This was because of an unknown error.") -} -if(stoplist[i]==4){ -exclusionmessage<-paste0("NOTE: The variable ",colnames(dt.fr)[covars[i]]," was flagged to be excluded as a possible covariate for the statistical modelling. This was because the amount of missing data within this variable exceeded the allowable maximum threshold, which has been set at ",percent(missper)) -} -``` - -`r exclusionmessage` diff --git a/dev/stats4dev_report/Main Report/covar_models.Rmd b/dev/stats4dev_report/Main Report/covar_models.Rmd deleted file mode 100644 index ff0b1c3..0000000 --- a/dev/stats4dev_report/Main Report/covar_models.Rmd +++ /dev/null @@ -1,81 +0,0 @@ -### `r colnames(dt.fr)[covar]` - -```{r,warning=FALSE,message=FALSE,echo=FALSE} - -modfit_tmp<-na.omit(dt.fr[,c(vars,overall,covar)]) - -f1<-as.formula(paste("G~",colnames(dt.fr)[covar])) - -R_overall <- to_rankings(modfit_tmp, - items = 1:3, - rankings = 4:5, - type = "tricot") -modfit_tmp$G<-grouped_rankings(R_overall, index = seq_len(nrow(R_overall))) - - -tree1 <- pltree(formula=f1, - data = modfit_tmp, minsize = 50, alpha = 0.05) - -``` - - -*`r ifelse(length(tree1)>1,paste("Figure 6.4.",i,sep=""),paste(" "))`* -```{r,fig.height=7,fig.width=10} - - -if(length(tree1)>1){ -rval1<-node_terminal1(tree1) -plot(tree1,terminal_panel =rval1 ) -} - -``` - -*`r ifelse(length(tree1)>1,paste("Figure 6.5.",i,sep=""),paste(" "))`* - -```{r,warning=FALSE,message=FALSE,echo=FALSE,fig.height=8,fig.width=10} -if(length(tree1)>1){ -coefs<-map_df(nodeids(tree1,terminal = TRUE), - function(x)data.frame(node=x, - rule=partykit:::.list.rules.party(tree1, x), - multcompPL(tree1[[ x ]]$node$info$object))) - - -ns<-map_df(nodeids(tree1,terminal = TRUE), - function(x)data.frame(node=x, - rule=partykit:::.list.rules.party(tree1, x), - n=tree1[[ x ]]$node$info$nobs)) - -coefs<-inner_join(coefs,ns) - - coefs$Label<-paste("Node",coefs$node,":",coefs$rule,"\n","n=",coefs$n) - - - coefs<-coefs %>% mutate(term=reorder(term,estimate,mean)) %>% - group_by(node) %>% mutate(m=mean(estimate),ctd=estimate-m) %>%data.frame() - - ggplot(data=coefs,aes(x=term,y=ctd,ymax=ctd+1.96*quasiSE,ymin=ctd-1.96*quasiSE,col=Label))+ - geom_point(position = position_dodge(width=0.3),size=1)+ - geom_errorbar(position = position_dodge(width=0.3),width=0)+ - coord_flip()+ - geom_text(aes(label=.group),size=3,fontface=2,nudge_x=rep(c(-0.3,0.5),each=nlevels(coefs$term)))+ - ylab("")+ - xlab("Variety")+ - ggtitle(paste("Terminal node parameter estimates for","overall","rankings."), - subtitle = paste("Covariates considered:",paste(colnames(dt.fr)[covar],collapse=", "))) -} - -``` - - - -```{r,warning=FALSE,message=FALSE,echo=FALSE} -endmessage<-"" -if(length(tree1)==1&length(nodeapply(tree1,1,function(n) info_node(n)$test))>1){ - endmessage<-paste("Variable not found to be statistically significant at 5% level. p=", - round(nodeapply(tree1,1,function(n) info_node(n)$test)[[1]][2,1],4)) -} -if(length(tree1)==1&length(nodeapply(tree1,1,function(n) info_node(n)$test))==1){ - endmessage<-"Covariate could not be included within statistical model" -} -``` -`r endmessage` diff --git a/dev/stats4dev_report/Main Report/mainreport.Rmd b/dev/stats4dev_report/Main Report/mainreport.Rmd deleted file mode 100644 index f4edfe2..0000000 --- a/dev/stats4dev_report/Main Report/mainreport.Rmd +++ /dev/null @@ -1,582 +0,0 @@ ---- -title: "`r paste(nameproj,'Analysis Report')`" -author: "Automated Report by Climmob" -date: "`r format(Sys.time(), '%d %B, %Y')`" -output: - word_document: - reference_docx: Word_Style.docx - html_document: - toc: true - pdf_document: - toc: true ---- - -```{r setup_opts, include=FALSE} -knitr::opts_chunk$set(echo = FALSE,error = FALSE,message=FALSE,warning = FALSE) -``` - -You are reading a report generated by ClimMob. This is a software package to analyze data generated by citizen science or crowdsourcing. - -# Introduction - -In agriculture, the local environmental conditions determine to a large degree which technological solutions are the most suitable. In dry soils, for example, drought-resistant crop varieties will outperform other varieties, but in wet soils these same varieties may do worse than most. Not only drought, but an entire range of problems including excessive heat, floods, new pests and diseases tend to intensify under climate change. This multitude of limiting factors requires multiple technological solutions, tested in diverse environments. - -Citizen science is based on the cooperation of citizen scientist or observers (paid or unpaid). Researchers assign microtasks (observations, experiments...) that, once completed and gathered, contribute with a great amount of information to science. One of the advantages of citizen science is that agricultural researchers can get access to many environments by crowdsourcing their experiments. As farmers contribute with their time, skills and knowledge to the investigation, researchers are able to do more tests than in a traditional setup. Also citizen scientists acquire new knowledge, abilities and information useful for future challenges of their work. - -**ClimMob** - -The primary goal of ClimMob is to help farmers adapt to variable and changing climates. ClimMob was created as part of Bioversity International's research in the CGIAR Research Programme on Climate Change, Agriculture, and Food Security (CCAFS). It serves to prepare and analyze citizen science experiments in which a large number of farmers observe and compare different technological options under a wide range environmental conditions (van Etten 2011). - -ClimMob software assigns a limited number of items (typically 3 crop varieties or agricultural practices) to each farmer, who will compare their performance. Each farmer gets a different combination of items drawn from a much larger set of items. Comparisons of this kind are thought to be a very reliable way to obtain data from human observers (Martin 2004). Once the results of the microtasks have been collected, ClimMob builds an image of the whole set of assigned objects, combining all observations. ClimMob not only reconstructs the overall ordering of items, but also takes into account differences and similarities between observers and the conditions under which they observe. It assigns similar observers to groups that each corresponds to a different preference profile. Groups are created on the basis of whichever variables which have been collected, that are found to be significantly linked to the preferences. - -ClimMob uses a recently published statistical method to analyze ranking data (Strobl et al. 2011). It automatically generates analytical reports, as well as individualized information sheets for each participant. - - -**How to cite** - -If you publish any results generated with ClimMob, you should cite a number of articles as the package builds on various contributions. Van Etten (2011) introduced the crowdsourcing philosophy behind ClimMob. It is important to mention that ClimMob is implemented in R, a free, open-source analysis software (R Development Core Team 2012). Methodologically, if you report on the tree results, you should mentioned that ClimMob applies the Bradley-Terry tree method published by Strobl et al. (2011). To cite ClimMob itself, mention Van Etten & Calderer (2015). - -# Section 1: Headline Results - -Overall there were `r nrow(dt.fr)` `r rankers` participating in this study. Each `r ranker` assessed three different `r options` and ranked them in order of their overall preference. In addition they also provided rankings for `r ntrait` additional traits: - -```{r,traits} -kable(data.frame("Short name"=trait_short,"Question"=trait_labels,check.names = FALSE)) -``` - - - -Table 1 provides a list of the `r options` assessed within this trial, with the frequency and percentage of `r paste0(ranker)`s who assessed each `r paste0(option)`. - -```{r, varieties} -kable(vartable,caption=paste0("Table 1: Frequency of ",options," Assessed")) -``` - - -## Overall Differences in Rankings -```{r} -if(is.na(ps[1])==F){ -if(ps[1]<0.05){ - line1<-paste0("Overall there were statistically significant differences found in the rankings of ", options ," in the overall ranking (p=",ptab$p.value[1],"). The best ranked ", options ," overall were ",ptab$`Best Ranked`[1]) -} -if(ps[1]>=0.05){ - line1<-paste0("Overall there were no statistically significant differences found in the rankings of ", options ," in the overall ranking (p=",ptab$p.value[1],")") -} -} -if(is.na(ps[1])){ - line1<-"No statistical model was able to be fitted on this data" -} -if(any(na.omit(ps[2:length(ps)])<0.05)){ - line1<-paste(line1,". Statistically significant differences were also found in the trait(s)", - paste(trait_short[ps[2:length(ps)]<0.05],collapse=", ")) - } - -``` - -`r paste(line1, collapse='\n')` - -A summary of the p-values testing the hypothesis that there exist differences in the rankings within each of the Plackett-Luce models fitted for each of the assessed traits, and the list of `r options` which were significantly highest and lowest ranked overall, are summarised in Table 1.1. - -```{r} -kable(ptab,caption=paste0("Table 1.1: Summary of Differences Found In ",options," by Trait")) -``` - -See Section 3 for further details. - -## Effect of covariates - -```{r} -if(length(na.omit(outtabs[[1]]$p.value))>0){ -if(any(na.omit(outtabs[[1]]$p.value)<0.05)){ - line2<-paste(length(siglist),"of the variables tested were found to have a statistically significant relationship to the overall ranking. These variable(s) were:", paste(paste0(siglist," (p=",outtabs[[1]][siglist,"p"],")"),collapse=", ")) - -} -if(!any(na.omit(outtabs[[1]]$p.value)<0.05)){ - line2<-"None of the variables tested were found to have a statistically significant relationship to the overall ranking at the 5 % significance level." -} -} -if(length(na.omit(outtabs[[1]]$p.value))==0){ - line2<-"No models to test covariates were successfully fitted on this" -} - -``` - -`r paste(line2, collapse='\n')` - -A summary of the univariate signifance levels for all covariates that were able to be tested is shown in Table 1.2.1. -```{r} - -kable(uni_sum[,c(5,4)],caption="Table 1.2.1: Summary of univariate p-values for first split in Plackett-Luce tree model for the overall ranking") - - -``` - -```{r} -if(sum(stoplist)>0){ -stopmessage<-paste("The variable(s)",paste(colnames(dt.fr)[covarlist2[stoplist>0]],collapse=", "), "were not able to be included within the analysis.") -} -if(sum(stoplist)==0){ - stopmessage<-"" -} - -``` - -`r paste(stopmessage, collapse='\n')` - -```{r} -if(length(siglist)>0){ - line3<-paste0("Table 1.2.2 shows which ",options," where identified as the best and worst ranked in the subgroups identified by including covariate data against the overall ranking.") -} -if(length(siglist)==0){ - line3<-"" -} -``` - -`r paste(line3, collapse='\n')` - -```{r} -if(length(siglist)>0){ - kable(node_summary,caption="Table 1.2.2: Summary of different subgroups identified by multivariate Plackett-Luce tree model") -} - -``` - -See Section 4 for further details. - -## Relationships between traits - -Table 1.3 shows, for each trait in the study, the frequency with which the rankings matched with the overall ranking. - -The trait(s) which had the strongest relationship with the overall ranking was `r strongest_link$trait`. Overall the rankings for `r strongest_link$trait` matched the rankings for the overall ranking `r percent(strongest_link$agreement[1])` of the time. - -The trait(s) which had the weakest relationship with the overall ranking was `r weakest_link$trait`. Overall the rankings for `r weakest_link$trait` matched the rankings for the overall ranking only `r percent(weakest_link$agreement[1])` of the time. - - - -```{r} -kable(agreement_table[,1:2],caption="Table 1.3: Relationship between individual trait assessment and overall assesment") -``` - -See Section 5 for further details. - - -# Section 2: Data Summary and Exploratory Analysis of Traits - -## Assessment of `r options` - -Exploratory analysis within the following section summarises results from the data directly. Given the structure of a ClimMob trail, where each `r paste0(ranker)` only assesses 3 of the possible `r options` these results may be skewed if certain `r options` were randomly assigned to face worse `r options` than others. This is particularly a potential issue within a smaller trial, as due to the randomisation process the potential for an unbalanced assignment decreases as the sample size increases. Results from other sections, and in the overall summary use Plackett-Luce models, to adjust for any imbalance [add in references]. - - -### Overall - -Overall performance of each of the `r options` is summarised in Table 2.1. - -```{r fav_table} -kable(fav2,row.names = FALSE,caption = "Table 2.1 - Summary of Overall Performance") -``` - -This shows the % of `r paste0(ranker)`s who assessed the `r paste0(option)` as their most preferred of the 3 `r options` they were provided, the % of `r paste0(ranker)`s who included the `r paste0(option)` as their least preferred, the % of 'head to head contests' for which the `r paste0(option)` won and the net favourability score. A score of +100 indicates the `r paste0(option)` won all 'contests' it was involved in, a score of 0 indicates an equal number of wins and losses, a score of -100 indicates the variety lost all contests. - -*Figure 2.1* -```{r fav_plot} -favourability_plot(fav1)+ggtitle("Net Favourability Score for Overall Performance")+ylim(-100,100)+xlab(option) - - -favsentence<-ifelse(length(fav2[fav2[,6]>50,1][-1])>0,"",paste0("Other ",options," with strong positive rankings were ", paste(fav2[fav2[,6]>50,1][-1],collapse=", "))) -``` - -The variety `r fav2[1,1]` was the most preferred `r paste0(option)` overall being ranked highest by `r fav2[1,3]` of the `r fav2[1,2]` `r paste0(ranker)`s who assessed this `r paste0(option)`. - -`r favsentence` - - - -### Other Traits - -Net favourability scores are shown below for the other traits assessed in this study. - -```{r, traitsplots} -trait_summaries=NULL -for(i in 1:length(trait_names)){ - - trait_summaries<-c(trait_summaries,knitr::knit_child("trait_analysis.Rmd", quiet=TRUE)) -} -``` - -```{r traitinclude, echo=FALSE, results="asis", message=FALSE, warning=FALSE} -cat(paste(trait_summaries, collapse = '\n')) -``` - -## Pairwise Contests - -Appendix B contains the full data for each pairwise comparison of the varieties, which is summarised in the plots below. - -### Overall - -Figure 2.3 shows the outcomes of all pairwise contests between the `r options` included in the trial. Each panel shows the performance of one `r paste0(option)` against all the other `r options`, and shows the % of the times in which the panelled `r paste0(option)` was ranked above the `r options` shown as bars. The most preferred `r paste0(option)` is shown in the top left panel and the least preferred is shown in the bottom right panel - -*Figure 2.3* -```{r contests bars,fig.height=12,fig.width=10} -cont1[[2]]+ggtitle("Head to Head Performance of All Varieties Using Overall Trait Preference")+ - ylab("% Contests Preferred") - -``` - -### Other Traits - -Results from the pairwise contests of the other individual traits assessed are shown below. - -```{r, pairsplots} -trait_pairs1=NULL -for(i in 1:length(trait_names)){ - trait_pairs1<-c(trait_pairs1,knitr::knit_child("trait_pairs.Rmd", quiet=TRUE)) -} -``` - -```{r traitincludepairs, echo=FALSE, results="asis", message=FALSE, warning=FALSE} -cat(paste(trait_pairs1, collapse = '\n')) -``` - - -## Relationship between traits - -Table 2.5 shows the relationship between the individual trait rankings and the overall rankings. -Complete agreement represents the percentage of respondents for which the ranking of the three `r options` in respect to the trait is an exact match to the overall ranking. Given that there are 6 possible ways of ranking the three `r options` that each `r ranker` assesses, it would be expected that, if there was no relationship between the ranking of the trait and the overall ranking, that the complete rankings would agree 17% of the time by chance. -Best/worst agreement represents the percentage for which the best/worst `r paste0(option)` for the trait matched the overall best/worst. Given that there are 3 possible `r options` that each `r ranker` assesses, it would be expected that, if there was no relationship between the ranking of the trait and the overall ranking, that the best/worst rankings would still agree 33% of the time by chance. - -```{r} -kable(agreement_table,caption="Table 2.5: Relationship between individual trait assessment and overall assessment") -``` - -*Figure 2.5* - -```{r correspondence,fig.width=9,fig.height=6} -plot(agreement_traits[[1]]) -``` - -Overall the trait which had the strongest relationship with the overall ranking was `r agreement_traits[[2]][ntrait,1]`, with identical rankings being given as the overall ranking `r agreement_traits[[2]][ntrait,3]` of the time. - - - -# Section 3: Data Summary & Exploratory Analysis of Covariates - -## Location of `r paste0(ranker)`s -*Figure 3.0* -```{r map_out} -ctext<-"" -if(geodata==TRUE){ -knitr::include_graphics("map1.png") -} -if(geodata==FALSE){ - ctext<-("No coordinates recorded in data") -} -``` -`r ctext` - - - -```{r} -kable(data.frame("Short name"=covar_names,"Question"=covar_labels,check.names = FALSE)) -``` - - - -Tables 3.1.1 to `r paste("3.",length(covars),".2",sep="")` summarise the covariate data collected from the survey, with corresponding bar charts or histograms of the responses. - - -```{r, covars} - -covar_expl=NULL - -for(i in seq_along(covarlist)){ - covar=i - covar_expl<-c(covar_expl,knitr::knit_child("covar_analysis.Rmd", quiet=TRUE)) -} -``` - -```{r covarinclude, echo=FALSE, results="asis", message=FALSE, warning=FALSE} -cat(paste(covar_expl, collapse = '\n')) -``` - - -# Section 4: Plackett-Luce Models of Ranking Differences - -## Overall Ranking - -Table 4.1 shows the results from the likelihood ratio test from the Plackett-Luce model for overall rankings of the different `r options`. The hypothesis being tested is that there is no difference in the assessments of any of the different `r options`. - -```{r,aov1} -x1<-anova.PL(mod_overall) -p<-x1[2,5] -x1[,5]<-paste(format.pval((x1[,5])),stars.pval((x1[,5]))) -kable(x1,caption="Table 4.1: Likelihood ratio test results from overall model") -``` - -```{r,pval_sentence} -if(p<0.001){ -message1<-paste("p=",format.pval((p)), ". This suggests that there is strong evidence of a difference in the rankings between ",options,sep="") -} - -if(p<0.01 & p >0.001){ -message1<-paste("p=",format.pval((p)), ". This suggests that there is evidence of a difference between ",options,sep="") -} -if(p>0.01 & p <0.05){ -message1<-paste("p=",format.pval((p)),". This suggests that there is some evidence of a difference between ",options,sep="") -} -if(p>0.05){ -message1<-paste("p=",format.pval((p)),". This suggests that there is not enough evidence to conclude that there are differences between ",options,sep="") -} -``` - -`r message1` - -Figure 4.1 shows the estimates of the model coefficients with 84% confidence intervals. The purpose of this graph is to be able to best distinguish between the relative strength of each of the `r options` assessed. As such the coefficient estimates themselves are not directly interpretable, but it can be concluded that a higher value for the coefficient indicates that a variety has been more preferred. The 84% confidence width is chosen so that non-overlapping confidence intervals could be interpreted as indicating significant differences at the 5% significance level. This may not match exactly with the mean separation groupings, as these groupings also take into account multiple testing through the Benjamini and Hochberg adjustment. [add references here]. -Mean separation analysis was also conducted to indicate, using letters, which `r options` are significantly more preferred than others: when varieties have at least one letter in common, there is not enough evidence from the experiment to be confident about their relative order of preference at the 5% significance level. - -*Figure 4.1 - Overall Ranking: Model Coefficients and Mean Separation* -```{r est_plot, fig.width=7,fig.height=7} -plot.multcompPL(model_summaries,level=0.84)+ - ggtitle("Overall Preference Estimates w/ 84% Confidence Intervals", - subtitle="Groups created from pairwise contrasts at 5% level\nwith Benjamini & Hochberg adjustment") -``` - -The same information as Figure 4.1 is shown in Table 4.2 below - -```{r est_table} -model_summaries %>% - select(estimate,quasiSE,.group) %>% - rename("Estimate"=estimate,"Group"=.group) %>% - kable(digits=2,caption=paste0("Table 4.2 - Model Coefficients and Mean Separation of ",options," at ",100*sig.level,"% Level with ",ci.adjust," adjustment")) -``` - -Table 4.3 and Figure 4.2 use the coefficients from the model to estimate the probability of each `r paste0(option)` being considered to be the top ranked `r paste0(option)` in a direct comparison between all of the possible `r paste0(options)` - -```{r} -kable(worthscaled[,-2],caption = "Table 4.3: Percentage probability of being the highest ranked overall") -``` - -*Figure 4.2 - Overall Ranking: Probability of Being The Highest Ranked Overall* -```{r} -ggplot(data=worthscaled,aes(y=worth,fill=worth,group=Variety,x=1))+ - geom_bar(stat="identity",col="black",show.legend = FALSE)+ - theme_void()+ - geom_text(aes(y=cumsum(rev(worth))-rev(worth)/2,size=rev(worth), - label=rev(paste(Variety,percent(worth),sep=": "))),show.legend = FALSE,fontface=2)+ - ggtitle(paste("Probability that",option,"is the\nhighest ranked overall"))+ - scale_fill_gradient2(low="white",high="forestgreen",midpoint=1/nrow(worthscaled)) + - scale_size_continuous(range=c(0.5,10),limits = c(0,1)) -``` - - -# Section 5: Plackett Luce Models Of Other Traits - -```{r, traitmodels} - -model_traits<-NULL -for (i in 1:ntrait){ - model_traits<-c(model_traits,knitr::knit_child("trait_models.Rmd", quiet=TRUE)) -} -``` - - -```{r traitmodinclude, echo=FALSE, results="asis", message=FALSE, warning=FALSE} -cat(paste(model_traits, collapse = '\n')) -``` - -# Section 6: Plackett Luce Models With Covariates - -## Overall Ranking - -A classification tree approach was used to determine which of the covariates, if any had significant relationships with the rankings. This approach identifies sub-groups in the data for which the rankings of the different varieties are significantly different to each other. Table 4.1 shows the p-values for each of the covariates tested, one-by-one, showing whether or not the covariate could be used to define sub-groups with significantly different rankings. -```{r} -kable(uni_sum[,c(5,4)],caption="Table 6.1: Univariate p-values for first split in Plackett-Luce tree model for the overall ranking") -``` - - -```{r,include=FALSE} -covarlist2=c(covars,coords) - -univariate_model=NULL -pout<-NULL -for(i in 1:length(covarlist2)){ -if(stoplist[i]==0){ - covar=covarlist2[i] - univariate_model<-c(univariate_model,knitr::knit_child("covar_models.Rmd", quiet=TRUE)) - } - if(stoplist[i]==1){ - univariate_model<-c(univariate_model,paste("NOTE: ",colnames(dt.fr)[covarlist2[i]],"was not considered as a covariate - not all varieties observed within all groups\n")) - } - if(stoplist[i]==2){ - univariate_model<-c(univariate_model,paste("NOTE: ",colnames(dt.fr)[covarlist2[i]],"was not considered as a covariate - only 1 unique value\n")) - } - if(stoplist[i]==3){ - univariate_model<-c(univariate_model,paste("NOTE: ",colnames(dt.fr)[covarlist2[i]],"was not considered as a covariate - not an applicable data type\n")) - } - if(stoplist[i]==4){ - univariate_model<-c(univariate_model,paste("NOTE: ",colnames(dt.fr)[covarlist2[i]],"was not considered as a covariate - more than 10% of values in covariate are missing\n")) - } -} - - -``` - -Figure 6.1 shows the partitioning of the rankings based on the most significantly different sub-groups which could be identified from the data using a 5% significance level. At the top of the tree is the full dataset, then working down through the different levels of the tree shows the combinations of variables which define each subgroup. The model parameters are shown for the final subgroups ("terminal nodes") in the plots at the bottoms of the tree. - -*Figure 6.1 - Overall Ranking Plackett-Luce Tree Considering All Possible Covariates* -```{r,asis=TRUE,fig.height=8,fig.width=10} -if(length(tree_f)>1){ - rval1<-node_terminal1(tree_f) -plot(tree_f,terminal_panel =rval1 ) -nofig1<-"" -} -if(length(tree_f)==1){ - nofig1<-"No figure produced: no significant covariates identified" -} -``` -`r nofig1` - -The highest and lowest performing `r paste0(option)` within each sub-group is identified within Table 6.2. - -```{r} -if(length(siglist)>0){kable(node_summary,caption="Table 6.2 - Summary of Performance in Each Node")} -``` - -The model coefficient estimates, along with 84% confidence intervals are provided in Figure 6.2. This will help identification of which `r options` were better suited to particular sub-groups identified by the analysis. - -*Figure 6.2 - Coefficient Estimates Within Each Identified Terminal Node Subgroup* -```{r,fig.width=8,fig.height=8} -if(length(tree_f)>1){ -ggplot(data=coefs_t,aes(x=term,y=ctd,ymax=ctd+1.40*quasiSE,ymin=ctd-1.40*quasiSE,col=Label))+ - geom_point(position = position_dodge(width=0.3),size=1)+ - geom_errorbar(position = position_dodge(width=0.3),width=0)+ - coord_flip()+ - geom_text(aes(label=.group),size=3,fontface=2,nudge_x=rep(c(-0.3,0.5),each=nlevels(coefs_t$term)))+ - ylab("")+ - xlab("Variety")+ - ggtitle(paste("Terminal node parameter estimates for","overall","rankings."), - subtitle = paste("Covariates considered:",paste(colnames(dt.fr)[covarlist3],collapse=", "))) -} - -``` -`r nofig1` - -Table 6.3 outlines the p-values for each covariate at each of the nodes in the tree, outlining whether an additional significant split could be determined from within the existing sub-group at that node. - -```{r} -z<-NULL -for(i in 1:length(outtabs)){ - if(ncol(outtabs[[i]])>3){ - ot<-data.frame(parameter=rownames(outtabs[[i]]),outtabs[[i]]) - z<-rbind(z,ot) - } -} -if(length(z)>0){ - nodemessage<-"" -kable(z[,c(1:3,5)],caption="Table 6.3: p-values for effect of each covariate at each node",row.names = FALSE) -} -if(length(z)==0){ - nodemessage<-"No covariates were able to be assessed statistically." -} - -``` -`r nodemessage` - -## Univariate analysis - -`r paste(univariate_model, collapse='\n')` - -# Section 7: Relationship between Traits - -Partial least squares regression was used to determine relationship between the specific traits and the overall rankings. - -*Figure 7.1 - Partial Least Squares Biplot of Relationship Between Traits and Overall Performance* -```{r pls} -if(length(arrows)>0){ - -print(ggplot(data=arrows,aes(y=Comp.2,x=Comp.1,label=trait,yend=y0,xend=x0))+ - geom_hline(yintercept = 0)+geom_vline(xintercept = 0)+ - geom_segment(col="red",arrow = arrow(length = unit(0.5, "cm"),ends = "first" ))+ - geom_abline(linetype=2,col="gray50",slope=(yve[2]-yve[1])/yve[1],intercept=0)+ - geom_text_repel(fontface=2,size=4,col="red")+ - geom_text(data=scores,aes(y=Comp.2,x=Comp.1,label=var),inherit.aes=FALSE,fontface=2,size=3)+ - xlab(paste("Component 1:",formattable::percent(yve[1]),"of Variance in Overall Ranking"))+ - ylab(paste("Component 2:",formattable::percent(yve[2]-yve[1]),"of Variance in Overall Ranking"))) - -pls_summary_line<-paste("The first two components recombining the specific traits are able to explain",percent(yve[2]),"of the variability in the overall ranking. The dashed line represents the overall ranking, with an increase in performance as the x and y axes increase.\n\n - -Varieties positioned close to the dashed line will be performing equally across all traits; varieties positioned further away from the dashed line, on either side, will have varying performance in different traits. Better performance in traits will correspond with arrows pointing in the direction away from the dashed line and worse performance in traits directed on the opposite side.\n\n - -Traits with arrows pointing in similar directions have a similar relationship to the overall ranking. Traits with arrows more closely following the dashed line will have a stronger relationship to the overall ranking.") -} -if(length(arrows)==0){ - print("Partial least squares analysis not possible with data") - pls_summary_line<-"" -} - -#would be nice to connect variety position to dashed line at this point - - -``` - -`r pls_summary_line` - - - -*Table 7.1 - Partial Least Squares Regression Model Of Traits Against Overall Ranking* -```{r regression} -if(length(arrows)>0){ -jack.test(m2,nc) -} -if(length(arrows)==0){ - print("Partial least squares analysis not possible with data") -} -``` - -Table 7.1 summarises the regression model between the rankings of each trait of an individual variety and the overall ranking. The most positive value will be associated with the trait which can explain the largest proportion of the variability in the overall ranking. Due to the strong correlation in rankings for different traits it would be expected for some of these coefficients to be negative. An individual negative value does not neccesarily indicate a negative relationship overall between that trait and the overall ranking; rather that holding all other rankings constant and increase ranking for that trait would not neccesarily be expected to result in an increase in the overall ranking. - -# Appendix A: Summary of User Input Parameters - - -```{r} -coordset<-ifelse(is.null(coordset),1,coordset) - -data.frame(Parameter=c("Summary variable","Ranker text","Option text","Coordinates Used","Significance Level","p-value adjustment Method" ,"Confidence Interval for Comparisons","Maximum % of Data Allowed to be Missing","Minimum sub-group size in tree models"),Value=c(forcesplit,ranker,option,coordset,sig.level,ci.adjust,ci.level,missper,minsplit)) %>% - kable() -``` - - -# Appendix B: All Pairwise Treatment Contests - -```{r} - - -overalltable<-cbind(data.frame(cont1[[3]],check.names = FALSE) %>% mutate(v1=rownames(.)) %>% gather(v2,Percent,-v1), -data.frame(cont1[[4]]) %>% gather(v2,n) %>% select(n)) %>% - filter(v1!=v2) %>% - arrange(v2,v1)%>% - mutate(Overall=percent(Percent)) %>% - select(v2,v1,n,Overall) - - - -for(i in 1:length(contests_t)){ - tmp<-cbind(data.frame(contests_t[[i]][[3]],check.names = FALSE) %>% mutate(v1=rownames(.)) %>% gather(v2,Percent,-v1), -data.frame(cont1[[4]]) %>% gather(v2,n) %>% select(n)) %>% - filter(v1!=v2) %>% - arrange(v2,v1)%>% - mutate(Percent=percent(Percent)) - overalltable$tmp<-tmp$Percent - colnames(overalltable)[ncol(overalltable)]<-trait_short[i] -} - - -overalltable%>% - rename(`Variety 2`=v1,`Variety 1`=v2,`Number of Contests`=n) %>% - kable(caption="Pairwise: % of Contests Where Variety 1 Was Preferred to Variety 2") - - -``` - - -# References -TBD \ No newline at end of file diff --git a/dev/stats4dev_report/Main Report/trait_analysis.Rmd b/dev/stats4dev_report/Main Report/trait_analysis.Rmd deleted file mode 100644 index 34ce2e7..0000000 --- a/dev/stats4dev_report/Main Report/trait_analysis.Rmd +++ /dev/null @@ -1,39 +0,0 @@ - -**`r paste(trait_labels[i])`** - -```{r,include=FALSE,echo=FALSE} - -best<-subset(metadat,trait==trait_names[i]&bw=="best")$num -worst<-subset(metadat,trait==trait_names[i]&bw=="worst")$num - -fav1<-favourability(a=df[,vars[1]], - b=df[,vars[2]], - c=df[,vars[3]], - best=df[,best], - worst=df[,worst]) -fav2<-fav1 - -fav2$best_per<-formattable::percent(fav2$best_per/100,1) -fav2$worst_per<-formattable::percent(fav2$worst_per/100,1) -fav2$wins<-formattable::percent(fav2$wins,1) -fav2$Fav_Score<-round(fav2$Fav_Score,1) - -colnames(fav2)<-c(option,"N","% Top Ranked","% Bottom Ranked","% Contests Won","Net Favourability Score") - - - -p2<-favourability_plot(fav1)+ggtitle(trait_short[i])+ylim(-100,100)+xlab(option) -``` - -```{r} -kable(fav2[nrow(fav2):1,],row.names = FALSE, - caption=paste("Table 2.2.",i,": Favourability Statistics for ",trait_short[i],sep="")) -``` - -*Figure `r paste("2.2.",i,sep="")`* -```{r} -p2 -``` - - - diff --git a/dev/stats4dev_report/Main Report/trait_models.Rmd b/dev/stats4dev_report/Main Report/trait_models.Rmd deleted file mode 100644 index 855d8d7..0000000 --- a/dev/stats4dev_report/Main Report/trait_models.Rmd +++ /dev/null @@ -1,77 +0,0 @@ -**`r trait_labels[i]`** - - -```{r} -x_tmp<-anovas[[i]] -if(length(x_tmp)>1){ - - -p_tmp<-x_tmp[2,5] -x_tmp[,5]<-paste(format.pval((x_tmp[,5])),stars.pval((x_tmp[,5]))) - -x_tmp$model[2]<-paste("mod",trait_short[i],sep="_") - -kable(x_tmp,caption=paste0("Table 5.",i,".1")) -} -``` - -```{r} -message_tmp="" -if(length(x_tmp)>1){ -if(p_tmp<0.001){ -message_tmp<-paste0("p=",format.pval((p_tmp)), " , this suggests that from the experiment shows there is strong evidence of a difference between ", option) -} - -if(p_tmp<0.01 & p_tmp >0.001){ -message_tmp<-paste0("p=",format.pval((p_tmp)), " , this suggests that from the experiment shows there is evidence of a difference between ", option) -} -if(p_tmp>0.01 & p_tmp <0.10){ -message_tmp<-paste0("p=",format.pval((p_tmp))," , this suggests that the experiment shows there may be some evidence of a difference between ", options) -} -if(p_tmp>0.10){ -message_tmp<-paste0("p=",format.pval((p_tmp))," , this suggests that there is not enough evidence to conclude that there are differences between ", options) -} -} -if(length(x_tmp)==1){ - message_tmp<-"No statistical analysis was able to be conducted on this trait." -} -``` - -`r message_tmp` - -```{r,fig.width=7,fig.height=7} - -if(length(x_tmp)>1){ - -plot(plot.multcompPL(summaries[[i]],level=0.84)+ - ggtitle(paste(trait_short[i],"Estimates w/ 84% Confidence Intervals"), - subtitle="Groups created from pairwise contrasts at 5% level\nwith Benjamini & Hochberg adjustment")) -} -``` - -```{r} -if(length(x_tmp)>1){ - -summaries[[i]] %>% - select(estimate,quasiSE,.group) %>% - rename("Estimate"=estimate,"Group"=.group) %>% - kable(digits=2,caption = paste("Table 5.",i,".2 ",trait_short[i]," model parameter estimates")) -} -``` - -```{r} -if(length(x_tmp)>1){ - - -kable(worths[[i]][,-2],caption = paste("Table 5.",i,".3 ","Probability of being highest ranked: ",trait_short[i])) - - -ggplot(data=worths[[i]],aes(y=worth,fill=worth,group=Variety,x=1))+ - geom_bar(stat="identity",col="black",show.legend = FALSE)+ - theme_void()+ - geom_text(aes(y=cumsum(rev(worth))-rev(worth)/2,size=rev(worth),label=rev(paste(Variety,percent(worth),sep=": "))),show.legend = FALSE,fontface=2)+ - ggtitle(paste("Probability that variety is the\nhighest ranked",trait_short[i]))+ - scale_fill_gradient2(low="white",high="forestgreen",midpoint=1/nrow(worthscaled)) + - scale_size_continuous(range=c(0.5,10),limits = c(0,1)) -} -``` diff --git a/dev/stats4dev_report/Main Report/trait_pairs.Rmd b/dev/stats4dev_report/Main Report/trait_pairs.Rmd deleted file mode 100644 index 2097f1f..0000000 --- a/dev/stats4dev_report/Main Report/trait_pairs.Rmd +++ /dev/null @@ -1,20 +0,0 @@ -**`r trait_labels[i]`** - -```{r} -best<-subset(metadat,trait==trait_names[i]&bw=="best")$num - worst<-subset(metadat,trait==trait_names[i]&bw=="worst")$num - -cont_t<-contests(a=df[,vars[1]], - b=df[,vars[2]], - c=df[,vars[3]], - best=df[,best], - worst=df[,worst]) -``` - -*Figure `r paste("2.4.",i,sep="")`* -```{r,fig.height=11,fig.width=9} -cont_t[[2]]+ - ggtitle(paste("Head to Head Performance:",trait_short[i]))+ - ylab("% Contests Preferred")+xlab(option) - -``` \ No newline at end of file diff --git a/dev/stats4dev_report/Setup/analysis.R b/dev/stats4dev_report/Setup/analysis.R deleted file mode 100644 index ff41629..0000000 --- a/dev/stats4dev_report/Setup/analysis.R +++ /dev/null @@ -1,378 +0,0 @@ -####Analysis#### - - -#Table 1 - Variety Summary -vartable<-data.frame(table(c(dataset$variety_a,dataset$variety_b,dataset$variety_c))) -colnames(vartable)<-c("Variety","Frequency") - -if(length(gender)>0){ - dataset$gender<-dataset[,gender] - d1<-dataset %>% gather(a,b,variety_a:variety_c) - - vartable<-vartable %>% - mutate("% of Respondents"=percent(Frequency/nrow(dataset),1),"x"=table(d1$b,d1$gender)[,1], - "x2"=table(d1$b,d1$gender)[,2]) - - colnames(vartable)[4:5]<-paste0(colnames(table(d1$b,d1$gender))[1:2]," (n=",table(dataset$gender),")") -} - -#Map 1 -geodata = F -if(geodata==TRUE){ -map1<- map.f(data = dt.fr,lon = "lon",lat="lat") -mapshot(map1, file = "map1.png") -} - -#Favourability Analysis Table -df<-as.data.frame(dataset) - -fav1 <- summarise_favourite(data = df, - items = vars, - input = overall) - -fav2 <- fav1 - -fav2$best <- formattable::percent(fav2$best / 100, 1) -fav2$worst <- formattable::percent(fav2$worst / 100, 1) -fav2$wins <- formattable::percent(fav2$wins, 1) -fav2$fav_score <- round(fav2$fav_score, 1) - -colnames(fav2)<-c("Variety","N","% Top Ranked","% Bottom Ranked", - "% Contests Won","Net Favourability Score") - -fav2 <- fav2[nrow(fav2):1, ] - -# Contest Plots -R <- rank_tricot(data = df, - items = vars, - input = overall) - -cont1 <- summarise_dominance(R) - -cont2 <- summarise_victories(R) - -plot(cont1) - -plot(cont2) - -# Trait concordance - -# build rankings for the other characteristics -for(i in seq_along(trait_short)) { - - dat_i - - -} - -agreement_traits<-concordance(overall_best = df[,metadat$num[which(metadat$type=="overall"&metadat$bw=="best")]], - overall_worst = df[,metadat$num[which(metadat$type=="overall"&metadat$bw=="worst")]], - bests = df[,metadat$num[which(metadat$type!="overall"&metadat$bw=="best")]], - worsts = df[,metadat$num[which(metadat$type!="overall"&metadat$bw=="worst")]], - names = trait_short) - -agreement_table <- - agreement_traits[[2]] %>% - select(trait,overall,best,worst) %>% - rename("Agreement with Overall Best" = best, - "Agreement with Overall Worst" = worst, - "Complete Ranking Agreement" = overall) - - -strongest_link <- - agreement_traits[[1]]$data %>% - filter(type=="% Agreement with\nOverall Ranking") %>% - filter(agreement==max(agreement)) - -weakest_link <- - agreement_traits[[1]]$data %>% - filter(type=="% Agreement with\nOverall Ranking") %>% - filter(agreement==min(agreement)) - - - -#PL Model - -#overall model - -dt_comp <- na.omit(dt.fr[,c(vars,overall)]) - -R_overall <- rank_tricot(dt_comp, - items = 1:3, - input = 4:5) - -mod_overall <- PlackettLuce(R_overall) - -model_summaries <- multcompPL(mod_overall, adjust = ci.adjust) - -fullanova<-anova.PL(mod_overall) - -worthscaled<-rev(sort(exp(coef(mod_overall))/sum(exp(coef(mod_overall))))) -worthscaled<-data.frame(Variety=factor(names(worthscaled), - (names(worthscaled))),worth=worthscaled, - "% Probability"=percent(worthscaled),check.names = FALSE) - - -mods<-list() -summaries<-list() -worths<-list() -anovas<-list() -contests_t<-list() - -for (i in 1:ntrait){ - - - best<-subset(metadat,trait==trait_names[i]&bw=="best")$num - worst<-subset(metadat,trait==trait_names[i]&bw=="worst")$num - - contests_t[[i]]<-contests(a=df[,vars[1]], - b=df[,vars[2]], - c=df[,vars[3]], - best=df[,best], - worst=df[,worst]) - - df_t <- na.omit(data.frame(a=df[,vars[1]], - b=df[,vars[2]], - c=df[,vars[3]], - best=df[,best], - worst=df[,worst])) - - n <- (2*i)-1 - - R_t <- rank_tricot(df_t, - items = 1:3, - input = 4:5) - - mod_t <-tryCatch( PlackettLuce(R_t, npseudo = 0, maxit =20,trace=FALSE), - error=function(cond) { - message("Here's the original error message:") - message(cond) - # Choose a return value in case of error - return(NA) - }) - mods[[i]]<-mod_t - - if(class(mod_t)=="PlackettLuce"){ - summaries[[i]]<-multcompPL(mod_t,adjust = ci.adjust) - - anovas[[i]]<-anova.PL(mod_t) - - worths[[i]]<-rev(sort(coef(mod_t, log = F))) - - worths[[i]]<-data.frame(Variety=factor(names(worths[[i]]), - (names(worths[[i]]))),worth=worths[[i]], - "Probability"=percent(worths[[i]])) - } - if(class(mod_t)!="PlackettLuce"){ - anovas[[i]]<-NA - worths[[i]]<-NA - } - -} - - -#PLS Analysis combining traits together -coefs<-qvcalc(mod_overall)[[2]]$estimate - -for(i in 1:ntrait){ - if(class(mods[[i]])=="PlackettLuce"){ - coefs<-cbind(coefs,scale(qvcalc(mods[[i]])[[2]]$estimate)) - } -} - - -rownames(coefs)<-rownames(qvcalc(mod_overall)[[2]]) -colnames(coefs)<-c("Overall",trait_short[unlist(lapply(mods,class))=="PlackettLuce"]) - -coefs<-data.frame(coefs) - -library(pls) - -m2 <- plsr(as.formula(paste("Overall~",paste(trait_short[unlist(lapply(mods,class))=="PlackettLuce"],collapse="+"))), - data=coefs, validation = "LOO", jackknife = TRUE) -arrows<-NULL -scores<-NULL -if(ncol(m2$projection)>1){ -arrows<-data.frame((m2$projection)[,1:2],trait=trait_short,x0=0,y0=0) -scores<-data.frame((m2$scores)[,1:2],var=rownames(m2$scores)) -} - - -yve <- drop(R2(m2, estimate = "train", - intercept = FALSE)$val) - -adjCV<-m2$validation$adj -nc<-which(adjCV==min(adjCV)) - -#Analysis with covariates - -dt.fr2<-dt.fr - -covarlist2=c(covars,coords) - -lev1<-unique(c(dt.fr2$variety_a,dt.fr2$variety_b,dt.fr2$variety_c)) -dt.fr2$variety_a<-factor(dt.fr2$variety_a,levels=lev1) -dt.fr2$variety_b<-factor(dt.fr2$variety_b,levels=lev1) -dt.fr2$variety_c<-factor(dt.fr2$variety_c,levels=lev1) - -#first format the covariates and exclude those likely to cause problems -pout<-NULL -stoplist<-NULL -for(i in covarlist2){ - stop<-0 - - if(class(dt.fr2[,i])=="character"){ - dt.fr2[,i]<-factor(dt.fr2[,i]) - } - if(class(dt.fr2[,i])=="factor"){ - # dt.fr2[,i]<-as.factor(replace_na(as.character(dt.fr2[,i]),"missing")) - - t1<-table(dt.fr2[,i],dt.fr2$variety_a) - t2<-table(dt.fr2[,i],dt.fr2$variety_b) - t3<-table(dt.fr2[,i],dt.fr2$variety_c) - - tt<-t1+t2+t3 - if(any(tt==0)){ - stop<-1 - } - - } - if(length(unique(dt.fr2[,i]))<2){ - stop<-2 - } - - if(class(dt.fr2[,i])!="factor"&class(dt.fr2[,i])!="character"&class(dt.fr2[,i])!="numeric" - &class(dt.fr2[,i])!="integer"&class(dt.fr2[,i])!="Date"){ - stop<-3 - } - if(mean(is.na(dt.fr2[,i]))>missper){ - stop<-4 - } - - - stoplist<-c(stoplist,stop) -} - -covarlist3<-covarlist2[stoplist==0] - - -R_overall <- rank_tricot(dt.fr2, - items = vars, - input = overall) - -dt.fr2$G<-group(R_overall, index = seq_len(nrow(R_overall))) - - -dt.fr_t<-na.omit(dt.fr2[,c("G",colnames(dt.fr2)[covarlist3])]) - -fullmodel<-as.formula(paste("G~",paste(colnames(dt.fr)[covarlist3],collapse="+"))) - - - - -tree_f <- pltree(formula=fullmodel, - data = dt.fr_t, minsize = 50, alpha = 0.05) - - -if(length(tree_f)>1){ - - coefs_t<-map_df(nodeids(tree_f,terminal = TRUE), - function(x)data.frame(node=x, - rule=partykit:::.list.rules.party(tree_f, x), - multcompPL(tree_f[[ x ]]$node$info$object))) - - - ns<-map_df(nodeids(tree_f,terminal = TRUE), - function(x)data.frame(node=x, - rule=partykit:::.list.rules.party(tree_f, x), - n=tree_f[[ x ]]$node$info$nobs)) - - coefs_t<-inner_join(coefs_t,ns) - - coefs_t$Label<-paste("Node",coefs_t$node,":",coefs_t$rule,"\n","n=",coefs_t$n) - - - coefs_t<-coefs_t %>% mutate(term=reorder(term,estimate,mean)) %>% - group_by(node) %>% mutate(m=mean(estimate),ctd=estimate-m) %>%data.frame() - - rules=unique(coefs_t$rule) - best_tree<-NULL - - for(i in 1:length(rules)){ - tmp<-subset(coefs_t,rule==rules[i]) - best_tree<-rbind(best_tree,c(tmp$n[1],paste(tmp$term[grep("a",tmp$.group)],collapse=", "), - paste(rev(tmp$term[grep(tmp$.group[nrow(tmp)],tmp$.group)]),collapse=", "))) - - - } - node_summary<-data.frame(rules,best_tree) - colnames(node_summary)<-c("Subgroup","Number of Respondents","Best Ranked Varieties","Worst Ranked Varieties") - -} - - -outtabs<-NULL -for(j in 1:length(tree_f)){ - xxx<-nodeapply(tree_f,j,function(n) info_node(n)$test)[[1]] - if(length(xxx)>0){ - outtabs[[j]]<-data.frame(Node=j,t(nodeapply(tree_f,j,function(n) info_node(n)$test)[[1]])) - outtabs[[j]]$p<-format.pval(outtabs[[j]]$p.value) - } - else{ - outtabs[[j]]<-data.frame(Node=j,Message="No further splits possible",p.value=NA) - } -} - - -##Build headline summaries - -siglist<-NULL -for(i in 1:length(outtabs)){ - if(ncol(outtabs[[i]])>3){ - siglist<-c(siglist,rownames(outtabs[[i]])[outtabs[[i]]$p.value<0.05]) - } -} -siglist<-unique(siglist) - -ps<-fullanova[2,5] -if(isTRUE(ps<0.05)){ -bests<-paste(model_summaries$term[grep("a",model_summaries$.group)],collapse=", ") -worsts<-paste(rev(model_summaries$term[grep(model_summaries$.group[nrow(model_summaries)], - model_summaries$.group)]),collapse=", ") -}else{ - bests<-worsts<-"No significant differences" -} - -for(i in 1:length(anovas)){ - if(class(mods[[i]])=="PlackettLuce"){ - ps<-c(ps,anovas[[i]][2,5]) - if(ps[i]<0.05){ - bests<-c(bests,paste(summaries[[i]]$term[grep("a",summaries[[i]]$.group)],collapse=", ")) - worsts<-c(worsts,paste(rev(summaries[[i]]$term[grep(summaries[[i]]$.group[nrow(summaries[[i]])], - summaries[[i]]$.group)]),collapse=", ")) - } - - else{ - bests<-c(bests,"No significant differences") - worsts<-c(worsts,"No significant differences") - } - } - else{ - ps<-c(ps,NA) - bests<-c(bests,NA) - worsts<-c(worsts,NA) - } -} -ptab<-data.frame(Ranking=c("Overall",trait_short), - p.value=ps,"Best Ranked"=bests, - "Worst Ranked"=worsts,check.names = FALSE) - -ptab$p.value<-paste(format.pval(ptab$p.value),stars.pval(ptab$p.value)) - - -outtabs[[1]]$p.value<-as.numeric(outtabs[[1]]$p.value) - -uni_sum<-outtabs[[1]] -uni_sum$Variable<-rownames(outtabs[[1]]) -uni_sum$p<-paste(format.pval(outtabs[[1]]$p.value),stars.pval(outtabs[[1]]$p.value)) -rownames(uni_sum)<-NULL diff --git a/dev/stats4dev_report/Setup/data.R b/dev/stats4dev_report/Setup/data.R deleted file mode 100644 index 714be84..0000000 --- a/dev/stats4dev_report/Setup/data.R +++ /dev/null @@ -1,163 +0,0 @@ -#######GET DATA FROM SERVER - -mydata <- data.frame(ClimMobTools::getDataCM(key, project = projname, pivot.wider = TRUE, tidynames = FALSE)) -rawdata <- ClimMobTools::getDataCM(key, project = projname, pivot.wider = TRUE, tidynames = FALSE,raw=TRUE) -#mydata<-rawdata$data - -#pull out components of the raw data file for use elsewhere -characteristics <- rawdata$specialfields -keys <- rawdata$importantfields -nameproj <- rawdata$project$project_name -fields <- rawdata$registry$fields - -#combine data collected after registration into a single dataframe -latefields<-do.call("rbind",rawdata$assessments$fields) - -#pick out variables which can be used as covariates in analysis -covardata<-fields[grep("integer|decimal|select_one|date",fields$odktype),c("name","desc","odktype")] - -#pick our the variables which are the overall ranking -overalls<-keys[keys$type%in%c("OverallCharPos","OverallCharNeg"),] - -#combine the "characteristics" and "overall" variables into a single trait field -trait_data<-left_join(characteristics,overalls,by=c("name"="field")) - -#tidy up names of traits so that pos and neg can be identified with trait -trait_data$name2<-str_split_fixed(trait_data$name,pattern = "_char_",2)[,2] -trait_data$name3<-str_split_fixed(trait_data$name,pattern = "_",2)[,2] -trait_data$direction<-substr(trait_data$name2,nchar(trait_data$name2)-2,nchar(trait_data$name2)) -trait_data$trait_shrt<-substr(trait_data$name2,1,nchar(trait_data$name2)-4) - -#pick out the positive traits to merge the labels consistently across all traits -pos<-subset(trait_data,direction=="pos",select=c("trait_shrt","desc.x")) -colnames(pos)[2]<-"labeltext" -trait_data<-merge(trait_data,pos,all=TRUE) - -#create a flag for the overall trait variable -trait_data$Overall<-ifelse(trait_data$type.y%in%c("OverallCharPos","OverallCharNeg"),"Overall", - ifelse(trait_data$type.x=="Characteristic","Trait","Skip")) - -#remove the traits or missing values and only keep the variables which can be used in the analysis -latefields2<-subset(latefields,!name%in%trait_data$name3 & is.na(key)& - grepl("integer|decimal|select_one|date",latefields$odktype),select=c("name","desc","odktype")) - -#combine the late fields with the fields collected at registration -covardata<-rbind(covardata,latefields2) - -#look for coordinates -geodata<-any(grepl("geopoint",c(fields$odktype,latefields$odktype))==TRUE) - -#can only use one coordinate set at the moment, so look to extract the coordinate set based on input set to coordset parameter -#by default it will look for the first set of coordinates it finds -coords<-NULL -if(geodata==TRUE){ - coords<-colnames(mydata)[grep("_lon$|_lat$",colnames(mydata))] - - if(length(coords)>2){ - if(is.null(coordset)){coordset<-1} - coords<-coords[c((coordset*2)-1,coordset*2)] - } - mydata$lon<-as.numeric(mydata[,coords[1]]) - mydata$lat<-as.numeric(mydata[,coords[2]]) - - coords<-c(ncol(mydata)-1,ncol(mydata)) -} - -#work with the variety data to format these together -vars<-grep("item_A|item_B|item_C",colnames(mydata)) -covars<-NULL -if(nrow(covardata)>0){ - covars<-grep(paste0("_",paste(covardata$name,collapse="|")),colnames(mydata)) -} - -overall<-grep(paste0("_",paste(trait_data$name3[trait_data$Overall=="Overall"],collapse="|")),colnames(mydata)) -traits<-grep(paste0("_",paste(trait_data$name3[trait_data$Overall=="Trait"],collapse="|")),colnames(mydata)) -performance<-grep(paste0("_",paste(trait_data$name3[trait_data$Overall=="Skip"],collapse="|")),colnames(mydata)) - -dates<-ifelse(any(covardata$odktype=="date"), - grep(paste0("_",paste(covardata$name[covardata$odktype=="date"],collapse="|")),colnames(mydata)), - 0) - -#take a copy of the data -dataset<-mydata - - -#identify the column which is the forced splitting column -gender=grep(forcesplit,colnames(mydata)) - -#create a metadata file to use later linking up all the columns used - -metadat<-data.frame(type=c(rep("vars",length(vars)), - rep("covars",length(covars)), - rep("overall",length(overall)), - rep("traits",length(traits))), - num=c(vars,covars,overall,traits)) - -#add some columns id-ing which is which trait and which is pos and which is neg -metadat$colname<-colnames(dataset)[metadat$num] -metadat$trait<-ifelse(metadat$type%in%c("traits","overall"),str_replace(metadat$colname,"_best|_worst|_pos|_neg",""),"") -metadat$bw<-ifelse(metadat$type%in%c("traits","overall"), - gsub("_","",str_extract(metadat$colname,"_best|_worst|_pos|_neg")),"") - -#get time of data collection and mergeable name -metadat$time<-str_split_fixed(metadat$colname,"_",3)[,1] -metadat$metadataname<-str_split_fixed(metadat$colname,"_",3)[,3] - -#merge extra fields into metadata -metadat<-left_join(metadat,covardata,by=c("metadataname"="name")) -metadat<-left_join(metadat,trait_data[,c("name3","trait_shrt","labeltext")],by=c("metadataname"="name3")) - -#replace some missing values with some useful info -metadat$desc[is.na(metadat$desc)]<-metadat$labeltext[is.na(metadat$desc)] - -#get rid of now obsolete final column -metadat<-metadat[,-ncol(metadat)] - -#calculate number of traits and number of covariates for looping purposes -ntrait<-length(traits)/2 -ncovar<-length(covars) - -#rename some columns to make compatible with old style output -colnames(dataset)[vars]<-c("variety_a","variety_b","variety_c") - -metadat$bw[metadat$bw=="pos"]<-"best" -metadat$bw[metadat$bw=="neg"]<-"worst" - -#create full covariate list to modify -covarlist=covars - -#modify date structures so that they look like dates -if(dates[1]!=0){ - for(i in 1:length(dates)){ - dataset[,dates[i]]<-as.Date(dataset[,dates[i]]) - } -} - -#identify numeric columns -nums<-metadat$num[metadat$odktype%in%c("integer","decimal")] - -if(length(nums)>0){ - for(i in 1:length(nums)){ - dataset[,nums[i]]<-as.numeric(as.character(dataset[,nums[i]])) - } -} - -#get trait names -trait_names<-unique(metadat$trait[metadat$type=="traits"]) -trait_labels<-metadat$desc[(metadat$trait%in%trait_names)&metadat$bw=="best"] -trait_short<-metadat$trait_shrt[(metadat$trait%in%trait_names)&metadat$bw=="best"] - -#get covar names - -covar_full<-metadat$colname[metadat$num%in%covarlist] -covar_names<-metadat$metadataname[metadat$num%in%covarlist] -covar_labels<-metadat$desc[metadat$num%in%covarlist] - -colnames(dataset)[colnames(dataset)%in%covar_full]<-covar_names - -#make sure data looks like a data frame then we are good to go -dt.fr<-as.data.frame(dataset) - -#make the option and ranker fields into plurals. pluralise should do this in a somewhat clever way. -options<-pluralize(option) -rankers<-pluralize(ranker) diff --git a/dev/stats4dev_report/Setup/dependencies.R b/dev/stats4dev_report/Setup/dependencies.R deleted file mode 100644 index 1290f78..0000000 --- a/dev/stats4dev_report/Setup/dependencies.R +++ /dev/null @@ -1,44 +0,0 @@ -###CRAN -#install.packages("devtools","ggrepel","tidyverse","svglite","plotly","jsonlite","httr","partykit","qvcalc","psychotools","PlackettLuce","stringr", -#"knitr","formattable","scales","leaflet","mapview","tidyr","gtools","magrittr","pander","rmarkdown","pls", "plotrix", "png","ClimMobTools)) - -library(devtools) -library(ggrepel) -library(tidyverse) -library(svglite) -library(plotly) -library(jsonlite) -library(httr) -library(partykit) -library(qvcalc) -library(psychotools) -library(PlackettLuce) -library(stringr) -library(knitr) -library(formattable) -library(plotrix) -library(png) -library(scales) -library(leaflet) -library(mapview) -library(tidyr) -library(gtools) -library(magrittr) -library(pander) -library(rmarkdown) -library(pls) -library(ClimMobTools) - - - -####GITHUB -#devtools::install_github("hrbrmstr/pluralize") -#devtools::install_github("agrobioinfoservices/gosset") - -#library(pluralize) -library(gosset) - - -##Other - -#Need phantomjs installed on server. But once installed then it is there. -#webshot::install_phantomjs() diff --git a/dev/stats4dev_report/Setup/functions.R b/dev/stats4dev_report/Setup/functions.R deleted file mode 100644 index 9a35ce4..0000000 --- a/dev/stats4dev_report/Setup/functions.R +++ /dev/null @@ -1,782 +0,0 @@ -###Functions for Climmob Reporting Analysis - -##List of functions -##Updated 01 May 2019 -## -##scale01() : simple scaling function -## -##byfac() : produces PlackettLuce estimates and errorbars to compare between different levels of factor -## -##favourability() : calculates total wins, losses and favourability scores -## -##favourability_plot() : plot of favourability scores -## -##win_plot() : plot of win % -## -##multcompPL() : does mean seperation from PlackettLuce object with CLD grouping -## -##plot.multcompPL() : plots errorbars, confidence intervals and CLD letters -## -##concordance() : determines level of agreement between list of traits with the overall trait -## -##contests() : produce pairwise contest matrix between all varieties -## -##anova.PL() : ANOVA table from LRT test of PL Model -## -##draw.emojis() : draws emojis for the feedback forms -## -##get_ranking() : part of the favourability function, slightly modified to include second best as well - - -scale01 <- function(x) (x-min(x))/(max(x)-min(x)) - -byfac<-function(model,split){ - - split<-as.factor(split) - out<-NULL - for(i in 1:nlevels(split)){ - mod_t<-update(mod1,rankings=R[split==levels(split)[i],]) - - tmp<-data.frame(var=rownames(qvcalc(mod_t)$qvframe),split=levels(split)[i],qvcalc(mod_t)$qvframe) - tmp$estimate_adj<-tmp$estimate-mean(tmp$estimate) - - - out<-rbind(out,tmp) - } - out - - ggplot(data=out,aes(y=estimate_adj,x=var,ymax=estimate_adj+qnorm(0.92)*quasiSE, - ymin=estimate_adj-qnorm(0.92)*quasiSE,col=split))+ - geom_errorbar(width=0.2,position = position_dodge(width=0.25))+ - geom_point(position = position_dodge(width=0.25)) -} - - - - - -win_plot<-function(x){ - p1<- ggplot(data=x,aes(y=wins,fill=wins,x=var))+ - geom_bar(stat="identity",col="black")+ - coord_flip()+ - scale_y_continuous(breaks=seq(0,1,by=0.1),labels=scales::percent)+ - scale_fill_gradient2(low="red",mid="white",high="forestgreen",limits=c(0,1),midpoint=0.5) - - return(p1) -} - -multcompPL<-function(mod,terms=NULL,threshold=0.05,Letters=letters,adjust="none"){ - - require(qvcalc) - require(multcompView) - - #get estimates with quasi-SEs - qv1<-qvcalc(mod)$qvframe - - #reduce frame to only selected terms if not all comparisons are desired - if(is.null(terms)==FALSE){ - qv1<-subset(qv1,rownames(qv1)%in%terms) - #give error if less than 2 terms can be identified - if(nrow(qv1)<3){ - stop("Less than 2 terms selected") - } - } - - #set up matrices for all differences and pooled errors - diffs<-mat.or.vec(nrow(qv1),nrow(qv1)) - ses<-mat.or.vec(nrow(qv1),nrow(qv1)) - - for(i in 1:nrow(qv1)){ - for(j in 1:nrow(qv1)){ - - #get differences and pooled ses - diffs[i,j]<-qv1$estimate[i]-qv1$estimate[j] - ses[i,j]<-sqrt(qv1$quasiVar[i]+qv1$quasiVar[j]) - } - } - - #calculate z scores - z<-diffs/ses - #TO DO: What DF to use to use here? Is it just the resid DF? - p<-2*(1-pt(abs(z),mod$df.residual)) - - #adjust p-value if you want to adjust. make sure to only take each p once for adjustment - p[upper.tri(p)]<-p.adjust(p[upper.tri(p)],method = adjust) - - #make sure lower triangular is mirror of upper - p[lower.tri(p)] = t(p)[lower.tri(p)] - - #set rownames - rownames(p)<-colnames(p)<-rownames(qv1) - - #re-order qv output to ensure letters are produced in a sensible order - qv1$term<-reorder(factor(rownames(qv1)),qv1$estimate,mean) - qv1<-qv1[order(qv1$estimate,decreasing = TRUE),] - - #get mean seperation letter groupings - qv1$.group<-multcompLetters2(estimate ~ term, p, qv1, - compare="<", - threshold=threshold, - Letters=Letters, - reversed = FALSE)$`Letters` - return(qv1) - -} - -#simple ggplot function to plot output from multcompPL with error bars -plot.multcompPL<-function(x,level=0.95,xlab="",ylab=""){ - require(ggplot2) - p1<- ggplot(data=x,aes(y=estimate,x=term,label=.group,ymax=estimate+qnorm(1-(1-level)/2)*quasiSE, - ymin=estimate-qnorm(1-(1-level)/2)*quasiSE))+ - geom_point()+ - geom_errorbar(width=0.1)+ - coord_flip()+ - geom_text(vjust=1.2)+ - xlab(xlab)+ylab(ylab) - return(p1) -} - -concordance<-function(overall_best,overall_worst,bests,worsts,names){ - require(ggplot2) - require(dplyr) - require(formattable) - require(scales) - require(tidyr) - - - b1<-bests - colnames(b1)<-paste(names,"b",sep="") - - w1<-worsts - colnames(w1)<-paste(names,"w",sep="") - - dt1<-data.frame(overall_b=overall_best,overall_w=overall_worst,b1,w1,stringsAsFactors = FALSE) - - for(i in 3:(2+ncol(bests))){ - dt1[,i]<-dt1[,i]==dt1[,1] - } - for(i in (3+ncol(bests)):ncol(dt1)){ - dt1[,i]<-dt1[,i]==dt1[,2] - } - - - Overall<-dt1[,3:(2+ncol(bests))]==TRUE & dt1[,(3+ncol(bests)):ncol(dt1)]==TRUE - - plot_data<-data.frame(agreement=c(colMeans(dt1[,-(1:2)],na.rm=T),colMeans(Overall,na.rm=T)), - type=rep(c("best","worst","overall"),each=length(names)), - trait=rep(names,3)) - - - - plot_data$trait<-reorder(factor(plot_data$trait),ifelse(plot_data$type=="overall",plot_data$agreement,0),mean) - - out_data<-plot_data %>% mutate(agreement=percent(agreement,1)) %>% spread(type,agreement) - - - plot_data$type<-factor(plot_data$type,levels=rev(c("worst","best","overall")), - labels=rev(c("% Agreement with\nOverall Worst", - "% Agreement with\nOverall Best", - "% Agreement with\nOverall Ranking"))) - - - p1<-ggplot(plot_data,aes(y=agreement,x=trait,alpha=agreement,fill=type))+ - geom_bar(stat="identity",position="dodge",col=alpha("gray50",1),show.legend = FALSE)+ - facet_wrap(~type)+coord_flip()+ - geom_hline(yintercept=0:1,size=1)+ - scale_fill_manual(values=c("purple","forestgreen","red"))+ - geom_text(aes(y=agreement/2,label=formattable::percent(agreement,1)),fontface=2,size=8,alpha=1)+ - scale_y_continuous(labels=scales::percent,breaks=seq(0,1,by=0.2),limits=c(0,1))+ylab("")+xlab("")+ - theme(axis.text.y = element_text(size=15,face=2),strip.text =element_text(size=15,face=2) ) - - - return(list(p1,out_data)) -} - - -contests<-function(a,b,c,best,worst,format="ABC",type="all",player=NULL){ - - nalist<-is.na(best)==F&is.na(worst)==F&is.na(a)==F&is.na(b)==F&is.na(c)==F - - bw<- data.frame(favourability(a,b,c,best,worst, - format=format,out="raw"),variety.a=a[nalist],variety.b=b[nalist],variety.c=c[nalist],stringsAsFactors = FALSE) - - bw<-na.omit(bw) - require(tidyr) - require(dplyr) - require(scales) - require(ggplot2) - - if(type=="all"){ - vars<-sort(unique(c(bw$variety.a,bw$variety.b,bw$variety.c))) - nvars<-length(vars) - - out<-NULL - for(i in 1:nvars){ - tmp<-ifelse(bw$best1==vars[i],1, - ifelse(bw$worst1==vars[i],3, - ifelse(bw[,"variety.a"]==vars[i]| - bw[,"variety.b"]==vars[i]|bw[,"variety.c"]==vars[i],2,NA))) - out<-cbind(out,tmp) - } - - colnames(out)<-vars - - pref<-matrix(NA,nvars,nvars) - nmat<-matrix(NA,nvars,nvars) - for(i in 1:nvars){ - for(j in 1:nvars){ - if(i!=j){ - n<-sum(is.na(out[,i])==F&is.na(out[,j])==F) - pij<-sum(out[,i]>out[,j],na.rm=T) - pji<-sum(out[,i]% - data.frame(check.names = FALSE) %>% - mutate(var1=rownames(pref2)) %>% - gather(key="var2",value="val",-var1) %>% - mutate(txt=ifelse(val==50,"50:50",ifelse(val<50,paste("A","\n",100-val,"%",sep=""), - paste("B","\n",val,"%",sep=""))), - var1=factor(var1,levels=rev(rownames(pref2)))) %>% - mutate(var2=factor(var2,levels=rownames(pref2))) %>% - ggplot(aes(y=var1,x=var2,fill=100-val,label=txt))+ - geom_tile(col="gray50")+ - geom_text(size=3,fontface=2)+ - scale_x_discrete(position="top")+ - scale_fill_gradient2(limits=c(0,100),low = alpha("red",0.75), - high=alpha("forestgreen",0.75),midpoint = 50)+ - xlab("B")+ylab("A")+labs(fill="% Wins for\nDominant Variety") - - p2<- pref %>% - data.frame(var1=rownames(pref),check.names = FALSE) %>% - gather(-var1,key = "var2",value="value") %>% - mutate(var1=factor(var1,levels=rev(rownames(pref2))), - var2=factor(var2,levels=rownames(pref2))) %>% - ggplot(aes(y=value,x=var1))+ - geom_bar(aes(fill=value),stat="identity",col="black")+ - facet_wrap(~var2,scales="free_y",ncol=3)+ - coord_flip()+ - scale_fill_gradient2(limits=c(0,1),low = alpha("red",0.75), - high=alpha("forestgreen",0.75),midpoint = 0.5,labels=percent,name="% Times Preferred")+ - scale_y_continuous(labels=percent,limits=c(0,1)) - - return(list(p1,p2,pref,nmat)) - } -} - -anova.PL<-function(model){ - if(class(model)!="PlackettLuce"){ - stop("Model type is not Plackett Luce") - } - LLs<-c(model$null.loglik,model$loglik) - dfs<-c(model$df.null,model$df.residual) - df_diff<-(-1)*diff(dfs) - df_LL<-(-1)*diff(LLs) - p=1-pchisq(-2*df_LL,df_diff) - - - x<-data.frame(model=c("NULL",deparse(substitute(model))), - "logLikelihood"=LLs, - DF=dfs,"Statistic"=c(NA,-2*df_LL), - "Pr(>Chisq)"=c(NA,p),check.names = FALSE,stringsAsFactors = FALSE) - return(x) -} - - - -map.f <- - function( - data = data4, - lon = "lon", - lat = "lat", - remove_outliers = TRUE, - number_of_clusters = 6, - cluster_method = "complete", - max_cluster_dist = 250, - min_cluster_pert = 0.05, - padding = NULL, - map_provider = "Esri.WorldImagery", - minimap_position = "bottomright" - ){ - - ## Take input df and create a data frame with only lon & lat - ## Making coding easier and removing unnecessary columns - - df <- - data.frame( - lon = data[, lon], - lat = data[, lat], - stringsAsFactors = FALSE - ) - - ## Checks if there are any NAs and removes them - - if( - any(is.na(df)) - ){ - warning("Data contains ", sum(is.na(df[,"lon"])|is.na(df[,"lat"])) , - " missing or invalid points which have been removed \n") - df <- na.omit(df) - } - - - ## Checks if lon & lat are are numeric, converts if neccesary - ## and supresses warnings. May introduce NAs. - - if( - !(is.numeric(df$lon))|!(is.numeric(df$lat)) - ){ - df[, "lon"] <- suppressWarnings(as.numeric(df[, "lon"])) - df[, "lat"] <- suppressWarnings(as.numeric(df[, "lat"])) - } - - ## Ensure data lon & lat are each within [-180, 180] and - ## data frame does not include the point (0,0). - ## If not, then points are converted to NAs - - - if ( - any( - df <= -180 | df >= 180 | (df$lon == 0 & df$lat == 0) - ) - ){ - - df$lon[which(!between(df$lon,-180, 180))] <- NA - df$lat[which(!between(df$lat,-180, 180))] <- NA - df[which(df$lon == 0 & df$lat == 0),] <- NA - } - - ## Checks if there are any NAs and removes them - - if( - any(is.na(df)) - ){ - warning("Data contains ", sum(is.na(df[,"lon"])|is.na(df[,"lat"])) , - " missing or invalid points which have been removed \n") - df <- na.omit(df) - } - - - - ## Outliers are defined as points that are part of cluster that are not too - ## small or are not too far away from other clusters. - ## This section will calculate clusters, test if these clusters meet the size - ## and distance requirements and remove any that do not meet this criteria - ## If the number_of_clusters == 0 or remove_outliers is FALSE then the code - ## will not run. - - if(remove_outliers){ - - ## Create clusters; - df <- - df %>% - ## Remove duplicate lon & lat temporarily - distinct(lon, lat, .keep_all = FALSE) %>% - ## Create a distance matrix of all points, - dist() %>% - ## Calculate clustering information of the points with hclust - ## using the algo specified by cluster_methods - hclust(method = "single") %>% - ## Return cluster group for each point, grouping into the number of clusters - ## specified by number_of_points - cutree(h = max_cluster_dist/110) %>% - ## Add clusters group column to the distinct lon & lat points - { - bind_cols( - distinct(df, lon, lat, .keep_all = FALSE), - cluster = .) - } %>% - ## Rejoin to main dataset - right_join(df, by = c("lon", "lat")) - - # - # ## Create list of clusters to include - # - # tmp <- - # df %>% - # ## Calculate centre for each cluster using mean lon and mean lat - # group_by(cluster) %>% - # summarise(mean(lon), mean(lat)) %>% - # ungroup() %>% - # ## Calculate distance between each cluster centre as a distance matrix - # dist() %>% - # ## Crude conversion from lon & lat to km - # multiply_by(110) %>% - # ## Set all distances between the cluster and itself to NAs - # as.matrix() %>% - # `diag<-`(NA) %>% - # ## Find the minimum distance to another cluster for each cluster - # apply(1, min, na.rm = TRUE) %>% - # ## Test if mimimum distance of each cluster to the nearest cluster is below the - # ## the maximum boundary set by max_cluster_dist - # t() %>% - # is_less_than(max_cluster_dist) %>% - # ## Return the list of all clusters the are considered valid - # which() - - tmp <- - df %>% - ## Calculate percentage of points in each cluster - group_by(cluster) %>% - summarise(pert = n()) %>% - mutate(pert = pert / sum(pert)) %>% - ## Keep those that are larger than the minimum cluster size - filter(pert > min_cluster_pert) %>% - ## Combine the list of cluster with enough points with the clusters that are not - ## too far from each other - use_series("cluster") - # plot(df$lon, df$lat, col = df$cluster) - - - ## If clusters are to be removed, then create a warning message saying how many - ## points are considered outliers - - if(NROW(df[!(df$cluster %in% tmp), ]) != 0){ - warning(NROW(df[!(df$cluster %in% tmp), ]), - " records are considered outliers and have been removed \n") - } - - # Subset dataset to only those that are considered vaild clusters - df <- - df[df$cluster %in% tmp, ] - } - - ## Find the maximum distance between my points - - lon_dif <- dist(df$lon) - lat_dif <- dist(df$lat) - max_dif <- - max( - c(max(lon_dif), - max(lat_dif) - )) - - ## Create the map - - # return(list(df = df, map = map)) - map <- - ## Supress messages and create base layer - suppressMessages( - df %>% - leaflet(options = leafletOptions(maxZoom = 17)) %>% - ## Set rectangular view of the final map using the min and max of lon & lat - ## padding option does not work - fitBounds( - lng1 = min(df$lon), lat1 = min(df$lat), - lng2 = max(df$lon), lat2 = max(df$lat), - options = list(padding = padding) - ) %>% - ## Define the base map texture using map_provider - addProviderTiles(map_provider, options = providerTileOptions(maxNativeZoom=17)) %>% - ## Add clusters markers (calculated seperate to above process) - #addAwesomeMarkers(icon = icons, clusterOptions = markerClusterOptions()) %>% - ## Add point markers - addCircleMarkers( - radius = 4, - # fillColor = "midnight blue", - opacity = 0.5, - fillOpacity = 0.5, - fillColor = "black", - color = "white", - clusterOptions = markerClusterOptions() - ) %>% - ## Add minimap to final map, position based on minimap_position - addMiniMap(position = minimap_position) - ) - - map_interval <- - 10^round(log10(max_dif))/2 - - map_interval <- - ifelse(round(max_dif/map_interval) == 1, 10^round(log10(max_dif))/5, 10^round(log10(max_dif))/2) - - - if(abs(map_interval)<0.01){ - lon_line <- - data.frame( - lon = c(median(df$lon)-0.03, median(df$lon)+0.03), - lat = c(median(df$lat)) - ) - - lat_line <- - data.frame( - lon = c(median(df$lon)), - lat = c(median(df$lat)-0.03, median(df$lat)+0.03) - ) - - map <- - map %>% - addPolylines(data = lon_line, lng = ~lon, lat = ~lat, color = "#000", opacity = 1, weight = 3) %>% - addPolylines(data = lat_line, lng = ~lon, lat = ~lat, color = "#000", opacity = 1, weight = 3) %>% - addControl(html = paste(round(median(df$lon), digits = 5), round(median(df$lat), digits = 5), sep = ", "), position = "topleft") - } else { - - xticks <- - seq( - floor(map$x$fitBounds[[2]]/map_interval)*map_interval, - ceiling(map$x$fitBounds[[4]]/map_interval)*map_interval, - by=map_interval - ) - - yticks <- - seq( - floor(map$x$fitBounds[[1]]/map_interval)*map_interval, - ceiling(map$x$fitBounds[[3]]/map_interval)*map_interval, - by = map_interval - ) - - map <- - map %>% - addGraticule(interval = map_interval) %>% - addLabelOnlyMarkers(lng=xticks-map_interval/20,lat=max(df$lat,na.rm=T),label=as.character(xticks), - labelOptions = labelOptions(noHide = T, direction = 'right', textOnly = T,style = list( - "color" = "white", - "font-style" = "bold", - "font-size" = "12px" - ))) %>% - addLabelOnlyMarkers(lng=min(df$lon,na.rm=T),lat=yticks,label=as.character(yticks), - labelOptions = labelOptions(noHide = T, direction = 'right', textOnly = T,style = list( - "color" = "white", - "font-style" = "bold", - "font-size" = "12px" - ))) - } - - map$x$options = list("zoomControl" = FALSE) - - return(map = map) - - } - - -node_terminal1<- - function (mobobj, id = TRUE, worth = TRUE, names = TRUE, abbreviate = TRUE, - index = TRUE, ref = TRUE, col = "black", refcol = "lightgray", - bg = "white", cex = 0.5, pch = 19, xscale = NULL, yscale = NULL, - ylines = 1.5) - { - node <- nodeids(mobobj, terminal = FALSE) - cf <- psychotree:::apply_to_models(mobobj, node, FUN = function(z) if (worth) - worth(z) - else coef(z, all = FALSE, ref = TRUE)) - - - cf <- do.call("rbind", cf) - rownames(cf) <- node - cf<-cf[,order(colSums(cf))] - - mod <- psychotree:::apply_to_models(mobobj, node = 1L, FUN = NULL, drop = TRUE) - if (!worth) { - if (is.character(ref) | is.numeric(ref)) { - reflab <- ref - ref <- TRUE - } - else { - reflab <- mod$ref - } - if (is.character(reflab)) - reflab <- match(reflab, if (!is.null(mod$labels)) - mod$labels - else colnames(cf)) - cf <- cf - cf[, reflab] - } - if (worth) { - cf_ref <- 1/ncol(cf) - } - else { - cf_ref <- 0 - } - if (is.character(names)) { - colnames(cf) <- names - - names <- TRUE - } - if (is.logical(abbreviate)) { - nlab <- max(nchar(colnames(cf))) - abbreviate <- if (abbreviate) - as.numeric(cut(nlab, c(-Inf, 1.5, 4.5, 7.5, Inf))) - else nlab - } - colnames(cf) <- abbreviate(colnames(cf), abbreviate) - if (index) { - x <- 1:NCOL(cf) - if (is.null(xscale)) - xscale <- range(x) + c(-0.1, 0.1) * diff(range(x)) - } - else { - x <- rep(0, length(cf)) - if (is.null(xscale)) - xscale <- c(-1, 1) - } - if (is.null(yscale)) - yscale <- range(cf) + c(-0.1, 0.1) * diff(range(cf)) - rval <- function(node) { - idn <- id_node(node) - cfi <- cf[idn, ] - top_vp <- viewport(layout = grid.layout(nrow = 2, ncol = 3, - widths = unit(c(ylines, 1, 1), c("lines", "null", - "lines")), heights = unit(c(1, 1), c("lines", - "null"))), width = unit(1, "npc"), - height = unit(1, "npc") - unit(2, "lines"), - name = paste("node_btplot", idn, sep = "")) - pushViewport(top_vp) - grid.rect(gp = gpar(fill = bg, col = 0)) - top <- viewport(layout.pos.col = 2, layout.pos.row = 1) - pushViewport(top) - mainlab <- paste(ifelse(id, paste("Node", idn, - "(n = "), ""), info_node(node)$nobs, - ifelse(id, ")", ""), sep = "") - grid.text(mainlab) - popViewport() - plot_vpi <- viewport(layout.pos.col = 2, layout.pos.row = 2, - xscale = xscale, yscale = yscale, name = paste("node_btplot", - idn, "plot", sep = "")) - pushViewport(plot_vpi) - grid.lines(xscale, c(cf_ref, cf_ref), gp = gpar(col = refcol), - default.units = "native") - if (index) { - grid.lines(x, cfi, gp = gpar(col = col, lty = 2), - default.units = "native") - grid.points(x, cfi, gp = gpar(col = col, cex = cex), - pch = pch, default.units = "native") - grid.xaxis(at = x,edits = gEdit(gPath="labels", rot=90,cex=0.4), label = if (names) - names(cfi) - else x) - } - else { - if (names) - grid.text(names(cfi), x = x, y = cfi, default.units = "native") - else grid.points(x, cfi, gp = gpar(col = col, cex = cex), - pch = pch, default.units = "native") - } - grid.yaxis(at = c(ceiling(yscale[1] * 100)/100, floor(yscale[2] * - 100)/100)) - grid.rect(gp = gpar(fill = "transparent")) - upViewport(2) - } - return(rval) - - } - -draw.emojis <- function(x,y,type="happy",radius=0.3, color="grey", border="black", thickness=1.5){ - draw.circle(x,y,radius,nv=100,border=color,col=color,lty=1,density=NULL,angle=45,lwd=thickness/1.5) - segments(x0=x+radius/5, x1=x+radius/5, y0=y+radius/2.5, y1=y+radius/5, lwd = thickness*1.5, col=border) - segments(x0=x-radius/5, x1=x-radius/5, y0=y+radius/2.5, y1=y+radius/5, lwd = thickness*1.5, col=border) - if(type=="happy") draw.arc(x,y,radius=radius/2, deg1=200, deg2=340, col=border, lwd=thickness/1.2) - if(type=="sad") draw.arc(x,y-radius/1.5,radius=radius/2, deg1=20, deg2=160, col=border, lwd=thickness/1.2) - if(type=="neutral") segments(x0=x-radius/4, x1=x+radius/4, y0=y-radius/3, y1=y-radius/3, lwd = thickness, col=border) -} -draw.emojis<-Vectorize(draw.emojis) - -# favourability function modified to get the second best as well -get_ranking <- function(a,b,c,best,worst,format="ABC",reorder=TRUE){ - a<-as.character(a) - b<-as.character(b) - c<-as.character(c) - best<-as.character(best) - worst<-as.character(worst) - - if(format=="abc"){ - best<-toupper(best) - worst<-toupper(worst) - } - - middle <- str_replace_all(str_replace_all("ABC",best,""),worst,"") - - best1<-ifelse(best=="A",a, - ifelse(best=="B",b, - ifelse(best=="C",c,NA))) - worst1<-ifelse(worst=="A",a, - ifelse(worst=="B",b, - ifelse(worst=="C",c,NA))) - middle1<-ifelse(middle=="A",a, - ifelse(middle=="B",b, - ifelse(middle=="C",c,NA))) - return(data.frame(best1, middle1, worst1)) -} - - - -favourability<-function(a,b,c,best,worst,format="ABC",reorder=TRUE,out="summary"){ - nalist<-is.na(best)==F&is.na(worst)==F&is.na(a)==F&is.na(b)==F&is.na(c)==F - a<-as.character(a)[nalist] - b<-as.character(b)[nalist] - c<-as.character(c)[nalist] - best<-as.character(best)[nalist] - worst<-as.character(worst)[nalist] - - - - if(format=="abc"){ - best<-toupper(best) - worst<-toupper(worst) - } - - best1<-ifelse(best=="A",a, - ifelse(best=="B",b, - ifelse(best=="C",c,NA))) - worst1<-ifelse(worst=="A",a, - ifelse(worst=="B",b, - ifelse(worst=="C",c,NA))) - if(out=="summary"){ - vars<-sort(unique(c(a,b,c))) - - inrow<-NULL - wins<-NULL - losses<-NULL - - for(i in 1:length(vars)){ - inrow<-cbind(inrow,ifelse(a==vars[i]|b==vars[i]|c==vars[i],1,0)) - wins<-cbind(wins,ifelse(best1==vars[i],1,0)) - losses<-cbind(losses,ifelse(worst1==vars[i],1,0)) - } - colnames(inrow)<-paste("n",1:(length(vars)),sep="") - colnames(wins)<-paste("b",1:(length(vars)),sep="") - colnames(losses)<-paste("w",1:(length(vars)),sep="") - - - - - sumstats<-data.frame(var=vars,N=colSums(inrow), - best_per=100*colSums(wins)/colSums(inrow), - worst_per=100*colSums(losses)/colSums(inrow), - wins=((2*colSums(wins))+colSums(inrow-wins-losses))/(2*colSums(inrow)),stringsAsFactors = FALSE) - - sumstats$Fav_Score=sumstats$best_per-sumstats$worst_per - - if(reorder==TRUE){ - sumstats$var<-reorder(sumstats$var,sumstats$Fav_Score,mean) - sumstats<-sumstats[order(sumstats$Fav_Score),] - } - return(sumstats) - } - else{ - return( data.frame(best1,worst1,stringsAsFactors = FALSE)) - } -} - -favourability_plot<-function(x){ - p1<- ggplot(data=x,aes(y=Fav_Score,fill=Fav_Score,x=var))+ - geom_hline(yintercept = 0)+ - geom_bar(stat="identity",col="black")+ - coord_flip()+ - scale_y_continuous(breaks = seq(-100,100, by = 20))+ - scale_fill_gradient2(low = "red", - mid = "white", - high = "forestgreen", - limits = c(-100, 100)) - - return(p1) -} \ No newline at end of file diff --git a/dev/stats4dev_report/Setup/params.R b/dev/stats4dev_report/Setup/params.R deleted file mode 100644 index 7d8178a..0000000 --- a/dev/stats4dev_report/Setup/params.R +++ /dev/null @@ -1,73 +0,0 @@ -#Input User Parameters - -####DATA PARAMETERS - - - -#key and projname to be used in call to getDataCM(). Should be determined based on user inputs. -key<-"d39a3c66-5822-4930-a9d4-50e7da041e77" -projname<-"breadwheat" - -#Variable to produce split of results into multiple groups. Should be determined based on user selecting from list of possibilities -forcesplit<-"gender" - -####STYLE PARAMETERS - -#Outputs requested. should be "summary" for summary report only; "farmer" for farmer report only or "both" for both sets of reports -output<-"both" - - -#File format to use in rendering output. Only available options should be "docx", "pdf", and "html". Output format derived from extension -extension<-"docx" - - -#Set how the system will refer to each of the different options and to each of the different rankers. Defaults to "farmer" and "variety". -#Should be allowed to be open text fields - -ranker="farmer" -option="variety" - -#select which coordinate set to use (e.g. one at place of registration and one -#at farm) - input should be a number referring to position of coordinate set in -#the data (1=first set, 2=second set, etc).. Defaults to NULL which includes -#first set found and discards all other coordinate sets. Can make this an -#applicable option to appear if multiple coordinate sets are found in the data -coordset<-NULL - - -#### Statistics parameters - -#significance level. Should be allowed to be 0.01,0.05 or 0.1 I guess? Probably worth preventing any other numbers being selected. -sig.level=0.05 - -#method for adjustments for confidence intervals and setting widths for comparison. Defaults to B-H (Benjamini an Hochberg). -#Any of the methods from p.adjust will work here though: "holm", "hochberg", "hommel", "bonferroni", "BH", "BY", "fdr", "none" -ci.adjust="BH" - -#confidence interval level for comparison plots with error bars. 84% to give an -#approximate 5% significance level for comparisons of non-overlapping confidence -#intervals (e.g. https://www.ncbi.nlm.nih.gov/pmc/articles/PMC524673/) -#should probably allow alternatives to be 0.9, 0.95 or 0.99 -ci.level=0.84 - -#set maximum proportion of missing data allowed in a variable before it is -#excluded. 20% seems to work reasonably - probably should restrict the maximum -#value to something like 30 or 40%. -missper=0.2 - -#Set minimum split size for tree models. Probably should be tied cleverly into -#the number of varieties being compared, but can allow user to push this back or -#forth if they want -minsplit=30 - -#could also allow other control options into tree models as custom parameters - - -###FARMER REPORT PARAMS -# eventual information to make the info table at the back of the farmer reports. Default to no info. Should be added by the user -info.table.items <- c() #info.table.items <- c("variety 1", "variety 2", "variety 3") -info.table.info <- c() #info.table.info <- c("plant it early", "good in high altitude", "") -info.table.typeinfo <- "" #info.table.typeinfo <- "expert advice" - -#list of farmer ids for which we want to produce the feedback form. Should be determined based on user selecting from list of ids -ranker.ids <- c(1,2,5,7) #should probably be defaulted to the ids of all the farmers \ No newline at end of file diff --git a/dev/stats4dev_report/df.rda b/dev/stats4dev_report/df.rda deleted file mode 100644 index f808d5b..0000000 Binary files a/dev/stats4dev_report/df.rda and /dev/null differ diff --git a/dev/stats4dev_report/first_drafts/Report/Master Doc.Rmd b/dev/stats4dev_report/first_drafts/Report/Master Doc.Rmd deleted file mode 100644 index 19608ae..0000000 --- a/dev/stats4dev_report/first_drafts/Report/Master Doc.Rmd +++ /dev/null @@ -1,497 +0,0 @@ ---- -title: "Analysis Report Document" -author: "Stats4SD" -date: "`r format(Sys.time(), '%d %B, %Y')`" -output: word_document ---- - -```{r setup_opts, include=FALSE} -knitr::opts_chunk$set(echo = FALSE,error = FALSE,message=FALSE,warning = FALSE) -``` - -```{r, libraries, include=FALSE} -library(tidyverse) -library(svglite) -library(plotly) -library(jsonlite) -library(httr) -library(partykit) -library(qvcalc) -library(psychotools) -library(PlackettLuce) -library(gosset) -library(stringr) -library(knitr) -library(formattable) -library(scales) -library(leaflet) -library(mapview) -#webshot::install_phantomjs() - -source("functions.R") -``` - -```{r, inputs, include=FALSE} -#using internal dataset now for experimentation -#need to link in with climmob using Kauwe's script -data("breadwheat", package = "gosset") - -dataset=breadwheat - -vars=1:3 -covars=c(4,5,7,8,9) -coords=10:11 -overall=18:19 -traits=12:17 -exclude=6 - - -``` - -```{r, pre_process, include=FALSE} -metadat<-data.frame(type=c(rep("vars",length(vars)), - rep("covars",length(covars)), - rep("coords",length(coords)), - rep("overall",length(overall)), - rep("traits",length(traits)), - rep("exclude",length(exclude))), - num=c(vars,covars,coords,overall,traits,exclude)) - -metadat$colname<-colnames(dataset)[metadat$num] -metadat$trait<-ifelse(metadat$type%in%c("traits","overall"),str_split_fixed(metadat$colname,"_",2)[,1],"") -metadat$bw<-ifelse(metadat$type%in%c("traits","overall"),str_split_fixed(metadat$colname,"_",2)[,2],"") - -ntrait<-length(traits)/2 -ncovar<-length(covars) -``` - -You are reading a report generated by ClimMob. This is a software package to analyze data generated by citizen science or crowdsourcing. - -# Introduction - -In agriculture, the local environmental conditions determine to a large degree which technological solutions are the most suitable. In dry soils, for example, drought-resistant crop varieties will outperform other varieties, but in wet soils these same varieties may do worse than most. Not only drought, but an entire range of problems including excessive heat, floods, new pests and diseases tend to intensify under climate change. This multitude of limiting factors requires multiple technological solutions, tested in diverse environments. - -Citizen science is based on the cooperation of citizen scientist or observers (paid or unpaid). Researchers assign microtasks (observations, experiments...) that, once completed and gathered, contribute with a great amount of information to science. One of the advantages of citizen science is that agricultural researchers can get access to many environments by crowdsourcing their experiments. As farmers contribute with their time, skills and knowledge to the investigation, researchers are able to do more tests than in a traditional setup. Also citizen scientists acquire new knowledge, abilities and information useful for future challenges of their work. - -**ClimMob** - - -The primary goal of ClimMob is to help farmers adapt to variable and changing climates. ClimMob was created as part of Bioversity International's research in the CGIAR Research Programme on Climate Change, Agriculture, and Food Security (CCAFS). It serves to prepare and analyze citizen science experiments in which a large number of farmers observe and compare different technological options under a wide range environmental conditions (van Etten 2011). - -ClimMob software assigns a limited number of items (typically 3 crop varieties or agricultural practices) to each farmer, who will compare their performance. Each farmer gets a different combination of items drawn from a much larger set of items. Comparisons of this kind are thought to be a very reliable way to obtain data from human observers (Martin 2004). Once the results of the microtasks have been collected, ClimMob builds an image of the whole set of assigned objects, combining all observations. ClimMob not only reconstructs the overall ordering of items, but also takes into account differences and similarities between observers and the conditions under which they observe. It assigns similar observers to groups that each corresponds to a different preference profile. Groups are created on the basis of variables such as the characteristics of the plot, geography, age, gender... - -ClimMob uses a recently published statistical method to analyze ranking data (Strobl et al. 2011). It automatically generates analytical reports, as well as individualized information sheets for each participant. ClimMob will hopefully help many agricultural researchers to start using crowdsourcing approaches in order to accelerate climate change adaptation. - -Complementary to the microtaks performed by the farmers, a detailed environmental monitoring is performed, using new, cheap sensors (Mittra et al. 2013), makes it possible to compare across sites and predict crop variety performance for new places. - - -**How to cite** - -If you publish any results generated with ClimMob, you should cite a number of articles as the package builds on various contributions. Van Etten (2011) introduced the crowdsourcing philosophy behind ClimMob. It is important to mention that ClimMob is implemented in R, a free, open-source analysis software (R Development Core Team 2012). Methodologically, if you report on the tree results, you should mentioned that ClimMob applies the Bradley-Terry tree method published by Strobl et al. (2011). To cite ClimMob itself, mention Van Etten & Calderer (2015). - -# Exploratory Analysis - -## Summary of data collected - -Table 1 provides a summary of the varieties included within this trial, with the frequency and percentage of farmers who included each variety. - -```{r, varieties} - -vartable<-data.frame(table(c(dataset$variety_a,dataset$variety_b,dataset$variety_c))) -colnames(vartable)<-c("Variety","Frequency") -vartable %>% - mutate("% of Respondents Receiving Variety"=percent(Frequency/nrow(dataset),1)) %>% - kable(caption="Table 1: Frequency of Varieties Assessed") - -``` - -Tables 2.1 to `r paste("2.",length(covars),sep="")` summarise the covariate data collected from the survey, with corresponding bar charts or histograms of the responses. - - -```{r, covars} - dt.fr<-as.data.frame(dataset) -out=NULL -covarlist=covars -for(i in seq_along(covarlist)){ - covar=i - out<-c(out,knitr::knit_child("covar_analysis.Rmd", quiet=TRUE)) -} -``` - - -```{r covarinclude, echo=FALSE, results="asis", message=FALSE, warning=FALSE} -cat(paste(out, collapse = '\n')) -``` - - -Table 3 lists the traits included in the analysis. - -```{r, traits} - -data.frame("Traits Assessed"=unique(metadat$trait)[-1]) %>% - kable(caption="Table 3: Traits Assessed") - -``` - -### Location of respondents - -```{r map1} - -map1<- leaflet(dataset,width = 800,height=800)%>% - leaflet::setMaxBounds(min(dataset$lon) , min(dataset$lat),max(dataset$lon) , max(dataset$lat)) %>% - addProviderTiles("Esri.WorldImagery") %>% - addMarkers(clusterOptions = markerClusterOptions()) %>% - addCircles(radius=0.2,col="white") -mapshot(map1, file = "map1.png") - -``` - -```{r map_out} -knitr::include_graphics("map1.png") -``` - -### Performance of Varieties - -#### Overall - -Summaries of the overall performance of each of the varieties are summarised in Table 4. This shows the % of farmers who included the variety as their top ranked of the 3 varieties they planted, the % of farmers who included the variety as their bottom ranked of the 3 varieties they planted, the % of 'contests' which the variety won and the net favourability score. A score of +100 indicates the variety won all 'contests' it was involved in, a score of 0 indicates an equal number of wins and losses, a score of -100 indicates the variety lost all contests. -```{r perform_plots} - -df<-as.data.frame(dataset) -fav1<-favourability(a=df[,vars[1]], - b=df[,vars[2]], - c=df[,vars[3]], - best=df[,overall[1]], - worst=df[,overall[2]]) -fav2<-fav1 - -fav2$best_per<-formattable::percent(fav2$best_per/100,1) -fav2$worst_per<-formattable::percent(fav2$worst_per/100,1) -fav2$wins<-formattable::percent(fav2$wins,1) -fav2$Fav_Score<-round(fav2$Fav_Score,1) - -colnames(fav2)<-c("Variety","N","% Top Ranked","% Bottom Ranked","% Contests Won","Net Favourability Score") - -kable(fav2[nrow(fav2):1,],row.names = FALSE,caption="Table 4 - Summary of Overall Variety Performance") - -favourability_plot(fav1)+ggtitle("Net Favourability Score for Overall Performance") - -``` - -The variety `r fav2[nrow(fav2),1]` was the most preferred variety overall being ranked highest by `r fav2[nrow(fav2),3]` of the `r fav2[nrow(fav2),2]` farmers who planted this variety. - -Other varieties with strong positive rankings were `r paste(rev(fav2[fav2[,6]>50,1])[-1],collapse=", ")` - - -### Other Traits - -Summaries of the results and plots of the net favourability scores are shown below for the other traits marked for inclusion in the analysis. - -```{r, traitsplots} -trait_names<-unique(metadat$trait[metadat$type=="traits"]) - -out=NULL -for(i in 1:length(trait_names)){ - - out<-c(out,knitr::knit_child("trait_analysis.Rmd", quiet=TRUE)) -} -``` - - -```{r traitinclude, echo=FALSE, results="asis", message=FALSE, warning=FALSE} -cat(paste(out, collapse = '\n')) -``` - -### Pairwise Contests - -#### Overall - -The figure below shows the outcomes of all pairwise contests between the varieties included in the trial. The variety which won the contest is indicated, with the % of times that variety was preferred to the competing variety. - - -```{r contest_matrix,fig.height=8,fig.width=8} -cont1<-contests(a=df[,vars[1]], - b=df[,vars[2]], - c=df[,vars[3]], - best=df[,overall[1]], - worst=df[,overall[2]]) - -cont1[[1]]+ - ggtitle("Pairwise Contest Matrix of all Varieties Using Overall Trait Preference")+ - theme(axis.text.x = element_text(angle=90)) - -``` - -The same information is shown below in bar charts below, showing for each variety the % of times it was preferred over all of the other varieties included when they were assesed by the same respondent. - - -```{r contests bars,fig.height=12,fig.width=10} -cont1[[2]]+ggtitle("Head to Head Performance of All Varieties Using Overall Trait Preference")+ - ylab("% Contests Preferred") - -``` - - -#### Other Traits - -Results from the pairwise contests of the other individual traits assessed are shown below. - -```{r contest_matrix_traits,fig.height=8,fig.width=8} - -for(i in 1:ntrait){ - - best<-subset(metadat,trait==trait_names[i]&bw=="best")$num - worst<-subset(metadat,trait==trait_names[i]&bw=="worst")$num - -cont_t<-contests(a=df[,vars[1]], - b=df[,vars[2]], - c=df[,vars[3]], - best=df[,best], - worst=df[,worst]) - -print(cont_t[[1]]+ggtitle(paste("Pairwise Contest Matrix of all Varieties Using",trait_names[i]))+ - theme(axis.text.x = element_text(angle=90))) - - -} - - -``` - -```{r contest_matrix_traits1,fig.height=10,fig.width=12} - -for(i in 1:ntrait){ - - best<-subset(metadat,trait==trait_names[i]&bw=="best")$num - worst<-subset(metadat,trait==trait_names[i]&bw=="worst")$num - -cont_t<-contests(a=df[,vars[1]], - b=df[,vars[2]], - c=df[,vars[3]], - best=df[,best], - worst=df[,worst]) - -print(cont_t[[2]]+ggtitle(paste("Head to Head Performance of All Varieties Using",trait_names[i]))+ylab("% Contests Preferred")) -} - - -``` - - -### Relationship between traits - -Table 5 shows the relationshio between the individual trait rankings and the overall rankings. - -```{r correspondence,fig.width=9,fig.height=6} - -x<-concordance(overall_best = df[,metadat$num[which(metadat$trait=="overall"&metadat$bw=="best")]], - overall_worst = df[,metadat$num[which(metadat$trait=="overall"&metadat$bw=="worst")]], - bests = df[,metadat$num[which(metadat$trait!="overall"&metadat$bw=="best")]], - worsts = df[,metadat$num[which(metadat$trait!="overall"&metadat$bw=="worst")]], - names = trait_names) - -x[[2]] %>% select(trait,overall,best,worst) %>% - rename("% Agreement with Overall Best"=best,"% Agreement with Overall Worst"=worst, - "Overall % Agreement"=overall) %>% - kable(caption="Table 5: Relationship between individual trait assessment and overall assesment") - - -print(x[[1]]) - -``` - -Overall the trait which had the strongest relationship with the overall ranking was `r x[[2]][1,1]`, with identical rankings being given as the overall ranking `r x[[2]][1,2]` of the time. - -## Statistical Modelling - -```{r anova_esque} -#overall model -R_overall <- to_rankings(dt.fr, - items = vars, - rankings = overall, - type = "tricot") - -mod_overall <- PlackettLuce(R_overall, npseudo = 0, maxit = 7) -summary(mod_overall) - -``` - -```{r,simulations} -out<-NULL -for(i in 1:500){ - -samps<-t(replicate(nrow(df),sample(c("A","B","C"),size = 2,replace=FALSE))) - -df1<-data.frame(df,samps) - - R_fake<- to_rankings(df1, - items = vars, - rankings = (ncol(df1)-1):ncol(df1), - type = "tricot") - - mod_fake <- PlackettLuce(R_fake, npseudo = 0, maxit = 7) - out<-rbind(out,c(mod_fake$loglik,deviance(mod_fake),AIC(mod_fake))) -} - - -message1<-(paste("Model deviance exceeds expected deviance under H0 in",percent(mean(deviance(mod_overall)>out[,2])),"of 500 simulations")) - -if(mean(deviance(mod_overall)>out[,2])<0.01){ -message1<-paste("This suggests that from the experiment shows there is evidence of a difference between varieties") -} -if(mean(deviance(mod_overall)>out[,2])>0.01 & mean(deviance(mod_overall)>out[,2])<0.10){ -message1<-paste("This suggests that the experiment shows there may be some evidence of a difference between varieties") -} -if(mean(deviance(mod_overall)>out[,2])>0.10){ -message1<-paste("This suggests that there is not ebough evidence to conclude that there are differences between varieties") -} - - -ggplot(data=data.frame(out),aes(x=X2))+ - geom_histogram(bins = 40)+geom_density()+ - geom_vline(xintercept =deviance(mod_overall),col="red" )+ - ggtitle("Histogram of Simulated Deviance Under H0",subtitle = "Red line indciates observed model deviance") -``` -`r print(message1)` - -```{r est_plot, fig.width=7,fig.height=7} -summaries<-multcompPL(mod_overall,adjust = "BH") - -plot.multcompPL(summaries,level=0.84)+ - ggtitle("Overall Preference Estimates w/ 84% Confidence Intervals", - subtitle="Groups created from pairwise contrasts at 5% level\nwith Benjamini & Hochberg adjustment") -``` - -```{r post_hoc} -summaries %>% select(estimate,quasiSE,.group) %>% rename("Estimate"=estimate,"Group"=.group) %>% kable(digits=2) -``` - - -```{r, traitmodels} - -mods<-list() -out1<-NULL -for (i in 1:ntrait){ - - out1<-c(out1,knitr::knit_child("trait_models.Rmd", quiet=TRUE)) -} -``` - - -```{r traitmodinclude, echo=FALSE, results="asis", message=FALSE, warning=FALSE} -cat(paste(out1, collapse = '\n')) -``` - - - -## Relationship between Traits - -Partial least squares regression was used to determine relationship between the specific traits and the overall rankings. - -```{r pls} -coefs<-qvcalc(mod_overall)[[2]]$estimate -for(i in 1:ntrait){ - coefs<-cbind(coefs,scale(qvcalc(mods[[i]])[[2]]$estimate)) -} - - -rownames(coefs)<-rownames(qvcalc(mod_overall)[[2]]) -colnames(coefs)<-c("Overall",trait_names) - -coefs<-data.frame(coefs) - -library(pls) - -m2 <- plsr(as.formula(paste("Overall~",paste(trait_names,collapse="+"))),data=coefs, validation = "LOO", jackknife = TRUE) - -arrows<-data.frame((m2$projection)[,1:2],trait=trait_names,x0=0,y0=0) -scores<-data.frame((m2$scores)[,1:2],var=rownames(m2$scores)) -yve <- drop(R2(m2, estimate = "train", - intercept = FALSE)$val) - -ggplot(data=arrows,aes(y=Comp.2,x=Comp.1,label=trait,yend=y0,xend=x0))+ - geom_hline(yintercept = 0)+geom_vline(xintercept = 0)+ - geom_segment(col="red",arrow = arrow(length = unit(0.5, "cm"),ends = "first" ))+ - geom_abline(linetype=2,col="gray50",slope=(yve[2]-yve[1])/yve[1],intercept=0)+ - geom_text(fontface=2,size=6,col="red")+ - geom_text(data=scores,aes(y=Comp.2,x=Comp.1,label=var),inherit.aes=FALSE,fontface=2,size=3)+ - xlab(paste("Component 1:",formattable::percent(yve[1]),"of Variance in Overall Ranking"))+ - ylab(paste("Component 2:",formattable::percent(yve[2]-yve[1]),"of Variance in Overall Ranking")) - -#would be nice to connect variety position to dashed line at this point - - -``` - -The first two components recombining the specific traits are able to explain `r percent(yve[2])` of the variability in the overall ranking. -The dashed line represents the overall ranking, with an increase in performance with an increase in the x and y axes. -Varieties positioned close to the dashed line will be performing equally across all traits; varieties positioned further away from the dashed line will have varying performance in different traits, with better performance in traits with arrows pointing in the direction away from the dashed line and worse perforance in traits pointing in the opposite direction. -Traits with arrows pointing in similar directions have a similar relationship to the overall ranking. Traits with arrows more closely following the dashed line will have a stronger relationship to the overall ranking. - - - -```{r regression} -adjCV<-m2$validation$adj -nc<-which(adjCV==min(adjCV)) -jack.test(m2,nc) -``` - - -## Covariates - -#fit overall model with all covariates included - -```{r} -dt.fr$G<-grouped_rankings(R_overall, index = seq_len(nrow(R_overall))) - -``` - -```{r,include=FALSE} - -out_x=NULL -for(i in seq_along(covarlist)){ - stop<-0 - - if(class(dt.fr[,i])=="character"){ - dt.fr[,i]<-factor(dt.fr[,i]) - } - if(class(dt.fr[,i])=="factor"){ - dt.fr[,i]<-replace_na(dt.fr[,i],"missing") - - t1<-table(dt.fr[,i],dt.fr$variety_a) - t2<-table(dt.fr[,i],dt.fr$variety_b) - t3<-table(dt.fr[,i],dt.fr$variety_c) - - tt<-t1+t2+t3 - if(any(tt==0)){ - stop<-1 - } - - } - if(length(unique(dt.fr[,i]))<2){ - stop<-2 - } - - if(class(dt.fr[,i])!="factor"&class(dt.fr[,i])!="character"){ - stop<-3 - } - - if(stop==0){ -# covar=i - #out<-c(out,knitr::knit_child("covar_models.Rmd")) - } - if(stop==1){ -# out<-c(out,paste(i,"not considered as a covariate - not all varieties observed within all groups\n")) - } - if(stop==2){ -# out<-c(out,paste(i,"not considered as a covariate - only 1 unique value\n")) - } - if(stop==3){ - # out<-c(out,paste(i,"not considered as a covariate - not an applicable data type\n")) - } -} -#`r paste(out, collapse='\n')` -``` - - - diff --git a/dev/stats4dev_report/first_drafts/Report/Master_Doc.docx b/dev/stats4dev_report/first_drafts/Report/Master_Doc.docx deleted file mode 100644 index eb6eaaa..0000000 Binary files a/dev/stats4dev_report/first_drafts/Report/Master_Doc.docx and /dev/null differ diff --git a/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/contest_matrix-1.png b/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/contest_matrix-1.png deleted file mode 100644 index 1176d1f..0000000 Binary files a/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/contest_matrix-1.png and /dev/null differ diff --git a/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/contest_matrix_traits-1.png b/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/contest_matrix_traits-1.png deleted file mode 100644 index 0d3c3bc..0000000 Binary files a/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/contest_matrix_traits-1.png and /dev/null differ diff --git a/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/contest_matrix_traits-2.png b/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/contest_matrix_traits-2.png deleted file mode 100644 index 02f5fc5..0000000 Binary files a/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/contest_matrix_traits-2.png and /dev/null differ diff --git a/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/contest_matrix_traits-3.png b/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/contest_matrix_traits-3.png deleted file mode 100644 index c6580cd..0000000 Binary files a/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/contest_matrix_traits-3.png and /dev/null differ diff --git a/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/contest_matrix_traits1-1.png b/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/contest_matrix_traits1-1.png deleted file mode 100644 index f81007c..0000000 Binary files a/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/contest_matrix_traits1-1.png and /dev/null differ diff --git a/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/contest_matrix_traits1-2.png b/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/contest_matrix_traits1-2.png deleted file mode 100644 index 1beeb3a..0000000 Binary files a/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/contest_matrix_traits1-2.png and /dev/null differ diff --git a/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/contest_matrix_traits1-3.png b/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/contest_matrix_traits1-3.png deleted file mode 100644 index 85a3b86..0000000 Binary files a/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/contest_matrix_traits1-3.png and /dev/null differ diff --git a/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/contests bars-1.png b/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/contests bars-1.png deleted file mode 100644 index 31d7dac..0000000 Binary files a/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/contests bars-1.png and /dev/null differ diff --git a/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/correspondence-1.png b/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/correspondence-1.png deleted file mode 100644 index 19a935e..0000000 Binary files a/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/correspondence-1.png and /dev/null differ diff --git a/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/est_plot-1.png b/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/est_plot-1.png deleted file mode 100644 index 756a36f..0000000 Binary files a/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/est_plot-1.png and /dev/null differ diff --git a/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/perform_plots-1.png b/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/perform_plots-1.png deleted file mode 100644 index 8c502d3..0000000 Binary files a/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/perform_plots-1.png and /dev/null differ diff --git a/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/pls-1.png b/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/pls-1.png deleted file mode 100644 index 9f77a01..0000000 Binary files a/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/pls-1.png and /dev/null differ diff --git a/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/simulations-1.png b/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/simulations-1.png deleted file mode 100644 index 68033d7..0000000 Binary files a/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/simulations-1.png and /dev/null differ diff --git a/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/unnamed-chunk-11-1.png b/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/unnamed-chunk-11-1.png deleted file mode 100644 index 86a0481..0000000 Binary files a/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/unnamed-chunk-11-1.png and /dev/null differ diff --git a/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/unnamed-chunk-14-1.png b/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/unnamed-chunk-14-1.png deleted file mode 100644 index e8997d5..0000000 Binary files a/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/unnamed-chunk-14-1.png and /dev/null differ diff --git a/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/unnamed-chunk-17-1.png b/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/unnamed-chunk-17-1.png deleted file mode 100644 index 2279707..0000000 Binary files a/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/unnamed-chunk-17-1.png and /dev/null differ diff --git a/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/unnamed-chunk-20-1.png b/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/unnamed-chunk-20-1.png deleted file mode 100644 index f46944b..0000000 Binary files a/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/unnamed-chunk-20-1.png and /dev/null differ diff --git a/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/unnamed-chunk-23-1.png b/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/unnamed-chunk-23-1.png deleted file mode 100644 index 7daf965..0000000 Binary files a/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/unnamed-chunk-23-1.png and /dev/null differ diff --git a/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/unnamed-chunk-26-1.png b/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/unnamed-chunk-26-1.png deleted file mode 100644 index 379a4ee..0000000 Binary files a/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/unnamed-chunk-26-1.png and /dev/null differ diff --git a/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/unnamed-chunk-29-1.png b/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/unnamed-chunk-29-1.png deleted file mode 100644 index e68233a..0000000 Binary files a/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/unnamed-chunk-29-1.png and /dev/null differ diff --git a/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/unnamed-chunk-30-1.png b/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/unnamed-chunk-30-1.png deleted file mode 100644 index 8a6c97a..0000000 Binary files a/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/unnamed-chunk-30-1.png and /dev/null differ diff --git a/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/unnamed-chunk-34-1.png b/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/unnamed-chunk-34-1.png deleted file mode 100644 index 7cb4980..0000000 Binary files a/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/unnamed-chunk-34-1.png and /dev/null differ diff --git a/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/unnamed-chunk-35-1.png b/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/unnamed-chunk-35-1.png deleted file mode 100644 index d86866d..0000000 Binary files a/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/unnamed-chunk-35-1.png and /dev/null differ diff --git a/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/unnamed-chunk-39-1.png b/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/unnamed-chunk-39-1.png deleted file mode 100644 index 54f05be..0000000 Binary files a/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/unnamed-chunk-39-1.png and /dev/null differ diff --git a/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/unnamed-chunk-40-1.png b/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/unnamed-chunk-40-1.png deleted file mode 100644 index 71573ba..0000000 Binary files a/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/unnamed-chunk-40-1.png and /dev/null differ diff --git a/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/unnamed-chunk-5-1.png b/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/unnamed-chunk-5-1.png deleted file mode 100644 index 4547f46..0000000 Binary files a/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/unnamed-chunk-5-1.png and /dev/null differ diff --git a/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/unnamed-chunk-8-1.png b/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/unnamed-chunk-8-1.png deleted file mode 100644 index ff82849..0000000 Binary files a/dev/stats4dev_report/first_drafts/Report/Master_Doc_files/figure-docx/unnamed-chunk-8-1.png and /dev/null differ diff --git a/dev/stats4dev_report/first_drafts/Report/Post_Hoc_Tests.Rmd b/dev/stats4dev_report/first_drafts/Report/Post_Hoc_Tests.Rmd deleted file mode 100644 index 45d215d..0000000 --- a/dev/stats4dev_report/first_drafts/Report/Post_Hoc_Tests.Rmd +++ /dev/null @@ -1,115 +0,0 @@ ---- -title: "Post Hoc Tests From PL Model" -author: "Stats4SD" -date: "`r format(Sys.time(), '%d %B, %Y')`" -output: github_document ---- - -```{r setup, include=FALSE} -library("PlackettLuce") -library("gosset") - -multcompPL<-function(mod,terms=NULL,threshold=0.05,Letters=letters,adjust="none"){ - - require("qvcalc") - require("multcompView") - - #get estimates with quasi-SEs - qv1<-qvcalc(mod)$qvframe - - #reduce frame to only selected terms if not all comparisons are desired - if(is.null(terms)==FALSE){ - qv1<-subset(qv1,rownames(qv1)%in%terms) - #give error if less than 2 terms can be identified - if(nrow(qv1)<3){ - stop("Less than 2 terms selected") - } - } - - #set up matrices for all differences and pooled errors - diffs<-mat.or.vec(nrow(qv1),nrow(qv1)) - ses<-mat.or.vec(nrow(qv1),nrow(qv1)) - - for(i in 1:nrow(qv1)){ - for(j in 1:nrow(qv1)){ - - #get differences and pooled ses - diffs[i,j]<-qv1$estimate[i]-qv1$estimate[j] - ses[i,j]<-sqrt(qv1$quasiVar[i]+qv1$quasiVar[j]) - } - } - - #calculate z scores - z<-diffs/ses - #TO DO: Think about what DF to use to use here? Is it just the resid DF or do I need to do some more thinking? - p<-2*(1-pt(abs(z),mod$df.residual)) - - #adjust p-value if you want to adjust. make sure to only take each p once for adjustment - p[upper.tri(p)]<-p.adjust(p[upper.tri(p)],method = adjust) - - #make sure lower triangular is mirror of upper - p[lower.tri(p)] = t(p)[lower.tri(p)] - - #set rownames - rownames(p)<-colnames(p)<-rownames(qv1) - - #re-order qv output to ensure letters are produced in a sensible order - qv1$term<-reorder(factor(rownames(qv1)),qv1$estimate,mean) - qv1<-qv1[order(qv1$estimate,decreasing = TRUE),] - - #get mean seperation letter groupings - #use multcompLetters2 to get the order based on value - qv1$.group<-multcompLetters2(estimate ~ term, p, qv1, - compare="<", - threshold=threshold, - Letters=Letters, - reversed = FALSE)$`Letters` - return(qv1) - -} - -#simple ggplot function to plot output from multcompPL with error bars -#probably should update this with qt rather than qnorm once I work out what DF to use -plot.multcompPL<-function(x,level=0.95,xlab="",ylab=""){ - require(ggplot2) - p1<- ggplot(data=x,aes(y=estimate,x=term,label=.group,ymax=estimate+qnorm(1-(1-level)/2)*quasiSE, - ymin=estimate-qnorm(1-(1-level)/2)*quasiSE))+ - geom_point()+ - geom_errorbar(width=0.1)+ - coord_flip()+ - geom_text(vjust=1.2)+ - xlab(ylab)+ylab(xlab) - return(p1) -} -``` - -Use the breadwheat data from gosset library and fit a model as shown in the help menus. - -```{r} -library(PlackettLuce) -data("breadwheat", package = "gosset") - - -R <- to_rankings(breadwheat, - items = c("variety_a","variety_b","variety_c"), - rankings = c("overall_best","overall_worst"), - type = "tricot") - -mod1 <- PlackettLuce(R, npseudo = 0, maxit = 7) -summary(mod1) -``` - -Then using multiple comparison functions defined above to give CLD output for estimates of model then plotting with confidence intervals and letters on graph. - -Probably need to find a better word than "mean separation" here... - -```{r} -mean_sep <- multcompPL(mod1) -mean_sep - -plot.multcompPL(mean_sep, level = 0.84)+ - ggtitle("'Mean' Separation with 84% Confidence Intervals", - subtitle = "Non-Overlapping Confidence Intervals can be assumed to be 'significantly' different") -``` - - diff --git a/dev/stats4dev_report/first_drafts/Report/covar_analysis.Rmd b/dev/stats4dev_report/first_drafts/Report/covar_analysis.Rmd deleted file mode 100644 index eea8793..0000000 --- a/dev/stats4dev_report/first_drafts/Report/covar_analysis.Rmd +++ /dev/null @@ -1,58 +0,0 @@ - -```{r,warning=FALSE,message=FALSE,echo=FALSE} - if(is.numeric(dt.fr[,covars[i]])){ - - vartable<-data.frame(Variable=colnames(dt.fr)[covars[i]], - Mean=round(mean(dt.fr[,covars[i]],na.rm=TRUE),2), - Median=round(median(dt.fr[,covars[i]],na.rm=TRUE),1), - Minimum=min(dt.fr[,covars[i]],na.rm=TRUE),Maximum=max(dt.fr[,covars[i]],na.rm=TRUE), - "Standard Deviation"=round(sd(dt.fr[,covars[i]],na.rm=TRUE),2)) - - - - p1<- ggplot(data=dataset,aes_string(x=colnames(dt.fr)[covars[i]]))+ - geom_histogram(col="black",fill=alpha("red",0.5),bins=20)+ - ggtitle(paste("Histogram of",colnames(dt.fr)[covars[i]]))+ylab("Frequency")+ - scale_y_continuous(sec.axis = sec_axis(~./nrow(dataset),labels=scales::percent, - name="Percentage")) - - - } - if(class(dt.fr[,covars[i]])=="Date"){ - - vartable<-data.frame(Variable=colnames(dt.fr)[covars[i]],"Median Date"=median(dt.fr[,covars[i]],na.rm=TRUE), - "Earliest Date"=min(dt.fr[,covars[i]],na.rm=TRUE),"Final Date"=max(dt.fr[,covars[i]],na.rm=TRUE)) - - - - p1<- ggplot(data=dataset,aes_string(x=colnames(dt.fr)[covars[i]]))+ - geom_histogram(col="black",fill=alpha("blue",0.5))+ - ggtitle(paste("Histogram of",colnames(dt.fr)[covars[i]]))+ylab("Frequency")+ -scale_x_date(date_breaks = "2 days", date_minor_breaks = "1 day", date_labels = "%d-%b")+ - scale_y_continuous(sec.axis = sec_axis(~./nrow(dataset),labels=scales::percent, - name="Percentage")) -} - if(is.character(dt.fr[,covars[i]])|is.factor(dt.fr[,covars[i]])){ - - vartable<-data.frame(table(dt.fr[,covars[i]])) -colnames(vartable)<-c(colnames(dt.fr)[covars[i]],"Frequency") - vartable<-vartable %>% - mutate("% of Respondents"=percent(Frequency/sum(Frequency),1)) - - p1<- ggplot(data=dataset,aes_string(x=colnames(dt.fr)[covars[i]]))+ - geom_bar(col="black",fill=alpha("forestgreen",0.5))+coord_flip()+ - ggtitle(paste("Barchart of",colnames(dt.fr)[covars[i]]))+ylab("Frequency")+ - scale_y_continuous(sec.axis = sec_axis(~./sum(vartable$Frequency),labels=scales::percent, - name="Percentage")) - - } - -``` - -```{r} -vartable %>% kable(caption=paste("Table 2.",i," Summary of ",colnames(dt.fr)[covars[i]],sep="")) -``` - -```{r} -plot(p1) -``` diff --git a/dev/stats4dev_report/first_drafts/Report/covar_models.Rmd b/dev/stats4dev_report/first_drafts/Report/covar_models.Rmd deleted file mode 100644 index e5ea8fc..0000000 --- a/dev/stats4dev_report/first_drafts/Report/covar_models.Rmd +++ /dev/null @@ -1,42 +0,0 @@ - -```{r,warning=FALSE,message=FALSE,echo=FALSE} - -f1<-as.formula(paste("G~",covar)) - - - -R_overall <- to_rankings(dt.fr, - items = vars, - rankings = overall, - type = "tricot") -dt.fr$G<-grouped_rankings(R_overall, index = seq_len(nrow(R_overall))) - - -tree1 <- pltree(f1, - data = dt.fr, minsize = 50, alpha = 0.05) - - - -``` - -```{r} -plot(tree1) -``` - - - -```{r} - -pval <- function(node) { - p <- info_node(node) - if(is.list(p)) p else NULL -} - -p<-nodeapply(tree1,1,function(n) info_node(n)$p.value) - -print("p-value for initial split of",i,"=",p) -``` - -```{r} -plot(p1) -``` diff --git a/dev/stats4dev_report/first_drafts/Report/functions.R b/dev/stats4dev_report/first_drafts/Report/functions.R deleted file mode 100644 index e1dcc59..0000000 --- a/dev/stats4dev_report/first_drafts/Report/functions.R +++ /dev/null @@ -1,325 +0,0 @@ - -###Functions for Climmob Reporting Analysis - -##List of functions -##Updated 01 May 2019 -## -##byfac() : produces PlackettLuce estimates and errorbars to compare between different levels of factor -## -##favourability() : calculates total wins, losses and favourability scores -## -##favourability_plot() : plot of favourability scores -## -##win_plot() : plot of win % -## -##multcompPL() : does mean seperation from PlackettLuce object with CLD grouping -## -##plot.multcompPL() : plots errorbars, confidence intervals and CLD letters -## -##concordance() : determines level of agreement between list of traits with the overall trait -## -##contests() : produce pairwise contest matrix between all varieties - - -byfac<-function(model,split){ - - split<-as.factor(split) - out<-NULL - for(i in 1:nlevels(split)){ - mod_t<-update(mod1,rankings=R[split==levels(split)[i],]) - - tmp<-data.frame(var=rownames(qvcalc(mod_t)$qvframe),split=levels(split)[i],qvcalc(mod_t)$qvframe) - tmp$estimate_adj<-tmp$estimate-mean(tmp$estimate) - - - out<-rbind(out,tmp) - } - out - - ggplot(data=out,aes(y=estimate_adj,x=var,ymax=estimate_adj+qnorm(0.92)*quasiSE, - ymin=estimate_adj-qnorm(0.92)*quasiSE,col=split))+ - geom_errorbar(width=0.2,position = position_dodge(width=0.25))+ - geom_point(position = position_dodge(width=0.25)) -} - -favourability<-function(a,b,c,best,worst,format="ABC",reorder=TRUE,out="summary"){ - a<-as.character(a) - b<-as.character(b) - c<-as.character(c) - best<-as.character(best) - worst<-as.character(worst) - - if(format=="abc"){ - best<-toupper(best) - worst<-toupper(worst) - } - - best1<-ifelse(best=="A",a, - ifelse(best=="B",b, - ifelse(best=="C",c,NA))) - worst1<-ifelse(worst=="A",a, - ifelse(worst=="B",b, - ifelse(worst=="C",c,NA))) - if(out=="summary"){ - vars<-sort(unique(c(a,b,c))) - - inrow<-NULL - wins<-NULL - losses<-NULL - - for(i in 1:length(vars)){ - inrow<-cbind(inrow,ifelse(a==vars[i]|b==vars[i]|c==vars[i],1,0)) - wins<-cbind(wins,ifelse(best1==vars[i],1,0)) - losses<-cbind(losses,ifelse(worst1==vars[i],1,0)) - } - colnames(inrow)<-paste("n",1:(length(vars)),sep="") - colnames(wins)<-paste("b",1:(length(vars)),sep="") - colnames(losses)<-paste("w",1:(length(vars)),sep="") - - - - - sumstats<-data.frame(var=vars,N=colSums(inrow), - best_per=100*colSums(wins)/colSums(inrow), - worst_per=100*colSums(losses)/colSums(inrow), - wins=((2*colSums(wins))+colSums(inrow-wins-losses))/(2*colSums(inrow))) - - sumstats$Fav_Score=sumstats$best_per-sumstats$worst_per - - if(reorder==TRUE){ - sumstats$var<-reorder(sumstats$var,sumstats$Fav_Score,mean) - sumstats<-sumstats[order(sumstats$Fav_Score),] - } - return(sumstats) - } - else{ - return( data.frame(best1,worst1)) - } -} - -favourability_plot<-function(x){ - p1<- ggplot(data=x,aes(y=Fav_Score,fill=Fav_Score,x=var))+ - geom_hline(yintercept = 0)+ - geom_bar(stat="identity",col="black")+ - coord_flip()+ - scale_y_continuous(breaks=seq(-100,100,by=20))+ - scale_fill_gradient2(low="red",mid="white",high="forestgreen",limits=c(-100,100)) - - return(p1) -} - -win_plot<-function(x){ - p1<- ggplot(data=x,aes(y=wins,fill=wins,x=var))+ - geom_bar(stat="identity",col="black")+ - coord_flip()+ - scale_y_continuous(breaks=seq(0,1,by=0.1),labels=scales::percent)+ - scale_fill_gradient2(low="red",mid="white",high="forestgreen",limits=c(0,1),midpoint=0.5) - - return(p1) -} - -multcompPL<-function(mod,terms=NULL,threshold=0.05,Letters=letters,adjust="none"){ - - require(qvcalc) - require(multcompView) - - #get estimates with quasi-SEs - qv1<-qvcalc(mod)$qvframe - - #reduce frame to only selected terms if not all comparisons are desired - if(is.null(terms)==FALSE){ - qv1<-subset(qv1,rownames(qv1)%in%terms) - #give error if less than 2 terms can be identified - if(nrow(qv1)<3){ - stop("Less than 2 terms selected") - } - } - - #set up matrices for all differences and pooled errors - diffs<-mat.or.vec(nrow(qv1),nrow(qv1)) - ses<-mat.or.vec(nrow(qv1),nrow(qv1)) - - for(i in 1:nrow(qv1)){ - for(j in 1:nrow(qv1)){ - - #get differences and pooled ses - diffs[i,j]<-qv1$estimate[i]-qv1$estimate[j] - ses[i,j]<-sqrt(qv1$quasiVar[i]+qv1$quasiVar[j]) - } - } - - #calculate z scores - z<-diffs/ses - #TO DO: What DF to use to use here? Is it just the resid DF? - p<-2*(1-pt(abs(z),mod$df.residual)) - - #adjust p-value if you want to adjust. make sure to only take each p once for adjustment - p[upper.tri(p)]<-p.adjust(p[upper.tri(p)],method = adjust) - - #make sure lower triangular is mirror of upper - p[lower.tri(p)] = t(p)[lower.tri(p)] - - #set rownames - rownames(p)<-colnames(p)<-rownames(qv1) - - #re-order qv output to ensure letters are produced in a sensible order - qv1$term<-reorder(factor(rownames(qv1)),qv1$estimate,mean) - qv1<-qv1[order(qv1$estimate,decreasing = TRUE),] - - #get mean seperation letter groupings - qv1$.group<-multcompLetters2(estimate ~ term, p, qv1, - compare="<", - threshold=threshold, - Letters=Letters, - reversed = FALSE)$`Letters` - return(qv1) - -} - -#simple ggplot function to plot output from multcompPL with error bars -plot.multcompPL<-function(x,level=0.95,xlab="",ylab=""){ - require(ggplot2) - p1<- ggplot(data=x,aes(y=estimate,x=term,label=.group,ymax=estimate+qnorm(1-(1-level)/2)*quasiSE, - ymin=estimate-qnorm(1-(1-level)/2)*quasiSE))+ - geom_point()+ - geom_errorbar(width=0.1)+ - coord_flip()+ - geom_text(vjust=1.2)+ - xlab(xlab)+ylab(ylab) - return(p1) -} - -concordance<-function(overall_best,overall_worst,bests,worsts,names){ - require(ggplot2) - require(dplyr) - require(formattable) - require(scales) - require(tidyr) - - - b1<-bests - colnames(b1)<-paste(names,"b",sep="") - - w1<-worsts - colnames(w1)<-paste(names,"w",sep="") - - dt1<-data.frame(overall_b=overall_best,overall_w=overall_worst,b1,w1,stringsAsFactors = FALSE) - - for(i in 3:(2+ncol(bests))){ - dt1[,i]<-dt1[,i]==dt1[,1] - } - for(i in (3+ncol(bests)):ncol(dt1)){ - dt1[,i]<-dt1[,i]==dt1[,2] - } - - - Overall<-dt1[,3:(2+ncol(bests))]==TRUE & dt1[,(3+ncol(bests)):ncol(dt1)]==TRUE - - plot_data<-data.frame(agreement=c(colMeans(dt1[,-(1:2)]),colMeans(Overall)), - type=rep(c("best","worst","overall"),each=length(names)), - trait=rep(names,3)) - - plot_data$trait<-reorder(factor(plot_data$trait),plot_data$agreement,mean) - - out_data<-plot_data %>% mutate(agreement=percent(agreement,1)) %>% spread(type,agreement) - - - plot_data$type<-factor(plot_data$type,levels=rev(c("worst","best","overall")), - labels=rev(c("% Agreement with\nOverall Worst", - "% Agreement with\nOverall Best", - "% Agreement with\nOverall Ranking"))) - - - p1<-ggplot(plot_data,aes(y=agreement,x=trait,alpha=agreement,fill=type))+ - geom_bar(stat="identity",position="dodge",col=alpha("gray50",1),show.legend = FALSE)+ - facet_wrap(~type)+coord_flip()+ - geom_hline(yintercept=0:1,size=1)+ - scale_fill_manual(values=c("purple","forestgreen","red"))+ - geom_text(aes(y=agreement/2,label=formattable::percent(agreement,1)),fontface=2,size=8,alpha=1)+ - scale_y_continuous(labels=scales::percent,breaks=seq(0,1,by=0.2),limits=c(0,1))+ylab("")+xlab("")+ - theme(axis.text.y = element_text(size=15,face=2),strip.text =element_text(size=15,face=2) ) - - - return(list(p1,out_data)) -} - - -contests<-function(a,b,c,best,worst,format="ABC",type="all",player=NULL){ - - bw<- data.frame(favourability(a,b,c,best,worst, - format=format,out="raw"),variety.a=a,variety.b=b,variety.c=c) - - require(tidyr) - require(dplyr) - require(scales) - require(ggplot2) - - if(type=="all"){ - vars<-sort(unique(c(a,b,c))) - nvars<-length(vars) - - out<-NULL - for(i in 1:nvars){ - tmp<-ifelse(bw$best1==vars[i],1, - ifelse(bw$worst1==vars[i],3, - ifelse(bw[,"variety.a"]==vars[i]| - bw[,"variety.b"]==vars[i]|bw[,"variety.c"]==vars[i],2,NA))) - out<-cbind(out,tmp) - } - - colnames(out)<-vars - - pref<-matrix(NA,nvars,nvars) - for(i in 1:nvars){ - for(j in 1:nvars){ - if(i!=j){ - n<-sum(is.na(out[,i])==F&is.na(out[,j])==F) - pij<-sum(out[,i]>out[,j],na.rm=T) - pji<-sum(out[,i]% - data.frame(check.names = FALSE) %>% - mutate(var1=rownames(pref2)) %>% - gather(key="var2",value="val",-var1) %>% - mutate(txt=ifelse(val==50,"50:50",ifelse(val<50,paste("A","\n",100-val,"%",sep=""), - paste("B","\n",val,"%",sep=""))), - var1=factor(var1,levels=rev(rownames(pref2)))) %>% - mutate(var2=factor(var2,levels=rownames(pref2))) %>% - ggplot(aes(y=var1,x=var2,fill=100-val,label=txt))+ - geom_tile(col="gray50")+ - geom_text(size=3,fontface=2)+ - scale_x_discrete(position="top")+ - scale_fill_gradient2(limits=c(0,100),low = alpha("red",0.75), - high=alpha("forestgreen",0.75),midpoint = 50)+ - xlab("B")+ylab("A")+labs(fill="% Wins for\nDominant Variety") - - p2<- pref %>% - data.frame(var1=rownames(pref),check.names = FALSE) %>% - gather(-var1,key = "var2",value="value") %>% - mutate(var1=factor(var1,levels=rev(rownames(pref2))), - var2=factor(var2,levels=rownames(pref2))) %>% - ggplot(aes(y=value,x=var1))+ - geom_bar(aes(fill=value),stat="identity",col="black")+ - facet_wrap(~var2,scales="free_y")+ - coord_flip()+ - scale_fill_gradient2(limits=c(0,1),low = alpha("red",0.75), - high=alpha("forestgreen",0.75),midpoint = 0.5,labels=percent,name="% Times Preferred")+ - scale_y_continuous(labels=percent,limits=c(0,1)) - - return(list(p1,p2)) - } -} - - diff --git a/dev/stats4dev_report/first_drafts/Report/map1.png b/dev/stats4dev_report/first_drafts/Report/map1.png deleted file mode 100644 index a2f7c4c..0000000 Binary files a/dev/stats4dev_report/first_drafts/Report/map1.png and /dev/null differ diff --git a/dev/stats4dev_report/first_drafts/Report/trait_analysis.Rmd b/dev/stats4dev_report/first_drafts/Report/trait_analysis.Rmd deleted file mode 100644 index 4d2dab1..0000000 --- a/dev/stats4dev_report/first_drafts/Report/trait_analysis.Rmd +++ /dev/null @@ -1,38 +0,0 @@ - -`r paste(i,":",trait_names[i])` - -```{r,include=FALSE,echo=FALSE} - -best<-subset(metadat,trait==trait_names[i]&bw=="best")$num -worst<-subset(metadat,trait==trait_names[i]&bw=="worst")$num - -fav1<-favourability(a=df[,vars[1]], - b=df[,vars[2]], - c=df[,vars[3]], - best=df[,best], - worst=df[,worst]) -fav2<-fav1 - -fav2$best_per<-formattable::percent(fav2$best_per/100,1) -fav2$worst_per<-formattable::percent(fav2$worst_per/100,1) -fav2$wins<-formattable::percent(fav2$wins,1) -fav2$Fav_Score<-round(fav2$Fav_Score,1) - -colnames(fav2)<-c("Variety","N","% Top Ranked","% Bottom Ranked","% Contests Won","Net Favourability Score") - - - -p2<-favourability_plot(fav1)+ggtitle(trait_names[i]) -``` - -```{r} -kable(fav2[nrow(fav2):1,],row.names = FALSE, - caption=paste("Table 3.",i," Favourability Statistics for ",trait_names[i],sep="")) -``` - -```{r} -p2 -``` - - - diff --git a/dev/stats4dev_report/first_drafts/Report/trait_models.Rmd b/dev/stats4dev_report/first_drafts/Report/trait_models.Rmd deleted file mode 100644 index 1f9e3b2..0000000 --- a/dev/stats4dev_report/first_drafts/Report/trait_models.Rmd +++ /dev/null @@ -1,62 +0,0 @@ -`r print(trait_names[i])` - - - -```{r} - - n<-(2*i)-1 - R_t <- to_rankings(df, - items = vars, - rankings = traits[n:(n+1)], - type = "tricot") - -mod_t <- PlackettLuce(R_t, npseudo = 0, maxit = 7) -mods[[i]]<-mod_t - - - -message1<-paste("Model deviance exceeds expected deviance under H0 in",percent(mean(deviance(mod_overall)>out[,2])),"of 500 simulations") - -if(mean(deviance(mod_t)>out[,2])<0.01){ -message1<-paste(message1,"This suggests that the results from the experiment show there is evidence of a difference between varieties") -} -if(mean(deviance(mod_t)>out[,2])>0.01 & mean(deviance(mod_overall)>out[,2])<0.10){ -message1<-paste(message1,"This suggests that the results from the experiment shows there may be some evidence of a difference between varieties") -} -if(mean(deviance(mod_t)>out[,2])>0.10){ -message1<-paste(message1,"This suggests that the results from the experiment do not provide enough evidence to conclude that there are differences between varieties") -} -``` - -```{r} -summary(mod_t) -``` - - -```{r} - -ggplot(data=data.frame(out),aes(x=X2))+ - geom_histogram(bins = 40)+geom_density()+ - geom_vline(xintercept =deviance(mod_t),col="red" )+ - ggtitle("Histogram of Simulated Deviance Under H0",subtitle = "Red line indciates observed model deviance") -``` -`r print(message1)` - -```{r,fig.width=7,fig.height=7} - - -summaries<-multcompPL(mod_t,adjust = "BH") - -plot(plot.multcompPL(summaries,level=0.84)+ - ggtitle(paste(trait_names[i],"Estimates w/ 84% Confidence Intervals"), - subtitle="Groups created from pairwise contrasts at 5% level\nwith Benjamini & Hochberg adjustment")) -``` - -```{r} -summaries %>% - select(estimate,quasiSE,.group) %>% - rename("Estimate"=estimate,"Group"=.group) %>% - kable(digits=2) -``` - - diff --git a/dev/stats4dev_report/first_drafts/ReportV3/Example Report Format 29JUl.docx b/dev/stats4dev_report/first_drafts/ReportV3/Example Report Format 29JUl.docx deleted file mode 100644 index 218ef80..0000000 Binary files a/dev/stats4dev_report/first_drafts/ReportV3/Example Report Format 29JUl.docx and /dev/null differ diff --git a/dev/stats4dev_report/first_drafts/ReportV3/Master Doc 29Jul.Rmd b/dev/stats4dev_report/first_drafts/ReportV3/Master Doc 29Jul.Rmd deleted file mode 100644 index 6a6d22b..0000000 --- a/dev/stats4dev_report/first_drafts/ReportV3/Master Doc 29Jul.Rmd +++ /dev/null @@ -1,528 +0,0 @@ ---- -title: "Analysis Report Document" -author: "Stats4SD" -date: "`r format(Sys.time(), '%d %B, %Y')`" -output: word_document ---- - -```{r setup_opts, include=FALSE} -knitr::opts_chunk$set(echo = FALSE,error = FALSE,message=FALSE,warning = FALSE) -``` - -```{r, libraries, include=FALSE} -library(tidyverse) -library(svglite) -library(plotly) -library(jsonlite) -library(httr) -library(partykit) -library(qvcalc) -library(psychotools) -library(PlackettLuce) -library(gosset) -library(stringr) -library(knitr) -library(formattable) -library(scales) -library(leaflet) -library(mapview) -library(tidyr) -library(gtools) -library(magrittr) -#webshot::install_phantomjs() - -source("Scripts/functions.R") -source("Scripts/dataimport.R") -source("Scripts/analysis.R") -``` - -You are reading a report generated by ClimMob. This is a software package to analyze data generated by citizen science or crowdsourcing. - -# Introduction - -In agriculture, the local environmental conditions determine to a large degree which technological solutions are the most suitable. In dry soils, for example, drought-resistant crop varieties will outperform other varieties, but in wet soils these same varieties may do worse than most. Not only drought, but an entire range of problems including excessive heat, floods, new pests and diseases tend to intensify under climate change. This multitude of limiting factors requires multiple technological solutions, tested in diverse environments. - -Citizen science is based on the cooperation of citizen scientist or observers (paid or unpaid). Researchers assign microtasks (observations, experiments...) that, once completed and gathered, contribute with a great amount of information to science. One of the advantages of citizen science is that agricultural researchers can get access to many environments by crowdsourcing their experiments. As farmers contribute with their time, skills and knowledge to the investigation, researchers are able to do more tests than in a traditional setup. Also citizen scientists acquire new knowledge, abilities and information useful for future challenges of their work. - -**ClimMob** - -The primary goal of ClimMob is to help farmers adapt to variable and changing climates. ClimMob was created as part of Bioversity International's research in the CGIAR Research Programme on Climate Change, Agriculture, and Food Security (CCAFS). It serves to prepare and analyze citizen science experiments in which a large number of farmers observe and compare different technological options under a wide range environmental conditions (van Etten 2011). - -ClimMob software assigns a limited number of items (typically 3 crop varieties or agricultural practices) to each farmer, who will compare their performance. Each farmer gets a different combination of items drawn from a much larger set of items. Comparisons of this kind are thought to be a very reliable way to obtain data from human observers (Martin 2004). Once the results of the microtasks have been collected, ClimMob builds an image of the whole set of assigned objects, combining all observations. ClimMob not only reconstructs the overall ordering of items, but also takes into account differences and similarities between observers and the conditions under which they observe. It assigns similar observers to groups that each corresponds to a different preference profile. Groups are created on the basis of variables such as the characteristics of the plot, geography, age, gender... - -ClimMob uses a recently published statistical method to analyze ranking data (Strobl et al. 2011). It automatically generates analytical reports, as well as individualized information sheets for each participant. ClimMob will hopefully help many agricultural researchers to start using crowdsourcing approaches in order to accelerate climate change adaptation. - -Complementary to the microtaks performed by the farmers, a detailed environmental monitoring is performed, using new, cheap sensors (Mittra et al. 2013), makes it possible to compare across sites and predict crop variety performance for new places. - - -**How to cite** - -If you publish any results generated with ClimMob, you should cite a number of articles as the package builds on various contributions. Van Etten (2011) introduced the crowdsourcing philosophy behind ClimMob. It is important to mention that ClimMob is implemented in R, a free, open-source analysis software (R Development Core Team 2012). Methodologically, if you report on the tree results, you should mentioned that ClimMob applies the Bradley-Terry tree method published by Strobl et al. (2011). To cite ClimMob itself, mention Van Etten & Calderer (2015). - -# Section 1: Headline Results - -Overall there were `r nrow(dt.fr)` `r paste0(ranker,"s")` participating in this study. Each `r ranker` assessed three different `r paste0(option,"s")` and ranked them in order of their overall preference. In addition they also provided rankings for `r ntrait` additional traits - `r paste(trait_names,collapse=", ")`. - -Table 1 provides a list of the `r paste0(option,"s")` assessed within this trial, with the frequency and percentage of `r paste0(ranker)`s who assessed each `r paste0(option)`. - -```{r, varieties} -kable(vartable,caption=paste0("Table 1: Frequency of ",option,"s Assessed")) -``` - - -## Overall Differences in Rankings -```{r} -if(ps[1]<0.05){ - line1<-paste0("Overall there were statistically significant differences found in the rankings of ", option ,"s in the overall ranking (p=",ptab$p.value[1],"). The best ranked ", option ,"s overall were ",ptab$`Best Ranked`[1]) -} -if(ps[1]>=0.05){ - line1<-paste0("Overall there were no statistically significant differences found in the rankings of ", option ,"s in the overall ranking (p=",ptab$p.value[1],")") -} -if(any(ps[2:length(ps)]<0.05)){ - line1<-paste(line1,". Statistically significant differences were also found in the trait(s)", - paste(trait_names[ps[2:length(ps)]<0.05],collapse=", ")) - } - -``` - -`r paste(line1, collapse='\n')` - -A summary of the p-values testing the hypothesis that there exist differences in the rankings within each of the Plackett-Luce models fitted for each of the assessed traits, and the list of `r paste0(option,"s")` which were significantly highest and lowest ranked overall, are summarised in Table 1.1. - -```{r} -kable(ptab,caption=paste0("Table 1.1: Summary of Differences Found In ",option,"s by Trait")) -``` - -See Section 3 for further details. - -## Effect of covariates - -```{r} - -if(any(outtabs[[1]]$p.value<0.05)){ - line2<-paste(length(siglist),"of the variables tested were found to have a statistically significant relationship to the overall ranking. These variable(s) were:", paste(paste0(siglist," (p=",outtabs[[1]][siglist,"p"],")"),collapse=", ")) - -} -if(!any(outtabs[[1]]$p.value<0.05)){ - line2<-"None of the variables tested were found to have a statistically significant relationship to the overall ranking at the 5 % significance level." -} - -``` - -`r paste(line2, collapse='\n')` - -A summary of the univariate signifance levels for all covariates that were able to be tested is shown in Table 1.2.1. -```{r} -kable(uni_sum[,c(5,4)],caption="Table 1.2.1: Summary of univariate p-values for first split in Plackett-Luce tree model for the overall ranking") -``` - -```{r} -if(length(stoplist)>0){ -stopmessage<-paste("The variable(s)",paste(colnames(dt.fr)[covarlist2[stoplist]],collapse=", "), "were not able to be included within the analysis.") -} -if(length(stoplist)==0){ - stopmessage<-"" -} - -``` - -`r paste(stopmessage, collapse='\n')` - -```{r} -if(length(siglist)>0){ - line3<-paste0("Table 1.2.2 shows which ",option,"s where identified as the best and worst ranked in the subgroups identified by including covariate data against the overall ranking.") -} -if(length(siglist)<0){ - line3<-"" -} - -``` - -`r paste(line3, collapse='\n')` - -```{r} -if(length(siglist)>0){ - kable(node_summary,caption="Table 1.2.2: Summary of different subgroups identified by multivariate Plackett-Luce tree model") -} - -``` - -See Section 4 for further details. - -## Relationships between traits - -Table 1.3 shows, for each trait in the study, the frequency with which the rankings matched with the overall ranking. - -The trait which had the strongest relationship with the overall ranking was `r strongest_link$trait`. Overall the rankings for `r strongest_link$trait` matched the rankings for the overall ranking `r percent(strongest_link$agreement)` of the time. - -The trait which had the weakest relationship with the overall ranking was `r weakest_link$trait`. Overall the rankings for `r weakest_link$trait` matched the rankings for the overall ranking only `r percent(weakest_link$agreement)` of the time. - - - -```{r} -kable(agreement_table[,1:2],caption="Table 1.3: Relationship between individual trait assessment and overall assesment") -``` - -See Section 5 for further details. - -# Section 2: Data Summary & Exploratory Analysis - -Tables 2.2.1 to `r paste("2.2.",length(covars),sep="")` summarise the covariate data collected from the survey, with corresponding bar charts or histograms of the responses. - - -```{r, covars} - -covar_expl=NULL - -for(i in seq_along(covarlist)){ - covar=i - covar_expl<-c(covar_expl,knitr::knit_child("covar_analysis.Rmd", quiet=TRUE)) -} -``` - -```{r covarinclude, echo=FALSE, results="asis", message=FALSE, warning=FALSE} -cat(paste(covar_expl, collapse = '\n')) -``` - -## Location of `r paste0(ranker)`s -*Figure 2.3* -```{r map_out} -knitr::include_graphics("map1.png") -``` - -## Assessment of `r paste0(option,"s")` - -Exploratory analysis within the following section summarises results from the data directly. Given the structure of a climmob trail, where each `r paste0(ranker)` only assesses 3 of the possible `r paste0(option,"s")` these results may be skewed if certain `r paste0(option,"s")` were randomly assigned to face worse `r paste0(option,"s")` than others. This is particularly a potential issue within a smaller trial, as due to the randomisation process the potential for an unbalanced assignment decreases as the sample size increases. Results from other sections, and in the overall summary use Plackett-Luce models, to adjust for any imbalance [add in references]. - - -### Overall - -Overall performance of each of the `r paste0(option,"s")` is summarised in Table 2.4. - -```{r fav_table} -kable(fav2,row.names = FALSE,caption = "Table 2.4 - Summary of Overall Performance") -``` - -This shows the % of `r paste0(ranker)`s who assessed the `r paste0(option)` as their most preferred of the 3 `r paste0(option,"s")` they were provided, the % of `r paste0(ranker)`s who included the `r paste0(option)` as their least preferred, the % of 'head to head contests' for which the `r paste0(option)` won and the net favourability score. A score of +100 indicates the `r paste0(option)` won all 'contests' it was involved in, a score of 0 indicates an equal number of wins and losses, a score of -100 indicates the variety lost all contests. - -*Figure 2.4* -```{r fav_plot} -favourability_plot(fav1)+ggtitle("Net Favourability Score for Overall Performance")+ylim(-100,100)+xlab(option) -``` - -The variety `r fav2[1,1]` was the most preferred `r paste0(option)` overall being ranked highest by `r fav2[1,3]` of the `r fav2[1,2]` `r paste0(ranker)`s who assessed this `r paste0(option)`. - -Other `r paste0(option,"s")` with strong positive rankings were `r paste(fav2[fav2[,6]>50,1][-1],collapse=", ")` - - -### Other Traits - -Net favourability scores are shown below for the other traits assessed in this study. - -```{r, traitsplots} -trait_summaries=NULL -for(i in 1:length(trait_names)){ - - trait_summaries<-c(trait_summaries,knitr::knit_child("trait_analysis.Rmd", quiet=TRUE)) -} -``` - -```{r traitinclude, echo=FALSE, results="asis", message=FALSE, warning=FALSE} -cat(paste(trait_summaries, collapse = '\n')) -``` - -## Pairwise Contests - -Appendix B contains the full data for each pairwise comparison of the varieties, which is summarised in the plots below. - -### Overall - -Figure 2.6 shows the outcomes of all pairwise contests between the `r paste0(option,"s")` included in the trial. Each panel shows the performance of one `r paste0(option)` against all the other `r paste0(option,"s")`, and shows the % of the times in which the panelled `r paste0(option)` was ranked above the `r paste0(option,"s")` shown as bars. The most preferred `r paste0(option)` is shown in the top left panel and the least preferred is shown in the bottom right panel - -*Figure 2.6* -```{r contests bars,fig.height=12,fig.width=10} -cont1[[2]]+ggtitle("Head to Head Performance of All Varieties Using Overall Trait Preference")+ - ylab("% Contests Preferred") - -``` - -### Other Traits - -Results from the pairwise contests of the other individual traits assessed are shown below. - -```{r, pairsplots} -trait_pairs1=NULL -for(i in 1:length(trait_names)){ - trait_pairs1<-c(trait_pairs1,knitr::knit_child("trait_pairs.Rmd", quiet=TRUE)) -} -``` - -```{r traitincludepairs, echo=FALSE, results="asis", message=FALSE, warning=FALSE} -cat(paste(trait_pairs1, collapse = '\n')) -``` - - -## Relationship between traits - -Table 2.9 shows the relationship between the individual trait rankings and the overall rankings. -Complete agreement represents the percentage of respondents for which the ranking of the three `r paste0(option,"s")` in respect to the trait is an exact match to the overall ranking. Best/worst agreement represents the percentage for which the best/worst `r paste0(option)` for the trait matched the overall best/worst. - -```{r} -kable(agreement_table,caption="Table 2.9: Relationship between individual trait assessment and overall assesment") -``` - -*Figure 2.9* - -```{r correspondence,fig.width=9,fig.height=6} -plot(agreement_traits[[1]]) - -agreement_traits -``` - -Overall the trait which had the strongest relationship with the overall ranking was `r agreement_traits[[2]][ntrait,1]`, with identical rankings being given as the overall ranking `r agreement_traits[[2]][ntrait,3]` of the time. - -# Section 3: Plackett-Luce Models of Ranking Differences - -## Overall Ranking - -Table 3.1 shows the results from the likelihood ratio test from the Plackett-Luce model for overall rankings of the different `r paste0(option,"s")`. The hypothesis being tested is that there is no difference in the assessments of any of the different `r paste0(option,"s")`. - -```{r,aov1} -x1<-anova.PL(mod_overall) -p<-x1[2,5] -x1[,5]<-paste(format.pval((x1[,5])),stars.pval((x1[,5]))) -kable(x1,caption="Table 3.1: Likelihood ratio test results from overall model") -``` - -```{r,pval_sentence} -if(p<0.001){ -message1<-paste("p=",format.pval((p)), ". This suggests that there is strong evidence of a difference in the rankings between",option,"s",sep="") -} - -if(p<0.01 & p >0.001){ -message1<-paste("p=",format.pval((p)), ". This suggests that there is evidence of a difference between",option,"s",sep="") -} -if(p>0.01 & p <0.05){ -message1<-paste("p=",format.pval((p)),". This suggests that there is some evidence of a difference between",option,"s",sep="") -} -if(p>0.05){ -message1<-paste("p=",format.pval((p)),". This suggests that there is not enough evidence to conclude that there are differences between",option,"s",sep="") -} -``` - -`r message1` - -Figure 3.1 shows the estimates of the model coefficients with 84% confidence intervals. The purpose of this graph is to be able to best distinguish between the relative strength of each of the `r paste0(option,"s")` assessed. As such the coefficient estimates themselves are not directly interpretable, but it can be concluded that a higher value for the coefficient indicates that a variety has been more preferred. The 84% confidence width is chosen so that non-overlapping confidence intervals could be interpreted as indicating significant differences at the 5% significance level. This may not match exactly with the mean seperation groupings, as these groupings also take into account multiple testing through the Benjamini and Hochberg adjustment. [add references here]. -Mean separation analysis was also conducted to indicate, using letters, which `r paste0(option,"s")` are significantly more preferred than others: when varieties have at least one letter in common, there is not enough evidence from the experiment to be confident about their relative order of preference at the 5% significance level. - -*Figure 3.1 - Overall Ranking: Model Coefficients and Mean Separation* -```{r est_plot, fig.width=7,fig.height=7} -plot.multcompPL(model_summaries,level=0.84)+ - ggtitle("Overall Preference Estimates w/ 84% Confidence Intervals", - subtitle="Groups created from pairwise contrasts at 5% level\nwith Benjamini & Hochberg adjustment") -``` - -The same information as Figure 3.1 is shown in Table 3.2 below - -```{r est_table} -model_summaries %>% - select(estimate,quasiSE,.group) %>% - rename("Estimate"=estimate,"Group"=.group) %>% - kable(digits=2,caption=paste0("Table 3.2 - Model Coefficients and Mean Separation of",option,"s at 5% Level with Benjamini & Hochberg adjustment")) -``` - -Table 3.3 and Figure 3.2 use the coefficients from the model to estimate the probability of each `r paste0(option)` being considered to be the top ranked `r paste0(option)` in a direct comparison between all of the possible varities. - -```{r} -kable(worthscaled[,-2],caption = "Table 3.3: Percentage probability of being the highest ranked overall") -``` - -*Figure 3.2 - Overall Ranking: Probability of Being The Highest Ranked Overall* -```{r} -ggplot(data=worthscaled,aes(y=worth,fill=worth,group=Variety,x=1))+ - geom_bar(stat="identity",col="black",show.legend = FALSE)+ - theme_void()+ - geom_text(aes(y=cumsum(rev(worth))-rev(worth)/2,size=rev(worth), - label=rev(paste(Variety,percent(worth),sep=": "))),show.legend = FALSE,fontface=2)+ - ggtitle(paste("Probability that",option,"is the\nhighest ranked overall"))+ - scale_fill_gradient(low="white",high="forestgreen")+ - scale_size_continuous(range=c(0.5,10)) -``` - - -```{r, traitmodels} - -model_traits<-NULL -for (i in 1:ntrait){ - model_traits<-c(model_traits,knitr::knit_child("trait_models.Rmd", quiet=TRUE)) -} -``` - - -```{r traitmodinclude, echo=FALSE, results="asis", message=FALSE, warning=FALSE} -cat(paste(model_traits, collapse = '\n')) -``` - -# Section 4: Plackett Luce Models With Covariates - -## Overall Ranking - -A classification tree approach was used to determine which of the covariates, if any had significant relationships with the rankings. This approach identifies sub-groups in the data for which the rankings of the different varieties are significantly different to each other. Table 4.1 shows the p-values for each of the covariates tested, one-by-one, showing whether or not the covariate could be used to define sub-groups with significantly different rankings. -```{r} -kable(uni_sum[,c(5,4)],caption="Table 4.1: Univariate p-values for first split in Plackett-Luce tree model for the overall ranking") -``` - - -```{r,include=FALSE} -covarlist2=c(covars,coords) - -univariate_model=NULL -pout<-NULL -for(i in 1:length(covarlist2)){ -if(stoplist[i]==0){ - covar=covarlist2[i] - univariate_model<-c(univariate_model,knitr::knit_child("covar_models.Rmd", quiet=TRUE)) - } - if(stoplist[i]==1){ - univariate_model<-c(univariate_model,paste("NOTE: ",colnames(dt.fr)[covarlist2[i]],"was not considered as a covariate - not all varieties observed within all groups\n")) - } - if(stoplist[i]==2){ - univariate_model<-c(univariate_model,paste("NOTE: ",colnames(dt.fr)[covarlist2[i]],"was not considered as a covariate - only 1 unique value\n")) - } - if(stoplist[i]==3){ - univariate_model<-c(univariate_model,paste("NOTE: ",colnames(dt.fr)[covarlist2[i]],"was not considered as a covariate - not an applicable data type\n")) - } - -} - - -``` - -Figure 4.1 shows the partitioning of the rankings based on the most significantly different sub-groups which could be identified from the data using a 5% significance level. At the top of the tree is the full dataset, then working down through the different levels of the tree shows the combinations of variables which define each subgroup. The model parameters are shown for the final subgroups ("terminal nodes") in the plots at the bottoms of the tree. - -*Figure 4.1 - Overall Ranking Plackett-Luce Tree Considering All Possible Covariates* -```{r,asis=TRUE,fig.height=8,fig.width=10} -if(length(tree_f)>1){ - rval1<-node_terminal1(tree_f) -plot(tree_f,terminal_panel =rval1 ) -} -if(length(tree_f)==1){ - print("No figure produced: no significant covariates identified") -} -``` - - -The highest and lowest performing `r paste0(option)` within each sub-group is identified within Table 4.2. - -```{r} -kable(node_summary,caption="Table 4.2 - Summary of Performance in Each Node") -``` - -The model coefficient estimates, along with 84% confidence intervals are provided in Figure 4.2. This will help identification of which `r paste0(option,"s")` were better suited to particular sub-groups identified by the analysis. - -*Figure 4.2 - Coefficient Estimates Within Each Identified Terminal Node Subgroup* -```{r,fig.width=8,fig.height=8} -if(length(tree_f)>1){ -ggplot(data=coefs,aes(x=term,y=ctd,ymax=ctd+1.40*quasiSE,ymin=ctd-1.40*quasiSE,col=Label))+ - geom_point(position = position_dodge(width=0.3),size=1)+ - geom_errorbar(position = position_dodge(width=0.3),width=0)+ - coord_flip()+ - geom_text(aes(label=.group),size=3,fontface=2,nudge_x=rep(c(-0.3,0.5),each=nlevels(coefs$term)))+ - ylab("")+ - xlab("Variety")+ - ggtitle(paste("Terminal node parameter estimates for","overall","rankings."), - subtitle = paste("Covariates considered:",paste(colnames(dt.fr)[covarlist3],collapse=", "))) -} -if(length(tree_f)==1){ - print("No figure produced: no significant covariates identified") -} -``` - -Table 4.3 outlines the p-values for each covariate at each of the nodes in the tree, outlining whether an additional significant split could be determined from within the existing sub-group at that node. - -```{r} -z<-NULL -for(i in 1:length(outtabs)){ - if(ncol(outtabs[[i]])>2){ - ot<-data.frame(parameter=rownames(outtabs[[i]]),outtabs[[i]]) - z<-rbind(z,ot) - } -} -kable(z[,c(1:3,5)],caption="Table 4.3: p-values for effect of each covariate at each node",row.names = FALSE) - -``` - - -## Univariate analysis - -`r paste(univariate_model, collapse='\n')` - -# Section 5: Relationship between Traits - -Partial least squares regression was used to determine relationship between the specific traits and the overall rankings. - -*Figure 5.1 - Partial Least Squares Biplot of Relationship Between Traits and Overall Performance* -```{r pls} -ggplot(data=arrows,aes(y=Comp.2,x=Comp.1,label=trait,yend=y0,xend=x0))+ - geom_hline(yintercept = 0)+geom_vline(xintercept = 0)+ - geom_segment(col="red",arrow = arrow(length = unit(0.5, "cm"),ends = "first" ))+ - geom_abline(linetype=2,col="gray50",slope=(yve[2]-yve[1])/yve[1],intercept=0)+ - geom_text(fontface=2,size=6,col="red")+ - geom_text(data=scores,aes(y=Comp.2,x=Comp.1,label=var),inherit.aes=FALSE,fontface=2,size=3)+ - xlab(paste("Component 1:",formattable::percent(yve[1]),"of Variance in Overall Ranking"))+ - ylab(paste("Component 2:",formattable::percent(yve[2]-yve[1]),"of Variance in Overall Ranking")) - -#would be nice to connect variety position to dashed line at this point - - -``` - -The first two components recombining the specific traits are able to explain `r percent(yve[2])` of the variability in the overall ranking. -The dashed line represents the overall ranking, with an increase in performance as the x and y axes increase. - -Varieties positioned close to the dashed line will be performing equally across all traits; varieties positioned further away from the dashed line, on either side, will have varying performance in different traits. Better performance in traits will correspond with arrows pointing in the direction away from the dashed line and worse performance in traits directed on the opposite side. - -Traits with arrows pointing in similar directions have a similar relationship to the overall ranking. Traits with arrows more closely following the dashed line will have a stronger relationship to the overall ranking. - -*Table 5.1 - Partial Least Squares Regression Model Of Traits Against Overall Ranking* -```{r regression} -jack.test(m2,nc) -``` - -Table 5.1 summarises the regression model between the rankings of each trait of an individual variety and the overall ranking. The most positive value will be associated with the trait which can explain the largest proportion of the variability in the overall ranking. Due to the strong correlation in rankings for different traits it would be expected for some of these coefficients to be negative. An individual negative value does not neccesarily indicate a negative relationship overall between that trait and the overall ranking; rather that holding all other rankings constant and increase ranking for that trait would not neccesarily be expected to result in an increase in the overall ranking. - -# Appendix A: Summary of Fixed Parameters Used -TBD - -# Appendix B: All Pairwise Treatment Contests - -```{r} - - -overall<-cbind(data.frame(cont1[[3]]) %>% mutate(v1=rownames(.)) %>% gather(v2,Percent,-v1), -data.frame(cont1[[4]]) %>% gather(v2,n) %>% select(n)) %>% - filter(v1!=v2) %>% - arrange(v2,v1)%>% - mutate(Overall=percent(Percent)) %>% - select(v2,v1,n,Overall) - -for(i in 1:length(contests_t)){ - tmp<-cbind(data.frame(contests_t[[i]][[3]]) %>% mutate(v1=rownames(.)) %>% gather(v2,Percent,-v1), -data.frame(cont1[[4]]) %>% gather(v2,n) %>% select(n)) %>% - filter(v1!=v2) %>% - arrange(v2,v1)%>% - mutate(Percent=percent(Percent)) - overall$tmp<-tmp$Percent - colnames(overall)[ncol(overall)]<-trait_names[i] -} - - -overall%>% - rename(`Variety 2`=v1,`Variety 1`=v2,`Number of Contests`=n) %>% - kable(caption="Pairwise: % of Contests Where Variety 1 Was Preferred to Variety 2") - -``` - - -# References -TBD \ No newline at end of file diff --git a/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul.docx b/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul.docx deleted file mode 100644 index 20f4918..0000000 Binary files a/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul.docx and /dev/null differ diff --git a/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/contests bars-1.png b/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/contests bars-1.png deleted file mode 100644 index 239f8b9..0000000 Binary files a/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/contests bars-1.png and /dev/null differ diff --git a/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/correspondence-1.png b/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/correspondence-1.png deleted file mode 100644 index 95c009f..0000000 Binary files a/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/correspondence-1.png and /dev/null differ diff --git a/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/correspondence-2.png b/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/correspondence-2.png deleted file mode 100644 index 95c009f..0000000 Binary files a/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/correspondence-2.png and /dev/null differ diff --git a/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/est_plot-1.png b/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/est_plot-1.png deleted file mode 100644 index 6696333..0000000 Binary files a/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/est_plot-1.png and /dev/null differ diff --git a/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/fav_plot-1.png b/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/fav_plot-1.png deleted file mode 100644 index 8d37f95..0000000 Binary files a/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/fav_plot-1.png and /dev/null differ diff --git a/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/pls-1.png b/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/pls-1.png deleted file mode 100644 index de4e50a..0000000 Binary files a/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/pls-1.png and /dev/null differ diff --git a/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-11-1.png b/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-11-1.png deleted file mode 100644 index 404afd7..0000000 Binary files a/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-11-1.png and /dev/null differ diff --git a/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-14-1.png b/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-14-1.png deleted file mode 100644 index bb02042..0000000 Binary files a/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-14-1.png and /dev/null differ diff --git a/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-16-1.png b/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-16-1.png deleted file mode 100644 index d6da72b..0000000 Binary files a/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-16-1.png and /dev/null differ diff --git a/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-21-1.png b/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-21-1.png deleted file mode 100644 index 824350f..0000000 Binary files a/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-21-1.png and /dev/null differ diff --git a/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-24-1.png b/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-24-1.png deleted file mode 100644 index 6be4c0c..0000000 Binary files a/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-24-1.png and /dev/null differ diff --git a/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-27-1.png b/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-27-1.png deleted file mode 100644 index 3ab6102..0000000 Binary files a/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-27-1.png and /dev/null differ diff --git a/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-30-1.png b/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-30-1.png deleted file mode 100644 index 372b189..0000000 Binary files a/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-30-1.png and /dev/null differ diff --git a/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-33-1.png b/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-33-1.png deleted file mode 100644 index 49227a3..0000000 Binary files a/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-33-1.png and /dev/null differ diff --git a/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-36-1.png b/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-36-1.png deleted file mode 100644 index 7aec454..0000000 Binary files a/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-36-1.png and /dev/null differ diff --git a/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-39-1.png b/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-39-1.png deleted file mode 100644 index 76397a1..0000000 Binary files a/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-39-1.png and /dev/null differ diff --git a/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-42-1.png b/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-42-1.png deleted file mode 100644 index 1b886c2..0000000 Binary files a/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-42-1.png and /dev/null differ diff --git a/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-44-1.png b/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-44-1.png deleted file mode 100644 index 64dc509..0000000 Binary files a/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-44-1.png and /dev/null differ diff --git a/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-46-1.png b/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-46-1.png deleted file mode 100644 index 216c215..0000000 Binary files a/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-46-1.png and /dev/null differ diff --git a/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-48-1.png b/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-48-1.png deleted file mode 100644 index 4293249..0000000 Binary files a/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-48-1.png and /dev/null differ diff --git a/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-51-1.png b/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-51-1.png deleted file mode 100644 index a1051dc..0000000 Binary files a/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-51-1.png and /dev/null differ diff --git a/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-53-1.png b/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-53-1.png deleted file mode 100644 index a7fc754..0000000 Binary files a/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-53-1.png and /dev/null differ diff --git a/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-56-1.png b/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-56-1.png deleted file mode 100644 index d764927..0000000 Binary files a/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-56-1.png and /dev/null differ diff --git a/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-58-1.png b/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-58-1.png deleted file mode 100644 index e9d5895..0000000 Binary files a/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-58-1.png and /dev/null differ diff --git a/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-61-1.png b/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-61-1.png deleted file mode 100644 index a267929..0000000 Binary files a/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-61-1.png and /dev/null differ diff --git a/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-63-1.png b/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-63-1.png deleted file mode 100644 index abd821e..0000000 Binary files a/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-63-1.png and /dev/null differ diff --git a/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-77-1.png b/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-77-1.png deleted file mode 100644 index f16897e..0000000 Binary files a/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-77-1.png and /dev/null differ diff --git a/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-78-1.png b/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-78-1.png deleted file mode 100644 index 474ca02..0000000 Binary files a/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-78-1.png and /dev/null differ diff --git a/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-81-1.png b/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-81-1.png deleted file mode 100644 index be96682..0000000 Binary files a/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-81-1.png and /dev/null differ diff --git a/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-82-1.png b/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-82-1.png deleted file mode 100644 index 7fdb335..0000000 Binary files a/dev/stats4dev_report/first_drafts/ReportV3/Master_Doc_29Jul_files/figure-docx/unnamed-chunk-82-1.png and /dev/null differ diff --git a/dev/stats4dev_report/first_drafts/ReportV3/Scripts/analysis.R b/dev/stats4dev_report/first_drafts/ReportV3/Scripts/analysis.R deleted file mode 100644 index a8e2717..0000000 --- a/dev/stats4dev_report/first_drafts/ReportV3/Scripts/analysis.R +++ /dev/null @@ -1,293 +0,0 @@ -####Analysis#### - - -#Table 1 - Variety Summary -vartable<-data.frame(table(c(dataset$variety_a,dataset$variety_b,dataset$variety_c))) -colnames(vartable)<-c("Variety","Frequency") - -if(length(gender)>0){ -d1<-dataset %>% gather(a,b,variety_a:variety_c) - -vartable<-vartable %>% - mutate("% of Respondents"=percent(Frequency/nrow(dataset),1),"Female (n="=table(d1$b,d1$gender)[,1], - "Male (n="=table(d1$b,d1$gender)[,2]) - -colnames(vartable)[4:5]<-paste0(colnames(vartable)[4:5],table(dataset$gender),")") -} - -#Map 1 - -map1<- map.f(data = dt.fr,lon = "lon",lat="lat") - -mapshot(map1, file = "map1.png") - -#Replace this with the updated function - -#Favourability Analysis Table -df<-as.data.frame(dataset) -fav1<-favourability(a=df[,vars[1]], - b=df[,vars[2]], - c=df[,vars[3]], - best=df[,overall[1]], - worst=df[,overall[2]]) -fav2<-fav1 - -fav2$best_per<-formattable::percent(fav2$best_per/100,1) -fav2$worst_per<-formattable::percent(fav2$worst_per/100,1) -fav2$wins<-formattable::percent(fav2$wins,1) -fav2$Fav_Score<-round(fav2$Fav_Score,1) -colnames(fav2)<-c("Variety","N","% Top Ranked","% Bottom Ranked","% Contests Won","Net Favourability Score") -fav2<-fav2[nrow(fav2):1,] - -#Contest Plots -cont1<-contests(a=df[,vars[1]], - b=df[,vars[2]], - c=df[,vars[3]], - best=df[,overall[1]], - worst=df[,overall[2]]) - -#Trait agreement - -agreement_traits<-concordance(overall_best = df[,metadat$num[which(metadat$trait=="overall"&metadat$bw=="best")]], - overall_worst = df[,metadat$num[which(metadat$trait=="overall"&metadat$bw=="worst")]], - bests = df[,metadat$num[which(metadat$trait!="overall"&metadat$bw=="best")]], - worsts = df[,metadat$num[which(metadat$trait!="overall"&metadat$bw=="worst")]], - names = trait_names) - -agreement_table<-agreement_traits[[2]] %>% select(trait,overall,best,worst) %>% - rename("Agreement with Overall Best"=best,"Agreement with Overall Worst"=worst, - "Complete Ranking Agreement"=overall) - - -strongest_link<- - agreement_traits[[1]]$data %>% filter(type=="% Agreement with\nOverall Ranking") %>% filter(agreement==max(agreement)) - -weakest_link<- - agreement_traits[[1]]$data %>% filter(type=="% Agreement with\nOverall Ranking") %>% filter(agreement==min(agreement)) - -#PL Model -#overall model - -R_overall <- to_rankings(dt.fr, - items = vars, - rankings = overall, - type = "tricot") - -mod_overall <- PlackettLuce(R_overall, npseudo = 0, maxit = 7) - -model_summaries<-multcompPL(mod_overall,adjust = "BH") -fullanova<-anova.PL(mod_overall) - -worthscaled<-rev(sort(exp(coef(mod_overall))/sum(exp(coef(mod_overall))))) -worthscaled<-data.frame(Variety=factor(names(worthscaled), - (names(worthscaled))),worth=worthscaled, - "% Probability"=percent(worthscaled)) - - -mods<-list() -summaries<-list() -worths<-list() -anovas<-list() -contests_t<-list() -for (i in 1:ntrait){ - - - best<-subset(metadat,trait==trait_names[i]&bw=="best")$num - worst<-subset(metadat,trait==trait_names[i]&bw=="worst")$num - - contests_t[[i]]<-contests(a=df[,vars[1]], - b=df[,vars[2]], - c=df[,vars[3]], - best=df[,best], - worst=df[,worst]) - - -n<-(2*i)-1 -R_t <- to_rankings(df, - items = vars, - rankings = traits[n:(n+1)], - type = "tricot") - -mod_t <- PlackettLuce(R_t, npseudo = 0, maxit = 7) -mods[[i]]<-mod_t - -summaries[[i]]<-multcompPL(mod_t,adjust = "BH") - -anovas[[i]]<-anova.PL(mod_t) - -worths[[i]]<-rev(sort(exp(coef(mod_t))/sum(exp(coef(mod_t))))) - -worths[[i]]<-data.frame(Variety=factor(names(worths[[i]]), - (names(worths[[i]]))),worth=worths[[i]], - "Probability"=percent(worths[[i]])) -} - - -#PLS Analysis combining traits together - -coefs<-qvcalc(mod_overall)[[2]]$estimate -for(i in 1:ntrait){ - coefs<-cbind(coefs,scale(qvcalc(mods[[i]])[[2]]$estimate)) -} - - -rownames(coefs)<-rownames(qvcalc(mod_overall)[[2]]) -colnames(coefs)<-c("Overall",trait_names) - -coefs<-data.frame(coefs) - -library(pls) - -m2 <- plsr(as.formula(paste("Overall~",paste(trait_names,collapse="+"))),data=coefs, validation = "LOO", jackknife = TRUE) - -arrows<-data.frame((m2$projection)[,1:2],trait=trait_names,x0=0,y0=0) -scores<-data.frame((m2$scores)[,1:2],var=rownames(m2$scores)) -yve <- drop(R2(m2, estimate = "train", - intercept = FALSE)$val) - -adjCV<-m2$validation$adj -nc<-which(adjCV==min(adjCV)) - -#Analysis with covariates -dt.fr$G<-grouped_rankings(R_overall, index = seq_len(nrow(R_overall))) - -covarlist2=c(covars,coords) - -colnames(dt.fr[,covarlist2]) - -#first format the covariates and exclude those likely to cause problems -pout<-NULL -stoplist<-NULL -for(i in covarlist2){ - stop<-0 - - if(class(dt.fr[,i])=="character"){ - dt.fr[,i]<-factor(dt.fr[,i]) - } - if(class(dt.fr[,i])=="factor"){ - dt.fr[,i]<-as.factor(replace_na(as.character(dt.fr[,i]),"missing")) - - t1<-table(dt.fr[,i],dt.fr$variety_a) - t2<-table(dt.fr[,i],dt.fr$variety_b) - t3<-table(dt.fr[,i],dt.fr$variety_c) - - tt<-t1+t2+t3 - if(any(tt==0)){ - stop<-1 - } - - } - if(length(unique(dt.fr[,i]))<2){ - stop<-2 - } - - if(class(dt.fr[,i])!="factor"&class(dt.fr[,i])!="character"&class(dt.fr[,i])!="numeric" - &class(dt.fr[,i])!="integer"&class(dt.fr[,i])!="Date"){ - stop<-3 - } -stoplist<-c(stoplist,stop) -} - -covarlist3<-covarlist2[stoplist==0] - -fullmodel<-as.formula(paste("G~",paste(colnames(dt.fr)[covarlist3],collapse="+"))) - -R_overall <- to_rankings(dt.fr, - items = vars, - rankings = overall, - type = "tricot") -dt.fr$G<-grouped_rankings(R_overall, index = seq_len(nrow(R_overall))) - - -tree_f <- pltree(formula=fullmodel, - data = dt.fr, minsize = 50, alpha = 0.05) - - -if(length(tree_f)>1){ - -coefs<-map_df(nodeids(tree_f,terminal = TRUE), - function(x)data.frame(node=x, - rule=partykit:::.list.rules.party(tree_f, x), - multcompPL(tree_f[[ x ]]$node$info$object))) - - -ns<-map_df(nodeids(tree_f,terminal = TRUE), - function(x)data.frame(node=x, - rule=partykit:::.list.rules.party(tree_f, x), - n=tree_f[[ x ]]$node$info$nobs)) - - coefs<-inner_join(coefs,ns) - - coefs$Label<-paste("Node",coefs$node,":",coefs$rule,"\n","n=",coefs$n) - - - coefs<-coefs %>% mutate(term=reorder(term,estimate,mean)) %>% - group_by(node) %>% mutate(m=mean(estimate),ctd=estimate-m) %>%data.frame() -} - - -outtabs<-NULL -for(j in 1:length(tree_f)){ - xxx<-nodeapply(tree_f,j,function(n) info_node(n)$test)[[1]] - if(length(xxx)>0){ - outtabs[[j]]<-data.frame(Node=j,t(nodeapply(tree_f,j,function(n) info_node(n)$test)[[1]])) - outtabs[[j]]$p<-format.pval(outtabs[[j]]$p.value) - } - else{ - outtabs[[j]]<-data.frame(Node=j,Message="No further splits possible") - } -} - - -##Build headline summaries - -siglist<-NULL -for(i in 1:length(outtabs)){ - if(ncol(outtabs[[i]])>2){ - siglist<-c(siglist,rownames(outtabs[[i]])[outtabs[[i]]$p.value<0.05]) - } -} -siglist<-unique(siglist) - -ps<-fullanova[2,5] -bests<-paste(model_summaries$term[grep("a",model_summaries$.group)],collapse=", ") -worsts<-paste(rev(model_summaries$term[grep(model_summaries$.group[nrow(model_summaries)], - model_summaries$.group)]),collapse=", ") - -for(i in 1:length(anovas)){ - ps<-c(ps,anovas[[i]][2,5]) - if(ps[i]<0.05){ - bests<-c(bests,paste(summaries[[i]]$term[grep("a",summaries[[i]]$.group)],collapse=", ")) - worsts<-c(worsts,paste(rev(summaries[[i]]$term[grep(summaries[[i]]$.group[nrow(summaries[[i]])], - summaries[[i]]$.group)]),collapse=", ")) - } - else{ - bests<-c(bests,"No significant differences") - worsts<-c(worsts,"No significant differences") - } -} -ptab<-data.frame(Ranking=c("Overall",trait_names), - p.value=ps,"Best Ranked"=bests, - "Worst Ranked"=worsts,check.names = FALSE) - -ptab$p.value<-paste(format.pval(ptab$p.value),stars.pval(ptab$p.value)) - - -rules=unique(coefs$rule) -best_tree<-NULL - -for(i in 1:length(rules)){ - tmp<-subset(coefs,rule==rules[i]) - best_tree<-rbind(best_tree,c(tmp$n[1],paste(tmp$term[grep("a",tmp$.group)],collapse=", "), - paste(rev(tmp$term[grep(tmp$.group[nrow(tmp)],tmp$.group)]),collapse=", "))) - - -} -node_summary<-data.frame(rules,best_tree) -colnames(node_summary)<-c("Subgroup","Number of Respondents","Best Ranked Varieties","Worst Ranked Varieties") - - -uni_sum<-outtabs[[1]] -uni_sum$Variable<-rownames(outtabs[[1]]) -uni_sum$p<-paste(format.pval(outtabs[[1]]$p.value),stars.pval(outtabs[[1]]$p.value)) -rownames(uni_sum)<-NULL diff --git a/dev/stats4dev_report/first_drafts/ReportV3/Scripts/dataimport.R b/dev/stats4dev_report/first_drafts/ReportV3/Scripts/dataimport.R deleted file mode 100644 index a2c4121..0000000 --- a/dev/stats4dev_report/first_drafts/ReportV3/Scripts/dataimport.R +++ /dev/null @@ -1,61 +0,0 @@ -##DATA IMPORT FILE## - -#Full version to be developed to pull data off server - -#This is just a temporary placeholder - -#using internal dataset now for experimentation -#need to link in with climmob using Kauwe's script and these should be generated automatically from climmob metadata -data("breadwheat", package = "gosset") - - -dataset=breadwheat - -#get this information from the metadata on the server - temporary hard code -vars=1:3 -covars=c(4,5,7,8,9) -coords=10:11 -overall=18:19 -traits=12:17 -exclude=6 - -#set text inputs for reporting style -option="variety" -ranker="farmer" - - -gender=8 -#create a metadata file to use later - -metadat<-data.frame(type=c(rep("vars",length(vars)), - rep("covars",length(covars)), - rep("coords",length(coords)), - rep("overall",length(overall)), - rep("traits",length(traits)), - rep("exclude",length(exclude))), - num=c(vars,covars,coords,overall,traits,exclude)) - -metadat$colname<-colnames(dataset)[metadat$num] -metadat$trait<-ifelse(metadat$type%in%c("traits","overall"),str_split_fixed(metadat$colname,"_",2)[,1],"") -metadat$bw<-ifelse(metadat$type%in%c("traits","overall"),str_split_fixed(metadat$colname,"_",2)[,2],"") - -ntrait<-length(traits)/2 -ncovar<-length(covars) - -### stats parameters - -sig.level=0.05 -minsplit=20 -ci.adjust="B-H" -ci.level=0.84 - - - -#create copy of dataset for safety -dt.fr<-as.data.frame(dataset) - -#create full covariate list to modify -covarlist=covars - -#get trait names -trait_names<-unique(metadat$trait[metadat$type=="traits"]) \ No newline at end of file diff --git a/dev/stats4dev_report/first_drafts/ReportV3/Scripts/functions.R b/dev/stats4dev_report/first_drafts/ReportV3/Scripts/functions.R deleted file mode 100644 index e7c2aeb..0000000 --- a/dev/stats4dev_report/first_drafts/ReportV3/Scripts/functions.R +++ /dev/null @@ -1,632 +0,0 @@ - -###Functions for Climmob Reporting Analysis - -##List of functions -##Updated 01 May 2019 -## -##byfac() : produces PlackettLuce estimates and errorbars to compare between different levels of factor -## -##favourability() : calculates total wins, losses and favourability scores -## -##favourability_plot() : plot of favourability scores -## -##win_plot() : plot of win % -## -##multcompPL() : does mean seperation from PlackettLuce object with CLD grouping -## -##plot.multcompPL() : plots errorbars, confidence intervals and CLD letters -## -##concordance() : determines level of agreement between list of traits with the overall trait -## -##contests() : produce pairwise contest matrix between all varieties -## -##anova.PL() : ANOVA table from LRT test of PL Model - - -byfac<-function(model,split){ - - split<-as.factor(split) - out<-NULL - for(i in 1:nlevels(split)){ - mod_t<-update(mod1,rankings=R[split==levels(split)[i],]) - - tmp<-data.frame(var=rownames(qvcalc(mod_t)$qvframe),split=levels(split)[i],qvcalc(mod_t)$qvframe) - tmp$estimate_adj<-tmp$estimate-mean(tmp$estimate) - - - out<-rbind(out,tmp) - } - out - - ggplot(data=out,aes(y=estimate_adj,x=var,ymax=estimate_adj+qnorm(0.92)*quasiSE, - ymin=estimate_adj-qnorm(0.92)*quasiSE,col=split))+ - geom_errorbar(width=0.2,position = position_dodge(width=0.25))+ - geom_point(position = position_dodge(width=0.25)) -} - -favourability<-function(a,b,c,best,worst,format="ABC",reorder=TRUE,out="summary"){ - a<-as.character(a) - b<-as.character(b) - c<-as.character(c) - best<-as.character(best) - worst<-as.character(worst) - - if(format=="abc"){ - best<-toupper(best) - worst<-toupper(worst) - } - - best1<-ifelse(best=="A",a, - ifelse(best=="B",b, - ifelse(best=="C",c,NA))) - worst1<-ifelse(worst=="A",a, - ifelse(worst=="B",b, - ifelse(worst=="C",c,NA))) - if(out=="summary"){ - vars<-sort(unique(c(a,b,c))) - - inrow<-NULL - wins<-NULL - losses<-NULL - - for(i in 1:length(vars)){ - inrow<-cbind(inrow,ifelse(a==vars[i]|b==vars[i]|c==vars[i],1,0)) - wins<-cbind(wins,ifelse(best1==vars[i],1,0)) - losses<-cbind(losses,ifelse(worst1==vars[i],1,0)) - } - colnames(inrow)<-paste("n",1:(length(vars)),sep="") - colnames(wins)<-paste("b",1:(length(vars)),sep="") - colnames(losses)<-paste("w",1:(length(vars)),sep="") - - - - - sumstats<-data.frame(var=vars,N=colSums(inrow), - best_per=100*colSums(wins)/colSums(inrow), - worst_per=100*colSums(losses)/colSums(inrow), - wins=((2*colSums(wins))+colSums(inrow-wins-losses))/(2*colSums(inrow))) - - sumstats$Fav_Score=sumstats$best_per-sumstats$worst_per - - if(reorder==TRUE){ - sumstats$var<-reorder(sumstats$var,sumstats$Fav_Score,mean) - sumstats<-sumstats[order(sumstats$Fav_Score),] - } - return(sumstats) - } - else{ - return( data.frame(best1,worst1)) - } -} - -favourability_plot<-function(x){ - p1<- ggplot(data=x,aes(y=Fav_Score,fill=Fav_Score,x=var))+ - geom_hline(yintercept = 0)+ - geom_bar(stat="identity",col="black")+ - coord_flip()+ - scale_y_continuous(breaks=seq(-100,100,by=20))+ - scale_fill_gradient2(low="red",mid="white",high="forestgreen",limits=c(-100,100)) - - return(p1) -} - -win_plot<-function(x){ - p1<- ggplot(data=x,aes(y=wins,fill=wins,x=var))+ - geom_bar(stat="identity",col="black")+ - coord_flip()+ - scale_y_continuous(breaks=seq(0,1,by=0.1),labels=scales::percent)+ - scale_fill_gradient2(low="red",mid="white",high="forestgreen",limits=c(0,1),midpoint=0.5) - - return(p1) -} - -multcompPL<-function(mod,terms=NULL,threshold=0.05,Letters=letters,adjust="none"){ - - require(qvcalc) - require(multcompView) - - #get estimates with quasi-SEs - qv1<-qvcalc(mod)$qvframe - - #reduce frame to only selected terms if not all comparisons are desired - if(is.null(terms)==FALSE){ - qv1<-subset(qv1,rownames(qv1)%in%terms) - #give error if less than 2 terms can be identified - if(nrow(qv1)<3){ - stop("Less than 2 terms selected") - } - } - - #set up matrices for all differences and pooled errors - diffs<-mat.or.vec(nrow(qv1),nrow(qv1)) - ses<-mat.or.vec(nrow(qv1),nrow(qv1)) - - for(i in 1:nrow(qv1)){ - for(j in 1:nrow(qv1)){ - - #get differences and pooled ses - diffs[i,j]<-qv1$estimate[i]-qv1$estimate[j] - ses[i,j]<-sqrt(qv1$quasiVar[i]+qv1$quasiVar[j]) - } - } - - #calculate z scores - z<-diffs/ses - #TO DO: What DF to use to use here? Is it just the resid DF? - p<-2*(1-pt(abs(z),mod$df.residual)) - - #adjust p-value if you want to adjust. make sure to only take each p once for adjustment - p[upper.tri(p)]<-p.adjust(p[upper.tri(p)],method = adjust) - - #make sure lower triangular is mirror of upper - p[lower.tri(p)] = t(p)[lower.tri(p)] - - #set rownames - rownames(p)<-colnames(p)<-rownames(qv1) - - #re-order qv output to ensure letters are produced in a sensible order - qv1$term<-reorder(factor(rownames(qv1)),qv1$estimate,mean) - qv1<-qv1[order(qv1$estimate,decreasing = TRUE),] - - #get mean seperation letter groupings - qv1$.group<-multcompLetters2(estimate ~ term, p, qv1, - compare="<", - threshold=threshold, - Letters=Letters, - reversed = FALSE)$`Letters` - return(qv1) - -} - -#simple ggplot function to plot output from multcompPL with error bars -plot.multcompPL<-function(x,level=0.95,xlab="",ylab=""){ - require(ggplot2) - p1<- ggplot(data=x,aes(y=estimate,x=term,label=.group,ymax=estimate+qnorm(1-(1-level)/2)*quasiSE, - ymin=estimate-qnorm(1-(1-level)/2)*quasiSE))+ - geom_point()+ - geom_errorbar(width=0.1)+ - coord_flip()+ - geom_text(vjust=1.2)+ - xlab(xlab)+ylab(ylab) - return(p1) -} - -concordance<-function(overall_best,overall_worst,bests,worsts,names){ - require(ggplot2) - require(dplyr) - require(formattable) - require(scales) - require(tidyr) - - - b1<-bests - colnames(b1)<-paste(names,"b",sep="") - - w1<-worsts - colnames(w1)<-paste(names,"w",sep="") - - dt1<-data.frame(overall_b=overall_best,overall_w=overall_worst,b1,w1,stringsAsFactors = FALSE) - - for(i in 3:(2+ncol(bests))){ - dt1[,i]<-dt1[,i]==dt1[,1] - } - for(i in (3+ncol(bests)):ncol(dt1)){ - dt1[,i]<-dt1[,i]==dt1[,2] - } - - - Overall<-dt1[,3:(2+ncol(bests))]==TRUE & dt1[,(3+ncol(bests)):ncol(dt1)]==TRUE - - plot_data<-data.frame(agreement=c(colMeans(dt1[,-(1:2)]),colMeans(Overall)), - type=rep(c("best","worst","overall"),each=length(names)), - trait=rep(names,3)) - - plot_data$trait<-reorder(factor(plot_data$trait),plot_data$agreement,mean) - - out_data<-plot_data %>% mutate(agreement=percent(agreement,1)) %>% spread(type,agreement) - - - plot_data$type<-factor(plot_data$type,levels=rev(c("worst","best","overall")), - labels=rev(c("% Agreement with\nOverall Worst", - "% Agreement with\nOverall Best", - "% Agreement with\nOverall Ranking"))) - - - p1<-ggplot(plot_data,aes(y=agreement,x=trait,alpha=agreement,fill=type))+ - geom_bar(stat="identity",position="dodge",col=alpha("gray50",1),show.legend = FALSE)+ - facet_wrap(~type)+coord_flip()+ - geom_hline(yintercept=0:1,size=1)+ - scale_fill_manual(values=c("purple","forestgreen","red"))+ - geom_text(aes(y=agreement/2,label=formattable::percent(agreement,1)),fontface=2,size=8,alpha=1)+ - scale_y_continuous(labels=scales::percent,breaks=seq(0,1,by=0.2),limits=c(0,1))+ylab("")+xlab("")+ - theme(axis.text.y = element_text(size=15,face=2),strip.text =element_text(size=15,face=2) ) - - - return(list(p1,out_data)) -} - - -contests<-function(a,b,c,best,worst,format="ABC",type="all",player=NULL){ - - bw<- data.frame(favourability(a,b,c,best,worst, - format=format,out="raw"),variety.a=a,variety.b=b,variety.c=c) - - require(tidyr) - require(dplyr) - require(scales) - require(ggplot2) - - if(type=="all"){ - vars<-sort(unique(c(a,b,c))) - nvars<-length(vars) - - out<-NULL - for(i in 1:nvars){ - tmp<-ifelse(bw$best1==vars[i],1, - ifelse(bw$worst1==vars[i],3, - ifelse(bw[,"variety.a"]==vars[i]| - bw[,"variety.b"]==vars[i]|bw[,"variety.c"]==vars[i],2,NA))) - out<-cbind(out,tmp) - } - - colnames(out)<-vars - - pref<-matrix(NA,nvars,nvars) - nmat<-matrix(NA,nvars,nvars) - for(i in 1:nvars){ - for(j in 1:nvars){ - if(i!=j){ - n<-sum(is.na(out[,i])==F&is.na(out[,j])==F) - pij<-sum(out[,i]>out[,j],na.rm=T) - pji<-sum(out[,i]% - data.frame(check.names = FALSE) %>% - mutate(var1=rownames(pref2)) %>% - gather(key="var2",value="val",-var1) %>% - mutate(txt=ifelse(val==50,"50:50",ifelse(val<50,paste("A","\n",100-val,"%",sep=""), - paste("B","\n",val,"%",sep=""))), - var1=factor(var1,levels=rev(rownames(pref2)))) %>% - mutate(var2=factor(var2,levels=rownames(pref2))) %>% - ggplot(aes(y=var1,x=var2,fill=100-val,label=txt))+ - geom_tile(col="gray50")+ - geom_text(size=3,fontface=2)+ - scale_x_discrete(position="top")+ - scale_fill_gradient2(limits=c(0,100),low = alpha("red",0.75), - high=alpha("forestgreen",0.75),midpoint = 50)+ - xlab("B")+ylab("A")+labs(fill="% Wins for\nDominant Variety") - - p2<- pref %>% - data.frame(var1=rownames(pref),check.names = FALSE) %>% - gather(-var1,key = "var2",value="value") %>% - mutate(var1=factor(var1,levels=rev(rownames(pref2))), - var2=factor(var2,levels=rownames(pref2))) %>% - ggplot(aes(y=value,x=var1))+ - geom_bar(aes(fill=value),stat="identity",col="black")+ - facet_wrap(~var2,scales="free_y")+ - coord_flip()+ - scale_fill_gradient2(limits=c(0,1),low = alpha("red",0.75), - high=alpha("forestgreen",0.75),midpoint = 0.5,labels=percent,name="% Times Preferred")+ - scale_y_continuous(labels=percent,limits=c(0,1)) - - return(list(p1,p2,pref,nmat)) - } -} - -anova.PL<-function(model){ - if(class(model)!="PlackettLuce"){ - stop("Model type is not Plackett Luce") - } - LLs<-c(model$null.loglik,model$loglik) - dfs<-c(model$df.null,model$df.residual) - df_diff<-(-1)*diff(dfs) - df_LL<-(-1)*diff(LLs) - p=1-pchisq(-2*df_LL,df_diff) - - - x<-data.frame(model=c("NULL",deparse(substitute(model))), - "logLikelihood"=LLs, - DF=dfs,"Statistic"=c(NA,-2*df_LL), - "Pr(>Chisq)"=c(NA,p),check.names = FALSE) - return(x) -} - - -map.f <- - function( - data = data1, - lon = "lon", - lat = "lat", - remove_outliers = TRUE, - number_of_clusters = 6, - cluster_method = "complete", - max_cluster_dist = 250, - min_cluster_pert = 0.05, - padding = NULL, - map_provider = "Esri.WorldImagery", - minimap_position = "bottomright" - ){ - - ## Take input df and create a data frame with only lon & lat - ## Making coding easier and removing unnecessary columns - - df <- - data.frame( - lon = data[, lon], - lat = data[, lat], - stringsAsFactors = FALSE - ) - - ## Checks if lon & lat are are numeric, converts if neccesary - ## and supresses warnings. May introduce NAs. - - if( - !(is.numeric(df$lon))|!(is.numeric(df$lat)) - ){ - df[, "lon"] <- suppressWarnings(as.numeric(df[, "lon"])) - df[, "lat"] <- suppressWarnings(as.numeric(df[, "lat"])) - } - - ## Ensure data lon & lat are each within [-180, 180] and - ## data frame does not include the point (0,0). - ## If not, then points are converted to NAs - - - if ( - any( - df <= -180 | df >= 180 | (df$lon == 0 & df$lat == 0) - ) - ){ - - df$lon[which(!between(df$lon,-180, 180))] <- NA - df$lat[which(!between(df$lat,-180, 180))] <- NA - df[which(df$lon == 0 & df$lat == 0),] <- NA - } - - ## Checks if there are any NAs and removes them - - if( - any(is.na(df)) - ){ - warning("Data contains ", sum(is.na(df[,"lon"])|is.na(df[,"lat"])) , - " missing or invalid points which have been removed \n") - df <- na.omit(df) - } - - ## Outliers are defined as points that are part of cluster that are not too - ## small or are not too far away from other clusters. - ## This section will calculate clusters, test if these clusters meet the size - ## and distance requirements and remove any that do not meet this criteria - ## If the number_of_clusters == 0 or remove_outliers is FALSE then the code - ## will not run. - - if(remove_outliers){ - - ## Create clusters; - df <- - df %>% - ## Remove duplicate lon & lat temporarily - distinct(lon, lat, .keep_all = FALSE) %>% - ## Create a distance matrix of all points, - dist() %>% - ## Calculate clustering information of the points with hclust - ## using the algo specified by cluster_methods - hclust(method = "single") %>% - ## Return cluster group for each point, grouping into the number of clusters - ## specified by number_of_points - cutree(h = max_cluster_dist/110) %>% - ## Add clusters group column to the distinct lon & lat points - { - bind_cols( - distinct(df, lon, lat, .keep_all = FALSE), - cluster = .) - } %>% - ## Rejoin to main dataset - right_join(df, by = c("lon", "lat")) - - # - # ## Create list of clusters to include - # - # tmp <- - # df %>% - # ## Calculate centre for each cluster using mean lon and mean lat - # group_by(cluster) %>% - # summarise(mean(lon), mean(lat)) %>% - # ungroup() %>% - # ## Calculate distance between each cluster centre as a distance matrix - # dist() %>% - # ## Crude conversion from lon & lat to km - # multiply_by(110) %>% - # ## Set all distances between the cluster and itself to NAs - # as.matrix() %>% - # `diag<-`(NA) %>% - # ## Find the minimum distance to another cluster for each cluster - # apply(1, min, na.rm = TRUE) %>% - # ## Test if mimimum distance of each cluster to the nearest cluster is below the - # ## the maximum boundary set by max_cluster_dist - # t() %>% - # is_less_than(max_cluster_dist) %>% - # ## Return the list of all clusters the are considered valid - # which() - - tmp <- - df %>% - ## Calculate percentage of points in each cluster - group_by(cluster) %>% - summarise(pert = n()) %>% - mutate(pert = pert / sum(pert)) %>% - ## Keep those that are larger than the minimum cluster size - filter(pert > min_cluster_pert) %>% - ## Combine the list of cluster with enough points with the clusters that are not - ## too far from each other - use_series("cluster") - } - # plot(df$lon, df$lat, col = df$cluster) - - - - ## If clusters are to be removed, then create a warning message saying how many - ## points are considered outliers - - if(NROW(df[!(df$cluster %in% tmp), ]) != 0){ - warning(NROW(df[!(df$cluster %in% tmp), ]), - " records are considered outliers and have been removed \n") - } - - # Subset dataset to only those that are considered vaild clusters - df <- - df[df$cluster %in% tmp, ] - - ## Create the map - - map <- - ## Supress messages and create base layer - suppressMessages( - df %>% - leaflet() %>% - ## Set rectangular view of the final map using the min and max of lon & lat - ## padding option does not work - fitBounds( - lng1 = min(df$lon), lat1 = min(df$lat), - lng2 = max(df$lon), lat2 = max(df$lat), - options = list(padding = padding) - ) %>% - ## Define the base map texture using map_provider - addProviderTiles(map_provider) %>% - ## Add clusters markers (calculated seperate to above process) - addMarkers(clusterOptions = markerClusterOptions()) %>% - ## Add point markers - addCircleMarkers( - radius = 3, - fillColor = "midnight blue", - opacity = 0.2, - color = "white" - ) %>% - ## Add minimap to final map, position based on minimap_position - addMiniMap(position = minimap_position) - ) - # return(list(df = df, map = map)) - return(map = map) - } - -node_terminal1<- - function (mobobj, id = TRUE, worth = TRUE, names = TRUE, abbreviate = TRUE, - index = TRUE, ref = TRUE, col = "black", refcol = "lightgray", - bg = "white", cex = 0.5, pch = 19, xscale = NULL, yscale = NULL, - ylines = 1.5) - { - node <- nodeids(mobobj, terminal = FALSE) - cf <- psychotree:::apply_to_models(mobobj, node, FUN = function(z) if (worth) - worth(z) - else coef(z, all = FALSE, ref = TRUE)) - - - cf <- do.call("rbind", cf) - rownames(cf) <- node - cf<-cf[,order(colSums(cf))] - - mod <- psychotree:::apply_to_models(mobobj, node = 1L, FUN = NULL, drop = TRUE) - if (!worth) { - if (is.character(ref) | is.numeric(ref)) { - reflab <- ref - ref <- TRUE - } - else { - reflab <- mod$ref - } - if (is.character(reflab)) - reflab <- match(reflab, if (!is.null(mod$labels)) - mod$labels - else colnames(cf)) - cf <- cf - cf[, reflab] - } - if (worth) { - cf_ref <- 1/ncol(cf) - } - else { - cf_ref <- 0 - } - if (is.character(names)) { - colnames(cf) <- names - - names <- TRUE - } - if (is.logical(abbreviate)) { - nlab <- max(nchar(colnames(cf))) - abbreviate <- if (abbreviate) - as.numeric(cut(nlab, c(-Inf, 1.5, 4.5, 7.5, Inf))) - else nlab - } - colnames(cf) <- abbreviate(colnames(cf), abbreviate) - if (index) { - x <- 1:NCOL(cf) - if (is.null(xscale)) - xscale <- range(x) + c(-0.1, 0.1) * diff(range(x)) - } - else { - x <- rep(0, length(cf)) - if (is.null(xscale)) - xscale <- c(-1, 1) - } - if (is.null(yscale)) - yscale <- range(cf) + c(-0.1, 0.1) * diff(range(cf)) - rval <- function(node) { - idn <- id_node(node) - cfi <- cf[idn, ] - top_vp <- viewport(layout = grid.layout(nrow = 2, ncol = 3, - widths = unit(c(ylines, 1, 1), c("lines", "null", - "lines")), heights = unit(c(1, 1), c("lines", - "null"))), width = unit(1, "npc"), - height = unit(1, "npc") - unit(2, "lines"), - name = paste("node_btplot", idn, sep = "")) - pushViewport(top_vp) - grid.rect(gp = gpar(fill = bg, col = 0)) - top <- viewport(layout.pos.col = 2, layout.pos.row = 1) - pushViewport(top) - mainlab <- paste(ifelse(id, paste("Node", idn, - "(n = "), ""), info_node(node)$nobs, - ifelse(id, ")", ""), sep = "") - grid.text(mainlab) - popViewport() - plot_vpi <- viewport(layout.pos.col = 2, layout.pos.row = 2, - xscale = xscale, yscale = yscale, name = paste("node_btplot", - idn, "plot", sep = "")) - pushViewport(plot_vpi) - grid.lines(xscale, c(cf_ref, cf_ref), gp = gpar(col = refcol), - default.units = "native") - if (index) { - grid.lines(x, cfi, gp = gpar(col = col, lty = 2), - default.units = "native") - grid.points(x, cfi, gp = gpar(col = col, cex = cex), - pch = pch, default.units = "native") - grid.xaxis(at = x,edits = gEdit(gPath="labels", rot=90,cex=0.4), label = if (names) - names(cfi) - else x) - } - else { - if (names) - grid.text(names(cfi), x = x, y = cfi, default.units = "native") - else grid.points(x, cfi, gp = gpar(col = col, cex = cex), - pch = pch, default.units = "native") - } - grid.yaxis(at = c(ceiling(yscale[1] * 100)/100, floor(yscale[2] * - 100)/100)) - grid.rect(gp = gpar(fill = "transparent")) - upViewport(2) - } - return(rval) - - } \ No newline at end of file diff --git a/dev/stats4dev_report/first_drafts/ReportV3/covar_analysis.Rmd b/dev/stats4dev_report/first_drafts/ReportV3/covar_analysis.Rmd deleted file mode 100644 index ad16614..0000000 --- a/dev/stats4dev_report/first_drafts/ReportV3/covar_analysis.Rmd +++ /dev/null @@ -1,122 +0,0 @@ - -```{r,warning=FALSE,message=FALSE,echo=FALSE} - gsplit=TRUE -if(covars[i]==gender|is.na(gender)){ - gsplit=FALSE -} - - if(is.numeric(dt.fr[,covars[i]])){ -if(gsplit==FALSE){ - vartable<-data.frame(Variable=colnames(dt.fr)[covars[i]], - Mean=round(mean(dt.fr[,covars[i]],na.rm=TRUE),2), - Median=round(median(dt.fr[,covars[i]],na.rm=TRUE),1), - Minimum=min(dt.fr[,covars[i]],na.rm=TRUE),Maximum=max(dt.fr[,covars[i]],na.rm=TRUE), - "Standard Deviation"=round(sd(dt.fr[,covars[i]],na.rm=TRUE),2)) - - - - p1<- ggplot(data=dataset,aes_string(x=colnames(dt.fr)[covars[i]]))+ - geom_histogram(col="black",fill=alpha("red",0.5),bins=20)+ - ggtitle(paste("Histogram of",colnames(dt.fr)[covars[i]]))+ylab("Frequency")+ - scale_y_continuous(sec.axis = sec_axis(~./nrow(dataset),labels=scales::percent, - name="Percentage")) -} - else{ - dt.fr$gender<-factor(dt.fr[,gender]) - vartable<-data.frame(Variable=colnames(dt.fr)[covars[i]],gender=levels(dt.fr[,gender]), - Mean=round(tapply(dt.fr[,covars[i]],dt.fr[,gender],mean,na.rm=TRUE),2), - Median=round(tapply(dt.fr[,covars[i]],dt.fr[,gender],median,na.rm=TRUE),2), - Minimum=round(tapply(dt.fr[,covars[i]],dt.fr[,gender],min,na.rm=TRUE),2), - Maximum=round(tapply(dt.fr[,covars[i]],dt.fr[,gender],max,na.rm=TRUE),2), - "Standard Deviation"=round(tapply(dt.fr[,covars[i]],dt.fr[,gender],sd,na.rm=TRUE),2)) - - - - p1<- ggplot(data=dataset,aes_string(x=colnames(dt.fr)[covars[i]]))+facet_wrap(~gender)+ - geom_histogram(col="black",fill=alpha("red",0.5),bins=20)+ - ggtitle(paste("Histogram of",colnames(dt.fr)[covars[i]]))+ylab("Frequency")+ - scale_y_continuous(sec.axis = sec_axis(~./nrow(dataset),labels=scales::percent, - name="Percentage")) - } - - - } - if(class(dt.fr[,covars[i]])=="Date"){ - - if(gsplit==TRUE){ - dt.fr$gender<-factor(dt.fr[,gender]) - vartable<-data.frame(Variable=colnames(dt.fr)[covars[i]],gender=levels(dt.fr[,gender]), - "Median Date"=as.Date(tapply(dt.fr[,covars[i]],dt.fr[,gender],median,na.rm=TRUE), - origin = "1970-01-01"), - "Earliest Date"=as.Date(tapply(dt.fr[,covars[i]],dt.fr[,gender],min,na.rm=TRUE), origin = "1970-01-01"),"Final Date"=as.Date(tapply(dt.fr[,covars[i]],dt.fr[,gender],max,na.rm=TRUE), origin = "1970-01-01")) - - - - p1<- ggplot(data=dataset,aes_string(x=colnames(dt.fr)[covars[i]]))+ - facet_wrap(~gender)+ - geom_histogram(col="black",fill=alpha("blue",0.5))+ - ggtitle(paste("Histogram of",colnames(dt.fr)[covars[i]]))+ylab("Frequency")+ -scale_x_date(date_breaks = "2 days", date_minor_breaks = "1 day", date_labels = "%d-%b")+ - scale_y_continuous(sec.axis = sec_axis(~./nrow(dataset),labels=scales::percent, - name="Percentage"))+ - theme(axis.text.x = element_text(angle=90)) - } - else{ - vartable<-data.frame(Variable=colnames(dt.fr)[covars[i]], - "Median Date"=as.Date(median(dt.fr[,covars[i]],na.rm=TRUE)), - "Earliest Date"=as.Date(min(dt.fr[,covars[i]],na.rm=TRUE)), - "Final Date"=as.Date(max(dt.fr[,covars[i]],na.rm=TRUE))) - - - - p1<- ggplot(data=dataset,aes_string(x=colnames(dt.fr)[covars[i]]))+ - geom_histogram(col="black",fill=alpha("blue",0.5))+ - ggtitle(paste("Histogram of",colnames(dt.fr)[covars[i]]))+ylab("Frequency")+ -scale_x_date(date_breaks = "2 days", date_minor_breaks = "1 day", date_labels = "%d-%b")+ - scale_y_continuous(sec.axis = sec_axis(~./nrow(dataset),labels=scales::percent, - name="Percentage")) - } -} - if(is.character(dt.fr[,covars[i]])|is.factor(dt.fr[,covars[i]])){ - - if(gsplit==TRUE){ - - vartable<-data.frame(table(dt.fr[,covars[i]],dt.fr[,gender])) - - vartable<-vartable %>% group_by(Var2) %>% mutate(per=Freq/sum(Freq)) %>% - ungroup() %>% mutate(per=percent(per))%>% select(Var1,Var2,per) %>% spread(Var2,per) -colnames(vartable)[2:3]<-paste("% Within",colnames(vartable)[2:3]) -colnames(vartable)[1]<-colnames(dt.fr)[covars[i]] - p1<- ggplot(data=dt.fr,aes_string(x=colnames(dt.fr)[covars[i]],fill=colnames(dt.fr)[gender]))+ - geom_bar(col="black")+coord_flip()+ - ggtitle(paste("Barchart of",colnames(dt.fr)[covars[i]]))+ylab("Frequency")+ - scale_y_continuous(name="Count") - - } - else{ -vartable<-data.frame(table(dt.fr[,covars[i]])) -colnames(vartable)<-c(colnames(dt.fr)[covars[i]],"Frequency") - vartable<-vartable %>% - mutate("% of Respondents"=percent(Frequency/sum(Frequency),1)) - - p1<- ggplot(data=dataset,aes_string(x=colnames(dt.fr)[covars[i]]))+ - geom_bar(col="black",fill=alpha("forestgreen",0.5))+coord_flip()+ - ggtitle(paste("Barchart of",colnames(dt.fr)[covars[i]]))+ylab("Frequency")+ - scale_y_continuous(sec.axis = sec_axis(~./sum(vartable$Frequency),labels=scales::percent, - name="Percentage")) - - } - } - - -``` - -```{r} -vartable %>% kable(caption=paste("Table 2.2.",i," Summary of ",colnames(dt.fr)[covars[i]],sep="")) -``` - -*Figure `r paste("2.2.",i,sep="")`* -```{r} -plot(p1) -``` - diff --git a/dev/stats4dev_report/first_drafts/ReportV3/covar_models.Rmd b/dev/stats4dev_report/first_drafts/ReportV3/covar_models.Rmd deleted file mode 100644 index 6c38ff7..0000000 --- a/dev/stats4dev_report/first_drafts/ReportV3/covar_models.Rmd +++ /dev/null @@ -1,76 +0,0 @@ -### `r colnames(dt.fr)[covar]` - -```{r,warning=FALSE,message=FALSE,echo=FALSE} - -f1<-as.formula(paste("G~",colnames(dt.fr)[covar])) - -R_overall <- to_rankings(dt.fr, - items = vars, - rankings = overall, - type = "tricot") -dt.fr$G<-grouped_rankings(R_overall, index = seq_len(nrow(R_overall))) - - -tree1 <- pltree(formula=f1, - data = dt.fr, minsize = 50, alpha = 0.05) - -``` - - -*`r ifelse(length(tree1)>1,paste("Figure 4.4.",i,sep=""),paste(" "))`* -```{r,fig.height=7,fig.width=10} - - -if(length(tree1)>1){ -rval1<-node_terminal1(tree1) -plot(tree1,terminal_panel =rval1 ) -} - -``` - -*`r ifelse(length(tree1)>1,paste("Figure 4.5.",i,sep=""),paste(" "))`* - -```{r,warning=FALSE,message=FALSE,echo=FALSE,fig.height=8,fig.width=10} -if(length(tree1)>1){ -coefs<-map_df(nodeids(tree1,terminal = TRUE), - function(x)data.frame(node=x, - rule=partykit:::.list.rules.party(tree1, x), - multcompPL(tree1[[ x ]]$node$info$object))) - - -ns<-map_df(nodeids(tree1,terminal = TRUE), - function(x)data.frame(node=x, - rule=partykit:::.list.rules.party(tree1, x), - n=tree1[[ x ]]$node$info$nobs)) - -coefs<-inner_join(coefs,ns) - - coefs$Label<-paste("Node",coefs$node,":",coefs$rule,"\n","n=",coefs$n) - - - coefs<-coefs %>% mutate(term=reorder(term,estimate,mean)) %>% - group_by(node) %>% mutate(m=mean(estimate),ctd=estimate-m) %>%data.frame() - - ggplot(data=coefs,aes(x=term,y=ctd,ymax=ctd+1.96*quasiSE,ymin=ctd-1.96*quasiSE,col=Label))+ - geom_point(position = position_dodge(width=0.3),size=1)+ - geom_errorbar(position = position_dodge(width=0.3),width=0)+ - coord_flip()+ - geom_text(aes(label=.group),size=3,fontface=2,nudge_x=rep(c(-0.3,0.5),each=nlevels(coefs$term)))+ - ylab("")+ - xlab("Variety")+ - ggtitle(paste("Terminal node parameter estimates for","overall","rankings."), - subtitle = paste("Covariates considered:",paste(colnames(dt.fr)[covar],collapse=", "))) -} - -``` - - - -```{r,warning=FALSE,message=FALSE,echo=FALSE} -endmessage<-"" -if(length(tree1)==1){ - endmessage<-paste("Variable not found to be statistically signifcant at 5% level. p=", - round(nodeapply(tree1,1,function(n) info_node(n)$test)[[1]][2,1],4)) -} -``` -`r endmessage` diff --git a/dev/stats4dev_report/first_drafts/ReportV3/map1.png b/dev/stats4dev_report/first_drafts/ReportV3/map1.png deleted file mode 100644 index f882181..0000000 Binary files a/dev/stats4dev_report/first_drafts/ReportV3/map1.png and /dev/null differ diff --git a/dev/stats4dev_report/first_drafts/ReportV3/trait_analysis.Rmd b/dev/stats4dev_report/first_drafts/ReportV3/trait_analysis.Rmd deleted file mode 100644 index ba5c3ca..0000000 --- a/dev/stats4dev_report/first_drafts/ReportV3/trait_analysis.Rmd +++ /dev/null @@ -1,39 +0,0 @@ - -**`r paste(trait_names[i])`** - -```{r,include=FALSE,echo=FALSE} - -best<-subset(metadat,trait==trait_names[i]&bw=="best")$num -worst<-subset(metadat,trait==trait_names[i]&bw=="worst")$num - -fav1<-favourability(a=df[,vars[1]], - b=df[,vars[2]], - c=df[,vars[3]], - best=df[,best], - worst=df[,worst]) -fav2<-fav1 - -fav2$best_per<-formattable::percent(fav2$best_per/100,1) -fav2$worst_per<-formattable::percent(fav2$worst_per/100,1) -fav2$wins<-formattable::percent(fav2$wins,1) -fav2$Fav_Score<-round(fav2$Fav_Score,1) - -colnames(fav2)<-c(option,"N","% Top Ranked","% Bottom Ranked","% Contests Won","Net Favourability Score") - - - -p2<-favourability_plot(fav1)+ggtitle(trait_names[i])+ylim(-100,100)+xlab(option) -``` - -```{r} -kable(fav2[nrow(fav2):1,],row.names = FALSE, - caption=paste("Table 2.5.",i,": Favourability Statistics for ",trait_names[i],sep="")) -``` - -*Figure `r paste("2.5.",i,sep="")`* -```{r} -p2 -``` - - - diff --git a/dev/stats4dev_report/first_drafts/ReportV3/trait_models.Rmd b/dev/stats4dev_report/first_drafts/ReportV3/trait_models.Rmd deleted file mode 100644 index b66f3d6..0000000 --- a/dev/stats4dev_report/first_drafts/ReportV3/trait_models.Rmd +++ /dev/null @@ -1,61 +0,0 @@ -**`r trait_names[i]`** - - -```{r} -x_tmp<-anovas[[i]] -p_tmp<-x_tmp[2,5] -x_tmp[,5]<-paste(format.pval((x_tmp[,5])),stars.pval((x_tmp[,5]))) - -x_tmp$model[2]<-paste("mod",trait_names[i],sep="_") - -kable(x_tmp,caption=paste0("Table 3.4.",i)) -``` - -```{r} - -if(p_tmp<0.001){ -message_tmp<-paste0("p=",format.pval((p_tmp)), " , this suggests that from the experiment shows there is strong evidence of a difference between", option,"s") -} - -if(p_tmp<0.01 & p_tmp >0.001){ -message_tmp<-paste0("p=",format.pval((p_tmp)), " ,this suggests that from the experiment shows there is evidence of a difference between", option,"s") -} -if(p_tmp>0.01 & p_tmp <0.10){ -message_tmp<-paste0("p=",format.pval((p_tmp))," ,this suggests that the experiment shows there may be some evidence of a difference between", option,"s") -} -if(p_tmp>0.10){ -message_tmp<-paste0("p=",format.pval((p_tmp))," ,this suggests that there is not enough evidence to conclude that there are differences between", option,"s") -} -``` - -`r message_tmp` - -```{r,fig.width=7,fig.height=7} - - -plot(plot.multcompPL(summaries[[i]],level=0.84)+ - ggtitle(paste(trait_names[i],"Estimates w/ 84% Confidence Intervals"), - subtitle="Groups created from pairwise contrasts at 5% level\nwith Benjamini & Hochberg adjustment")) -``` - -```{r} -summaries[[i]] %>% - select(estimate,quasiSE,.group) %>% - rename("Estimate"=estimate,"Group"=.group) %>% - kable(digits=2,caption = paste("Table 3.5.",i," ",trait_names[i]," model parameter estimates")) -``` - -```{r} - - -kable(worths[[i]][,-2],caption = paste("Table 3.6.",i," ","Probability of being highest ranked: ",trait_names[i])) - - -ggplot(data=worths[[i]],aes(y=worth,fill=worth,group=Variety,x=1))+ - geom_bar(stat="identity",col="black",show.legend = FALSE)+ - theme_void()+ - geom_text(aes(y=cumsum(rev(worth))-rev(worth)/2,size=rev(worth),label=rev(paste(Variety,percent(worth),sep=": "))),show.legend = FALSE,fontface=2)+ - ggtitle(paste("Probability that variety is the\nhighest ranked",trait_names[i]))+ - scale_fill_gradient(low="white",high="forestgreen")+ - scale_size_continuous(range=c(0.5,10)) -``` diff --git a/dev/stats4dev_report/first_drafts/ReportV3/trait_pairs.Rmd b/dev/stats4dev_report/first_drafts/ReportV3/trait_pairs.Rmd deleted file mode 100644 index 440c844..0000000 --- a/dev/stats4dev_report/first_drafts/ReportV3/trait_pairs.Rmd +++ /dev/null @@ -1,20 +0,0 @@ -**`r trait_names[i]`** - -```{r} -best<-subset(metadat,trait==trait_names[i]&bw=="best")$num - worst<-subset(metadat,trait==trait_names[i]&bw=="worst")$num - -cont_t<-contests(a=df[,vars[1]], - b=df[,vars[2]], - c=df[,vars[3]], - best=df[,best], - worst=df[,worst]) -``` - -*Figure `r paste("2.8.",i,sep="")`* -```{r,fig.height=10,fig.width=12} -cont_t[[2]]+ - ggtitle(paste("Head to Head Performance:",trait_names[i]))+ - ylab("% Contests Preferred")+xlab(option) - -``` \ No newline at end of file