{"action":"created","comment":{"url":"https://api.github.com/repos/ResearchKit/AppCore/pulls/comments/31272391","id":31272391,"diff_hunk":"@@ -575,113 +735,148 @@ - (NSArray *)retrieveResultSummaryFromResults:(NSSet *)results latestOnly:(BOOL)\n     return allResultSummaries;\n }\n \n-- (void)groupDatasetByDay\n+- (void)groupByPeriod:(APHTimelineGroups)period\n {\n-    NSMutableArray *groupedDataset = [NSMutableArray array];\n-    NSArray *days = [self.dataPoints valueForKeyPath:@\"@distinctUnionOfObjects.datasetDateKey\"];\n+    NSString *periodKeyPath = nil;\n+    \n+    switch (period) {\n+        case APHTimelineGroupWeek:\n+            periodKeyPath = kDatasetGroupByWeek;\n+            break;\n+        case APHTimelineGroupMonth:\n+            periodKeyPath = kDatasetGroupByMonth;\n+            break;\n+        case APHTimelineGroupYear:\n+            periodKeyPath = kDatasetGroupByYear;\n+            break;\n+        default:\n+            periodKeyPath = kDatasetGroupByDay;\n+            break;\n+    }\n+    \n+    // Group the dataset based on the provided period.\n+    NSDictionary *groupedDataset = [self groupByKeyPath:periodKeyPath dataset:self.dataPoints];\n     \n-    for (NSString *day in days) {\n-        NSMutableDictionary *entry = [NSMutableDictionary dictionary];\n-        [entry setObject:day forKey:kDatasetDateKey];\n+    // Summarize data for each group.\n+    NSDictionary *summarizedDataset = [self summarizeDataset:groupedDataset period:period];\n+    NSArray *sortedSummaryKeys = [summarizedDataset.allKeys sortedArrayUsingSelector:@selector(compare:)];\n+    \n+    NSMutableArray *sortedSummarizedDataset = [NSMutableArray new];\n+    \n+    for (id key in sortedSummaryKeys) {\n+        [sortedSummarizedDataset addObjectsFromArray:summarizedDataset[key]];\n+    }\n+    \n+    [self.dataPoints removeAllObjects];\n+    [self.dataPoints addObjectsFromArray:sortedSummarizedDataset];\n+}\n+\n+- (NSDictionary *)summarizeDataset:(NSDictionary *)dataset period:(APHTimelineGroups)period\n+{\n+    NSMutableDictionary *summarizedDataset = [NSMutableDictionary new];\n+    NSArray *keys = [dataset allKeys];\n+    \n+    for (id key in keys) {\n+        NSArray *elements = dataset[key];\n+        NSDictionary *rawData = nil;\n         \n-        NSPredicate *predicate = [NSPredicate predicateWithFormat:@\"(%K = %@) and (%K <> %@)\", kDatasetDateKey, day, kDatasetValueKey, @(NSNotFound)];\n-        NSArray *groupItems = [self.dataPoints filteredArrayUsingPredicate:predicate];\n+        if (period == APHTimelineGroupForInsights) {\n+            // We only need the latest for the raw data.\n+            // Since our filtered array is sorted in a desending order\n+            // we can take the first object.\n+            NSSortDescriptor *sortByDate = [[NSSortDescriptor alloc] initWithKey:kDatasetDateKey ascending:NO];\n+            NSArray *latestRawData = [elements sortedArrayUsingDescriptors:@[sortByDate]];\n+            \n+            NSDictionary *latetstElement = [latestRawData firstObject];\n+            rawData = latetstElement[kDatasetRawDataKey];\n+        }\n+        \n+        // Filter data point that fall between start/end dates (inclusive).\n+        NSPredicate *predicate = [NSPredicate predicateWithFormat:@\"(%K <> %@)\", kDatasetValueKey, @(NSNotFound)];\n+        NSArray *pointsBetweenStartAndEndDates = [elements filteredArrayUsingPredicate:predicate];\n         \n         double itemSum = 0;\n         double dayAverage = 0;\n         \n-        for (NSDictionary *item in groupItems) {\n-            NSNumber *value = [item valueForKey:kDatasetValueKey];\n+        for (NSDictionary *dataPoint in pointsBetweenStartAndEndDates) {\n+            NSNumber *value = [dataPoint valueForKey:kDatasetValueKey];\n             \n             if ([value integerValue] != NSNotFound) {\n                 itemSum += [value doubleValue];\n             }\n         }\n         \n-        if (groupItems.count != 0) {\n-            dayAverage = itemSum / groupItems.count;\n+        if (pointsBetweenStartAndEndDates.count != 0) {\n+            dayAverage = itemSum / pointsBetweenStartAndEndDates.count;\n         }\n         \n         if (dayAverage == 0) {\n             dayAverage = NSNotFound;\n         }\n         \n-        // Set the min/max for the data\n         APCRangePoint *rangePoint = [APCRangePoint new];\n         \n         if (dayAverage != NSNotFound) {\n-            NSNumber *dataMinValue = [groupItems valueForKeyPath:@\"@min.datasetValueKey\"];\n-            NSNumber *dataMaxValue = [groupItems valueForKeyPath:@\"@max.datasetValueKey\"];\n+            NSNumber *minValue = [pointsBetweenStartAndEndDates valueForKeyPath:@\"@min.datasetValueKey\"];\n+            NSNumber *maxValue = [pointsBetweenStartAndEndDates valueForKeyPath:@\"@max.datasetValueKey\"];\n             \n-            rangePoint.minimumValue = [dataMinValue floatValue];\n-            rangePoint.maximumValue = [dataMaxValue floatValue];\n+            rangePoint.minimumValue = [minValue floatValue];\n+            rangePoint.maximumValue = [maxValue floatValue];\n         }\n         \n-        [entry setObject:@(dayAverage) forKey:kDatasetValueKey];\n-        [entry setObject:rangePoint forKey:kDatasetRangeValueKey];\n+        NSMutableDictionary *entry = [[self generateDataPointForDate:key withValue:@(dayAverage) noDataValue:YES] mutableCopy];\n+        entry[kDatasetRangeValueKey] = rangePoint;\n         \n-        [groupedDataset addObject:entry];\n+        if (rawData) {\n+            entry[kDatasetRawDataKey] = rawData;\n+        }\n+        \n+        summarizedDataset[key] = @[entry];\n     }\n     \n-    // resort the grouped dataset by date\n-    NSSortDescriptor *sortByDate = [[NSSortDescriptor alloc] initWithKey:kDatasetDateKey\n-                                                               ascending:YES];\n-    [groupedDataset sortUsingDescriptors:@[sortByDate]];\n-    \n-    [self.dataPoints removeAllObjects];\n-    [self.dataPoints addObjectsFromArray:groupedDataset];\n+    return summarizedDataset;\n }\n \n-- (void)groupDatasetbyPeriod:(APHTimelineGroups)period\n+- (NSDictionary *)groupByKeyPath:(NSString *)key dataset:(NSArray *)dataset\n {\n-    NSDateComponents *groupDateComponents = [[NSDateComponents alloc] init];\n+    NSMutableDictionary *groups = [NSMutableDictionary new];\n     \n-    for (NSDate *groupStartDate in self.timeline) {\n-        NSDate *groupEndDate   = nil;\n+    for (id object in dataset) {\n+        id value = [object valueForKeyPath:key];","path":"APCAppCore/APCAppCore/Library/Scoring/APCScoring.m","position":704,"original_position":704,"commit_id":"d2ce4e0e6e4e598a6903faba3e4089ff12e75d91","original_commit_id":"d2ce4e0e6e4e598a6903faba3e4089ff12e75d91","user":{"login":"jwe-apple","id":11575859,"avatar_url":"https://avatars.githubusercontent.com/u/11575859?v=3","gravatar_id":"","url":"https://api.github.com/users/jwe-apple","html_url":"https://github.com/jwe-apple","followers_url":"https://api.github.com/users/jwe-apple/followers","following_url":"https://api.github.com/users/jwe-apple/following{/other_user}","gists_url":"https://api.github.com/users/jwe-apple/gists{/gist_id}","starred_url":"https://api.github.com/users/jwe-apple/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jwe-apple/subscriptions","organizations_url":"https://api.github.com/users/jwe-apple/orgs","repos_url":"https://api.github.com/users/jwe-apple/repos","events_url":"https://api.github.com/users/jwe-apple/events{/privacy}","received_events_url":"https://api.github.com/users/jwe-apple/received_events","type":"User","site_admin":false},"body":"I'm not quite sure I follow why we're using integer values for specific keypaths for this, when we could much more easily use the timestamp on the object (which I hope exists) directly. Was this an attempt at a performance fix?","created_at":"2015-05-28T20:09:16Z","updated_at":"2015-05-28T20:09:16Z","html_url":"https://github.com/ResearchKit/AppCore/pull/71#discussion_r31272391","pull_request_url":"https://api.github.com/repos/ResearchKit/AppCore/pulls/71","_links":{"self":{"href":"https://api.github.com/repos/ResearchKit/AppCore/pulls/comments/31272391"},"html":{"href":"https://github.com/ResearchKit/AppCore/pull/71#discussion_r31272391"},"pull_request":{"href":"https://api.github.com/repos/ResearchKit/AppCore/pulls/71"}}},"pull_request":{"url":"https://api.github.com/repos/ResearchKit/AppCore/pulls/71","id":36355529,"html_url":"https://github.com/ResearchKit/AppCore/pull/71","diff_url":"https://github.com/ResearchKit/AppCore/pull/71.diff","patch_url":"https://github.com/ResearchKit/AppCore/pull/71.patch","issue_url":"https://api.github.com/repos/ResearchKit/AppCore/issues/71","number":71,"state":"open","locked":false,"title":"Implement Correlation Charts","user":{"login":"chrisinsfo","id":3868802,"avatar_url":"https://avatars.githubusercontent.com/u/3868802?v=3","gravatar_id":"","url":"https://api.github.com/users/chrisinsfo","html_url":"https://github.com/chrisinsfo","followers_url":"https://api.github.com/users/chrisinsfo/followers","following_url":"https://api.github.com/users/chrisinsfo/following{/other_user}","gists_url":"https://api.github.com/users/chrisinsfo/gists{/gist_id}","starred_url":"https://api.github.com/users/chrisinsfo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chrisinsfo/subscriptions","organizations_url":"https://api.github.com/users/chrisinsfo/orgs","repos_url":"https://api.github.com/users/chrisinsfo/repos","events_url":"https://api.github.com/users/chrisinsfo/events{/privacy}","received_events_url":"https://api.github.com/users/chrisinsfo/received_events","type":"User","site_admin":false},"body":"Goals:\r\n1. Provide functionality for charts to display two series with appropriate legend/title.\r\n2. Provide functionality to provide multiple series chart data via chart delegate methods.\r\n3. Provide functionality for user to select series A and series B to correlate via APCCorrelationsSelectorViewController.\r\n4. Enable user to select date periods (1 week, 1 month, 3 months, 6 months, 1 year) for charts when in landscape orientation.\r\n5. Provide algorithm to prepare indexed chart data for each series beginning at an equal earliest point in time, where index 100 = earliest point for each series point.\r\n6. Ensure HealthKit data can be successfully correlated with data entered via surveys/activities.\r\n7. Consolidate common chart datasource code where previously duplicated for Line and Discrete charts.\r\n\r\nTests:\r\n1. Correlate 2 Survey data series (for example Memory and Tapping in Parkinsons).\r\n2. Reverse the correlation (for example Tapping and Memory in Parkinsons).\r\n3. Correlate Health Kit data (e.g.: Steps) with Survey Data.\r\n4. Reverse the correlation with HK Data.\r\n5. Inverted series selected in correlationsSelectorViewController should present identical charts.\r\n6. Enter landscape mode using toggle switch, user should be able to select date ranges 5D, 1W, 1M, 3M, 6M, 1Y.\r\n7. Enter portrait mode. Ensure date range returns to default 1 week.\r\n8. When only 1 series is selected in CorrelationsSelectorViewController, default/previously series should remain selected in Dashboard.\r\n\r\n \r\n","created_at":"2015-05-27T22:28:40Z","updated_at":"2015-05-28T20:09:16Z","closed_at":null,"merged_at":null,"merge_commit_sha":"47a0702fb109ab3b75bb0c02c577cd47f6baa5a7","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/ResearchKit/AppCore/pulls/71/commits","review_comments_url":"https://api.github.com/repos/ResearchKit/AppCore/pulls/71/comments","review_comment_url":"https://api.github.com/repos/ResearchKit/AppCore/pulls/comments{/number}","comments_url":"https://api.github.com/repos/ResearchKit/AppCore/issues/71/comments","statuses_url":"https://api.github.com/repos/ResearchKit/AppCore/statuses/d2ce4e0e6e4e598a6903faba3e4089ff12e75d91","head":{"label":"chrisinsfo:CorrelationCharts","ref":"CorrelationCharts","sha":"d2ce4e0e6e4e598a6903faba3e4089ff12e75d91","user":{"login":"chrisinsfo","id":3868802,"avatar_url":"https://avatars.githubusercontent.com/u/3868802?v=3","gravatar_id":"","url":"https://api.github.com/users/chrisinsfo","html_url":"https://github.com/chrisinsfo","followers_url":"https://api.github.com/users/chrisinsfo/followers","following_url":"https://api.github.com/users/chrisinsfo/following{/other_user}","gists_url":"https://api.github.com/users/chrisinsfo/gists{/gist_id}","starred_url":"https://api.github.com/users/chrisinsfo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chrisinsfo/subscriptions","organizations_url":"https://api.github.com/users/chrisinsfo/orgs","repos_url":"https://api.github.com/users/chrisinsfo/repos","events_url":"https://api.github.com/users/chrisinsfo/events{/privacy}","received_events_url":"https://api.github.com/users/chrisinsfo/received_events","type":"User","site_admin":false},"repo":{"id":34405470,"name":"AppCore","full_name":"chrisinsfo/AppCore","owner":{"login":"chrisinsfo","id":3868802,"avatar_url":"https://avatars.githubusercontent.com/u/3868802?v=3","gravatar_id":"","url":"https://api.github.com/users/chrisinsfo","html_url":"https://github.com/chrisinsfo","followers_url":"https://api.github.com/users/chrisinsfo/followers","following_url":"https://api.github.com/users/chrisinsfo/following{/other_user}","gists_url":"https://api.github.com/users/chrisinsfo/gists{/gist_id}","starred_url":"https://api.github.com/users/chrisinsfo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chrisinsfo/subscriptions","organizations_url":"https://api.github.com/users/chrisinsfo/orgs","repos_url":"https://api.github.com/users/chrisinsfo/repos","events_url":"https://api.github.com/users/chrisinsfo/events{/privacy}","received_events_url":"https://api.github.com/users/chrisinsfo/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/chrisinsfo/AppCore","description":"Core code shared by the initial ResearchKit apps.","fork":true,"url":"https://api.github.com/repos/chrisinsfo/AppCore","forks_url":"https://api.github.com/repos/chrisinsfo/AppCore/forks","keys_url":"https://api.github.com/repos/chrisinsfo/AppCore/keys{/key_id}","collaborators_url":"https://api.github.com/repos/chrisinsfo/AppCore/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/chrisinsfo/AppCore/teams","hooks_url":"https://api.github.com/repos/chrisinsfo/AppCore/hooks","issue_events_url":"https://api.github.com/repos/chrisinsfo/AppCore/issues/events{/number}","events_url":"https://api.github.com/repos/chrisinsfo/AppCore/events","assignees_url":"https://api.github.com/repos/chrisinsfo/AppCore/assignees{/user}","branches_url":"https://api.github.com/repos/chrisinsfo/AppCore/branches{/branch}","tags_url":"https://api.github.com/repos/chrisinsfo/AppCore/tags","blobs_url":"https://api.github.com/repos/chrisinsfo/AppCore/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/chrisinsfo/AppCore/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/chrisinsfo/AppCore/git/refs{/sha}","trees_url":"https://api.github.com/repos/chrisinsfo/AppCore/git/trees{/sha}","statuses_url":"https://api.github.com/repos/chrisinsfo/AppCore/statuses/{sha}","languages_url":"https://api.github.com/repos/chrisinsfo/AppCore/languages","stargazers_url":"https://api.github.com/repos/chrisinsfo/AppCore/stargazers","contributors_url":"https://api.github.com/repos/chrisinsfo/AppCore/contributors","subscribers_url":"https://api.github.com/repos/chrisinsfo/AppCore/subscribers","subscription_url":"https://api.github.com/repos/chrisinsfo/AppCore/subscription","commits_url":"https://api.github.com/repos/chrisinsfo/AppCore/commits{/sha}","git_commits_url":"https://api.github.com/repos/chrisinsfo/AppCore/git/commits{/sha}","comments_url":"https://api.github.com/repos/chrisinsfo/AppCore/comments{/number}","issue_comment_url":"https://api.github.com/repos/chrisinsfo/AppCore/issues/comments{/number}","contents_url":"https://api.github.com/repos/chrisinsfo/AppCore/contents/{+path}","compare_url":"https://api.github.com/repos/chrisinsfo/AppCore/compare/{base}...{head}","merges_url":"https://api.github.com/repos/chrisinsfo/AppCore/merges","archive_url":"https://api.github.com/repos/chrisinsfo/AppCore/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/chrisinsfo/AppCore/downloads","issues_url":"https://api.github.com/repos/chrisinsfo/AppCore/issues{/number}","pulls_url":"https://api.github.com/repos/chrisinsfo/AppCore/pulls{/number}","milestones_url":"https://api.github.com/repos/chrisinsfo/AppCore/milestones{/number}","notifications_url":"https://api.github.com/repos/chrisinsfo/AppCore/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/chrisinsfo/AppCore/labels{/name}","releases_url":"https://api.github.com/repos/chrisinsfo/AppCore/releases{/id}","created_at":"2015-04-22T17:34:54Z","updated_at":"2015-04-28T22:41:45Z","pushed_at":"2015-05-28T16:41:00Z","git_url":"git://github.com/chrisinsfo/AppCore.git","ssh_url":"git@github.com:chrisinsfo/AppCore.git","clone_url":"https://github.com/chrisinsfo/AppCore.git","svn_url":"https://github.com/chrisinsfo/AppCore","homepage":"","size":2091,"stargazers_count":0,"watchers_count":0,"language":"Objective-C","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":"ResearchKit:master","ref":"master","sha":"34f3c9628f1dd663429f9f3d0d81e0fdb54359f7","user":{"login":"ResearchKit","id":11183179,"avatar_url":"https://avatars.githubusercontent.com/u/11183179?v=3","gravatar_id":"","url":"https://api.github.com/users/ResearchKit","html_url":"https://github.com/ResearchKit","followers_url":"https://api.github.com/users/ResearchKit/followers","following_url":"https://api.github.com/users/ResearchKit/following{/other_user}","gists_url":"https://api.github.com/users/ResearchKit/gists{/gist_id}","starred_url":"https://api.github.com/users/ResearchKit/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ResearchKit/subscriptions","organizations_url":"https://api.github.com/users/ResearchKit/orgs","repos_url":"https://api.github.com/users/ResearchKit/repos","events_url":"https://api.github.com/users/ResearchKit/events{/privacy}","received_events_url":"https://api.github.com/users/ResearchKit/received_events","type":"Organization","site_admin":false},"repo":{"id":32882828,"name":"AppCore","full_name":"ResearchKit/AppCore","owner":{"login":"ResearchKit","id":11183179,"avatar_url":"https://avatars.githubusercontent.com/u/11183179?v=3","gravatar_id":"","url":"https://api.github.com/users/ResearchKit","html_url":"https://github.com/ResearchKit","followers_url":"https://api.github.com/users/ResearchKit/followers","following_url":"https://api.github.com/users/ResearchKit/following{/other_user}","gists_url":"https://api.github.com/users/ResearchKit/gists{/gist_id}","starred_url":"https://api.github.com/users/ResearchKit/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ResearchKit/subscriptions","organizations_url":"https://api.github.com/users/ResearchKit/orgs","repos_url":"https://api.github.com/users/ResearchKit/repos","events_url":"https://api.github.com/users/ResearchKit/events{/privacy}","received_events_url":"https://api.github.com/users/ResearchKit/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/ResearchKit/AppCore","description":"Core code shared by the initial ResearchKit apps.","fork":false,"url":"https://api.github.com/repos/ResearchKit/AppCore","forks_url":"https://api.github.com/repos/ResearchKit/AppCore/forks","keys_url":"https://api.github.com/repos/ResearchKit/AppCore/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ResearchKit/AppCore/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ResearchKit/AppCore/teams","hooks_url":"https://api.github.com/repos/ResearchKit/AppCore/hooks","issue_events_url":"https://api.github.com/repos/ResearchKit/AppCore/issues/events{/number}","events_url":"https://api.github.com/repos/ResearchKit/AppCore/events","assignees_url":"https://api.github.com/repos/ResearchKit/AppCore/assignees{/user}","branches_url":"https://api.github.com/repos/ResearchKit/AppCore/branches{/branch}","tags_url":"https://api.github.com/repos/ResearchKit/AppCore/tags","blobs_url":"https://api.github.com/repos/ResearchKit/AppCore/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ResearchKit/AppCore/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ResearchKit/AppCore/git/refs{/sha}","trees_url":"https://api.github.com/repos/ResearchKit/AppCore/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ResearchKit/AppCore/statuses/{sha}","languages_url":"https://api.github.com/repos/ResearchKit/AppCore/languages","stargazers_url":"https://api.github.com/repos/ResearchKit/AppCore/stargazers","contributors_url":"https://api.github.com/repos/ResearchKit/AppCore/contributors","subscribers_url":"https://api.github.com/repos/ResearchKit/AppCore/subscribers","subscription_url":"https://api.github.com/repos/ResearchKit/AppCore/subscription","commits_url":"https://api.github.com/repos/ResearchKit/AppCore/commits{/sha}","git_commits_url":"https://api.github.com/repos/ResearchKit/AppCore/git/commits{/sha}","comments_url":"https://api.github.com/repos/ResearchKit/AppCore/comments{/number}","issue_comment_url":"https://api.github.com/repos/ResearchKit/AppCore/issues/comments{/number}","contents_url":"https://api.github.com/repos/ResearchKit/AppCore/contents/{+path}","compare_url":"https://api.github.com/repos/ResearchKit/AppCore/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ResearchKit/AppCore/merges","archive_url":"https://api.github.com/repos/ResearchKit/AppCore/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ResearchKit/AppCore/downloads","issues_url":"https://api.github.com/repos/ResearchKit/AppCore/issues{/number}","pulls_url":"https://api.github.com/repos/ResearchKit/AppCore/pulls{/number}","milestones_url":"https://api.github.com/repos/ResearchKit/AppCore/milestones{/number}","notifications_url":"https://api.github.com/repos/ResearchKit/AppCore/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ResearchKit/AppCore/labels{/name}","releases_url":"https://api.github.com/repos/ResearchKit/AppCore/releases{/id}","created_at":"2015-03-25T18:22:27Z","updated_at":"2015-05-28T17:02:57Z","pushed_at":"2015-05-28T16:41:01Z","git_url":"git://github.com/ResearchKit/AppCore.git","ssh_url":"git@github.com:ResearchKit/AppCore.git","clone_url":"https://github.com/ResearchKit/AppCore.git","svn_url":"https://github.com/ResearchKit/AppCore","homepage":"","size":145574,"stargazers_count":189,"watchers_count":189,"language":"Objective-C","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":49,"mirror_url":null,"open_issues_count":16,"forks":49,"open_issues":16,"watchers":189,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/ResearchKit/AppCore/pulls/71"},"html":{"href":"https://github.com/ResearchKit/AppCore/pull/71"},"issue":{"href":"https://api.github.com/repos/ResearchKit/AppCore/issues/71"},"comments":{"href":"https://api.github.com/repos/ResearchKit/AppCore/issues/71/comments"},"review_comments":{"href":"https://api.github.com/repos/ResearchKit/AppCore/pulls/71/comments"},"review_comment":{"href":"https://api.github.com/repos/ResearchKit/AppCore/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/ResearchKit/AppCore/pulls/71/commits"},"statuses":{"href":"https://api.github.com/repos/ResearchKit/AppCore/statuses/d2ce4e0e6e4e598a6903faba3e4089ff12e75d91"}}}}