{"action":"created","comment":{"url":"https://api.github.com/repos/trustedanalytics/spark-tk/pulls/comments/78786984","id":78786984,"diff_hunk":"@@ -0,0 +1,294 @@\n+\"\"\"\n+MAx (Moving Average with Exogeneous Variables) Model\n+\"\"\"\n+\n+from sparktk.loggers import log_load; log_load(__name__); del log_load\n+from sparktk.lazyloader import implicit\n+from sparktk.propobj import PropertiesObject\n+\n+def train(frame, ts_column, x_columns, q, x_max_lag, include_original_x=True, include_intercept=True, init_params=None):\n+\n+    if not isinstance(ts_column, basestring):\n+        raise TypeError(\"'ts_column' should be a string (name of the column that has the timeseries value).\")\n+    if not isinstance(x_columns, list) or not all(isinstance(c, str) for c in x_columns):\n+        raise TypeError(\"'x_columns' should be a list of strings (names of the exogenous columns).\")\n+    elif len(x_columns) <= 0:\n+        raise ValueError(\"'x_columns' should not be empty.\")\n+    if not isinstance(q, int):\n+        raise TypeError(\"'q' parameter must be an integer.\")\n+    if not isinstance(x_max_lag, int):\n+        raise TypeError(\"'x_max_lag' should be an integer.\")\n+    if not isinstance(include_original_x, bool):\n+        raise TypeError(\"'include_original_x' parameter must be a boolean\")\n+    if not isinstance(include_intercept, bool):\n+        raise TypeError(\"'include_intercept' parameter must be a boolean\")\n+    if init_params is not None:\n+        if not isinstance(init_params, list):\n+            raise TypeError(\"'init_params' parameter must be a list\")\n+\n+    tc = frame._tc\n+    _scala_obj = _get_scala_obj(tc)\n+    scala_x_columns = tc.jutils.convert.to_scala_vector_string(x_columns)\n+    scala_init_params = tc.jutils.convert.to_scala_option_list_double(init_params)\n+    scala_model = _scala_obj.train(frame._scala, ts_column, scala_x_columns, q, x_max_lag, include_original_x, include_intercept, scala_init_params)\n+\n+    return MaxModel(tc, scala_model)\n+\n+def load(path, tc=implicit):\n+    \"\"\"load MAXModel from given path\"\"\"\n+    if tc is implicit:\n+        implicit.error(\"tc\")\n+    return tc.load(path, MaxModel)\n+\n+def _get_scala_obj(tc):\n+    \"\"\"Gets reference to the MAX model scala object\"\"\"\n+    return tc.sc._jvm.org.trustedanalytics.sparktk.models.timeseries.max.MaxModel\n+\n+\n+class MaxModel(PropertiesObject):\n+    \"\"\"\n+    A trained MAX model.\n+\n+    Example\n+    -------\n+    Data from Lichman, M. (2013). UCI Machine Learning Repository [http://archive.ics.uci.edu/ml].\n+    Irvine, CA: University of California, School of Information and Computer Science.\n+\n+    Consider the following model trained and tested on the sample data set in *frame* 'frame'.\n+    The frame has five columns where \"CO_GT\" is the time series value and \"C6H6_GT\", \"PT08_S2_NMHC\"\n+    and \"T\" are exogenous inputs.\n+\n+    CO_GT - True hourly averaged concentration CO in mg/m^3\n+    C6H6_GT - True hourly averaged Benzene concentration in microg/m^3\n+    PT08_S2_NMHC - Titania hourly averaged sensor response (nominally NMHC targeted)\n+    T - Temperature in C\n+\n+    <hide>\n+        >>> schema = [(\"CO_GT\", float),(\"C6H6_GT\", float),(\"PT08_S2_NMHC\", float),(\"T\", float)]\n+        >>> frame = tc.frame.create([[2.6, 11.9, 1046.0, 13.6],\n+        ...                          [2.0, 9.4, 955.0, 13.3],\n+        ...                          [2.2, 9.0, 939.0, 11.9],\n+        ...                          [2.2, 9.2, 948.0, 11.0],\n+        ...                          [1.6, 6.5, 836.0, 11.2],\n+        ...                          [1.2, 4.7, 750.0, 11.2],\n+        ...                          [1.2, 3.6, 690.0, 11.3],\n+        ...                          [1.0, 3.3, 672.0, 10.7],\n+        ...                          [2.9, 2.3, 609.0, 10.7],\n+        ...                          [2.6, 1.7, 561.0, 10.3],\n+        ...                          [2.0, 1.3, 527.0, 10.1],\n+        ...                          [2.7, 1.1, 512.0, 11.0],\n+        ...                          [2.7, 1.6, 553.0, 10.5]],\n+        ...                          schema=schema, validate_schema=True)\n+        -etc-\n+\n+    </hide>\n+\n+        >>> frame.inspect()\n+        [#]  CO_GT  C6H6_GT  PT08_S2_NMHC  T\n+        =======================================\n+        [0]    2.6     11.9        1046.0  13.6\n+        [1]    2.0      9.4         955.0  13.3\n+        [2]    2.2      9.0         939.0  11.9\n+        [3]    2.2      9.2         948.0  11.0\n+        [4]    1.6      6.5         836.0  11.2\n+        [5]    1.2      4.7         750.0  11.2\n+        [6]    1.2      3.6         690.0  11.3\n+        [7]    1.0      3.3         672.0  10.7\n+        [8]    2.9      2.3         609.0  10.7\n+        [9]    2.6      1.7         561.0  10.3\n+\n+\n+        >>> model = tc.models.timeseries.max.train(frame, \"CO_GT\", [\"C6H6_GT\", \"PT08_S2_NMHC\", \"T\"], 2, 1)\n+        <progress>\n+\n+        >>> model.ma\n+        [0.5777638449118448, -0.06530007715221572]\n+\n+        >>> model.xreg\n+        [-0.021849032465107086, 0.0009772982251014968, 0.028419655845061332, 1.329220909234935, -0.026697271514035982, -0.099174926201381]\n+\n+    In this example, we will call predict using the same frame that was used for training, again specifying the name\n+    of the time series column and the names of the columns that contain exogenous regressors.\n+\n+        >>> predicted_frame = model.predict(frame, \"CO_GT\", [\"C6H6_GT\", \"PT08_S2_NMHC\", \"T\"])\n+        <progress>\n+\n+    The predicted_frame that's return has a new column called *predicted_y*.  This column contains the predicted\n+    time series values.\n+\n+        >>> predicted_frame.column_names\n+        [u'CO_GT', u'C6H6_GT', u'PT08_S2_NMHC', u'T', u'predicted_y']\n+\n+    <hide>\n+        >>> predicted_frame.inspect(columns=[\"CO_GT\",\"predicted_y\"])\n+        [#]  CO_GT  predicted_y\n+        =========================\n+        [0]    2.6  2.61411194003\n+        [1]    2.0  2.41046087551\n+        [2]    2.2  2.39156069744\n+        [3]    2.2  2.36598300718\n+        [4]    1.6  2.37166693834\n+        [5]    1.2  2.37166693834\n+        [6]    1.2  2.37450890393\n+        [7]    1.0  2.35745711042\n+        [8]    2.9  2.35745711042\n+        [9]    2.6  2.34608924808\n+    </hide>\n+\n+    The trained model can be saved to be used later:\n+\n+        >>> model_path = \"sandbox/savedMaxModel\"\n+        >>> model.save(model_path)\n+\n+    The saved model can be loaded through the tk context and then used for forecasting values the same way\n+    that the original model was used.\n+\n+        >>> loaded_model = tc.load(model_path)\n+\n+        >>> predicted_frame = loaded_model.predict(frame, \"CO_GT\", [\"C6H6_GT\", \"PT08_S2_NMHC\", \"T\"])\n+\n+    <hide>\n+        >>> predicted_frame.inspect(columns=[\"CO_GT\",\"predicted_y\"])\n+        [#]  CO_GT  predicted_y\n+        =========================\n+        [0]    2.6  2.61411194003\n+        [1]    2.0  2.41046087551\n+        [2]    2.2  2.39156069744\n+        [3]    2.2  2.36598300718\n+        [4]    1.6  2.37166693834\n+        [5]    1.2  2.37166693834\n+        [6]    1.2  2.37450890393\n+        [7]    1.0  2.35745711042\n+        [8]    2.9  2.35745711042\n+        [9]    2.6  2.34608924808\n+    </hide>\n+\n+    \"\"\"\n+\n+    def __init__(self, tc, scala_model):\n+        self._tc = tc\n+        tc.jutils.validate_is_jvm_instance_of(scala_model, _get_scala_obj(tc))\n+        self._scala = scala_model\n+\n+    @staticmethod\n+    def _from_scala(tc, scala_model):\n+        \"\"\"\n+        Load an MAX model\n+\n+        :param tc: (TkContext) Active TkContext\n+        :param scala_model: (scala MAXModel) Scala model to load.\n+        :return: (MAXModel) MAXModel object","path":"python/sparktk/models/timeseries/max.py","position":180,"original_position":180,"commit_id":"6c6891145cba764e326c5117c05c601f117e6f0b","original_commit_id":"6c6891145cba764e326c5117c05c601f117e6f0b","user":{"login":"dmsuehir","id":13952606,"avatar_url":"https://avatars.githubusercontent.com/u/13952606?v=3","gravatar_id":"","url":"https://api.github.com/users/dmsuehir","html_url":"https://github.com/dmsuehir","followers_url":"https://api.github.com/users/dmsuehir/followers","following_url":"https://api.github.com/users/dmsuehir/following{/other_user}","gists_url":"https://api.github.com/users/dmsuehir/gists{/gist_id}","starred_url":"https://api.github.com/users/dmsuehir/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dmsuehir/subscriptions","organizations_url":"https://api.github.com/users/dmsuehir/orgs","repos_url":"https://api.github.com/users/dmsuehir/repos","events_url":"https://api.github.com/users/dmsuehir/events{/privacy}","received_events_url":"https://api.github.com/users/dmsuehir/received_events","type":"User","site_admin":false},"body":"Same as the line above -- MaxModel, not MAXModel","created_at":"2016-09-14T16:43:16Z","updated_at":"2016-09-14T16:43:16Z","html_url":"https://github.com/trustedanalytics/spark-tk/pull/148#discussion_r78786984","pull_request_url":"https://api.github.com/repos/trustedanalytics/spark-tk/pulls/148","_links":{"self":{"href":"https://api.github.com/repos/trustedanalytics/spark-tk/pulls/comments/78786984"},"html":{"href":"https://github.com/trustedanalytics/spark-tk/pull/148#discussion_r78786984"},"pull_request":{"href":"https://api.github.com/repos/trustedanalytics/spark-tk/pulls/148"}}},"pull_request":{"url":"https://api.github.com/repos/trustedanalytics/spark-tk/pulls/148","id":84951744,"html_url":"https://github.com/trustedanalytics/spark-tk/pull/148","diff_url":"https://github.com/trustedanalytics/spark-tk/pull/148.diff","patch_url":"https://github.com/trustedanalytics/spark-tk/pull/148.patch","issue_url":"https://api.github.com/repos/trustedanalytics/spark-tk/issues/148","number":148,"state":"open","locked":false,"title":"Moving average with explanatory variables","user":{"login":"ekote","id":6086762,"avatar_url":"https://avatars.githubusercontent.com/u/6086762?v=3","gravatar_id":"","url":"https://api.github.com/users/ekote","html_url":"https://github.com/ekote","followers_url":"https://api.github.com/users/ekote/followers","following_url":"https://api.github.com/users/ekote/following{/other_user}","gists_url":"https://api.github.com/users/ekote/gists{/gist_id}","starred_url":"https://api.github.com/users/ekote/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ekote/subscriptions","organizations_url":"https://api.github.com/users/ekote/orgs","repos_url":"https://api.github.com/users/ekote/repos","events_url":"https://api.github.com/users/ekote/events{/privacy}","received_events_url":"https://api.github.com/users/ekote/received_events","type":"User","site_admin":false},"body":"","created_at":"2016-09-12T21:53:09Z","updated_at":"2016-09-14T16:43:16Z","closed_at":null,"merged_at":null,"merge_commit_sha":"c41661f683bf4545a1bf0781ec0578d72ee36107","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/trustedanalytics/spark-tk/pulls/148/commits","review_comments_url":"https://api.github.com/repos/trustedanalytics/spark-tk/pulls/148/comments","review_comment_url":"https://api.github.com/repos/trustedanalytics/spark-tk/pulls/comments{/number}","comments_url":"https://api.github.com/repos/trustedanalytics/spark-tk/issues/148/comments","statuses_url":"https://api.github.com/repos/trustedanalytics/spark-tk/statuses/6c6891145cba764e326c5117c05c601f117e6f0b","head":{"label":"ekote:max","ref":"max","sha":"6c6891145cba764e326c5117c05c601f117e6f0b","user":{"login":"ekote","id":6086762,"avatar_url":"https://avatars.githubusercontent.com/u/6086762?v=3","gravatar_id":"","url":"https://api.github.com/users/ekote","html_url":"https://github.com/ekote","followers_url":"https://api.github.com/users/ekote/followers","following_url":"https://api.github.com/users/ekote/following{/other_user}","gists_url":"https://api.github.com/users/ekote/gists{/gist_id}","starred_url":"https://api.github.com/users/ekote/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ekote/subscriptions","organizations_url":"https://api.github.com/users/ekote/orgs","repos_url":"https://api.github.com/users/ekote/repos","events_url":"https://api.github.com/users/ekote/events{/privacy}","received_events_url":"https://api.github.com/users/ekote/received_events","type":"User","site_admin":false},"repo":{"id":63193231,"name":"spark-tk","full_name":"ekote/spark-tk","owner":{"login":"ekote","id":6086762,"avatar_url":"https://avatars.githubusercontent.com/u/6086762?v=3","gravatar_id":"","url":"https://api.github.com/users/ekote","html_url":"https://github.com/ekote","followers_url":"https://api.github.com/users/ekote/followers","following_url":"https://api.github.com/users/ekote/following{/other_user}","gists_url":"https://api.github.com/users/ekote/gists{/gist_id}","starred_url":"https://api.github.com/users/ekote/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ekote/subscriptions","organizations_url":"https://api.github.com/users/ekote/orgs","repos_url":"https://api.github.com/users/ekote/repos","events_url":"https://api.github.com/users/ekote/events{/privacy}","received_events_url":"https://api.github.com/users/ekote/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/ekote/spark-tk","description":null,"fork":true,"url":"https://api.github.com/repos/ekote/spark-tk","forks_url":"https://api.github.com/repos/ekote/spark-tk/forks","keys_url":"https://api.github.com/repos/ekote/spark-tk/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ekote/spark-tk/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ekote/spark-tk/teams","hooks_url":"https://api.github.com/repos/ekote/spark-tk/hooks","issue_events_url":"https://api.github.com/repos/ekote/spark-tk/issues/events{/number}","events_url":"https://api.github.com/repos/ekote/spark-tk/events","assignees_url":"https://api.github.com/repos/ekote/spark-tk/assignees{/user}","branches_url":"https://api.github.com/repos/ekote/spark-tk/branches{/branch}","tags_url":"https://api.github.com/repos/ekote/spark-tk/tags","blobs_url":"https://api.github.com/repos/ekote/spark-tk/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ekote/spark-tk/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ekote/spark-tk/git/refs{/sha}","trees_url":"https://api.github.com/repos/ekote/spark-tk/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ekote/spark-tk/statuses/{sha}","languages_url":"https://api.github.com/repos/ekote/spark-tk/languages","stargazers_url":"https://api.github.com/repos/ekote/spark-tk/stargazers","contributors_url":"https://api.github.com/repos/ekote/spark-tk/contributors","subscribers_url":"https://api.github.com/repos/ekote/spark-tk/subscribers","subscription_url":"https://api.github.com/repos/ekote/spark-tk/subscription","commits_url":"https://api.github.com/repos/ekote/spark-tk/commits{/sha}","git_commits_url":"https://api.github.com/repos/ekote/spark-tk/git/commits{/sha}","comments_url":"https://api.github.com/repos/ekote/spark-tk/comments{/number}","issue_comment_url":"https://api.github.com/repos/ekote/spark-tk/issues/comments{/number}","contents_url":"https://api.github.com/repos/ekote/spark-tk/contents/{+path}","compare_url":"https://api.github.com/repos/ekote/spark-tk/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ekote/spark-tk/merges","archive_url":"https://api.github.com/repos/ekote/spark-tk/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ekote/spark-tk/downloads","issues_url":"https://api.github.com/repos/ekote/spark-tk/issues{/number}","pulls_url":"https://api.github.com/repos/ekote/spark-tk/pulls{/number}","milestones_url":"https://api.github.com/repos/ekote/spark-tk/milestones{/number}","notifications_url":"https://api.github.com/repos/ekote/spark-tk/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ekote/spark-tk/labels{/name}","releases_url":"https://api.github.com/repos/ekote/spark-tk/releases{/id}","deployments_url":"https://api.github.com/repos/ekote/spark-tk/deployments","created_at":"2016-07-12T21:23:06Z","updated_at":"2016-07-12T21:24:39Z","pushed_at":"2016-09-13T21:59:53Z","git_url":"git://github.com/ekote/spark-tk.git","ssh_url":"git@github.com:ekote/spark-tk.git","clone_url":"https://github.com/ekote/spark-tk.git","svn_url":"https://github.com/ekote/spark-tk","homepage":null,"size":3224,"stargazers_count":1,"watchers_count":1,"language":"Scala","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":1,"default_branch":"master"}},"base":{"label":"trustedanalytics:master","ref":"master","sha":"fc6784910e9e15b34089409e853610623fc98c6b","user":{"login":"trustedanalytics","id":13385739,"avatar_url":"https://avatars.githubusercontent.com/u/13385739?v=3","gravatar_id":"","url":"https://api.github.com/users/trustedanalytics","html_url":"https://github.com/trustedanalytics","followers_url":"https://api.github.com/users/trustedanalytics/followers","following_url":"https://api.github.com/users/trustedanalytics/following{/other_user}","gists_url":"https://api.github.com/users/trustedanalytics/gists{/gist_id}","starred_url":"https://api.github.com/users/trustedanalytics/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/trustedanalytics/subscriptions","organizations_url":"https://api.github.com/users/trustedanalytics/orgs","repos_url":"https://api.github.com/users/trustedanalytics/repos","events_url":"https://api.github.com/users/trustedanalytics/events{/privacy}","received_events_url":"https://api.github.com/users/trustedanalytics/received_events","type":"Organization","site_admin":false},"repo":{"id":56808917,"name":"spark-tk","full_name":"trustedanalytics/spark-tk","owner":{"login":"trustedanalytics","id":13385739,"avatar_url":"https://avatars.githubusercontent.com/u/13385739?v=3","gravatar_id":"","url":"https://api.github.com/users/trustedanalytics","html_url":"https://github.com/trustedanalytics","followers_url":"https://api.github.com/users/trustedanalytics/followers","following_url":"https://api.github.com/users/trustedanalytics/following{/other_user}","gists_url":"https://api.github.com/users/trustedanalytics/gists{/gist_id}","starred_url":"https://api.github.com/users/trustedanalytics/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/trustedanalytics/subscriptions","organizations_url":"https://api.github.com/users/trustedanalytics/orgs","repos_url":"https://api.github.com/users/trustedanalytics/repos","events_url":"https://api.github.com/users/trustedanalytics/events{/privacy}","received_events_url":"https://api.github.com/users/trustedanalytics/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/trustedanalytics/spark-tk","description":"","fork":false,"url":"https://api.github.com/repos/trustedanalytics/spark-tk","forks_url":"https://api.github.com/repos/trustedanalytics/spark-tk/forks","keys_url":"https://api.github.com/repos/trustedanalytics/spark-tk/keys{/key_id}","collaborators_url":"https://api.github.com/repos/trustedanalytics/spark-tk/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/trustedanalytics/spark-tk/teams","hooks_url":"https://api.github.com/repos/trustedanalytics/spark-tk/hooks","issue_events_url":"https://api.github.com/repos/trustedanalytics/spark-tk/issues/events{/number}","events_url":"https://api.github.com/repos/trustedanalytics/spark-tk/events","assignees_url":"https://api.github.com/repos/trustedanalytics/spark-tk/assignees{/user}","branches_url":"https://api.github.com/repos/trustedanalytics/spark-tk/branches{/branch}","tags_url":"https://api.github.com/repos/trustedanalytics/spark-tk/tags","blobs_url":"https://api.github.com/repos/trustedanalytics/spark-tk/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/trustedanalytics/spark-tk/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/trustedanalytics/spark-tk/git/refs{/sha}","trees_url":"https://api.github.com/repos/trustedanalytics/spark-tk/git/trees{/sha}","statuses_url":"https://api.github.com/repos/trustedanalytics/spark-tk/statuses/{sha}","languages_url":"https://api.github.com/repos/trustedanalytics/spark-tk/languages","stargazers_url":"https://api.github.com/repos/trustedanalytics/spark-tk/stargazers","contributors_url":"https://api.github.com/repos/trustedanalytics/spark-tk/contributors","subscribers_url":"https://api.github.com/repos/trustedanalytics/spark-tk/subscribers","subscription_url":"https://api.github.com/repos/trustedanalytics/spark-tk/subscription","commits_url":"https://api.github.com/repos/trustedanalytics/spark-tk/commits{/sha}","git_commits_url":"https://api.github.com/repos/trustedanalytics/spark-tk/git/commits{/sha}","comments_url":"https://api.github.com/repos/trustedanalytics/spark-tk/comments{/number}","issue_comment_url":"https://api.github.com/repos/trustedanalytics/spark-tk/issues/comments{/number}","contents_url":"https://api.github.com/repos/trustedanalytics/spark-tk/contents/{+path}","compare_url":"https://api.github.com/repos/trustedanalytics/spark-tk/compare/{base}...{head}","merges_url":"https://api.github.com/repos/trustedanalytics/spark-tk/merges","archive_url":"https://api.github.com/repos/trustedanalytics/spark-tk/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/trustedanalytics/spark-tk/downloads","issues_url":"https://api.github.com/repos/trustedanalytics/spark-tk/issues{/number}","pulls_url":"https://api.github.com/repos/trustedanalytics/spark-tk/pulls{/number}","milestones_url":"https://api.github.com/repos/trustedanalytics/spark-tk/milestones{/number}","notifications_url":"https://api.github.com/repos/trustedanalytics/spark-tk/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/trustedanalytics/spark-tk/labels{/name}","releases_url":"https://api.github.com/repos/trustedanalytics/spark-tk/releases{/id}","deployments_url":"https://api.github.com/repos/trustedanalytics/spark-tk/deployments","created_at":"2016-04-21T22:16:41Z","updated_at":"2016-09-08T12:08:59Z","pushed_at":"2016-09-14T16:00:48Z","git_url":"git://github.com/trustedanalytics/spark-tk.git","ssh_url":"git@github.com:trustedanalytics/spark-tk.git","clone_url":"https://github.com/trustedanalytics/spark-tk.git","svn_url":"https://github.com/trustedanalytics/spark-tk","homepage":null,"size":7253,"stargazers_count":13,"watchers_count":13,"language":"Scala","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":19,"mirror_url":null,"open_issues_count":9,"forks":19,"open_issues":9,"watchers":13,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/trustedanalytics/spark-tk/pulls/148"},"html":{"href":"https://github.com/trustedanalytics/spark-tk/pull/148"},"issue":{"href":"https://api.github.com/repos/trustedanalytics/spark-tk/issues/148"},"comments":{"href":"https://api.github.com/repos/trustedanalytics/spark-tk/issues/148/comments"},"review_comments":{"href":"https://api.github.com/repos/trustedanalytics/spark-tk/pulls/148/comments"},"review_comment":{"href":"https://api.github.com/repos/trustedanalytics/spark-tk/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/trustedanalytics/spark-tk/pulls/148/commits"},"statuses":{"href":"https://api.github.com/repos/trustedanalytics/spark-tk/statuses/6c6891145cba764e326c5117c05c601f117e6f0b"}}}}
{"actor":{"display_login":"dmsuehir"}}