{"action":"created","comment":{"url":"https://api.github.com/repos/MDAnalysis/mdanalysis/pulls/comments/79728808","id":79728808,"diff_hunk":"@@ -398,125 +416,100 @@ def __init__(self, traj, reference=None, select='all',\n                         igroup, sel['reference'], sel['mobile'],\n                         len(atoms['reference']), len(atoms['mobile'])))\n \n+        # necessary for throwing error in save, let me know if there is a\n+        # better way\n         self.rmsd = None\n \n-    def run(self, start=None, stop=None, step=None,\n-            mass_weighted=None, ref_frame=None):\n-        \"\"\"Perform RMSD analysis on the trajectory.\n \n-        A number of parameters can be changed from the defaults. The\n-        result is stored as the array :attr:`RMSD.rmsd`.\n+    def _prepare(self):\n+        self._n_atoms = self.mobile_atoms.n_atoms\n \n-        Parameters\n-        ----------\n-        start, stop, step : int (optional)\n-            start and stop frame index with step size\n-        mass_weighted : bool (optional)\n-            overwrite object default to do a mass-weighted RMSD fit\n-        ref_frame : int\n-             frame index to select frame from *reference*\n-        \"\"\"\n-        if mass_weighted is None:\n-            mass_weighted = self.mass_weighted\n-        if ref_frame is None:\n-            ref_frame = self.ref_frame\n-\n-        natoms = self.traj_atoms.n_atoms\n-        trajectory = self.universe.trajectory\n-        traj_atoms = self.traj_atoms\n-\n-        if mass_weighted:\n-            # if performing a mass-weighted alignment/rmsd calculation\n-            weight = self.ref_atoms.masses / self.ref_atoms.masses.mean()\n-            weight = weight.astype(np.float64)\n-        else:\n-            weight = None\n+        self._weights = ((self.ref_atoms.masses / self.ref_atoms.masses.mean())\n+                        if self.mass_weighted else None)\n+\n+        # reference centre of mass system, no longer 1 based indices\n+        current_frame = self.reference.trajectory.ts.frame\n \n-        # reference centre of mass system\n-        current_frame = self.reference.trajectory.ts.frame - 1\n         try:\n             # Move to the ref_frame\n             # (coordinates MUST be stored in case the ref traj is advanced\n             # elsewhere or if ref == mobile universe)\n-            self.reference.trajectory[ref_frame]\n-            ref_com = self.ref_atoms.center_of_mass()\n+            self.reference.trajectory[self.ref_frame]\n+            self._ref_com = self.ref_atoms.center_of_mass()\n             # makes a copy\n-            ref_coordinates = self.ref_atoms.positions - ref_com\n-            if self.groupselections_atoms:\n-                groupselections_ref_coords_64 = [\n-                    self.reference.select_atoms(*s['reference']).positions.astype(np.float64) for s in\n+            self._ref_coordinates = self.ref_atoms.positions - self._ref_com\n+            if self._groupselections_atoms:\n+                self._groupselections_ref_coords_64 = [(self.reference.\n+                    select_atoms(*s['reference']).\n+                    positions.astype(np.float64)) for s in\n                     self.groupselections]\n         finally:\n             # Move back to the original frame\n             self.reference.trajectory[current_frame]\n-        ref_coordinates_64 = ref_coordinates.astype(np.float64)\n \n-        # allocate the array for selection atom coords\n-        traj_coordinates = traj_atoms.positions.copy()\n+        self._ref_coordinates_64 = self._ref_coordinates.astype(np.float64)\n \n-        if self.groupselections_atoms:\n+        if self._groupselections_atoms:\n             # Only carry out a rotation if we want to calculate secondary\n             # RMSDs.\n             # R: rotation matrix that aligns r-r_com, x~-x~com\n             #    (x~: selected coordinates, x: all coordinates)\n             # Final transformed traj coordinates: x' = (x-x~_com)*R + ref_com\n-            rot = np.zeros(9, dtype=np.float64)  # allocate space\n-            R = np.matrix(rot.reshape(3, 3))\n+            self._rot = np.zeros(9, dtype=np.float64)  # allocate space\n+            self._R = np.matrix(self._rot.reshape(3, 3))\n+        else:\n+            self._rot = None\n+\n+        self.rmsd = np.zeros((self.n_frames,\n+                              3 + len(self._groupselections_atoms)))\n+\n+        self._pm.format = (\"RMSD %(rmsd)5.2f A at frame \"\n+                           \"%(step)5d/%(numsteps)d  [%(percentage)5.1f%%]\\r\")\n+\n+    def _single_frame(self):\n+        mobile_com = self.mobile_atoms.center_of_mass().astype(np.float64)\n+        mobile_coordinates = self.mobile_atoms.positions - mobile_com\n+        self.rmsd[self._frame_index, :2] = self._ts.frame, self._trajectory.time\n+\n+        if self._groupselections_atoms:\n+            # 1) superposition structures. No longer need to transpose coordinates\n+            # such that the coordinate array is 3xN instead of Nx3. Also\n+            # qcp requires that the dtype be float64 (I think we swapped\n+            # the position of ref and traj in CalcRMSDRotationalMatrix so\n+            # that R acts **to the left** and can be broadcasted; we're\n+            # saving one transpose. [orbeckst])\n+            self.rmsd[self._frame_index, 2] = qcp.CalcRMSDRotationalMatrix(\n+                self._ref_coordinates_64,\n+                mobile_coordinates.astype(np.float64), self._n_atoms,\n+                self._rot, self._weights)\n+\n+            #logger.info('mobile atom positions {}'.format(self.mobile_atoms.positions[0]))\n+            #logger.info('self.ref_coordinates_64 {}'.format(self._ref_coordinates_64[0]))\n+            self._R[:,:] = self._rot.reshape(3, 3)\n+            # Transform each atom in the trajectory (use inplace ops to\n+            # avoid copying arrays) (Marginally (~3%) faster than\n+            # \"ts.positions[:] = (ts.positions - x_com) * R + ref_com\".)\n+            self.mobile_atoms.positions -= mobile_com\n+\n+            # R acts to the left & is broadcasted N times.\n+            self.mobile_atoms.positions[:,:] = (self.mobile_atoms.positions.astype(np.float64) *\n+                                                 self._R)\n+            self.mobile_atoms.positions += self._ref_com\n+\n+            # 2) calculate secondary RMSDs\n+            for igroup, (refpos, atoms) in enumerate(\n+                    zip(self._groupselections_ref_coords_64,\n+                        self._groupselections_atoms), 3):\n+                self.rmsd[self._frame_index, igroup] = qcp.CalcRMSDRotationalMatrix(\n+                    refpos, atoms['mobile'].positions.astype(np.float64),\n+                    atoms['mobile'].n_atoms, None, self._weights)\n         else:\n-            rot = None\n-\n-        # RMSD timeseries\n-        n_frames = len(np.arange(0, len(trajectory))[start:stop:step])\n-        rmsd = np.zeros((n_frames, 3 + len(self.groupselections_atoms)))\n-\n-        percentage = ProgressMeter(\n-            n_frames, interval=10, format=\"RMSD %(rmsd)5.2f A at frame \"\n-            \"%(step)5d/%(numsteps)d  [%(percentage)5.1f%%]\\r\")\n-\n-        for k, ts in enumerate(trajectory[start:stop:step]):\n-            # shift coordinates for rotation fitting\n-            # selection is updated with the time frame\n-            x_com = traj_atoms.center_of_mass()\n-            traj_coordinates[:] = traj_atoms.positions - x_com\n-\n-            rmsd[k, :2] = ts.frame, trajectory.time\n-\n-            if self.groupselections_atoms:\n-                # 1) superposition structures Need to transpose coordinates\n-                # such that the coordinate array is 3xN instead of Nx3. Also\n-                # qcp requires that the dtype be float64 (I think we swapped\n-                # the position of ref and traj in CalcRMSDRotationalMatrix so\n-                # that R acts **to the left** and can be broadcasted; we're\n-                # saving one transpose. [orbeckst])\n-                rmsd[k, 2] = qcp.CalcRMSDRotationalMatrix(\n-                    ref_coordinates_64,\n-                    traj_coordinates.astype(np.float64), natoms, rot, weight)\n-                R[:, :] = rot.reshape(3, 3)\n-\n-                # Transform each atom in the trajectory (use inplace ops to\n-                # avoid copying arrays) (Marginally (~3%) faster than\n-                # \"ts.positions[:] = (ts.positions - x_com) * R + ref_com\".)\n-                ts.positions -= x_com\n-                # R acts to the left & is broadcasted N times.\n-                ts.positions[:] = ts.positions * R\n-                ts.positions += ref_com\n-\n-                # 2) calculate secondary RMSDs\n-                for igroup, (refpos, atoms) in enumerate(\n-                        zip(groupselections_ref_coords_64,\n-                            self.groupselections_atoms), 3):\n-                    rmsd[k, igroup] = qcp.CalcRMSDRotationalMatrix(\n-                        refpos, atoms['mobile'].positions.astype(np.float64),\n-                        atoms['mobile'].n_atoms, None, weight)\n-            else:\n-                # only calculate RMSD by setting the Rmatrix to None (no need\n-                # to carry out the rotation as we already get the optimum RMSD)\n-                rmsd[k, 2] = qcp.CalcRMSDRotationalMatrix(\n-                    ref_coordinates_64,\n-                    traj_coordinates.astype(np.float64), natoms, None, weight)\n-\n-            percentage.echo(ts.frame, rmsd=rmsd[k, 2])\n-        self.rmsd = rmsd\n+            # only calculate RMSD by setting the Rmatrix to None (no need\n+            # to carry out the rotation as we already get the optimum RMSD)\n+            self.rmsd[self._frame_index, 2] = qcp.CalcRMSDRotationalMatrix(\n+                self._ref_coordinates_64,\n+                mobile_coordinates.astype(np.float64),","path":"package/MDAnalysis/analysis/rms.py","position":369,"original_position":369,"commit_id":"730588c3380b4ea555f9e63503403aa1542d8b9f","original_commit_id":"730588c3380b4ea555f9e63503403aa1542d8b9f","user":{"login":"orbeckst","id":237980,"avatar_url":"https://avatars.githubusercontent.com/u/237980?v=3","gravatar_id":"","url":"https://api.github.com/users/orbeckst","html_url":"https://github.com/orbeckst","followers_url":"https://api.github.com/users/orbeckst/followers","following_url":"https://api.github.com/users/orbeckst/following{/other_user}","gists_url":"https://api.github.com/users/orbeckst/gists{/gist_id}","starred_url":"https://api.github.com/users/orbeckst/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/orbeckst/subscriptions","organizations_url":"https://api.github.com/users/orbeckst/orgs","repos_url":"https://api.github.com/users/orbeckst/repos","events_url":"https://api.github.com/users/orbeckst/events{/privacy}","received_events_url":"https://api.github.com/users/orbeckst/received_events","type":"User","site_admin":false},"body":"Explicit cast could be avoided here, see above.","created_at":"2016-09-20T22:41:47Z","updated_at":"2016-09-20T22:48:45Z","html_url":"https://github.com/MDAnalysis/mdanalysis/pull/934#discussion_r79728808","pull_request_url":"https://api.github.com/repos/MDAnalysis/mdanalysis/pulls/934","_links":{"self":{"href":"https://api.github.com/repos/MDAnalysis/mdanalysis/pulls/comments/79728808"},"html":{"href":"https://github.com/MDAnalysis/mdanalysis/pull/934#discussion_r79728808"},"pull_request":{"href":"https://api.github.com/repos/MDAnalysis/mdanalysis/pulls/934"}}},"pull_request":{"url":"https://api.github.com/repos/MDAnalysis/mdanalysis/pulls/934","id":81229630,"html_url":"https://github.com/MDAnalysis/mdanalysis/pull/934","diff_url":"https://github.com/MDAnalysis/mdanalysis/pull/934.diff","patch_url":"https://github.com/MDAnalysis/mdanalysis/pull/934.patch","issue_url":"https://api.github.com/repos/MDAnalysis/mdanalysis/issues/934","number":934,"state":"open","locked":false,"title":"RMSD Refactor","user":{"login":"jdetle","id":10944582,"avatar_url":"https://avatars.githubusercontent.com/u/10944582?v=3","gravatar_id":"","url":"https://api.github.com/users/jdetle","html_url":"https://github.com/jdetle","followers_url":"https://api.github.com/users/jdetle/followers","following_url":"https://api.github.com/users/jdetle/following{/other_user}","gists_url":"https://api.github.com/users/jdetle/gists{/gist_id}","starred_url":"https://api.github.com/users/jdetle/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jdetle/subscriptions","organizations_url":"https://api.github.com/users/jdetle/orgs","repos_url":"https://api.github.com/users/jdetle/repos","events_url":"https://api.github.com/users/jdetle/events{/privacy}","received_events_url":"https://api.github.com/users/jdetle/received_events","type":"User","site_admin":false},"body":"Fixes #893 \r\n\r\nChanges made in this Pull Request:\r\n - Pure refactor, only design changes\r\n- Split up run method into prepare and single frame\r\n\r\nPR Checklist\r\n------------\r\n - [x] Tests?\r\n - [x] Docs?\r\n - [x] CHANGELOG updated?\r\n - [x] Issue raised/referenced?\r\n","created_at":"2016-08-13T23:30:56Z","updated_at":"2016-09-20T22:48:45Z","closed_at":null,"merged_at":null,"merge_commit_sha":"e31cfb878e08f5af0f7cdce4d9f40236d480a09d","assignee":{"login":"orbeckst","id":237980,"avatar_url":"https://avatars.githubusercontent.com/u/237980?v=3","gravatar_id":"","url":"https://api.github.com/users/orbeckst","html_url":"https://github.com/orbeckst","followers_url":"https://api.github.com/users/orbeckst/followers","following_url":"https://api.github.com/users/orbeckst/following{/other_user}","gists_url":"https://api.github.com/users/orbeckst/gists{/gist_id}","starred_url":"https://api.github.com/users/orbeckst/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/orbeckst/subscriptions","organizations_url":"https://api.github.com/users/orbeckst/orgs","repos_url":"https://api.github.com/users/orbeckst/repos","events_url":"https://api.github.com/users/orbeckst/events{/privacy}","received_events_url":"https://api.github.com/users/orbeckst/received_events","type":"User","site_admin":false},"assignees":[{"login":"orbeckst","id":237980,"avatar_url":"https://avatars.githubusercontent.com/u/237980?v=3","gravatar_id":"","url":"https://api.github.com/users/orbeckst","html_url":"https://github.com/orbeckst","followers_url":"https://api.github.com/users/orbeckst/followers","following_url":"https://api.github.com/users/orbeckst/following{/other_user}","gists_url":"https://api.github.com/users/orbeckst/gists{/gist_id}","starred_url":"https://api.github.com/users/orbeckst/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/orbeckst/subscriptions","organizations_url":"https://api.github.com/users/orbeckst/orgs","repos_url":"https://api.github.com/users/orbeckst/repos","events_url":"https://api.github.com/users/orbeckst/events{/privacy}","received_events_url":"https://api.github.com/users/orbeckst/received_events","type":"User","site_admin":false},{"login":"kain88-de","id":4302678,"avatar_url":"https://avatars.githubusercontent.com/u/4302678?v=3","gravatar_id":"","url":"https://api.github.com/users/kain88-de","html_url":"https://github.com/kain88-de","followers_url":"https://api.github.com/users/kain88-de/followers","following_url":"https://api.github.com/users/kain88-de/following{/other_user}","gists_url":"https://api.github.com/users/kain88-de/gists{/gist_id}","starred_url":"https://api.github.com/users/kain88-de/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kain88-de/subscriptions","organizations_url":"https://api.github.com/users/kain88-de/orgs","repos_url":"https://api.github.com/users/kain88-de/repos","events_url":"https://api.github.com/users/kain88-de/events{/privacy}","received_events_url":"https://api.github.com/users/kain88-de/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/MDAnalysis/mdanalysis/milestones/9","html_url":"https://github.com/MDAnalysis/mdanalysis/milestones/0.16.0","labels_url":"https://api.github.com/repos/MDAnalysis/mdanalysis/milestones/9/labels","id":1716502,"number":9,"title":"0.16.0","description":"","creator":{"login":"richardjgowers","id":9249543,"avatar_url":"https://avatars.githubusercontent.com/u/9249543?v=3","gravatar_id":"","url":"https://api.github.com/users/richardjgowers","html_url":"https://github.com/richardjgowers","followers_url":"https://api.github.com/users/richardjgowers/followers","following_url":"https://api.github.com/users/richardjgowers/following{/other_user}","gists_url":"https://api.github.com/users/richardjgowers/gists{/gist_id}","starred_url":"https://api.github.com/users/richardjgowers/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/richardjgowers/subscriptions","organizations_url":"https://api.github.com/users/richardjgowers/orgs","repos_url":"https://api.github.com/users/richardjgowers/repos","events_url":"https://api.github.com/users/richardjgowers/events{/privacy}","received_events_url":"https://api.github.com/users/richardjgowers/received_events","type":"User","site_admin":false},"open_issues":18,"closed_issues":41,"state":"open","created_at":"2016-04-19T08:42:42Z","updated_at":"2016-09-18T15:16:14Z","due_on":null,"closed_at":null},"commits_url":"https://api.github.com/repos/MDAnalysis/mdanalysis/pulls/934/commits","review_comments_url":"https://api.github.com/repos/MDAnalysis/mdanalysis/pulls/934/comments","review_comment_url":"https://api.github.com/repos/MDAnalysis/mdanalysis/pulls/comments{/number}","comments_url":"https://api.github.com/repos/MDAnalysis/mdanalysis/issues/934/comments","statuses_url":"https://api.github.com/repos/MDAnalysis/mdanalysis/statuses/730588c3380b4ea555f9e63503403aa1542d8b9f","head":{"label":"jdetle:RMSD","ref":"RMSD","sha":"730588c3380b4ea555f9e63503403aa1542d8b9f","user":{"login":"jdetle","id":10944582,"avatar_url":"https://avatars.githubusercontent.com/u/10944582?v=3","gravatar_id":"","url":"https://api.github.com/users/jdetle","html_url":"https://github.com/jdetle","followers_url":"https://api.github.com/users/jdetle/followers","following_url":"https://api.github.com/users/jdetle/following{/other_user}","gists_url":"https://api.github.com/users/jdetle/gists{/gist_id}","starred_url":"https://api.github.com/users/jdetle/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jdetle/subscriptions","organizations_url":"https://api.github.com/users/jdetle/orgs","repos_url":"https://api.github.com/users/jdetle/repos","events_url":"https://api.github.com/users/jdetle/events{/privacy}","received_events_url":"https://api.github.com/users/jdetle/received_events","type":"User","site_admin":false},"repo":{"id":54223025,"name":"mdanalysis","full_name":"jdetle/mdanalysis","owner":{"login":"jdetle","id":10944582,"avatar_url":"https://avatars.githubusercontent.com/u/10944582?v=3","gravatar_id":"","url":"https://api.github.com/users/jdetle","html_url":"https://github.com/jdetle","followers_url":"https://api.github.com/users/jdetle/followers","following_url":"https://api.github.com/users/jdetle/following{/other_user}","gists_url":"https://api.github.com/users/jdetle/gists{/gist_id}","starred_url":"https://api.github.com/users/jdetle/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jdetle/subscriptions","organizations_url":"https://api.github.com/users/jdetle/orgs","repos_url":"https://api.github.com/users/jdetle/repos","events_url":"https://api.github.com/users/jdetle/events{/privacy}","received_events_url":"https://api.github.com/users/jdetle/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/jdetle/mdanalysis","description":"MDAnalysis is a Python library to analyze molecular dynamics trajectories.","fork":true,"url":"https://api.github.com/repos/jdetle/mdanalysis","forks_url":"https://api.github.com/repos/jdetle/mdanalysis/forks","keys_url":"https://api.github.com/repos/jdetle/mdanalysis/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jdetle/mdanalysis/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jdetle/mdanalysis/teams","hooks_url":"https://api.github.com/repos/jdetle/mdanalysis/hooks","issue_events_url":"https://api.github.com/repos/jdetle/mdanalysis/issues/events{/number}","events_url":"https://api.github.com/repos/jdetle/mdanalysis/events","assignees_url":"https://api.github.com/repos/jdetle/mdanalysis/assignees{/user}","branches_url":"https://api.github.com/repos/jdetle/mdanalysis/branches{/branch}","tags_url":"https://api.github.com/repos/jdetle/mdanalysis/tags","blobs_url":"https://api.github.com/repos/jdetle/mdanalysis/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jdetle/mdanalysis/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jdetle/mdanalysis/git/refs{/sha}","trees_url":"https://api.github.com/repos/jdetle/mdanalysis/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jdetle/mdanalysis/statuses/{sha}","languages_url":"https://api.github.com/repos/jdetle/mdanalysis/languages","stargazers_url":"https://api.github.com/repos/jdetle/mdanalysis/stargazers","contributors_url":"https://api.github.com/repos/jdetle/mdanalysis/contributors","subscribers_url":"https://api.github.com/repos/jdetle/mdanalysis/subscribers","subscription_url":"https://api.github.com/repos/jdetle/mdanalysis/subscription","commits_url":"https://api.github.com/repos/jdetle/mdanalysis/commits{/sha}","git_commits_url":"https://api.github.com/repos/jdetle/mdanalysis/git/commits{/sha}","comments_url":"https://api.github.com/repos/jdetle/mdanalysis/comments{/number}","issue_comment_url":"https://api.github.com/repos/jdetle/mdanalysis/issues/comments{/number}","contents_url":"https://api.github.com/repos/jdetle/mdanalysis/contents/{+path}","compare_url":"https://api.github.com/repos/jdetle/mdanalysis/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jdetle/mdanalysis/merges","archive_url":"https://api.github.com/repos/jdetle/mdanalysis/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jdetle/mdanalysis/downloads","issues_url":"https://api.github.com/repos/jdetle/mdanalysis/issues{/number}","pulls_url":"https://api.github.com/repos/jdetle/mdanalysis/pulls{/number}","milestones_url":"https://api.github.com/repos/jdetle/mdanalysis/milestones{/number}","notifications_url":"https://api.github.com/repos/jdetle/mdanalysis/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jdetle/mdanalysis/labels{/name}","releases_url":"https://api.github.com/repos/jdetle/mdanalysis/releases{/id}","deployments_url":"https://api.github.com/repos/jdetle/mdanalysis/deployments","created_at":"2016-03-18T18:25:47Z","updated_at":"2016-03-18T18:25:51Z","pushed_at":"2016-09-20T16:20:03Z","git_url":"git://github.com/jdetle/mdanalysis.git","ssh_url":"git@github.com:jdetle/mdanalysis.git","clone_url":"https://github.com/jdetle/mdanalysis.git","svn_url":"https://github.com/jdetle/mdanalysis","homepage":"http://www.mdanalysis.org","size":258565,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":false,"has_downloads":false,"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":"develop"}},"base":{"label":"MDAnalysis:develop","ref":"develop","sha":"2b5fec94d2573ccba2044d1e40f039f1e56bad56","user":{"login":"MDAnalysis","id":11445951,"avatar_url":"https://avatars.githubusercontent.com/u/11445951?v=3","gravatar_id":"","url":"https://api.github.com/users/MDAnalysis","html_url":"https://github.com/MDAnalysis","followers_url":"https://api.github.com/users/MDAnalysis/followers","following_url":"https://api.github.com/users/MDAnalysis/following{/other_user}","gists_url":"https://api.github.com/users/MDAnalysis/gists{/gist_id}","starred_url":"https://api.github.com/users/MDAnalysis/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MDAnalysis/subscriptions","organizations_url":"https://api.github.com/users/MDAnalysis/orgs","repos_url":"https://api.github.com/users/MDAnalysis/repos","events_url":"https://api.github.com/users/MDAnalysis/events{/privacy}","received_events_url":"https://api.github.com/users/MDAnalysis/received_events","type":"Organization","site_admin":false},"repo":{"id":33389183,"name":"mdanalysis","full_name":"MDAnalysis/mdanalysis","owner":{"login":"MDAnalysis","id":11445951,"avatar_url":"https://avatars.githubusercontent.com/u/11445951?v=3","gravatar_id":"","url":"https://api.github.com/users/MDAnalysis","html_url":"https://github.com/MDAnalysis","followers_url":"https://api.github.com/users/MDAnalysis/followers","following_url":"https://api.github.com/users/MDAnalysis/following{/other_user}","gists_url":"https://api.github.com/users/MDAnalysis/gists{/gist_id}","starred_url":"https://api.github.com/users/MDAnalysis/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MDAnalysis/subscriptions","organizations_url":"https://api.github.com/users/MDAnalysis/orgs","repos_url":"https://api.github.com/users/MDAnalysis/repos","events_url":"https://api.github.com/users/MDAnalysis/events{/privacy}","received_events_url":"https://api.github.com/users/MDAnalysis/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/MDAnalysis/mdanalysis","description":"MDAnalysis is a Python library to analyze molecular dynamics trajectories.","fork":false,"url":"https://api.github.com/repos/MDAnalysis/mdanalysis","forks_url":"https://api.github.com/repos/MDAnalysis/mdanalysis/forks","keys_url":"https://api.github.com/repos/MDAnalysis/mdanalysis/keys{/key_id}","collaborators_url":"https://api.github.com/repos/MDAnalysis/mdanalysis/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/MDAnalysis/mdanalysis/teams","hooks_url":"https://api.github.com/repos/MDAnalysis/mdanalysis/hooks","issue_events_url":"https://api.github.com/repos/MDAnalysis/mdanalysis/issues/events{/number}","events_url":"https://api.github.com/repos/MDAnalysis/mdanalysis/events","assignees_url":"https://api.github.com/repos/MDAnalysis/mdanalysis/assignees{/user}","branches_url":"https://api.github.com/repos/MDAnalysis/mdanalysis/branches{/branch}","tags_url":"https://api.github.com/repos/MDAnalysis/mdanalysis/tags","blobs_url":"https://api.github.com/repos/MDAnalysis/mdanalysis/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/MDAnalysis/mdanalysis/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/MDAnalysis/mdanalysis/git/refs{/sha}","trees_url":"https://api.github.com/repos/MDAnalysis/mdanalysis/git/trees{/sha}","statuses_url":"https://api.github.com/repos/MDAnalysis/mdanalysis/statuses/{sha}","languages_url":"https://api.github.com/repos/MDAnalysis/mdanalysis/languages","stargazers_url":"https://api.github.com/repos/MDAnalysis/mdanalysis/stargazers","contributors_url":"https://api.github.com/repos/MDAnalysis/mdanalysis/contributors","subscribers_url":"https://api.github.com/repos/MDAnalysis/mdanalysis/subscribers","subscription_url":"https://api.github.com/repos/MDAnalysis/mdanalysis/subscription","commits_url":"https://api.github.com/repos/MDAnalysis/mdanalysis/commits{/sha}","git_commits_url":"https://api.github.com/repos/MDAnalysis/mdanalysis/git/commits{/sha}","comments_url":"https://api.github.com/repos/MDAnalysis/mdanalysis/comments{/number}","issue_comment_url":"https://api.github.com/repos/MDAnalysis/mdanalysis/issues/comments{/number}","contents_url":"https://api.github.com/repos/MDAnalysis/mdanalysis/contents/{+path}","compare_url":"https://api.github.com/repos/MDAnalysis/mdanalysis/compare/{base}...{head}","merges_url":"https://api.github.com/repos/MDAnalysis/mdanalysis/merges","archive_url":"https://api.github.com/repos/MDAnalysis/mdanalysis/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/MDAnalysis/mdanalysis/downloads","issues_url":"https://api.github.com/repos/MDAnalysis/mdanalysis/issues{/number}","pulls_url":"https://api.github.com/repos/MDAnalysis/mdanalysis/pulls{/number}","milestones_url":"https://api.github.com/repos/MDAnalysis/mdanalysis/milestones{/number}","notifications_url":"https://api.github.com/repos/MDAnalysis/mdanalysis/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/MDAnalysis/mdanalysis/labels{/name}","releases_url":"https://api.github.com/repos/MDAnalysis/mdanalysis/releases{/id}","deployments_url":"https://api.github.com/repos/MDAnalysis/mdanalysis/deployments","created_at":"2015-04-04T00:39:41Z","updated_at":"2016-09-18T14:25:11Z","pushed_at":"2016-09-20T20:39:52Z","git_url":"git://github.com/MDAnalysis/mdanalysis.git","ssh_url":"git@github.com:MDAnalysis/mdanalysis.git","clone_url":"https://github.com/MDAnalysis/mdanalysis.git","svn_url":"https://github.com/MDAnalysis/mdanalysis","homepage":"http://www.mdanalysis.org","size":321813,"stargazers_count":82,"watchers_count":82,"language":"Python","has_issues":true,"has_downloads":false,"has_wiki":true,"has_pages":true,"forks_count":60,"mirror_url":null,"open_issues_count":139,"forks":60,"open_issues":139,"watchers":82,"default_branch":"develop"}},"_links":{"self":{"href":"https://api.github.com/repos/MDAnalysis/mdanalysis/pulls/934"},"html":{"href":"https://github.com/MDAnalysis/mdanalysis/pull/934"},"issue":{"href":"https://api.github.com/repos/MDAnalysis/mdanalysis/issues/934"},"comments":{"href":"https://api.github.com/repos/MDAnalysis/mdanalysis/issues/934/comments"},"review_comments":{"href":"https://api.github.com/repos/MDAnalysis/mdanalysis/pulls/934/comments"},"review_comment":{"href":"https://api.github.com/repos/MDAnalysis/mdanalysis/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/MDAnalysis/mdanalysis/pulls/934/commits"},"statuses":{"href":"https://api.github.com/repos/MDAnalysis/mdanalysis/statuses/730588c3380b4ea555f9e63503403aa1542d8b9f"}}}}
{"actor":{"display_login":"orbeckst"}}