{"action":"created","comment":{"url":"https://api.github.com/repos/spacetelescope/cubeviz/pulls/comments/179797282","pull_request_review_id":110112027,"id":179797282,"diff_hunk":"@@ -311,187 +228,321 @@ def hide_start_end(self, dohide):\n         :return:\n         \"\"\"\n         if dohide:\n-            self.start_label.hide()\n-            self.start_text.hide()\n-            self.end_label.hide()\n-            self.end_text.hide()\n+            self.ui.start_label.setEnabled(False)\n+            self.ui.start_example_label.setEnabled(False)\n+            self.ui.start_input.setEnabled(False)\n+            self.ui.end_label.setEnabled(False)\n+            self.ui.end_example_label.setEnabled(False)\n+            self.ui.end_input.setEnabled(False)\n+        else:\n+            self.ui.start_label.setEnabled(True)\n+            self.ui.start_example_label.setEnabled(True)\n+            self.ui.start_input.setEnabled(True)\n+            self.ui.end_label.setEnabled(True)\n+            self.ui.end_example_label.setEnabled(True)\n+            self.ui.end_input.setEnabled(True)\n+\n+    def _calculate_callback_wavelength_checks(self, start_wavelength, end_wavelength):\n+\n+        log.debug('_calculate_callback_wavelength_checks with start {} and end {}'.format(\n+            start_wavelength, end_wavelength))\n+\n+        if len(start_wavelength) == 0:\n+            self.ui.end_label.setStyleSheet(\"color: rgba(0, 0, 255, 128)\")\n+            self.ui.error_label.setText('No start wavelength, assuming last spectral wavelength.')\n+            start_wavelength = self.wavelengths[0]\n+\n+        if len(end_wavelength) == 0:\n+            self.ui.end_label.setStyleSheet(\"color: rgba(0, 0, 255, 128)\")\n+            self.ui.error_label.setText('No end wavelength, assuming last spectral wavelength.')\n+            end_wavelength = self.wavelengths[-1]\n+\n+        try:\n+            start_wavelength = float(start_wavelength)\n+        except:\n+            self.ui.start_label.setStyleSheet(\"color: rgba(255, 0, 0, 128)\")\n+            self.ui.error_label.setText('Start wavelength is not a floating point number.')\n+            self.ui.error_label.setVisible(True)\n+\n+            return None, None\n+\n+        try:\n+            end_wavelength = float(end_wavelength)\n+        except:\n+            self.ui.start_label.setStyleSheet(\"color: rgba(255, 0, 0, 128)\")\n+            self.ui.error_label.setText('End wavelength is not a floating point number.')\n+            self.ui.error_label.setVisible(True)\n+\n+            return None, None\n+\n+        if start_wavelength < self.wavelengths[0]:\n+            self.ui.start_label.setStyleSheet(\"color: rgba(0, 0, 255, 128)\")\n+            self.ui.error_label.setText('Start wavelength is out of range, setting to end point.')\n+            self.ui.error_label.setVisible(True)\n+\n+            start_wavelength = self.wavelengths[0]\n+            \n+        if start_wavelength > self.wavelengths[-1]:\n+            self.ui.start_label.setStyleSheet(\"color: rgba(255, 0, 0, 128)\")\n+            self.ui.error_label.setText('Start wavelength is out of range.')\n+            self.ui.error_label.setVisible(True)\n+\n+            start_wavelength = None\n+            \n+\n+        if end_wavelength > self.wavelengths[-1]:\n+            self.ui.end_label.setStyleSheet(\"color: rgba(0, 0, 255, 128)\")\n+            self.ui.error_label.setText('End wavelength is out of range, setting to end point.')\n+            self.ui.error_label.setVisible(True)\n+\n+            end_wavelength = self.wavelengths[-1]\n+           \n+        if end_wavelength < self.wavelengths[0]:\n+            self.ui.end_label.setStyleSheet(\"color: rgba(255, 0, 0, 128)\")\n+            self.ui.error_label.setText('End wavelength is out of range.')\n+            self.ui.error_label.setVisible(True)\n+\n+            end_wavelength = None\n+\n+        if end_wavelength < start_wavelength:\n+            self.ui.end_label.setStyleSheet(\"color: rgba(255, 0, 0, 128)\")\n+            self.ui.error_label.setText('Start wavelength must be less than the end wavelength.')\n+            self.ui.error_label.setVisible(True)\n+            return None, None\n+\n+        start_index = np.argsort(abs(self.wavelengths - start_wavelength))[0]\n+        end_index = np.argsort(abs(self.wavelengths - end_wavelength))[0]\n+\n+        log.debug('  returning with start_index {} and end_index {}'.format(\n+            start_index, end_index))\n+\n+        return start_index, end_index\n+\n+    def _calculate_callback_index_checks(self, start_index, end_index):\n+\n+        log.debug('_calculate_callback_index_checks with start {} and end {}'.format(\n+            start_index, end_index))\n+\n+        if len(start_index) == 0:\n+            self.ui.end_label.setStyleSheet(\"color: rgba(0, 0, 255, 128)\")\n+            self.ui.error_label.setText('No start index, assuming first spectral wavelength.')\n+            start_index = 0\n+\n+        if len(end_index) == 0:\n+            self.ui.end_label.setStyleSheet(\"color: rgba(0, 0, 255, 128)\")\n+            self.ui.error_label.setText('No end index, assuming last spectral wavelength.')\n+            end_index = len(self.wavelengths) - 1\n+\n+        try:\n+            start_index = int(start_index)\n+        except:\n+            self.ui.start_label.setStyleSheet(\"color: rgba(255, 0, 0, 128)\")\n+            self.ui.error_label.setText('Start index is not an integer.')\n+            self.ui.error_label.setVisible(True)\n+\n+            start_index = None\n+\n+        try:\n+            end_index = int(end_index)\n+        except:\n+            self.ui.start_label.setStyleSheet(\"color: rgba(255, 0, 0, 128)\")\n+            self.ui.error_label.setText('End index is not an integer.')\n+            self.ui.error_label.setVisible(True)\n+\n+            end_index = None\n+\n+        if start_index < 0:\n+            self.ui.start_label.setStyleSheet(\"color: rgba(0, 0, 255, 128)\")\n+            self.ui.error_label.setText('Start index is out of range, setting to end point.')\n+            self.ui.error_label.setVisible(True)\n+\n+            start_index = 0\n+            \n+        if start_index > len(self.wavelengths):\n+            self.ui.start_label.setStyleSheet(\"color: rgba(255, 0, 0, 128)\")\n+            self.ui.error_label.setText('Start index is out of range.')\n+            self.ui.error_label.setVisible(True)\n+\n+            start_index = None\n+            \n+\n+        if end_index > len(self.wavelengths):\n+            self.ui.end_label.setStyleSheet(\"color: rgba(0, 0, 255, 128)\")\n+            self.ui.error_label.setText('End index is out of range, setting to end point.')\n+            self.ui.error_label.setVisible(True)\n+\n+            end_index = len(self.wavelengths)-1\n+           \n+        if end_index < 0:\n+            self.ui.end_label.setStyleSheet(\"color: rgba(255, 0, 0, 128)\")\n+            self.ui.error_label.setText('End index is out of range.')\n+            self.ui.error_label.setVisible(True)\n+\n+            end_index = None\n+\n+        if end_index < start_index:\n+            self.ui.end_label.setStyleSheet(\"color: rgba(255, 0, 0, 128)\")\n+            self.ui.error_label.setText('Start index must be less than the end index.')\n+            self.ui.error_label.setVisible(True)\n+            return None, None\n+\n+        log.debug('  returning with start_index {} and end_index {}'.format(\n+            start_index, end_index))\n+\n+        return start_index, end_index\n+\n+    def _calculate_callback_simple_sigma_check(self):\n+        log.debug('_calculate_callback_simgple_sigma_check')\n+\n+        simple_sigma = self.ui.simple_sigma_input.text().strip()\n+        log.debug('    simple_sigma {}'.format(simple_sigma))\n+\n+        try:\n+            simple_sigma = float(simple_sigma)\n+        except:\n+            self.ui.simple_sigma_label.setStyleSheet(\"color: rgba(255, 0, 0, 128)\")\n+            self.ui.error_label.setText('Sigma must be a floating point number.')\n+            self.ui.error_label.setVisible(True)\n+            return None\n+\n+        return simple_sigma\n+\n+    def _calculate_callback_advanced_sigma_check(self):\n+        sigma = self.ui.advanced_sigma_input.text().strip()\n+        sigma_lower = self.ui.advanced_sigma_lower_input.text().strip()\n+        sigma_upper = self.ui.advanced_sigma_upper_input.text().strip()\n+        sigma_iters = self.ui.advanced_sigma_iters_input.text().strip()\n+\n+        if len(sigma) > 0:\n+            try:\n+                sigma = float(sigma)\n+            except:\n+                self.ui.advanced_sigma_label.setStyleSheet(\"color: rgba(255, 0, 0, 128)\")\n+                self.ui.error_label.setText('Sigma must be a floating point number.')\n+                self.ui.error_label.setVisible(True)\n+                return None\n         else:\n-            self.start_label.show()\n-            self.start_text.show()\n-            self.end_label.show()\n-            self.end_text.show()\n+            self.ui.advanced_sigma_label.setStyleSheet(\"color: rgba(255, 0, 0, 128)\")\n+            self.ui.error_label.setText('Sigma must be a floating point number and not empty.')\n+            self.ui.error_label.setVisible(True)\n+            return None, None, None, None\n+\n+        if len(sigma_lower) > 0:\n+            try:\n+                sigma_lower = float(sigma_lower)\n+            except:\n+                self.ui.advanced_sigma_lower_label.setStyleSheet(\"color: rgba(255, 0, 0, 128)\")\n+                self.ui.error_label.setText('Lower sigma must be a floating point number.')\n+                self.ui.error_label.setVisible(True)\n+                return None*4\n+        else:\n+            sigma_lower = None\n+\n+        if len(sigma_upper) > 0:\n+            try:\n+                sigma_upper = float(sigma_upper)\n+            except:\n+                self.ui.advanced_sigma_upper_label.setStyleSheet(\"color: rgba(255, 0, 0, 128)\")\n+                self.ui.error_label.setText('Upper sigma must be a floating point number.')\n+                self.ui.error_label.setVisible(True)\n+                return None*4\n+        else:\n+            sigma_upper = None\n+\n+        if len(sigma_iters) > 0:\n+            try:\n+                sigma_iters = int(sigma_iters)\n+            except:\n+                self.ui.advanced_sigma_iters_label.setStyleSheet(\"color: rgba(255, 0, 0, 128)\")\n+                self.ui.error_label.setText('Iterations for sigma must be a floating point number.')\n+                self.ui.error_label.setVisible(True)\n+                return None*4\n+        else:\n+            sigma_iters = None\n+\n+        return sigma, sigma_lower, sigma_upper, sigma_iters\n+\n \n     def calculate_callback(self):\n         \"\"\"\n         Callback for when they hit calculate\n         :return:\n         \"\"\"\n \n+        log.debug('In calculate_callback()')\n+\n         # Grab the values of interest\n         data_name = self.data_combobox.currentText()\n-        start_value = self.start_text.text().strip()\n-        end_value = self.end_text.text().strip()\n-\n-        self.error_label_text.setText(' ')\n-        self.error_label_text.setStyleSheet(\"color: rgba(255, 0, 0, 128)\")\n-\n-        # Sanity checks first\n-        if not start_value and not end_value:\n-            self.start_label.setStyleSheet(\"color: rgba(255, 0, 0, 128)\")\n-            self.end_label.setStyleSheet(\"color: rgba(255, 0, 0, 128)\")\n-            self.error_label_text.setText('Must set at least one of start or end value')\n-            return\n-\n-        # If indicies, get them and check to see if the inputs are good.\n-        if 'Indices' in self.region_combobox.currentText():\n-            if len(start_value) == 0:\n-                start_index = 0\n-            else:\n-                try:\n-                    start_index = int(start_value)\n-                except ValueError as e:\n-                    self.start_label.setStyleSheet(\"color: rgba(255, 0, 0, 128)\")\n-                    self.error_label_text.setText('Start value must be an integer')\n-                    return\n-\n-                if start_index < 0:\n-                    start_index = 0\n-\n-            if len(end_value) == 0:\n-                end_index = len(self.wavelengths)-1\n-            else:\n-                try:\n-                    end_index = int(end_value)\n-                except ValueError as e:\n-                    self.end_label.setStyleSheet(\"color: rgba(255, 0, 0, 128)\")\n-                    self.error_label_text.setText('End value must be an integer')\n-                    return\n-\n-                if end_index > len(self.wavelengths) - 1:\n-                    end_index = len(self.wavelengths) - 1\n+        using_wavelengths = not 'Indices' in self.region_combobox.currentText()\n+        start_value = self.ui.start_input.text().strip()\n+        end_value = self.ui.end_input.text().strip()\n+        log.debug('    data_name {}  using_wavelengths {}  start_value {}  end_value {}'.format(\n+            data_name, using_wavelengths, start_value, end_value))\n+\n+        # Clear the style sheet errors\n+        self.ui.error_label.setText(' ')\n+        self.ui.error_label.setStyleSheet(\"color: rgba(255, 0, 0, 128)\")\n+        self.ui.error_label.setVisible(False)\n+\n+        # Do check on wavelength/indices first.\n+        if using_wavelengths:\n+            start_index, end_index = self._calculate_callback_wavelength_checks(start_value, end_value)\n         else:\n-            # Wavelength inputs\n-            if len(start_value) == 0:\n-                start_index = 0\n-            else:\n-                # convert wavelength to float value\n-                try:\n-                    start_value = float(start_value)\n-                except ValueError as e:\n-                    self.start_label.setStyleSheet(\"color: rgba(255, 0, 0, 128)\")\n-                    self.error_label_text.setText('Start value must be a floating point number')\n-                    return\n-\n-                # Look up index\n-                start_index = np.argsort(np.abs(self.wavelengths - start_value))[0]\n-\n-            if len(end_value) == 0:\n-                end_index = len(self.wavelengths)-1\n-\n-            else:\n-                # convert wavelength to float value\n-                try:\n-                    end_value = float(end_value)\n-                except ValueError as e:\n-                    self.end_label.setStyleSheet(\"color: rgba(255, 0, 0, 128)\")\n-                    self.error_label_text.setText('End value must be a floating point number')\n-                    return\n-\n-                # Look up index\n-                end_index = np.argsort(np.abs(self.wavelengths - end_value))[0]\n-\n-        # Check to make sure at least one of start or end is within the range of the wavelengths.\n-        if (start_index < 0 and end_index < 0) or (start_index > len(self.wavelengths) and end_index > len(self.wavelengths)):\n-            self.start_label.setStyleSheet(\"color: rgba(255, 0, 0, 128)\")\n-            self.end_label.setStyleSheet(\"color: rgba(255, 0, 0, 128)\")\n-            self.error_label_text.setText('Can not have both start and end outside of the wavelength range.')\n-            return\n-\n-        if start_index > end_index:\n-            self.start_label.setStyleSheet(\"color: rgba(255, 0, 0, 128)\")\n-            self.end_label.setStyleSheet(\"color: rgba(255, 0, 0, 128)\")\n-            self.error_label_text.setText('Start value must be less than end value')\n+            start_index, end_index = self._calculate_callback_index_checks(start_value, end_value)\n+            \n+        if  start_index is None or end_index is None:\n             return\n \n-\n         # Check to see if the wavelength (indices) are the same.\n         if start_index == end_index:\n-            self.start_label.setStyleSheet(\"color: rgba(255, 0, 0, 128)\")\n-            self.end_label.setStyleSheet(\"color: rgba(255, 0, 0, 128)\")\n-            self.error_label_text.setText('Can not have both start and end wavelengths be the same.')\n+            self.ui.start_label.setStyleSheet(\"color: rgba(255, 0, 0, 128)\")\n+            self.ui.end_label.setStyleSheet(\"color: rgba(255, 0, 0, 128)\")\n+            self.ui.error_label.setText('Can not have both start and end wavelengths be the same.')\n+            self.ui.error_label.setVisible(True)\n             return\n \n         # Set the start and end values in the text boxes -- in case they enter one way out of range then\n         # we'll fix it.\n-        ts = start_index if 'Indices' in self.region_combobox.currentText() else self.wavelengths[start_index]\n-        self.start_text.setText('{}'.format(ts))\n-\n-        te = end_index if 'Indices' in self.region_combobox.currentText() else self.wavelengths[end_index]\n-        self.end_text.setText('{}'.format(te))\n+#        ts = start_index if 'Indices' in self.region_combobox.currentText() else self.wavelengths[start_index]\n+#        self.ui.start_input.setText('{}'.format(ts))\n+#\n+#        te = end_index if 'Indices' in self.region_combobox.currentText() else self.wavelengths[end_index]\n+#        self.ui.end_input.setText('{}'.format(te))","path":"cubeviz/tools/collapse_cube.py","position":745,"original_position":745,"commit_id":"dd17ce6d33e26deb942516fc664ee63be5753585","original_commit_id":"dd17ce6d33e26deb942516fc664ee63be5753585","user":{"login":"drdavella","id":2458487,"avatar_url":"https://avatars0.githubusercontent.com/u/2458487?v=4","gravatar_id":"","url":"https://api.github.com/users/drdavella","html_url":"https://github.com/drdavella","followers_url":"https://api.github.com/users/drdavella/followers","following_url":"https://api.github.com/users/drdavella/following{/other_user}","gists_url":"https://api.github.com/users/drdavella/gists{/gist_id}","starred_url":"https://api.github.com/users/drdavella/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/drdavella/subscriptions","organizations_url":"https://api.github.com/users/drdavella/orgs","repos_url":"https://api.github.com/users/drdavella/repos","events_url":"https://api.github.com/users/drdavella/events{/privacy}","received_events_url":"https://api.github.com/users/drdavella/received_events","type":"User","site_admin":false},"body":"Is there any reason to keep this code around?","created_at":"2018-04-06T15:40:12Z","updated_at":"2018-04-06T15:40:12Z","html_url":"https://github.com/spacetelescope/cubeviz/pull/368#discussion_r179797282","pull_request_url":"https://api.github.com/repos/spacetelescope/cubeviz/pulls/368","author_association":"COLLABORATOR","_links":{"self":{"href":"https://api.github.com/repos/spacetelescope/cubeviz/pulls/comments/179797282"},"html":{"href":"https://github.com/spacetelescope/cubeviz/pull/368#discussion_r179797282"},"pull_request":{"href":"https://api.github.com/repos/spacetelescope/cubeviz/pulls/368"}}},"pull_request":{"url":"https://api.github.com/repos/spacetelescope/cubeviz/pulls/368","id":179962095,"html_url":"https://github.com/spacetelescope/cubeviz/pull/368","diff_url":"https://github.com/spacetelescope/cubeviz/pull/368.diff","patch_url":"https://github.com/spacetelescope/cubeviz/pull/368.patch","issue_url":"https://api.github.com/repos/spacetelescope/cubeviz/issues/368","number":368,"state":"open","locked":false,"title":"Collapse cube UI refactor","user":{"login":"brechmos-stsci","id":18348847,"avatar_url":"https://avatars1.githubusercontent.com/u/18348847?v=4","gravatar_id":"","url":"https://api.github.com/users/brechmos-stsci","html_url":"https://github.com/brechmos-stsci","followers_url":"https://api.github.com/users/brechmos-stsci/followers","following_url":"https://api.github.com/users/brechmos-stsci/following{/other_user}","gists_url":"https://api.github.com/users/brechmos-stsci/gists{/gist_id}","starred_url":"https://api.github.com/users/brechmos-stsci/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/brechmos-stsci/subscriptions","organizations_url":"https://api.github.com/users/brechmos-stsci/orgs","repos_url":"https://api.github.com/users/brechmos-stsci/repos","events_url":"https://api.github.com/users/brechmos-stsci/events{/privacy}","received_events_url":"https://api.github.com/users/brechmos-stsci/received_events","type":"User","site_admin":false},"body":"This is a major refactor of the collapse cube UI.  One can now choose no sigma clipping, simple sigma clipping (one sigma value) or advanced sigma clipping (that provides an interface to `astropy.stats.sigma_clip`).\r\n\r\nIf one provides a region defined in specviz then one can switch to \"Custom (Wavelengths)\" and the wavelength values can then be tweaked.  Also, one can switch to \"Custom (Indices)\" and tweak the indices instead.\r\n\r\nFor the simple sigma clipping this just calls `astropy.stats.sigma_clip(data, sigma=sigma_provided, axis=0)`.  \r\n\r\nFor the advanced sigma clipping all provided values are passed to `astropy.stats.sigma_clip`\r\n\r\nFixes #314  #282 ","created_at":"2018-04-06T14:18:59Z","updated_at":"2018-04-06T15:40:12Z","closed_at":null,"merged_at":null,"merge_commit_sha":"6c778f323d5ad1b301ea0a10460fdf37f1de3c4f","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/spacetelescope/cubeviz/pulls/368/commits","review_comments_url":"https://api.github.com/repos/spacetelescope/cubeviz/pulls/368/comments","review_comment_url":"https://api.github.com/repos/spacetelescope/cubeviz/pulls/comments{/number}","comments_url":"https://api.github.com/repos/spacetelescope/cubeviz/issues/368/comments","statuses_url":"https://api.github.com/repos/spacetelescope/cubeviz/statuses/dd17ce6d33e26deb942516fc664ee63be5753585","head":{"label":"brechmos-stsci:collapse","ref":"collapse","sha":"dd17ce6d33e26deb942516fc664ee63be5753585","user":{"login":"brechmos-stsci","id":18348847,"avatar_url":"https://avatars1.githubusercontent.com/u/18348847?v=4","gravatar_id":"","url":"https://api.github.com/users/brechmos-stsci","html_url":"https://github.com/brechmos-stsci","followers_url":"https://api.github.com/users/brechmos-stsci/followers","following_url":"https://api.github.com/users/brechmos-stsci/following{/other_user}","gists_url":"https://api.github.com/users/brechmos-stsci/gists{/gist_id}","starred_url":"https://api.github.com/users/brechmos-stsci/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/brechmos-stsci/subscriptions","organizations_url":"https://api.github.com/users/brechmos-stsci/orgs","repos_url":"https://api.github.com/users/brechmos-stsci/repos","events_url":"https://api.github.com/users/brechmos-stsci/events{/privacy}","received_events_url":"https://api.github.com/users/brechmos-stsci/received_events","type":"User","site_admin":false},"repo":{"id":108419778,"name":"cubeviz","full_name":"brechmos-stsci/cubeviz","owner":{"login":"brechmos-stsci","id":18348847,"avatar_url":"https://avatars1.githubusercontent.com/u/18348847?v=4","gravatar_id":"","url":"https://api.github.com/users/brechmos-stsci","html_url":"https://github.com/brechmos-stsci","followers_url":"https://api.github.com/users/brechmos-stsci/followers","following_url":"https://api.github.com/users/brechmos-stsci/following{/other_user}","gists_url":"https://api.github.com/users/brechmos-stsci/gists{/gist_id}","starred_url":"https://api.github.com/users/brechmos-stsci/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/brechmos-stsci/subscriptions","organizations_url":"https://api.github.com/users/brechmos-stsci/orgs","repos_url":"https://api.github.com/users/brechmos-stsci/repos","events_url":"https://api.github.com/users/brechmos-stsci/events{/privacy}","received_events_url":"https://api.github.com/users/brechmos-stsci/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/brechmos-stsci/cubeviz","description":"Data analysis package for cubes.","fork":true,"url":"https://api.github.com/repos/brechmos-stsci/cubeviz","forks_url":"https://api.github.com/repos/brechmos-stsci/cubeviz/forks","keys_url":"https://api.github.com/repos/brechmos-stsci/cubeviz/keys{/key_id}","collaborators_url":"https://api.github.com/repos/brechmos-stsci/cubeviz/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/brechmos-stsci/cubeviz/teams","hooks_url":"https://api.github.com/repos/brechmos-stsci/cubeviz/hooks","issue_events_url":"https://api.github.com/repos/brechmos-stsci/cubeviz/issues/events{/number}","events_url":"https://api.github.com/repos/brechmos-stsci/cubeviz/events","assignees_url":"https://api.github.com/repos/brechmos-stsci/cubeviz/assignees{/user}","branches_url":"https://api.github.com/repos/brechmos-stsci/cubeviz/branches{/branch}","tags_url":"https://api.github.com/repos/brechmos-stsci/cubeviz/tags","blobs_url":"https://api.github.com/repos/brechmos-stsci/cubeviz/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/brechmos-stsci/cubeviz/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/brechmos-stsci/cubeviz/git/refs{/sha}","trees_url":"https://api.github.com/repos/brechmos-stsci/cubeviz/git/trees{/sha}","statuses_url":"https://api.github.com/repos/brechmos-stsci/cubeviz/statuses/{sha}","languages_url":"https://api.github.com/repos/brechmos-stsci/cubeviz/languages","stargazers_url":"https://api.github.com/repos/brechmos-stsci/cubeviz/stargazers","contributors_url":"https://api.github.com/repos/brechmos-stsci/cubeviz/contributors","subscribers_url":"https://api.github.com/repos/brechmos-stsci/cubeviz/subscribers","subscription_url":"https://api.github.com/repos/brechmos-stsci/cubeviz/subscription","commits_url":"https://api.github.com/repos/brechmos-stsci/cubeviz/commits{/sha}","git_commits_url":"https://api.github.com/repos/brechmos-stsci/cubeviz/git/commits{/sha}","comments_url":"https://api.github.com/repos/brechmos-stsci/cubeviz/comments{/number}","issue_comment_url":"https://api.github.com/repos/brechmos-stsci/cubeviz/issues/comments{/number}","contents_url":"https://api.github.com/repos/brechmos-stsci/cubeviz/contents/{+path}","compare_url":"https://api.github.com/repos/brechmos-stsci/cubeviz/compare/{base}...{head}","merges_url":"https://api.github.com/repos/brechmos-stsci/cubeviz/merges","archive_url":"https://api.github.com/repos/brechmos-stsci/cubeviz/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/brechmos-stsci/cubeviz/downloads","issues_url":"https://api.github.com/repos/brechmos-stsci/cubeviz/issues{/number}","pulls_url":"https://api.github.com/repos/brechmos-stsci/cubeviz/pulls{/number}","milestones_url":"https://api.github.com/repos/brechmos-stsci/cubeviz/milestones{/number}","notifications_url":"https://api.github.com/repos/brechmos-stsci/cubeviz/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/brechmos-stsci/cubeviz/labels{/name}","releases_url":"https://api.github.com/repos/brechmos-stsci/cubeviz/releases{/id}","deployments_url":"https://api.github.com/repos/brechmos-stsci/cubeviz/deployments","created_at":"2017-10-26T14:05:50Z","updated_at":"2017-10-26T14:05:52Z","pushed_at":"2018-04-06T14:40:03Z","git_url":"git://github.com/brechmos-stsci/cubeviz.git","ssh_url":"git@github.com:brechmos-stsci/cubeviz.git","clone_url":"https://github.com/brechmos-stsci/cubeviz.git","svn_url":"https://github.com/brechmos-stsci/cubeviz","homepage":null,"size":69120,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":null,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"spacetelescope:master","ref":"master","sha":"69324423fa17cb5ef3bb2514c0fdffee3a33bbe6","user":{"login":"spacetelescope","id":2751928,"avatar_url":"https://avatars3.githubusercontent.com/u/2751928?v=4","gravatar_id":"","url":"https://api.github.com/users/spacetelescope","html_url":"https://github.com/spacetelescope","followers_url":"https://api.github.com/users/spacetelescope/followers","following_url":"https://api.github.com/users/spacetelescope/following{/other_user}","gists_url":"https://api.github.com/users/spacetelescope/gists{/gist_id}","starred_url":"https://api.github.com/users/spacetelescope/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/spacetelescope/subscriptions","organizations_url":"https://api.github.com/users/spacetelescope/orgs","repos_url":"https://api.github.com/users/spacetelescope/repos","events_url":"https://api.github.com/users/spacetelescope/events{/privacy}","received_events_url":"https://api.github.com/users/spacetelescope/received_events","type":"Organization","site_admin":false},"repo":{"id":36305330,"name":"cubeviz","full_name":"spacetelescope/cubeviz","owner":{"login":"spacetelescope","id":2751928,"avatar_url":"https://avatars3.githubusercontent.com/u/2751928?v=4","gravatar_id":"","url":"https://api.github.com/users/spacetelescope","html_url":"https://github.com/spacetelescope","followers_url":"https://api.github.com/users/spacetelescope/followers","following_url":"https://api.github.com/users/spacetelescope/following{/other_user}","gists_url":"https://api.github.com/users/spacetelescope/gists{/gist_id}","starred_url":"https://api.github.com/users/spacetelescope/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/spacetelescope/subscriptions","organizations_url":"https://api.github.com/users/spacetelescope/orgs","repos_url":"https://api.github.com/users/spacetelescope/repos","events_url":"https://api.github.com/users/spacetelescope/events{/privacy}","received_events_url":"https://api.github.com/users/spacetelescope/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/spacetelescope/cubeviz","description":"Data analysis package for cubes.","fork":false,"url":"https://api.github.com/repos/spacetelescope/cubeviz","forks_url":"https://api.github.com/repos/spacetelescope/cubeviz/forks","keys_url":"https://api.github.com/repos/spacetelescope/cubeviz/keys{/key_id}","collaborators_url":"https://api.github.com/repos/spacetelescope/cubeviz/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/spacetelescope/cubeviz/teams","hooks_url":"https://api.github.com/repos/spacetelescope/cubeviz/hooks","issue_events_url":"https://api.github.com/repos/spacetelescope/cubeviz/issues/events{/number}","events_url":"https://api.github.com/repos/spacetelescope/cubeviz/events","assignees_url":"https://api.github.com/repos/spacetelescope/cubeviz/assignees{/user}","branches_url":"https://api.github.com/repos/spacetelescope/cubeviz/branches{/branch}","tags_url":"https://api.github.com/repos/spacetelescope/cubeviz/tags","blobs_url":"https://api.github.com/repos/spacetelescope/cubeviz/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/spacetelescope/cubeviz/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/spacetelescope/cubeviz/git/refs{/sha}","trees_url":"https://api.github.com/repos/spacetelescope/cubeviz/git/trees{/sha}","statuses_url":"https://api.github.com/repos/spacetelescope/cubeviz/statuses/{sha}","languages_url":"https://api.github.com/repos/spacetelescope/cubeviz/languages","stargazers_url":"https://api.github.com/repos/spacetelescope/cubeviz/stargazers","contributors_url":"https://api.github.com/repos/spacetelescope/cubeviz/contributors","subscribers_url":"https://api.github.com/repos/spacetelescope/cubeviz/subscribers","subscription_url":"https://api.github.com/repos/spacetelescope/cubeviz/subscription","commits_url":"https://api.github.com/repos/spacetelescope/cubeviz/commits{/sha}","git_commits_url":"https://api.github.com/repos/spacetelescope/cubeviz/git/commits{/sha}","comments_url":"https://api.github.com/repos/spacetelescope/cubeviz/comments{/number}","issue_comment_url":"https://api.github.com/repos/spacetelescope/cubeviz/issues/comments{/number}","contents_url":"https://api.github.com/repos/spacetelescope/cubeviz/contents/{+path}","compare_url":"https://api.github.com/repos/spacetelescope/cubeviz/compare/{base}...{head}","merges_url":"https://api.github.com/repos/spacetelescope/cubeviz/merges","archive_url":"https://api.github.com/repos/spacetelescope/cubeviz/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/spacetelescope/cubeviz/downloads","issues_url":"https://api.github.com/repos/spacetelescope/cubeviz/issues{/number}","pulls_url":"https://api.github.com/repos/spacetelescope/cubeviz/pulls{/number}","milestones_url":"https://api.github.com/repos/spacetelescope/cubeviz/milestones{/number}","notifications_url":"https://api.github.com/repos/spacetelescope/cubeviz/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/spacetelescope/cubeviz/labels{/name}","releases_url":"https://api.github.com/repos/spacetelescope/cubeviz/releases{/id}","deployments_url":"https://api.github.com/repos/spacetelescope/cubeviz/deployments","created_at":"2015-05-26T15:29:57Z","updated_at":"2018-04-05T15:59:56Z","pushed_at":"2018-04-06T15:35:47Z","git_url":"git://github.com/spacetelescope/cubeviz.git","ssh_url":"git@github.com:spacetelescope/cubeviz.git","clone_url":"https://github.com/spacetelescope/cubeviz.git","svn_url":"https://github.com/spacetelescope/cubeviz","homepage":null,"size":69111,"stargazers_count":2,"watchers_count":2,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":17,"mirror_url":null,"archived":false,"open_issues_count":77,"license":null,"forks":17,"open_issues":77,"watchers":2,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/spacetelescope/cubeviz/pulls/368"},"html":{"href":"https://github.com/spacetelescope/cubeviz/pull/368"},"issue":{"href":"https://api.github.com/repos/spacetelescope/cubeviz/issues/368"},"comments":{"href":"https://api.github.com/repos/spacetelescope/cubeviz/issues/368/comments"},"review_comments":{"href":"https://api.github.com/repos/spacetelescope/cubeviz/pulls/368/comments"},"review_comment":{"href":"https://api.github.com/repos/spacetelescope/cubeviz/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/spacetelescope/cubeviz/pulls/368/commits"},"statuses":{"href":"https://api.github.com/repos/spacetelescope/cubeviz/statuses/dd17ce6d33e26deb942516fc664ee63be5753585"}},"author_association":"COLLABORATOR"}}
{"actor":{"display_login":"drdavella"}}