{"action":"created","comment":{"url":"https://api.github.com/repos/mit-crpg/openmc/pulls/comments/48109171","id":48109171,"diff_hunk":"@@ -1620,108 +1660,129 @@ def _align_tally_data(self, other):\n \n         \"\"\"\n \n-        self_mean = copy.deepcopy(self.mean)\n-        self_std_dev = copy.deepcopy(self.std_dev)\n-        other_mean = copy.deepcopy(other.mean)\n-        other_std_dev = copy.deepcopy(other.std_dev)\n-\n-        if self.filters != other.filters:\n-\n-            # Determine the number of paired combinations of filter bins\n-            # between the two tallies and repeat arrays along filter axes\n-            diff1 = list(set(self.filters).difference(set(other.filters)))\n-            diff2 = list(set(other.filters).difference(set(self.filters)))\n-\n-            # Determine the factors by which each tally operands' data arrays\n-            # must be tiled or repeated for the tally outer product\n-            other_tile_factor = 1\n-            self_repeat_factor = 1\n-            for filter in diff1:\n-                other_tile_factor *= filter.num_bins\n-            for filter in diff2:\n-                self_repeat_factor *= filter.num_bins\n-\n-            # Tile / repeat the tally data for the tally outer product\n-            self_shape = list(self_mean.shape)\n-            other_shape = list(other_mean.shape)\n-            self_shape[0] *= self_repeat_factor\n-            self_mean = np.repeat(self_mean, self_repeat_factor)\n-            self_std_dev = np.repeat(self_std_dev, self_repeat_factor)\n-\n-            if self_repeat_factor == 1:\n-                other_shape[0] *= other_tile_factor\n-                other_mean = np.repeat(other_mean, other_tile_factor, axis=0)\n-                other_std_dev = np.repeat(other_std_dev, other_tile_factor,\n-                                          axis=0)\n-            else:\n-                other_mean = np.tile(other_mean, (other_tile_factor, 1, 1))\n-                other_std_dev = np.tile(other_std_dev, (other_tile_factor, 1, 1))\n-\n-            # NumPy repeat and tile routines return 1D flattened arrays\n-            # Reshape arrays as 3D with filters, nuclides and scores axes\n-            self_mean.shape = tuple(self_shape)\n-            self_std_dev.shape = tuple(self_shape)\n-            other_mean.shape = tuple(other_shape)\n-            other_std_dev.shape = tuple(other_shape)\n-\n-        if self.nuclides != other.nuclides:\n-\n-            # Determine the number of paired combinations of nuclides\n-            # between the two tallies and repeat arrays along nuclide axes\n-            self_repeat_factor = other.num_nuclides\n-            other_tile_factor = self.num_nuclides\n-\n-            # Tile / repeat the tally data for the tally outer product\n-            self_shape = list(self_mean.shape)\n-            other_shape = list(other_mean.shape)\n-            self_shape[1] *= self_repeat_factor\n-            other_shape[1] *= other_tile_factor\n-            self_mean = np.repeat(self_mean, self_repeat_factor, axis=1)\n-            other_mean = np.tile(other_mean, (1, other_tile_factor, 1))\n-            self_std_dev = np.repeat(self_std_dev, self_repeat_factor, axis=1)\n-            other_std_dev = np.tile(other_std_dev, (1, other_tile_factor, 1))\n-\n-            # NumPy repeat and tile routines return 1D flattened arrays\n-            # Reshape arrays as 3D with filters, nuclides and scores axes\n-            self_mean.shape = tuple(self_shape)\n-            self_std_dev.shape = tuple(self_shape)\n-            other_mean.shape = tuple(other_shape)\n-            other_std_dev.shape = tuple(other_shape)\n-\n-        if self.scores != other.scores:\n-\n-            # Determine the number of paired combinations of score bins\n-            # between the two tallies and repeat arrays along score axes\n-            self_repeat_factor = other.num_score_bins\n-            other_tile_factor = self.num_score_bins\n-\n-            # Tile / repeat the tally data for the tally outer product\n-            self_shape = list(self_mean.shape)\n-            other_shape = list(other_mean.shape)\n-            self_shape[2] *= self_repeat_factor\n-            other_shape[2] *= other_tile_factor\n-            self_mean = np.repeat(self_mean, self_repeat_factor, axis=2)\n-            other_mean = np.tile(other_mean, (1, 1, other_tile_factor))\n-            self_std_dev = np.repeat(self_std_dev, self_repeat_factor, axis=2)\n-            other_std_dev = np.tile(other_std_dev, (1, 1, other_tile_factor))\n-\n-            # NumPy repeat and tile routines return 1D flattened arrays\n-            # Reshape arrays as 3D with filters, nuclides and scores axes\n-            self_mean.shape = tuple(self_shape)\n-            self_std_dev.shape = tuple(self_shape)\n-            other_mean.shape = tuple(other_shape)\n-            other_std_dev.shape = tuple(other_shape)\n+        # Get the set of filters that each tally is missing\n+        other_missing_filters = set(self.filters).difference(set(other.filters))\n+        self_missing_filters = set(other.filters).difference(set(self.filters))\n+\n+        # Add filters present in self but not in other to other\n+        for filter in other_missing_filters:\n+            filter = copy.deepcopy(filter)\n+            other._mean = np.repeat(other.mean, filter.num_bins, axis=0)\n+            other._std_dev = np.repeat(other.std_dev, filter.num_bins, axis=0)\n+            other.add_filter(filter)\n+\n+        # Add filters present in other but not in self to self\n+        for filter in self_missing_filters:\n+            filter = copy.deepcopy(filter)\n+            self._mean = np.repeat(self.mean, filter.num_bins, axis=0)\n+            self._std_dev = np.repeat(self.std_dev, filter.num_bins, axis=0)\n+            self.add_filter(filter)\n+\n+        # Align other filters with self filters\n+        for i, filter in enumerate(self.filters):\n+            other_index = other.filters.index(filter)\n+\n+            # If necessary, swap other filter\n+            if other_index != i:\n+                other._swap_filters(filter, other.filters[i])\n+\n+        # Repeat and tile the data by nuclide in preparation for performing\n+        # the tensor product across nuclides.\n+        if nuclide_product == 'tensor':\n+            self._mean = np.repeat(self.mean, other.num_nuclides, axis=1)\n+            self._std_dev = np.repeat(self.std_dev, other.num_nuclides, axis=1)\n+            other._mean = np.tile(other.mean, (1, self.num_nuclides, 1))\n+            other._std_dev = np.tile(other.std_dev, (1, self.num_nuclides, 1))\n+\n+        # Add nuclides to each tally such that each tally contains the complete\n+        # set of nuclides necessary to perform an entrywise product. New nuclides\n+        # added to a tally will have all their scores set to zero.\n+        else:\n+\n+            # Get the set of nuclides that each tally is missing\n+            other_missing_nuclides = set(self.nuclides).difference(set(other.nuclides))\n+            self_missing_nuclides = set(other.nuclides).difference(set(self.nuclides))\n+\n+            # Add nuclides present in self but not in other to other\n+            for nuclide in other_missing_nuclides:\n+                other._mean = np.insert(other.mean, other.num_nuclides, 0, axis=1)\n+                other._std_dev = np.insert(other.std_dev, other.num_nuclides, 0, axis=1)\n+                other.add_nuclide(nuclide)\n+\n+            # Add nuclides present in other but not in self to self\n+            for nuclide in self_missing_nuclides:\n+                self._mean = np.insert(self.mean, self.num_nuclides, 0, axis=1)\n+                self._std_dev = np.insert(self.std_dev, self.num_nuclides, 0, axis=1)\n+                self.add_nuclide(nuclide)\n+\n+            # Align other nuclides with self nuclides\n+            for i, nuclide in enumerate(self.nuclides):\n+                other_index = other.get_nuclide_index(nuclide)\n+\n+                # If necessary, swap other nuclide\n+                if other_index != i:\n+                    other._swap_nuclides(nuclide, other.nuclides[i])\n+\n+        # Repeat and tile the data by score in preparation for performing\n+        # the tensor product across scores.\n+        if score_product == 'tensor':\n+            self._mean = np.repeat(self.mean, other.num_score_bins, axis=2)","path":"openmc/tallies.py","position":467,"original_position":467,"commit_id":"6ca9e70a7073921f3c86c1313a442a973abbd12a","original_commit_id":"6ca9e70a7073921f3c86c1313a442a973abbd12a","user":{"login":"wbinventor","id":209492,"avatar_url":"https://avatars.githubusercontent.com/u/209492?v=3","gravatar_id":"","url":"https://api.github.com/users/wbinventor","html_url":"https://github.com/wbinventor","followers_url":"https://api.github.com/users/wbinventor/followers","following_url":"https://api.github.com/users/wbinventor/following{/other_user}","gists_url":"https://api.github.com/users/wbinventor/gists{/gist_id}","starred_url":"https://api.github.com/users/wbinventor/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wbinventor/subscriptions","organizations_url":"https://api.github.com/users/wbinventor/orgs","repos_url":"https://api.github.com/users/wbinventor/repos","events_url":"https://api.github.com/users/wbinventor/events{/privacy}","received_events_url":"https://api.github.com/users/wbinventor/received_events","type":"User","site_admin":false},"body":"Ditto, is `num_scores` equivalent to `num_score_bins` such that we can entirely remove one in lieu of the other?","created_at":"2015-12-20T22:23:28Z","updated_at":"2015-12-20T22:23:28Z","html_url":"https://github.com/mit-crpg/openmc/pull/525#discussion_r48109171","pull_request_url":"https://api.github.com/repos/mit-crpg/openmc/pulls/525","_links":{"self":{"href":"https://api.github.com/repos/mit-crpg/openmc/pulls/comments/48109171"},"html":{"href":"https://github.com/mit-crpg/openmc/pull/525#discussion_r48109171"},"pull_request":{"href":"https://api.github.com/repos/mit-crpg/openmc/pulls/525"}}},"pull_request":{"url":"https://api.github.com/repos/mit-crpg/openmc/pulls/525","id":53022618,"html_url":"https://github.com/mit-crpg/openmc/pull/525","diff_url":"https://github.com/mit-crpg/openmc/pull/525.diff","patch_url":"https://github.com/mit-crpg/openmc/pull/525.patch","issue_url":"https://api.github.com/repos/mit-crpg/openmc/issues/525","number":525,"state":"open","locked":false,"title":"Tally arithmetic bug fix and addition of tally arithmetic test","user":{"login":"samuelshaner","id":1244537,"avatar_url":"https://avatars.githubusercontent.com/u/1244537?v=3","gravatar_id":"","url":"https://api.github.com/users/samuelshaner","html_url":"https://github.com/samuelshaner","followers_url":"https://api.github.com/users/samuelshaner/followers","following_url":"https://api.github.com/users/samuelshaner/following{/other_user}","gists_url":"https://api.github.com/users/samuelshaner/gists{/gist_id}","starred_url":"https://api.github.com/users/samuelshaner/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/samuelshaner/subscriptions","organizations_url":"https://api.github.com/users/samuelshaner/orgs","repos_url":"https://api.github.com/users/samuelshaner/repos","events_url":"https://api.github.com/users/samuelshaner/events{/privacy}","received_events_url":"https://api.github.com/users/samuelshaner/received_events","type":"User","site_admin":false},"body":"This PR seeks to address two items related to tally arithmetic:\r\n\r\n**Bug Fix in Tally Arithmetic**\r\nFixed bug in tiling the tally data when the self (left) tally has filters that the other (right) tally does not have. Previously, the other tally would be *repeated* instead of *tiled* when the the self tally contained filters that the other tally did not have.\r\n\r\n**Tally Arithmetic Tests**\r\nAs mentioned in PR #507, it would be nice to have a test for tally arithmetic. A test to ensure tally arithmetic works for all combinators of unique/shared filters, nuclides, and scores has been added. Unique filters/nuclides/scores in the left tally result in a *tiling* of the right tally and unique filters/nuclides/scores in the right tally result in a *repeating* of the left tally, so one test has been made where both left and right tallies require tiling/repeating along the axes defined by filter, nuclide, and score. Shared filter, nuclide, and score elements have been included as well.","created_at":"2015-12-08T18:58:48Z","updated_at":"2015-12-20T22:23:28Z","closed_at":null,"merged_at":null,"merge_commit_sha":"2bf4170fb8a81a7499e72f5095ef2a227059baff","assignee":{"login":"wbinventor","id":209492,"avatar_url":"https://avatars.githubusercontent.com/u/209492?v=3","gravatar_id":"","url":"https://api.github.com/users/wbinventor","html_url":"https://github.com/wbinventor","followers_url":"https://api.github.com/users/wbinventor/followers","following_url":"https://api.github.com/users/wbinventor/following{/other_user}","gists_url":"https://api.github.com/users/wbinventor/gists{/gist_id}","starred_url":"https://api.github.com/users/wbinventor/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wbinventor/subscriptions","organizations_url":"https://api.github.com/users/wbinventor/orgs","repos_url":"https://api.github.com/users/wbinventor/repos","events_url":"https://api.github.com/users/wbinventor/events{/privacy}","received_events_url":"https://api.github.com/users/wbinventor/received_events","type":"User","site_admin":false},"milestone":null,"commits_url":"https://api.github.com/repos/mit-crpg/openmc/pulls/525/commits","review_comments_url":"https://api.github.com/repos/mit-crpg/openmc/pulls/525/comments","review_comment_url":"https://api.github.com/repos/mit-crpg/openmc/pulls/comments{/number}","comments_url":"https://api.github.com/repos/mit-crpg/openmc/issues/525/comments","statuses_url":"https://api.github.com/repos/mit-crpg/openmc/statuses/6ca9e70a7073921f3c86c1313a442a973abbd12a","head":{"label":"samuelshaner:tally-align","ref":"tally-align","sha":"6ca9e70a7073921f3c86c1313a442a973abbd12a","user":{"login":"samuelshaner","id":1244537,"avatar_url":"https://avatars.githubusercontent.com/u/1244537?v=3","gravatar_id":"","url":"https://api.github.com/users/samuelshaner","html_url":"https://github.com/samuelshaner","followers_url":"https://api.github.com/users/samuelshaner/followers","following_url":"https://api.github.com/users/samuelshaner/following{/other_user}","gists_url":"https://api.github.com/users/samuelshaner/gists{/gist_id}","starred_url":"https://api.github.com/users/samuelshaner/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/samuelshaner/subscriptions","organizations_url":"https://api.github.com/users/samuelshaner/orgs","repos_url":"https://api.github.com/users/samuelshaner/repos","events_url":"https://api.github.com/users/samuelshaner/events{/privacy}","received_events_url":"https://api.github.com/users/samuelshaner/received_events","type":"User","site_admin":false},"repo":{"id":30840720,"name":"openmc","full_name":"samuelshaner/openmc","owner":{"login":"samuelshaner","id":1244537,"avatar_url":"https://avatars.githubusercontent.com/u/1244537?v=3","gravatar_id":"","url":"https://api.github.com/users/samuelshaner","html_url":"https://github.com/samuelshaner","followers_url":"https://api.github.com/users/samuelshaner/followers","following_url":"https://api.github.com/users/samuelshaner/following{/other_user}","gists_url":"https://api.github.com/users/samuelshaner/gists{/gist_id}","starred_url":"https://api.github.com/users/samuelshaner/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/samuelshaner/subscriptions","organizations_url":"https://api.github.com/users/samuelshaner/orgs","repos_url":"https://api.github.com/users/samuelshaner/repos","events_url":"https://api.github.com/users/samuelshaner/events{/privacy}","received_events_url":"https://api.github.com/users/samuelshaner/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/samuelshaner/openmc","description":"OpenMC Monte Carlo Code","fork":true,"url":"https://api.github.com/repos/samuelshaner/openmc","forks_url":"https://api.github.com/repos/samuelshaner/openmc/forks","keys_url":"https://api.github.com/repos/samuelshaner/openmc/keys{/key_id}","collaborators_url":"https://api.github.com/repos/samuelshaner/openmc/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/samuelshaner/openmc/teams","hooks_url":"https://api.github.com/repos/samuelshaner/openmc/hooks","issue_events_url":"https://api.github.com/repos/samuelshaner/openmc/issues/events{/number}","events_url":"https://api.github.com/repos/samuelshaner/openmc/events","assignees_url":"https://api.github.com/repos/samuelshaner/openmc/assignees{/user}","branches_url":"https://api.github.com/repos/samuelshaner/openmc/branches{/branch}","tags_url":"https://api.github.com/repos/samuelshaner/openmc/tags","blobs_url":"https://api.github.com/repos/samuelshaner/openmc/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/samuelshaner/openmc/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/samuelshaner/openmc/git/refs{/sha}","trees_url":"https://api.github.com/repos/samuelshaner/openmc/git/trees{/sha}","statuses_url":"https://api.github.com/repos/samuelshaner/openmc/statuses/{sha}","languages_url":"https://api.github.com/repos/samuelshaner/openmc/languages","stargazers_url":"https://api.github.com/repos/samuelshaner/openmc/stargazers","contributors_url":"https://api.github.com/repos/samuelshaner/openmc/contributors","subscribers_url":"https://api.github.com/repos/samuelshaner/openmc/subscribers","subscription_url":"https://api.github.com/repos/samuelshaner/openmc/subscription","commits_url":"https://api.github.com/repos/samuelshaner/openmc/commits{/sha}","git_commits_url":"https://api.github.com/repos/samuelshaner/openmc/git/commits{/sha}","comments_url":"https://api.github.com/repos/samuelshaner/openmc/comments{/number}","issue_comment_url":"https://api.github.com/repos/samuelshaner/openmc/issues/comments{/number}","contents_url":"https://api.github.com/repos/samuelshaner/openmc/contents/{+path}","compare_url":"https://api.github.com/repos/samuelshaner/openmc/compare/{base}...{head}","merges_url":"https://api.github.com/repos/samuelshaner/openmc/merges","archive_url":"https://api.github.com/repos/samuelshaner/openmc/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/samuelshaner/openmc/downloads","issues_url":"https://api.github.com/repos/samuelshaner/openmc/issues{/number}","pulls_url":"https://api.github.com/repos/samuelshaner/openmc/pulls{/number}","milestones_url":"https://api.github.com/repos/samuelshaner/openmc/milestones{/number}","notifications_url":"https://api.github.com/repos/samuelshaner/openmc/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/samuelshaner/openmc/labels{/name}","releases_url":"https://api.github.com/repos/samuelshaner/openmc/releases{/id}","created_at":"2015-02-15T20:23:50Z","updated_at":"2015-02-15T20:41:35Z","pushed_at":"2015-12-19T20:08:23Z","git_url":"git://github.com/samuelshaner/openmc.git","ssh_url":"git@github.com:samuelshaner/openmc.git","clone_url":"https://github.com/samuelshaner/openmc.git","svn_url":"https://github.com/samuelshaner/openmc","homepage":"http://mit-crpg.github.io/openmc/","size":25518,"stargazers_count":0,"watchers_count":0,"language":"FORTRAN","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"develop"}},"base":{"label":"mit-crpg:release-0.7.1","ref":"release-0.7.1","sha":"6c0b755798fc78888f766933ac8b62782a08a8a2","user":{"login":"mit-crpg","id":1247634,"avatar_url":"https://avatars.githubusercontent.com/u/1247634?v=3","gravatar_id":"","url":"https://api.github.com/users/mit-crpg","html_url":"https://github.com/mit-crpg","followers_url":"https://api.github.com/users/mit-crpg/followers","following_url":"https://api.github.com/users/mit-crpg/following{/other_user}","gists_url":"https://api.github.com/users/mit-crpg/gists{/gist_id}","starred_url":"https://api.github.com/users/mit-crpg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mit-crpg/subscriptions","organizations_url":"https://api.github.com/users/mit-crpg/orgs","repos_url":"https://api.github.com/users/mit-crpg/repos","events_url":"https://api.github.com/users/mit-crpg/events{/privacy}","received_events_url":"https://api.github.com/users/mit-crpg/received_events","type":"Organization","site_admin":false},"repo":{"id":2081118,"name":"openmc","full_name":"mit-crpg/openmc","owner":{"login":"mit-crpg","id":1247634,"avatar_url":"https://avatars.githubusercontent.com/u/1247634?v=3","gravatar_id":"","url":"https://api.github.com/users/mit-crpg","html_url":"https://github.com/mit-crpg","followers_url":"https://api.github.com/users/mit-crpg/followers","following_url":"https://api.github.com/users/mit-crpg/following{/other_user}","gists_url":"https://api.github.com/users/mit-crpg/gists{/gist_id}","starred_url":"https://api.github.com/users/mit-crpg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mit-crpg/subscriptions","organizations_url":"https://api.github.com/users/mit-crpg/orgs","repos_url":"https://api.github.com/users/mit-crpg/repos","events_url":"https://api.github.com/users/mit-crpg/events{/privacy}","received_events_url":"https://api.github.com/users/mit-crpg/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/mit-crpg/openmc","description":"OpenMC Monte Carlo Code","fork":false,"url":"https://api.github.com/repos/mit-crpg/openmc","forks_url":"https://api.github.com/repos/mit-crpg/openmc/forks","keys_url":"https://api.github.com/repos/mit-crpg/openmc/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mit-crpg/openmc/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mit-crpg/openmc/teams","hooks_url":"https://api.github.com/repos/mit-crpg/openmc/hooks","issue_events_url":"https://api.github.com/repos/mit-crpg/openmc/issues/events{/number}","events_url":"https://api.github.com/repos/mit-crpg/openmc/events","assignees_url":"https://api.github.com/repos/mit-crpg/openmc/assignees{/user}","branches_url":"https://api.github.com/repos/mit-crpg/openmc/branches{/branch}","tags_url":"https://api.github.com/repos/mit-crpg/openmc/tags","blobs_url":"https://api.github.com/repos/mit-crpg/openmc/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mit-crpg/openmc/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mit-crpg/openmc/git/refs{/sha}","trees_url":"https://api.github.com/repos/mit-crpg/openmc/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mit-crpg/openmc/statuses/{sha}","languages_url":"https://api.github.com/repos/mit-crpg/openmc/languages","stargazers_url":"https://api.github.com/repos/mit-crpg/openmc/stargazers","contributors_url":"https://api.github.com/repos/mit-crpg/openmc/contributors","subscribers_url":"https://api.github.com/repos/mit-crpg/openmc/subscribers","subscription_url":"https://api.github.com/repos/mit-crpg/openmc/subscription","commits_url":"https://api.github.com/repos/mit-crpg/openmc/commits{/sha}","git_commits_url":"https://api.github.com/repos/mit-crpg/openmc/git/commits{/sha}","comments_url":"https://api.github.com/repos/mit-crpg/openmc/comments{/number}","issue_comment_url":"https://api.github.com/repos/mit-crpg/openmc/issues/comments{/number}","contents_url":"https://api.github.com/repos/mit-crpg/openmc/contents/{+path}","compare_url":"https://api.github.com/repos/mit-crpg/openmc/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mit-crpg/openmc/merges","archive_url":"https://api.github.com/repos/mit-crpg/openmc/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mit-crpg/openmc/downloads","issues_url":"https://api.github.com/repos/mit-crpg/openmc/issues{/number}","pulls_url":"https://api.github.com/repos/mit-crpg/openmc/pulls{/number}","milestones_url":"https://api.github.com/repos/mit-crpg/openmc/milestones{/number}","notifications_url":"https://api.github.com/repos/mit-crpg/openmc/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mit-crpg/openmc/labels{/name}","releases_url":"https://api.github.com/repos/mit-crpg/openmc/releases{/id}","created_at":"2011-07-21T00:33:27Z","updated_at":"2015-12-03T16:30:49Z","pushed_at":"2015-12-19T20:08:24Z","git_url":"git://github.com/mit-crpg/openmc.git","ssh_url":"git@github.com:mit-crpg/openmc.git","clone_url":"https://github.com/mit-crpg/openmc.git","svn_url":"https://github.com/mit-crpg/openmc","homepage":"http://mit-crpg.github.io/openmc/","size":38462,"stargazers_count":65,"watchers_count":65,"language":"FORTRAN","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":88,"mirror_url":null,"open_issues_count":44,"forks":88,"open_issues":44,"watchers":65,"default_branch":"develop"}},"_links":{"self":{"href":"https://api.github.com/repos/mit-crpg/openmc/pulls/525"},"html":{"href":"https://github.com/mit-crpg/openmc/pull/525"},"issue":{"href":"https://api.github.com/repos/mit-crpg/openmc/issues/525"},"comments":{"href":"https://api.github.com/repos/mit-crpg/openmc/issues/525/comments"},"review_comments":{"href":"https://api.github.com/repos/mit-crpg/openmc/pulls/525/comments"},"review_comment":{"href":"https://api.github.com/repos/mit-crpg/openmc/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/mit-crpg/openmc/pulls/525/commits"},"statuses":{"href":"https://api.github.com/repos/mit-crpg/openmc/statuses/6ca9e70a7073921f3c86c1313a442a973abbd12a"}}}}