{"action":"created","comment":{"url":"https://api.github.com/repos/ecohealthalliance/eidith/pulls/comments/170769277","pull_request_review_id":99506540,"id":170769277,"diff_hunk":"@@ -1,117 +1,274 @@\n-logical_vars <- c(\"archived_data\", \"deep_forest_data\", \"prioritized_for_testing\",\n-                  \"pooled\", \"message_sent_to_country\", \"message_sent_to_govt\",\n-                  \"govt_approved_release\", \"predict_protocol\", \"known\",\n-                  \"human_health\")\n-\n-date_vars <- c(\"event_date\", \"sample_date\", \"specimen_date\",\n-               \"test_date\", \"lab_submission_date\", \"results_date\")\n-\n-datetime_vars <- c(\"date_created\", \"date_modified\", \"database_date\")\n-\n-#' Load EIDITH data from the local database\n-#'\n-#' These functions load data from the locally-stored SQLite database of downloaded\n-#' and cleaned EIDITH data. `ed_table` is a general function, and `ed_table_`\n-#' it's [standard evaluation](https://cran.r-project.org/web/packages/dplyr/vignettes/nse.html)\n-#' equivalent, useful for programming.  The other functions are convenience aliases\n-#' for the individual tables. Alternate versions return [mock data][ed_mock()] for\n-#' tutorials and practice.\n-#'\n-#' These functions take [dplyr::filter()] arguments to sub-set the data.  Using\n-#' these, the data is subsetted via SQL *before* it is loaded into memory.\n-#' For large tables, such as the *tests* table, this is useful for reducing the memory footprint of your R session.\n-#'\n-#' Note that subsetting in SQL is more limited:\n-#'\n-#' -  Use `0` or `1` instead of `TRUE` or `FALSE`\n-#' -  Dates are stored as character strings, but as they are in YYYY-MM-DD\n-#'    format, filtering such as `event_date > \"2014-01-01\"` still works.\n-#'\n-#' @param table one of the EIDITH database tables. One of \"events\", \"animals\",\n-#' \"specimens\", \"tests\", \"viruses\", or \"test_specimen_ids\".\n-#' @param ... arguments passed to [dplyr::filter()] to subset data\n-#' @param .dots standard-evaluation versions of subsetting arguments\n-#' @return a [tibble][tibble::tibble]-style data frame.\n-#' @importFrom dbplyr partial_eval\n-#' @importFrom dplyr tbl tbl_df filter_ mutate_at funs_ funs collect vars\n-#' @importFrom stringi stri_replace_first_regex stri_extract_last_regex stri_detect_fixed\n-#' @export\n-#' @rdname ed_table\n-ed_table_ <- function(table, ..., .dots) {\n-  dots <- lazyeval::all_dots(.dots, ...)\n-  dots = lazyeval::as.lazy_dots(   #This stuff deals with the dplyr bug found at https://github.com/hadley/dplyr/issues/511 by modifying \"%in%\" calls\n-    lapply(dots, function(dot_expr) {\n-      new_expr <- paste0(\n-        deparse(partial_eval(dot_expr[[\"expr\"]], env=dot_expr[[\"env\"]]),\n-                width.cutoff = 500L),\n-        collapse = \"\")\n-      if(stri_detect_fixed(new_expr, \"%in%\")) {\n-        matched_expr <- stri_extract_last_regex(new_expr, \"(?<=%in%\\\\s).*$\")\n-        if(length(eval(parse(text=matched_expr))) ==  0 ) {\n-          new_expr <- stri_replace_first_fixed(new_expr, matched_expr, \"('')\")\n-        }\n-        else if(length(eval(parse(text=matched_expr))) == 1) {\n-          new_expr <- stri_replace_first_fixed(new_expr, matched_expr,\n-                                               paste0(\"(\", matched_expr, \")\"))\n-        }\n-      }\n-      lazyeval::as.lazy(new_expr, env=dot_expr[[\"env\"]])\n-    }))\n-  ed_tb <- tbl(eidith_db(), table)\n-  ed_tb %>%\n-    filter_(.dots=dots) %>%\n-    collect(n=Inf) %>%\n-    fix_classes()\n-}\n-\n-fix_classes <- function(table) {\n-  logical_cols <- names(table)[names(table) %in% logical_vars]\n-  date_cols <-  names(table)[names(table) %in% date_vars]\n-  datetime_cols <- names(table)[names(table)  %in% datetime_vars]\n-  if(length(logical_cols) != 0) table <- mutate_at(table, vars(logical_cols), funs_(\"as.logical\"))\n-  if(length(date_cols) != 0) table <- mutate_at(table, vars(date_cols), funs(quicktime))\n-  if(length(datetime_cols) != 0) table <- mutate_at(table, vars(datetime_cols), funs(quicktime2))\n-  return(table)\n-}\n-\n-#' @export\n-#' @rdname ed_table\n-ed_table <- function(table, ...) {\n-  ed_table_(table, .dots = lazyeval::lazy_dots(...))\n-}\n-\n-#' @export\n-#' @rdname ed_table\n-ed_events <- function(...) {\n-  ed_table_(\"events\", .dots = lazyeval::lazy_dots(...))\n-}\n-\n-#' @export\n-#' @rdname ed_table\n-ed_animals <- function(...) {\n-  ed_table_(\"animals\", .dots = lazyeval::lazy_dots(...))\n-}\n-\n-#' @export\n-#' @rdname ed_table\n-ed_specimens <- function(...) {\n-  ed_table_(\"specimens\", .dots = lazyeval::lazy_dots(...))\n-}\n-\n-#' @export\n-#' @rdname ed_table\n-ed_tests <- function(...) {\n-  ed_table_(\"tests\", .dots = lazyeval::lazy_dots(...))\n-}\n-\n-#' @export\n-#' @rdname ed_table\n-ed_viruses <- function(...) {\n-  ed_table_(\"viruses\", .dots = lazyeval::lazy_dots(...))\n-}\n-\n-#' @export\n-#' @rdname ed_table\n-ed_testspecimen <- function(...) {\n-  ed_table_(\"test_specimen_ids\", .dots = lazyeval::lazy_dots(...))\n-}\n+logical_vars <- c(\"archived_data\", \"deep_forest_data\", \"prioritized_for_testing\",\r\n+                  \"pooled\", \"message_sent_to_country\", \"message_sent_to_govt\",\r\n+                  \"govt_approved_release\", \"predict_protocol\", \"known\",\r\n+                  \"human_health\")\r\n+\r\n+date_vars <- c(\"event_date\", \"sample_date\", \"specimen_date\",\r\n+               \"test_date\", \"lab_submission_date\", \"results_date\")\r\n+\r\n+datetime_vars <- c(\"date_created\", \"date_modified\", \"database_date\")\r\n+\r\n+#' Load EIDITH data from the local database\r\n+#'\r\n+#' These functions load data from the locally-stored SQLite database of downloaded\r\n+#' and cleaned EIDITH data. `ed_table` is a general function, and `ed_table_`\r\n+#' it's [standard evaluation](https://cran.r-project.org/web/packages/dplyr/vignettes/nse.html)\r\n+#' equivalent, useful for programming.  The other functions are convenience aliases\r\n+#' for the individual tables. Alternate versions return [mock data][ed_mock()] for\r\n+#' tutorials and practice.\r\n+#'\r\n+#' These functions take [dplyr::filter()] arguments to sub-set the data.  Using\r\n+#' these, the data is subsetted via SQL *before* it is loaded into memory.\r\n+#' For large tables, such as the *tests* table, this is useful for reducing the memory footprint of your R session.\r\n+#'\r\n+#' Note that subsetting in SQL is more limited:\r\n+#'\r\n+#' -  Use `0` or `1` instead of `TRUE` or `FALSE`\r\n+#' -  Dates are stored as character strings, but as they are in YYYY-MM-DD\r\n+#'    format, filtering such as `event_date > \"2014-01-01\"` still works.\r\n+#'\r\n+#' @param table one of the EIDITH database tables. One of \"events\", \"animals\",\r\n+#' \"specimens\", \"tests\", \"viruses\", or \"test_specimen_ids\".\r\n+#' @param ... arguments passed to [dplyr::filter()] to subset data\r\n+#' @param .dots standard-evaluation versions of subsetting arguments\r\n+#' @return a [tibble][tibble::tibble]-style data frame.\r\n+#' @importFrom dbplyr partial_eval\r\n+#' @importFrom dplyr tbl tbl_df filter_ mutate_at funs_ funs collect vars\r\n+#' @importFrom stringi stri_replace_first_regex stri_extract_last_regex stri_detect_fixed\r\n+#' @export\r\n+#' @rdname ed_table\r\n+ed_table_ <- function(table, ..., .dots) {\r\n+  dots <- lazyeval::all_dots(.dots, ...)\r\n+  dots = lazyeval::as.lazy_dots(   #This stuff deals with the dplyr bug found at https://github.com/hadley/dplyr/issues/511 by modifying \"%in%\" calls\r\n+    lapply(dots, function(dot_expr) {\r\n+      new_expr <- paste0(\r\n+        deparse(partial_eval(dot_expr[[\"expr\"]], env=dot_expr[[\"env\"]]),\r\n+                width.cutoff = 500L),\r\n+        collapse = \"\")\r\n+      if(stri_detect_fixed(new_expr, \"%in%\")) {\r\n+        matched_expr <- stri_extract_last_regex(new_expr, \"(?<=%in%\\\\s).*$\")\r\n+        if(length(eval(parse(text=matched_expr))) ==  0 ) {\r\n+          new_expr <- stri_replace_first_fixed(new_expr, matched_expr, \"('')\")\r\n+        }\r\n+        else if(length(eval(parse(text=matched_expr))) == 1) {\r\n+          new_expr <- stri_replace_first_fixed(new_expr, matched_expr,\r\n+                                               paste0(\"(\", matched_expr, \")\"))\r\n+        }\r\n+      }\r\n+      lazyeval::as.lazy(new_expr, env=dot_expr[[\"env\"]])\r\n+    }))\r\n+\r\n+\r\n+  #add class attributes to P2 tables\r\n+  if(stri_detect_fixed(table, \"2\")){\r\n+    ed_tb <- dbReadTable(eidith_db()$con, table)\r\n+    #adding notes\r\n+    note_cols <- which(stri_detect_fixed(names(ed_tb), \"notes\"))\r\n+    attr(ed_tb, \"notes\") <- note_cols\r\n+    #adding duplicate rows\r\n+    intended_key <- db_other_indexes[[table]][[1]]\r\n+    group_var <- as.name(intended_key)\r\n+    key_errors <- ed_tb %>%\r\n+      group_by(!!group_var) %>%\r\n+      summarize(count = n()) %>%\r\n+      filter(count > 1) %>%\r\n+      dplyr::pull(!!group_var)\r\n+    attr(ed_tb, \"duplicate_keys\") <- key_errors\r\n+    indices <- which(ed_tb[[intended_key]] == key_errors)\r\n+    attr(ed_tb, \"duplicate_indices\") <- indices\r\n+    class(ed_tb) <- c(\"eidith_tbl\", class(ed_tb))\r\n+\r\n+    #print details on local database pull\"\r\n+    if(interactive()){\r\n+    if(length(note_cols > 0)){\r\n+      cat_line(\"\")\r\n+      cat_line(cyan(\"There are notes attached to this dataframe which may contain important information! Please look at the following column(s):\"))\r\n+      cat_line(paste(\"    \", magenta(names(ed_tb)[note_cols])))\r\n+    }\r","path":"R/tables.R","position":204,"original_position":204,"commit_id":"8d22b1029bb8179872064d0725d77028a719faee","original_commit_id":"8d22b1029bb8179872064d0725d77028a719faee","user":{"login":"calebasaraba","id":21368926,"avatar_url":"https://avatars3.githubusercontent.com/u/21368926?v=4","gravatar_id":"","url":"https://api.github.com/users/calebasaraba","html_url":"https://github.com/calebasaraba","followers_url":"https://api.github.com/users/calebasaraba/followers","following_url":"https://api.github.com/users/calebasaraba/following{/other_user}","gists_url":"https://api.github.com/users/calebasaraba/gists{/gist_id}","starred_url":"https://api.github.com/users/calebasaraba/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/calebasaraba/subscriptions","organizations_url":"https://api.github.com/users/calebasaraba/orgs","repos_url":"https://api.github.com/users/calebasaraba/repos","events_url":"https://api.github.com/users/calebasaraba/events{/privacy}","received_events_url":"https://api.github.com/users/calebasaraba/received_events","type":"User","site_admin":false},"body":"Done.","created_at":"2018-02-26T23:19:43Z","updated_at":"2018-02-26T23:19:43Z","html_url":"https://github.com/ecohealthalliance/eidith/pull/66#discussion_r170769277","pull_request_url":"https://api.github.com/repos/ecohealthalliance/eidith/pulls/66","author_association":"COLLABORATOR","_links":{"self":{"href":"https://api.github.com/repos/ecohealthalliance/eidith/pulls/comments/170769277"},"html":{"href":"https://github.com/ecohealthalliance/eidith/pull/66#discussion_r170769277"},"pull_request":{"href":"https://api.github.com/repos/ecohealthalliance/eidith/pulls/66"}},"in_reply_to_id":170748085},"pull_request":{"url":"https://api.github.com/repos/ecohealthalliance/eidith/pulls/66","id":171267545,"html_url":"https://github.com/ecohealthalliance/eidith/pull/66","diff_url":"https://github.com/ecohealthalliance/eidith/pull/66.diff","patch_url":"https://github.com/ecohealthalliance/eidith/pull/66.patch","issue_url":"https://api.github.com/repos/ecohealthalliance/eidith/issues/66","number":66,"state":"open","locked":false,"title":"Eidith2","user":{"login":"calebasaraba","id":21368926,"avatar_url":"https://avatars3.githubusercontent.com/u/21368926?v=4","gravatar_id":"","url":"https://api.github.com/users/calebasaraba","html_url":"https://github.com/calebasaraba","followers_url":"https://api.github.com/users/calebasaraba/followers","following_url":"https://api.github.com/users/calebasaraba/following{/other_user}","gists_url":"https://api.github.com/users/calebasaraba/gists{/gist_id}","starred_url":"https://api.github.com/users/calebasaraba/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/calebasaraba/subscriptions","organizations_url":"https://api.github.com/users/calebasaraba/orgs","repos_url":"https://api.github.com/users/calebasaraba/repos","events_url":"https://api.github.com/users/calebasaraba/events{/privacy}","received_events_url":"https://api.github.com/users/calebasaraba/received_events","type":"User","site_admin":false},"body":"Addresses #62 and #63 \r\n\r\n__Key functions / changes:__\r\n\r\n- On startup, new banner displays status of local P1 / P2 database download and download dates, `ed_db_check_status()` runs on load and will check which tables need to be downloaded because they are missing or are malformed, then prompt user to do so. \r\n\r\n- `ed_db_download()` now takes both a `p1_tables` and `p2_tables` argument, letting the user download P1/P2 data to a local SQLite database. `ed_db_download()` still downloads all new tables to a temporary local database, and checks whether they are present and as expected, but now will not discard entire download if there are errors; instead the well-formed tables will be transferred to the local database while the corrupt tables are discarded.\r\n\r\n- `ed2_get()` function mirrors `ed_get()` function to download tables from IM team P2 API. Both `ed_get()` and `ed2_get()` should work safely, returning messages to the user but not breaking in the event that an API is not responding or there are unexpected fields in tables. \r\n\r\n- `ed_table_()` adds attributes for P2 tables that have note columns or have duplicate unique identifiers. This is communicated to the user when they do a local pull via an `ed_table_()` call or when they print any eidith P2 table.\r\n\r\n- status checking and status display functions have been split into `R/status-checks.R` because `R/database.R` was getting ungainly.\r\n\r\n*Note: not all metadata is compiled for P2 Human questionnaire tables (#61) but will be continuously pushed up as it is finished. Until then `metadata_tables` is a placeholder indicating which tables are finished so that status_check-ing functions don't worry about inconsistencies in uncleaned tables.*\r\n\r\n","created_at":"2018-02-26T02:02:33Z","updated_at":"2018-02-26T23:19:43Z","closed_at":null,"merged_at":null,"merge_commit_sha":"da4f8281309307f6889d6ca10eaf23c1972f3f8b","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/ecohealthalliance/eidith/pulls/66/commits","review_comments_url":"https://api.github.com/repos/ecohealthalliance/eidith/pulls/66/comments","review_comment_url":"https://api.github.com/repos/ecohealthalliance/eidith/pulls/comments{/number}","comments_url":"https://api.github.com/repos/ecohealthalliance/eidith/issues/66/comments","statuses_url":"https://api.github.com/repos/ecohealthalliance/eidith/statuses/8d22b1029bb8179872064d0725d77028a719faee","head":{"label":"ecohealthalliance:eidith2","ref":"eidith2","sha":"8d22b1029bb8179872064d0725d77028a719faee","user":{"login":"ecohealthalliance","id":1501231,"avatar_url":"https://avatars2.githubusercontent.com/u/1501231?v=4","gravatar_id":"","url":"https://api.github.com/users/ecohealthalliance","html_url":"https://github.com/ecohealthalliance","followers_url":"https://api.github.com/users/ecohealthalliance/followers","following_url":"https://api.github.com/users/ecohealthalliance/following{/other_user}","gists_url":"https://api.github.com/users/ecohealthalliance/gists{/gist_id}","starred_url":"https://api.github.com/users/ecohealthalliance/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ecohealthalliance/subscriptions","organizations_url":"https://api.github.com/users/ecohealthalliance/orgs","repos_url":"https://api.github.com/users/ecohealthalliance/repos","events_url":"https://api.github.com/users/ecohealthalliance/events{/privacy}","received_events_url":"https://api.github.com/users/ecohealthalliance/received_events","type":"Organization","site_admin":false},"repo":{"id":67831683,"name":"eidith","full_name":"ecohealthalliance/eidith","owner":{"login":"ecohealthalliance","id":1501231,"avatar_url":"https://avatars2.githubusercontent.com/u/1501231?v=4","gravatar_id":"","url":"https://api.github.com/users/ecohealthalliance","html_url":"https://github.com/ecohealthalliance","followers_url":"https://api.github.com/users/ecohealthalliance/followers","following_url":"https://api.github.com/users/ecohealthalliance/following{/other_user}","gists_url":"https://api.github.com/users/ecohealthalliance/gists{/gist_id}","starred_url":"https://api.github.com/users/ecohealthalliance/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ecohealthalliance/subscriptions","organizations_url":"https://api.github.com/users/ecohealthalliance/orgs","repos_url":"https://api.github.com/users/ecohealthalliance/repos","events_url":"https://api.github.com/users/ecohealthalliance/events{/privacy}","received_events_url":"https://api.github.com/users/ecohealthalliance/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/ecohealthalliance/eidith","description":"Data access and analytical tools for PREDICT","fork":false,"url":"https://api.github.com/repos/ecohealthalliance/eidith","forks_url":"https://api.github.com/repos/ecohealthalliance/eidith/forks","keys_url":"https://api.github.com/repos/ecohealthalliance/eidith/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ecohealthalliance/eidith/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ecohealthalliance/eidith/teams","hooks_url":"https://api.github.com/repos/ecohealthalliance/eidith/hooks","issue_events_url":"https://api.github.com/repos/ecohealthalliance/eidith/issues/events{/number}","events_url":"https://api.github.com/repos/ecohealthalliance/eidith/events","assignees_url":"https://api.github.com/repos/ecohealthalliance/eidith/assignees{/user}","branches_url":"https://api.github.com/repos/ecohealthalliance/eidith/branches{/branch}","tags_url":"https://api.github.com/repos/ecohealthalliance/eidith/tags","blobs_url":"https://api.github.com/repos/ecohealthalliance/eidith/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ecohealthalliance/eidith/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ecohealthalliance/eidith/git/refs{/sha}","trees_url":"https://api.github.com/repos/ecohealthalliance/eidith/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ecohealthalliance/eidith/statuses/{sha}","languages_url":"https://api.github.com/repos/ecohealthalliance/eidith/languages","stargazers_url":"https://api.github.com/repos/ecohealthalliance/eidith/stargazers","contributors_url":"https://api.github.com/repos/ecohealthalliance/eidith/contributors","subscribers_url":"https://api.github.com/repos/ecohealthalliance/eidith/subscribers","subscription_url":"https://api.github.com/repos/ecohealthalliance/eidith/subscription","commits_url":"https://api.github.com/repos/ecohealthalliance/eidith/commits{/sha}","git_commits_url":"https://api.github.com/repos/ecohealthalliance/eidith/git/commits{/sha}","comments_url":"https://api.github.com/repos/ecohealthalliance/eidith/comments{/number}","issue_comment_url":"https://api.github.com/repos/ecohealthalliance/eidith/issues/comments{/number}","contents_url":"https://api.github.com/repos/ecohealthalliance/eidith/contents/{+path}","compare_url":"https://api.github.com/repos/ecohealthalliance/eidith/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ecohealthalliance/eidith/merges","archive_url":"https://api.github.com/repos/ecohealthalliance/eidith/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ecohealthalliance/eidith/downloads","issues_url":"https://api.github.com/repos/ecohealthalliance/eidith/issues{/number}","pulls_url":"https://api.github.com/repos/ecohealthalliance/eidith/pulls{/number}","milestones_url":"https://api.github.com/repos/ecohealthalliance/eidith/milestones{/number}","notifications_url":"https://api.github.com/repos/ecohealthalliance/eidith/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ecohealthalliance/eidith/labels{/name}","releases_url":"https://api.github.com/repos/ecohealthalliance/eidith/releases{/id}","deployments_url":"https://api.github.com/repos/ecohealthalliance/eidith/deployments","created_at":"2016-09-09T20:47:20Z","updated_at":"2017-06-12T17:17:55Z","pushed_at":"2018-02-26T02:10:52Z","git_url":"git://github.com/ecohealthalliance/eidith.git","ssh_url":"git@github.com:ecohealthalliance/eidith.git","clone_url":"https://github.com/ecohealthalliance/eidith.git","svn_url":"https://github.com/ecohealthalliance/eidith","homepage":"https://ecohealthalliance.github.io/eidith","size":19460,"stargazers_count":0,"watchers_count":0,"language":"R","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":1,"mirror_url":null,"archived":false,"open_issues_count":18,"license":{"key":"other","name":"Other","spdx_id":null,"url":null},"forks":1,"open_issues":18,"watchers":0,"default_branch":"master"}},"base":{"label":"ecohealthalliance:dev","ref":"dev","sha":"c9ef4695fd1104f6b8445030ba69a82a03441a8b","user":{"login":"ecohealthalliance","id":1501231,"avatar_url":"https://avatars2.githubusercontent.com/u/1501231?v=4","gravatar_id":"","url":"https://api.github.com/users/ecohealthalliance","html_url":"https://github.com/ecohealthalliance","followers_url":"https://api.github.com/users/ecohealthalliance/followers","following_url":"https://api.github.com/users/ecohealthalliance/following{/other_user}","gists_url":"https://api.github.com/users/ecohealthalliance/gists{/gist_id}","starred_url":"https://api.github.com/users/ecohealthalliance/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ecohealthalliance/subscriptions","organizations_url":"https://api.github.com/users/ecohealthalliance/orgs","repos_url":"https://api.github.com/users/ecohealthalliance/repos","events_url":"https://api.github.com/users/ecohealthalliance/events{/privacy}","received_events_url":"https://api.github.com/users/ecohealthalliance/received_events","type":"Organization","site_admin":false},"repo":{"id":67831683,"name":"eidith","full_name":"ecohealthalliance/eidith","owner":{"login":"ecohealthalliance","id":1501231,"avatar_url":"https://avatars2.githubusercontent.com/u/1501231?v=4","gravatar_id":"","url":"https://api.github.com/users/ecohealthalliance","html_url":"https://github.com/ecohealthalliance","followers_url":"https://api.github.com/users/ecohealthalliance/followers","following_url":"https://api.github.com/users/ecohealthalliance/following{/other_user}","gists_url":"https://api.github.com/users/ecohealthalliance/gists{/gist_id}","starred_url":"https://api.github.com/users/ecohealthalliance/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ecohealthalliance/subscriptions","organizations_url":"https://api.github.com/users/ecohealthalliance/orgs","repos_url":"https://api.github.com/users/ecohealthalliance/repos","events_url":"https://api.github.com/users/ecohealthalliance/events{/privacy}","received_events_url":"https://api.github.com/users/ecohealthalliance/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/ecohealthalliance/eidith","description":"Data access and analytical tools for PREDICT","fork":false,"url":"https://api.github.com/repos/ecohealthalliance/eidith","forks_url":"https://api.github.com/repos/ecohealthalliance/eidith/forks","keys_url":"https://api.github.com/repos/ecohealthalliance/eidith/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ecohealthalliance/eidith/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ecohealthalliance/eidith/teams","hooks_url":"https://api.github.com/repos/ecohealthalliance/eidith/hooks","issue_events_url":"https://api.github.com/repos/ecohealthalliance/eidith/issues/events{/number}","events_url":"https://api.github.com/repos/ecohealthalliance/eidith/events","assignees_url":"https://api.github.com/repos/ecohealthalliance/eidith/assignees{/user}","branches_url":"https://api.github.com/repos/ecohealthalliance/eidith/branches{/branch}","tags_url":"https://api.github.com/repos/ecohealthalliance/eidith/tags","blobs_url":"https://api.github.com/repos/ecohealthalliance/eidith/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ecohealthalliance/eidith/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ecohealthalliance/eidith/git/refs{/sha}","trees_url":"https://api.github.com/repos/ecohealthalliance/eidith/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ecohealthalliance/eidith/statuses/{sha}","languages_url":"https://api.github.com/repos/ecohealthalliance/eidith/languages","stargazers_url":"https://api.github.com/repos/ecohealthalliance/eidith/stargazers","contributors_url":"https://api.github.com/repos/ecohealthalliance/eidith/contributors","subscribers_url":"https://api.github.com/repos/ecohealthalliance/eidith/subscribers","subscription_url":"https://api.github.com/repos/ecohealthalliance/eidith/subscription","commits_url":"https://api.github.com/repos/ecohealthalliance/eidith/commits{/sha}","git_commits_url":"https://api.github.com/repos/ecohealthalliance/eidith/git/commits{/sha}","comments_url":"https://api.github.com/repos/ecohealthalliance/eidith/comments{/number}","issue_comment_url":"https://api.github.com/repos/ecohealthalliance/eidith/issues/comments{/number}","contents_url":"https://api.github.com/repos/ecohealthalliance/eidith/contents/{+path}","compare_url":"https://api.github.com/repos/ecohealthalliance/eidith/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ecohealthalliance/eidith/merges","archive_url":"https://api.github.com/repos/ecohealthalliance/eidith/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ecohealthalliance/eidith/downloads","issues_url":"https://api.github.com/repos/ecohealthalliance/eidith/issues{/number}","pulls_url":"https://api.github.com/repos/ecohealthalliance/eidith/pulls{/number}","milestones_url":"https://api.github.com/repos/ecohealthalliance/eidith/milestones{/number}","notifications_url":"https://api.github.com/repos/ecohealthalliance/eidith/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ecohealthalliance/eidith/labels{/name}","releases_url":"https://api.github.com/repos/ecohealthalliance/eidith/releases{/id}","deployments_url":"https://api.github.com/repos/ecohealthalliance/eidith/deployments","created_at":"2016-09-09T20:47:20Z","updated_at":"2017-06-12T17:17:55Z","pushed_at":"2018-02-26T02:10:52Z","git_url":"git://github.com/ecohealthalliance/eidith.git","ssh_url":"git@github.com:ecohealthalliance/eidith.git","clone_url":"https://github.com/ecohealthalliance/eidith.git","svn_url":"https://github.com/ecohealthalliance/eidith","homepage":"https://ecohealthalliance.github.io/eidith","size":19460,"stargazers_count":0,"watchers_count":0,"language":"R","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":1,"mirror_url":null,"archived":false,"open_issues_count":18,"license":{"key":"other","name":"Other","spdx_id":null,"url":null},"forks":1,"open_issues":18,"watchers":0,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/ecohealthalliance/eidith/pulls/66"},"html":{"href":"https://github.com/ecohealthalliance/eidith/pull/66"},"issue":{"href":"https://api.github.com/repos/ecohealthalliance/eidith/issues/66"},"comments":{"href":"https://api.github.com/repos/ecohealthalliance/eidith/issues/66/comments"},"review_comments":{"href":"https://api.github.com/repos/ecohealthalliance/eidith/pulls/66/comments"},"review_comment":{"href":"https://api.github.com/repos/ecohealthalliance/eidith/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/ecohealthalliance/eidith/pulls/66/commits"},"statuses":{"href":"https://api.github.com/repos/ecohealthalliance/eidith/statuses/8d22b1029bb8179872064d0725d77028a719faee"}},"author_association":"COLLABORATOR"}}
{"actor":{"display_login":"calebasaraba"}}