{"action":"created","comment":{"url":"https://api.github.com/repos/MoBiodiv/mobr/pulls/comments/59108474","id":59108474,"diff_hunk":"@@ -10,221 +10,244 @@ require(pracma)\n ## sample-based implicit, and individual-based rescaled to sample\n get_avg_dens = function(dat_sp, dat_plot, ScaleBy) {\n     # Auxillary function to obtain average density within plot for rescaling Ask user\n-    # to specify which treatment is used as 'standard' for rescaling.\n+    # to specify which group is used as 'standard' for rescaling.\n     if (!is.na(ScaleBy)) {\n-        dat_scale = dat_sp[match(dat_plot[which(dat_plot[ , 2] == ScaleBy), 1],\n-                                 dat_sp[ , 1]), 2:ncol(dat_sp)]\n-        avg_dens = mean(apply(dat_scale, 1, sum))\n+        avg_dens = mean(apply(dat_sp[dat_plot$group == ScaleBy, ], 1, sum))\n     } else {\n-        # If unspecified, uses min density among treatments.\n-        trmts = unique(dat_plot[ , 2])\n-        avg_dens = min(sapply(trmts, function(x) \n-            mean(apply(dat_sp[match(dat_plot[which(dat_plot[ , 2] == x), 1], dat_sp[ , 1]),\n-                              2:ncol(dat_sp)], 1, sum))))\n+        # If unspecified, uses min density among groups.\n+        groups = unique(dat_plot$group)\n+        avg_dens = min(sapply(groups, function(x) \n+                              mean(apply(dat_sp[dat_plot$group == x, ], 1, sum))))\n     }\n     return(avg_dens)\n }\n \n-rarefy_sample_explicit = function(dat_sp, dat_plot, treatment) {\n-    plot_trmt = dat_plot[dat_plot[ , 2] == treatment, ]\n-    sp_trmt = dat_sp[match(plot_trmt[ , 1], dat_sp[ , 1]), ]\n-    explic_loop = matrix(0, nrow(sp_trmt), nrow(sp_trmt))\n-    pair_dist = as.matrix(dist(plot_trmt[ , 3:4]))\n-    for (i in 1:nrow(plot_trmt)) {\n-        focal_site = plot_trmt[i, 1]\n+rarefaction = function(x, method, effort=NULL) {\n+    # analytical formulations from Cayuela et al. 2015. Ecological and biogeographic null hypotheses for\n+    # comparing rarefaction curves. Ecological Monographs 85:437–454.\n+    # Appendix A: http://esapubs.org/archive/mono/M085/017/appendix-A.php\n+    # possible inputs: sad or sp x site\n+    # community matrix examine input properties to determine if input is\n+    # compatible with method\n+    if (!any(method %in% c('indiv', 'samp')))\n+        stop('method must be \"indiv\" or \"samp\" for individual or sample based rarefaction, respectively')\n+    if (method == 'samp') {\n+        if (is.null(dim(x)))\n+            stop('For sample based rarefaction \"x\" must be a site x species matrix as the input')\n+        else {\n+            x = (x > 0) * 1             \n+            n = nrow(x) # empty sites are counted as samples \n+            x = colSums(x)\n+        }\n+    }\n+    if (method == 'indiv') {\n+        if (!is.null(dim(x)))\n+            x = colSums(x)\n+        n = sum(x)\n+    }\n+    x = x[x > 0] # drop species with no observations\n+    S = length(x)\n+    if (is.null(effort))\n+        effort = 1:n\n+    if (any(effort > n))\n+        warning('\"effort\" larger than total number of samples')\n+    ldiv = lchoose(n, effort)\n+    p = matrix(0, length(effort), S)\n+    for (i in seq_along(effort)) {\n+        p[i, ] = ifelse(n - x < effort[i], 0, \n+                        exp(lchoose(n - x, effort[i]) - ldiv[i]))\n+    }\n+    out = rowSums(1 - p)\n+    names(out) = effort\n+    class(out) = 'rarefaction'\n+    return(out)\n+}\n+\n+rarefy_sample_explicit = function(dat_sp, dat_plot, group, effort) {\n+    plot_grp = dat_plot[dat_plot$group == group, ] \n+    sp_grp = dat_sp[dat_plot$group == group, ]\n+    explicit_loop = matrix(0, nrow(sp_grp), nrow(sp_grp))\n+    pair_dist = as.matrix(dist(plot_grp[ , c('x', 'y')]))\n+    for (i in 1:nrow(plot_grp)) {\n+        focal_site = plot_grp$plot[i]\n         dist_to_site = pair_dist[i, ]\n         # Shuffle plots, so that tied grouping is not biased by original order.\n-        new_order = sample(1:nrow(plot_trmt))  \n-        # new_order = 1:nrow(plot_trmt) # Alternative: no shuffles\n-        plots_new = plot_trmt[new_order, 1]\n+        new_order = sample(1:nrow(plot_grp))  \n+        # new_order = 1:nrow(plot_grp) # Alternative: no shuffles\n+        plots_new = plot_grp$plot[new_order]\n         dist_new = dist_to_site[new_order]\n         plots_new_ordered = plots_new[order(dist_new)]\n         # Move focal site to the front\n         plots_new_ordered = c(focal_site, \n                               plots_new_ordered[plots_new_ordered != focal_site])  \n-        sp_ordered = sp_trmt[match(sp_trmt[ , 1], plots_new_ordered), 2:ncol(sp_trmt)]\n+        sp_ordered = sp_grp[match(row.names(sp_grp), plots_new_ordered), ]\n         # 1 for absence, 0 for presence\n-        sp_bool = as.data.frame(ifelse(sp_ordered[ , 1:ncol(sp_ordered)] == 0, 1, 0)) \n+        sp_bool = as.data.frame((sp_ordered == 0) * 1) \n         rich = cumprod(sp_bool)\n-        explic_loop[ , i] = as.numeric(ncol(dat_sp) - 1 - rowSums(rich))\n+        explicit_loop[ , i] = as.numeric(ncol(dat_sp) - 1 - rowSums(rich))\n     }\n-    explic_S = apply(explic_loop, 1, mean)\n-    return(explic_S)\n+    explicit_S = apply(explicit_loop, 1, mean)\n+    return(explicit_S[effort])\n }\n \n-rarefy_sample_implicit = function(dat_sp, dat_plot, treatment) {\n-    plot_trmt = dat_plot[dat_plot[ , 2] == treatment, ]\n-    sp_trmt = dat_sp[match(plot_trmt[ , 1], dat_sp[ , 1]), ]\n-    sample_S = rarefaction.sample(sp_trmt[ , 2:ncol(sp_trmt)])[ , 2]\n+rarefy_sample_implicit = function(dat_sp, dat_plot, group, effort=NULL) {\n+    sp_grp = dat_sp[dat_plot$group == group, ]\n+    sample_S = rarefaction(sp_grp, 'samp', effort)\n     return(sample_S)\n }\n \n-rarefy_individual = function(dat_sp, dat_plot, treatment) {\n-    # Returns the rarefaction results at each sample size\n-    sp_trmt = dat_sp[match(dat_plot[dat_plot[ , 2] == treatment, 1], dat_sp[ , 1]), ]\n-    trmt_sad = as.numeric(apply(sp_trmt[ , 2:ncol(sp_trmt)], 2, sum))\n-    trmt_sad = trmt_sad[trmt_sad != 0]\n-    ind_S = rarefaction.individual(trmt_sad)[ , 2]\n+rarefy_individual = function(dat_sp, dat_plot, group, effort=NULL) {\n+    sad = colSums(dat_sp[dat_plot$group == group, ])\n+    ind_S = rarefaction(sad, 'indiv', effort)\n     return(ind_S)\n }\n \n-get_deltaSsad = function(dat_sp, dat_plot, treatment1, treatment2) {\n-    rescaled_ind = sapply(c(treatment1, treatment2), function(x) \n-                          rarefy_individual(dat_sp, dat_plot, x))\n-    Nind = min(length(unlist(rescaled_ind[1])), length(unlist(rescaled_ind[2])))\n-    deltaSsad = as.numeric(unlist(rescaled_ind[2])[1:Nind] - \n-                           unlist(rescaled_ind[1])[1:Nind])\n+get_deltaSsad = function(dat_sp, dat_plot, groups, Nind=NULL) {","path":"R/mobr.R","position":145,"original_position":145,"commit_id":"6044ec96e7114ccac460e6ee8e372bd940e37a75","original_commit_id":"6044ec96e7114ccac460e6ee8e372bd940e37a75","user":{"login":"dmcglinn","id":1190381,"avatar_url":"https://avatars.githubusercontent.com/u/1190381?v=3","gravatar_id":"","url":"https://api.github.com/users/dmcglinn","html_url":"https://github.com/dmcglinn","followers_url":"https://api.github.com/users/dmcglinn/followers","following_url":"https://api.github.com/users/dmcglinn/following{/other_user}","gists_url":"https://api.github.com/users/dmcglinn/gists{/gist_id}","starred_url":"https://api.github.com/users/dmcglinn/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dmcglinn/subscriptions","organizations_url":"https://api.github.com/users/dmcglinn/orgs","repos_url":"https://api.github.com/users/dmcglinn/repos","events_url":"https://api.github.com/users/dmcglinn/events{/privacy}","received_events_url":"https://api.github.com/users/dmcglinn/received_events","type":"User","site_admin":false},"body":"Agreed. Initially when I made the switch from `treatment1` and `treatment2` to `groups` I had hope of generalizing our code so that it could be run on any number of groups easily, but this is a good example of where that would break down at least with this set of code. ","created_at":"2016-04-09T02:16:58Z","updated_at":"2016-04-09T02:16:58Z","html_url":"https://github.com/MoBiodiv/mobr/pull/18#discussion_r59108474","pull_request_url":"https://api.github.com/repos/MoBiodiv/mobr/pulls/18","_links":{"self":{"href":"https://api.github.com/repos/MoBiodiv/mobr/pulls/comments/59108474"},"html":{"href":"https://github.com/MoBiodiv/mobr/pull/18#discussion_r59108474"},"pull_request":{"href":"https://api.github.com/repos/MoBiodiv/mobr/pulls/18"}}},"pull_request":{"url":"https://api.github.com/repos/MoBiodiv/mobr/pulls/18","id":63984335,"html_url":"https://github.com/MoBiodiv/mobr/pull/18","diff_url":"https://github.com/MoBiodiv/mobr/pull/18.diff","patch_url":"https://github.com/MoBiodiv/mobr/pull/18.patch","issue_url":"https://api.github.com/repos/MoBiodiv/mobr/issues/18","number":18,"state":"open","locked":false,"title":"Refactor the existing mobr.R functions ","user":{"login":"dmcglinn","id":1190381,"avatar_url":"https://avatars.githubusercontent.com/u/1190381?v=3","gravatar_id":"","url":"https://api.github.com/users/dmcglinn","html_url":"https://github.com/dmcglinn","followers_url":"https://api.github.com/users/dmcglinn/followers","following_url":"https://api.github.com/users/dmcglinn/following{/other_user}","gists_url":"https://api.github.com/users/dmcglinn/gists{/gist_id}","starred_url":"https://api.github.com/users/dmcglinn/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dmcglinn/subscriptions","organizations_url":"https://api.github.com/users/dmcglinn/orgs","repos_url":"https://api.github.com/users/dmcglinn/repos","events_url":"https://api.github.com/users/dmcglinn/events{/privacy}","received_events_url":"https://api.github.com/users/dmcglinn/received_events","type":"User","site_admin":false},"body":"These changes attempt to make the code easier to understand and more efficient (i.e., shorter and faster).  More work can be done to improve this further but this should wait until we're 100% sure these functions will not be significantly changing. For example `plotEffectS` will likely be changing in the near future to accommodate receiving the output from the null models rather than computing it on the fly.  ","created_at":"2016-03-24T03:10:00Z","updated_at":"2016-04-09T02:16:58Z","closed_at":null,"merged_at":null,"merge_commit_sha":"c00559f138ad2edf30a7b6277e94f1fd80e49a42","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/MoBiodiv/mobr/pulls/18/commits","review_comments_url":"https://api.github.com/repos/MoBiodiv/mobr/pulls/18/comments","review_comment_url":"https://api.github.com/repos/MoBiodiv/mobr/pulls/comments{/number}","comments_url":"https://api.github.com/repos/MoBiodiv/mobr/issues/18/comments","statuses_url":"https://api.github.com/repos/MoBiodiv/mobr/statuses/6044ec96e7114ccac460e6ee8e372bd940e37a75","head":{"label":"dmcglinn:retool","ref":"retool","sha":"6044ec96e7114ccac460e6ee8e372bd940e37a75","user":{"login":"dmcglinn","id":1190381,"avatar_url":"https://avatars.githubusercontent.com/u/1190381?v=3","gravatar_id":"","url":"https://api.github.com/users/dmcglinn","html_url":"https://github.com/dmcglinn","followers_url":"https://api.github.com/users/dmcglinn/followers","following_url":"https://api.github.com/users/dmcglinn/following{/other_user}","gists_url":"https://api.github.com/users/dmcglinn/gists{/gist_id}","starred_url":"https://api.github.com/users/dmcglinn/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dmcglinn/subscriptions","organizations_url":"https://api.github.com/users/dmcglinn/orgs","repos_url":"https://api.github.com/users/dmcglinn/repos","events_url":"https://api.github.com/users/dmcglinn/events{/privacy}","received_events_url":"https://api.github.com/users/dmcglinn/received_events","type":"User","site_admin":false},"repo":{"id":36941782,"name":"mobr","full_name":"dmcglinn/mobr","owner":{"login":"dmcglinn","id":1190381,"avatar_url":"https://avatars.githubusercontent.com/u/1190381?v=3","gravatar_id":"","url":"https://api.github.com/users/dmcglinn","html_url":"https://github.com/dmcglinn","followers_url":"https://api.github.com/users/dmcglinn/followers","following_url":"https://api.github.com/users/dmcglinn/following{/other_user}","gists_url":"https://api.github.com/users/dmcglinn/gists{/gist_id}","starred_url":"https://api.github.com/users/dmcglinn/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dmcglinn/subscriptions","organizations_url":"https://api.github.com/users/dmcglinn/orgs","repos_url":"https://api.github.com/users/dmcglinn/repos","events_url":"https://api.github.com/users/dmcglinn/events{/privacy}","received_events_url":"https://api.github.com/users/dmcglinn/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/dmcglinn/mobr","description":"code for constructing and examining diversity curves","fork":true,"url":"https://api.github.com/repos/dmcglinn/mobr","forks_url":"https://api.github.com/repos/dmcglinn/mobr/forks","keys_url":"https://api.github.com/repos/dmcglinn/mobr/keys{/key_id}","collaborators_url":"https://api.github.com/repos/dmcglinn/mobr/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/dmcglinn/mobr/teams","hooks_url":"https://api.github.com/repos/dmcglinn/mobr/hooks","issue_events_url":"https://api.github.com/repos/dmcglinn/mobr/issues/events{/number}","events_url":"https://api.github.com/repos/dmcglinn/mobr/events","assignees_url":"https://api.github.com/repos/dmcglinn/mobr/assignees{/user}","branches_url":"https://api.github.com/repos/dmcglinn/mobr/branches{/branch}","tags_url":"https://api.github.com/repos/dmcglinn/mobr/tags","blobs_url":"https://api.github.com/repos/dmcglinn/mobr/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/dmcglinn/mobr/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/dmcglinn/mobr/git/refs{/sha}","trees_url":"https://api.github.com/repos/dmcglinn/mobr/git/trees{/sha}","statuses_url":"https://api.github.com/repos/dmcglinn/mobr/statuses/{sha}","languages_url":"https://api.github.com/repos/dmcglinn/mobr/languages","stargazers_url":"https://api.github.com/repos/dmcglinn/mobr/stargazers","contributors_url":"https://api.github.com/repos/dmcglinn/mobr/contributors","subscribers_url":"https://api.github.com/repos/dmcglinn/mobr/subscribers","subscription_url":"https://api.github.com/repos/dmcglinn/mobr/subscription","commits_url":"https://api.github.com/repos/dmcglinn/mobr/commits{/sha}","git_commits_url":"https://api.github.com/repos/dmcglinn/mobr/git/commits{/sha}","comments_url":"https://api.github.com/repos/dmcglinn/mobr/comments{/number}","issue_comment_url":"https://api.github.com/repos/dmcglinn/mobr/issues/comments{/number}","contents_url":"https://api.github.com/repos/dmcglinn/mobr/contents/{+path}","compare_url":"https://api.github.com/repos/dmcglinn/mobr/compare/{base}...{head}","merges_url":"https://api.github.com/repos/dmcglinn/mobr/merges","archive_url":"https://api.github.com/repos/dmcglinn/mobr/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/dmcglinn/mobr/downloads","issues_url":"https://api.github.com/repos/dmcglinn/mobr/issues{/number}","pulls_url":"https://api.github.com/repos/dmcglinn/mobr/pulls{/number}","milestones_url":"https://api.github.com/repos/dmcglinn/mobr/milestones{/number}","notifications_url":"https://api.github.com/repos/dmcglinn/mobr/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/dmcglinn/mobr/labels{/name}","releases_url":"https://api.github.com/repos/dmcglinn/mobr/releases{/id}","deployments_url":"https://api.github.com/repos/dmcglinn/mobr/deployments","created_at":"2015-06-05T16:01:55Z","updated_at":"2015-06-05T21:57:22Z","pushed_at":"2016-03-24T03:06:28Z","git_url":"git://github.com/dmcglinn/mobr.git","ssh_url":"git@github.com:dmcglinn/mobr.git","clone_url":"https://github.com/dmcglinn/mobr.git","svn_url":"https://github.com/dmcglinn/mobr","homepage":null,"size":91,"stargazers_count":0,"watchers_count":0,"language":"R","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"MoBiodiv:master","ref":"master","sha":"ae215aa2c76dce1b208ff4dd4185e90446803a93","user":{"login":"MoBiodiv","id":12683972,"avatar_url":"https://avatars.githubusercontent.com/u/12683972?v=3","gravatar_id":"","url":"https://api.github.com/users/MoBiodiv","html_url":"https://github.com/MoBiodiv","followers_url":"https://api.github.com/users/MoBiodiv/followers","following_url":"https://api.github.com/users/MoBiodiv/following{/other_user}","gists_url":"https://api.github.com/users/MoBiodiv/gists{/gist_id}","starred_url":"https://api.github.com/users/MoBiodiv/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MoBiodiv/subscriptions","organizations_url":"https://api.github.com/users/MoBiodiv/orgs","repos_url":"https://api.github.com/users/MoBiodiv/repos","events_url":"https://api.github.com/users/MoBiodiv/events{/privacy}","received_events_url":"https://api.github.com/users/MoBiodiv/received_events","type":"Organization","site_admin":false},"repo":{"id":36759899,"name":"mobr","full_name":"MoBiodiv/mobr","owner":{"login":"MoBiodiv","id":12683972,"avatar_url":"https://avatars.githubusercontent.com/u/12683972?v=3","gravatar_id":"","url":"https://api.github.com/users/MoBiodiv","html_url":"https://github.com/MoBiodiv","followers_url":"https://api.github.com/users/MoBiodiv/followers","following_url":"https://api.github.com/users/MoBiodiv/following{/other_user}","gists_url":"https://api.github.com/users/MoBiodiv/gists{/gist_id}","starred_url":"https://api.github.com/users/MoBiodiv/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MoBiodiv/subscriptions","organizations_url":"https://api.github.com/users/MoBiodiv/orgs","repos_url":"https://api.github.com/users/MoBiodiv/repos","events_url":"https://api.github.com/users/MoBiodiv/events{/privacy}","received_events_url":"https://api.github.com/users/MoBiodiv/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/MoBiodiv/mobr","description":"code for constructing and examining diversity curves","fork":false,"url":"https://api.github.com/repos/MoBiodiv/mobr","forks_url":"https://api.github.com/repos/MoBiodiv/mobr/forks","keys_url":"https://api.github.com/repos/MoBiodiv/mobr/keys{/key_id}","collaborators_url":"https://api.github.com/repos/MoBiodiv/mobr/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/MoBiodiv/mobr/teams","hooks_url":"https://api.github.com/repos/MoBiodiv/mobr/hooks","issue_events_url":"https://api.github.com/repos/MoBiodiv/mobr/issues/events{/number}","events_url":"https://api.github.com/repos/MoBiodiv/mobr/events","assignees_url":"https://api.github.com/repos/MoBiodiv/mobr/assignees{/user}","branches_url":"https://api.github.com/repos/MoBiodiv/mobr/branches{/branch}","tags_url":"https://api.github.com/repos/MoBiodiv/mobr/tags","blobs_url":"https://api.github.com/repos/MoBiodiv/mobr/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/MoBiodiv/mobr/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/MoBiodiv/mobr/git/refs{/sha}","trees_url":"https://api.github.com/repos/MoBiodiv/mobr/git/trees{/sha}","statuses_url":"https://api.github.com/repos/MoBiodiv/mobr/statuses/{sha}","languages_url":"https://api.github.com/repos/MoBiodiv/mobr/languages","stargazers_url":"https://api.github.com/repos/MoBiodiv/mobr/stargazers","contributors_url":"https://api.github.com/repos/MoBiodiv/mobr/contributors","subscribers_url":"https://api.github.com/repos/MoBiodiv/mobr/subscribers","subscription_url":"https://api.github.com/repos/MoBiodiv/mobr/subscription","commits_url":"https://api.github.com/repos/MoBiodiv/mobr/commits{/sha}","git_commits_url":"https://api.github.com/repos/MoBiodiv/mobr/git/commits{/sha}","comments_url":"https://api.github.com/repos/MoBiodiv/mobr/comments{/number}","issue_comment_url":"https://api.github.com/repos/MoBiodiv/mobr/issues/comments{/number}","contents_url":"https://api.github.com/repos/MoBiodiv/mobr/contents/{+path}","compare_url":"https://api.github.com/repos/MoBiodiv/mobr/compare/{base}...{head}","merges_url":"https://api.github.com/repos/MoBiodiv/mobr/merges","archive_url":"https://api.github.com/repos/MoBiodiv/mobr/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/MoBiodiv/mobr/downloads","issues_url":"https://api.github.com/repos/MoBiodiv/mobr/issues{/number}","pulls_url":"https://api.github.com/repos/MoBiodiv/mobr/pulls{/number}","milestones_url":"https://api.github.com/repos/MoBiodiv/mobr/milestones{/number}","notifications_url":"https://api.github.com/repos/MoBiodiv/mobr/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/MoBiodiv/mobr/labels{/name}","releases_url":"https://api.github.com/repos/MoBiodiv/mobr/releases{/id}","deployments_url":"https://api.github.com/repos/MoBiodiv/mobr/deployments","created_at":"2015-06-02T20:28:37Z","updated_at":"2015-06-05T21:56:57Z","pushed_at":"2016-03-24T03:10:01Z","git_url":"git://github.com/MoBiodiv/mobr.git","ssh_url":"git@github.com:MoBiodiv/mobr.git","clone_url":"https://github.com/MoBiodiv/mobr.git","svn_url":"https://github.com/MoBiodiv/mobr","homepage":null,"size":247,"stargazers_count":0,"watchers_count":0,"language":"R","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":2,"mirror_url":null,"open_issues_count":3,"forks":2,"open_issues":3,"watchers":0,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/MoBiodiv/mobr/pulls/18"},"html":{"href":"https://github.com/MoBiodiv/mobr/pull/18"},"issue":{"href":"https://api.github.com/repos/MoBiodiv/mobr/issues/18"},"comments":{"href":"https://api.github.com/repos/MoBiodiv/mobr/issues/18/comments"},"review_comments":{"href":"https://api.github.com/repos/MoBiodiv/mobr/pulls/18/comments"},"review_comment":{"href":"https://api.github.com/repos/MoBiodiv/mobr/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/MoBiodiv/mobr/pulls/18/commits"},"statuses":{"href":"https://api.github.com/repos/MoBiodiv/mobr/statuses/6044ec96e7114ccac460e6ee8e372bd940e37a75"}}}}