{"action":"created","comment":{"url":"https://api.github.com/repos/MD2Korg/CerebralCortex/pulls/comments/108028508","pull_request_review_id":29040274,"id":108028508,"diff_hunk":"@@ -0,0 +1,572 @@\n+import argparse\n+import json\n+from datetime import datetime\n+\n+import numpy as np\n+from collections import Counter\n+from collections import Sized\n+from pathlib import Path\n+from pprint import pprint\n+\n+import time\n+\n+from datetime import timedelta\n+from sklearn import svm, metrics, preprocessing\n+from sklearn.base import clone, is_classifier\n+from sklearn.cross_validation import LabelKFold\n+from sklearn.cross_validation import check_cv\n+from sklearn.externals.joblib import Parallel, delayed\n+from sklearn.grid_search import GridSearchCV, RandomizedSearchCV, ParameterSampler, ParameterGrid\n+from sklearn.utils.validation import _num_samples, indexable\n+\n+# Command line parameter configuration\n+\n+parser = argparse.ArgumentParser(description='Train and evaluate the cStress model')\n+parser.add_argument('--featureFolder', dest='featureFolder', required=True,\n+                    help='Directory containing feature files')\n+parser.add_argument('--scorer', type=str, required=True, dest='scorer',\n+                    help='Specify which scorer function to use (f1 or twobias)')\n+parser.add_argument('--whichsearch', type=str, required=True, dest='whichsearch',\n+                    help='Specify which search function to use (GridSearch or RandomizedSearch')\n+parser.add_argument('--n_iter', type=int, required=False, dest='n_iter',\n+                    help='If Randomized Search is used, how many iterations to use')\n+parser.add_argument('--modelOutput', type=str, required=True, dest='modelOutput',\n+                    help='Model file to write')\n+parser.add_argument('--featureFile', type=str, required=True, dest='featureFile',\n+                    help='Feature vector file name')\n+parser.add_argument('--stressFile', type=str, required=True, dest='stressFile',\n+                    help='Stress ground truth filename')\n+args = parser.parse_args()\n+\n+\n+def cv_fit_and_score(estimator, X, y, scorer, parameters, cv, ):\n+    \"\"\"Fit estimator and compute scores for a given dataset split.\n+    Parameters\n+    ----------\n+    estimator : estimator object implementing 'fit'\n+        The object to use to fit the data.\n+    X : array-like of shape at least 2D\n+        The data to fit.\n+    y : array-like, optional, default: None\n+        The target variable to try to predict in the case of\n+        supervised learning.\n+    scorer : callable\n+        A scorer callable object / function with signature\n+        ``scorer(estimator, X, y)``.\n+    parameters : dict or None\n+        Parameters to be set on the estimator.\n+    cv:\tCross-validation fold indeces\n+    Returns\n+    -------\n+    score : float\n+        CV score on whole set.\n+    parameters : dict or None, optional\n+        The parameters that have been evaluated.\n+    \"\"\"\n+\n+    estimator.set_params(**parameters)\n+    cv_probs_ = cross_val_probs(estimator, X, y, cv)\n+    score = scorer(cv_probs_, y)\n+\n+    return [score, parameters]  # scoring_time]\n+\n+\n+class ModifiedGridSearchCV(GridSearchCV):\n+    def __init__(self, estimator, param_grid, scoring=None, fit_params=None,\n+                 n_jobs=1, iid=True, refit=True, cv=None, verbose=0,\n+                 pre_dispatch='2*n_jobs', error_score='raise'):\n+\n+        super(ModifiedGridSearchCV, self).__init__(\n+            estimator, param_grid, scoring, fit_params, n_jobs, iid,\n+            refit, cv, verbose, pre_dispatch, error_score)\n+\n+    def fit(self, X, y):\n+        \"\"\"Actual fitting,  performing the search over parameters.\"\"\"\n+\n+        parameter_iterable = ParameterGrid(self.param_grid)\n+\n+        estimator = self.estimator\n+        cv = self.cv\n+\n+        n_samples = _num_samples(X)\n+        X, y = indexable(X, y)\n+\n+        if y is not None:\n+            if len(y) != n_samples:\n+                raise ValueError('Target variable (y) has a different number '\n+                                 'of samples (%i) than data (X: %i samples)'\n+                                 % (len(y), n_samples))\n+        cv = check_cv(cv, X, y, classifier=is_classifier(estimator))\n+\n+        if self.verbose > 0:\n+            if isinstance(parameter_iterable, Sized):\n+                n_candidates = len(parameter_iterable)\n+                print(\"Fitting {0} folds for each of {1} candidates, totalling\"\n+                      \" {2} fits\".format(len(cv), n_candidates,\n+                                         n_candidates * len(cv)))\n+\n+        base_estimator = clone(self.estimator)\n+\n+        pre_dispatch = self.pre_dispatch\n+\n+        out = Parallel(\n+            n_jobs=self.n_jobs, verbose=self.verbose,\n+            pre_dispatch=pre_dispatch\n+        )(\n+            delayed(cv_fit_and_score)(clone(base_estimator), X, y, self.scoring,\n+                                      parameters, cv=cv)\n+            for parameters in parameter_iterable)\n+\n+        best = sorted(out, reverse=True)[0]\n+        self.best_params_ = best[1]\n+        self.best_score_ = best[0]\n+\n+        if self.refit:\n+            # fit the best estimator using the entire dataset\n+            # clone first to work around broken estimators\n+            best_estimator = clone(base_estimator).set_params(\n+                **best[1])\n+            if y is not None:\n+                best_estimator.fit(X, y, **self.fit_params)\n+            else:\n+                best_estimator.fit(X, **self.fit_params)\n+            self.best_estimator_ = best_estimator\n+\n+        return self\n+\n+\n+class ModifiedRandomizedSearchCV(RandomizedSearchCV):\n+    def __init__(self, estimator, param_distributions, n_iter=10, scoring=None,\n+                 fit_params=None, n_jobs=1, iid=True, refit=True, cv=None,\n+                 verbose=0, pre_dispatch='2*n_jobs', random_state=None,\n+                 error_score='raise'):\n+\n+        super(ModifiedRandomizedSearchCV, self).__init__(estimator=estimator, param_distributions=param_distributions,\n+                                                         n_iter=n_iter, scoring=scoring, random_state=random_state,\n+                                                         fit_params=fit_params, n_jobs=n_jobs, iid=iid, refit=refit,\n+                                                         cv=cv, verbose=verbose, pre_dispatch=pre_dispatch,\n+                                                         error_score=error_score)\n+\n+    def fit(self, X, y):\n+        \"\"\"Actual fitting,  performing the search over parameters.\"\"\"\n+\n+        parameter_iterable = ParameterSampler(self.param_distributions,\n+                                              self.n_iter,\n+                                              random_state=self.random_state)\n+        estimator = self.estimator\n+        cv = self.cv\n+\n+        n_samples = _num_samples(X)\n+        X, y = indexable(X, y)\n+\n+        if y is not None:\n+            if len(y) != n_samples:\n+                raise ValueError('Target variable (y) has a different number '\n+                                 'of samples (%i) than data (X: %i samples)'\n+                                 % (len(y), n_samples))\n+        cv = check_cv(cv, X, y, classifier=is_classifier(estimator))\n+\n+        if self.verbose > 0:\n+            if isinstance(parameter_iterable, Sized):\n+                n_candidates = len(parameter_iterable)\n+                print(\"Fitting {0} folds for each of {1} candidates, totalling\"\n+                      \" {2} fits\".format(len(cv), n_candidates,\n+                                         n_candidates * len(cv)))\n+\n+        base_estimator = clone(self.estimator)\n+\n+        pre_dispatch = self.pre_dispatch\n+\n+        out = Parallel(\n+            n_jobs=self.n_jobs, verbose=self.verbose,\n+            pre_dispatch=pre_dispatch\n+        )(\n+            delayed(cv_fit_and_score)(clone(base_estimator), X, y, self.scoring,\n+                                      parameters, cv=cv)\n+            for parameters in parameter_iterable)\n+\n+        # best = sorted(out, reverse=True)[0]\n+        best = sorted(out, key=lambda x: x[0], reverse=True)[0]\n+\n+        self.best_params_ = best[1]\n+        self.best_score_ = best[0]\n+\n+        if self.refit:\n+            # fit the best estimator using the entire dataset\n+            # clone first to work around broken estimators\n+            best_estimator = clone(base_estimator).set_params(\n+                **best[1])\n+            if y is not None:\n+                best_estimator.fit(X, y, **self.fit_params)\n+            else:\n+                best_estimator.fit(X, **self.fit_params)\n+            self.best_estimator_ = best_estimator\n+\n+        return self\n+\n+\n+def decodeLabel(label):\n+    label = label[:2]  # Only the first 2 characters designate the label code\n+\n+    mapping = {'c1': 0, 'c2': 1, 'c3': 1, 'c4': 0, 'c5': 0, 'c6': 0, 'c7': 2, }\n+\n+    return mapping[label]\n+\n+\n+def readFeatures(folder, filename):\n+    features = []\n+\n+    path = Path(folder)\n+    files = list(path.glob('**/' + filename))\n+\n+    for f in files:\n+        participantID = int(f.parent.name[2:])\n+        with f.open() as file:\n+            for line in file.readlines():\n+                parts = [x.strip() for x in line.split(',')]\n+\n+                featureVector = [participantID, int(parts[0])]\n+                featureVector.extend([float(p) for p in parts[1:]])\n+\n+                features.append(featureVector)\n+    return features\n+\n+\n+def readStressmarks(folder, filename):\n+    features = []\n+\n+    path = Path(folder)\n+    files = list(path.glob('**/' + filename))\n+\n+    for f in files:\n+        participantID = int(f.parent.name[2:])\n+\n+        with f.open() as file:\n+            for line in file.readlines():\n+                parts = [x.strip() for x in line.split(',')]\n+                label = parts[0][:2]\n+                features.append([participantID, label, int(parts[2]), int(parts[3])])\n+\n+    return features\n+\n+\n+def checkStressMark(stressMark, pid, starttime):\n+    endtime = starttime + 60000  # One minute windows\n+    result = []\n+    for line in stressMark:\n+        [id, gt, st, et] = line\n+\n+        if id == pid and (gt not in ['c7']):\n+            if (starttime > st) and (endtime < et):\n+                result.append(gt)\n+\n+    data = Counter(result)\n+    return data.most_common(1)\n+\n+\n+def analyze_events_with_features(features, stress_marks):\n+    featureLabels = []\n+    finalFeatures = []\n+    subjects = []\n+\n+    startTimes = {}\n+    for pid, label, start, end in stress_marks:\n+        if label == 'c4':\n+            if pid not in startTimes:\n+                startTimes[pid] = np.inf\n+\n+            startTimes[pid] = min(startTimes[pid], start)\n+\n+    for line in features:\n+        id = line[0]\n+        ts = line[1]\n+        f = line[2:]\n+\n+        if ts < startTimes[id]:\n+            continue  # Outside of starting time\n+\n+        label = checkStressMark(stress_marks, id, ts)\n+        if len(label) > 0:\n+            stressClass = decodeLabel(label[0][0])\n+\n+            featureLabels.append(stressClass)\n+            finalFeatures.append(f)\n+            subjects.append(id)\n+\n+    return finalFeatures, featureLabels, subjects\n+\n+\n+def get_svmdataset(traindata, trainlabels):\n+    input = []\n+    output = []\n+    foldinds = []\n+\n+    for i in range(len(trainlabels)):\n+        if trainlabels[i] == 1:\n+            foldinds.append(i)\n+\n+        if trainlabels[i] == 0:\n+            foldinds.append(i)\n+\n+    input = np.array(input, dtype='float64')\n+    return output, input, foldinds\n+\n+\n+def reduceData(data, r):\n+    result = []\n+    for d in data:\n+        result.append([d[i] for i in r])\n+    return result\n+\n+\n+def f1Bias_scorer(estimator, X, y, ret_bias=False):\n+    probas_ = estimator.predict_proba(X)\n+    precision, recall, thresholds = metrics.precision_recall_curve(y, probas_[:, 1])\n+\n+    f1 = 0.0\n+    for i in range(0, len(thresholds)):\n+        if not (precision[i] == 0 and recall[i] == 0):\n+            f = 2 * (precision[i] * recall[i]) / (precision[i] + recall[i])\n+            if f > f1:\n+                f1 = f\n+                bias = thresholds[i]\n+\n+    if ret_bias:\n+        return f1, bias\n+    else:\n+        return f1\n+\n+\n+def Twobias_scorer_CV(probs, y, ret_bias=False):\n+    db = np.transpose(np.vstack([probs, y]))\n+    db = db[np.argsort(db[:, 0]), :]\n+\n+    pos = np.sum(y == 1)\n+    n = len(y)\n+    neg = n - pos\n+    tp, tn = pos, 0\n+    lost = 0\n+\n+    optbias = []\n+    minloss = 1\n+\n+    for i in range(n):\n+        #\t\tp = db[i,1]\n+        if db[i, 1] == 1:  # positive\n+            tp -= 1.0\n+        else:\n+            tn += 1.0\n+\n+        # v1 = tp/pos\n+        #\t\tv2 = tn/neg\n+        if tp / pos >= 0.95 and tn / neg >= 0.95:\n+            optbias = [db[i, 0], db[i, 0]]\n+            continue\n+\n+        running_pos = pos\n+        running_neg = neg\n+        running_tp = tp\n+        running_tn = tn\n+\n+        for j in range(i + 1, n):\n+            #\t\t\tp1 = db[j,1]\n+            if db[j, 1] == 1:  # positive\n+                running_tp -= 1.0\n+                running_pos -= 1\n+            else:\n+                running_neg -= 1\n+\n+            lost = (j - i) * 1.0 / n\n+            if running_pos == 0 or running_neg == 0:\n+                break\n+\n+            # v1 = running_tp/running_pos\n+            #\t\t\tv2 = running_tn/running_neg\n+\n+            if running_tp / running_pos >= 0.95 and running_tn / running_neg >= 0.95 and lost < minloss:\n+                minloss = lost\n+                optbias = [db[i, 0], db[j, 0]]\n+\n+    if ret_bias:\n+        return -minloss, optbias\n+    else:\n+        return -minloss\n+\n+\n+def f1Bias_scorer_CV(probs, y, ret_bias=False):\n+    precision, recall, thresholds = metrics.precision_recall_curve(y, probs)\n+\n+    f1 = 0.0\n+    for i in range(0, len(thresholds)):\n+        if not (precision[i] == 0 and recall[i] == 0):\n+            f = 2 * (precision[i] * recall[i]) / (precision[i] + recall[i])\n+            if f > f1:\n+                f1 = f\n+                bias = thresholds[i]\n+\n+    if ret_bias:\n+        return f1, bias\n+    else:\n+        return f1\n+\n+\n+def svmOutput(filename, traindata, trainlabels):\n+    with open(filename, 'w') as f:\n+        for i in range(0, len(trainlabels)):\n+            f.write(str(trainlabels[i]))\n+            for fi in range(0, len(traindata[i])):\n+                f.write(\" \" + str(fi + 1) + \":\" + str(traindata[i][fi]))\n+\n+            f.write(\"\\n\")\n+\n+\n+def saveModel(filename, model, normparams, bias=0.5):\n+    class Object:\n+        def to_JSON(self):\n+            return json.dumps(self, default=lambda o: o.__dict__,\n+                              sort_keys=True, indent=4)\n+\n+    class Kernel(Object):\n+        def __init__(self, type, parameters):","path":"cerebralcortex/data_processor/cStressOriginal.py","position":430,"original_position":430,"commit_id":"5fe12667b37008d583225e74666def7e68d03b83","original_commit_id":"5fe12667b37008d583225e74666def7e68d03b83","user":{"login":"codacy-bot","id":19940114,"avatar_url":"https://avatars2.githubusercontent.com/u/19940114?v=3","gravatar_id":"","url":"https://api.github.com/users/codacy-bot","html_url":"https://github.com/codacy-bot","followers_url":"https://api.github.com/users/codacy-bot/followers","following_url":"https://api.github.com/users/codacy-bot/following{/other_user}","gists_url":"https://api.github.com/users/codacy-bot/gists{/gist_id}","starred_url":"https://api.github.com/users/codacy-bot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/codacy-bot/subscriptions","organizations_url":"https://api.github.com/users/codacy-bot/orgs","repos_url":"https://api.github.com/users/codacy-bot/repos","events_url":"https://api.github.com/users/codacy-bot/events{/privacy}","received_events_url":"https://api.github.com/users/codacy-bot/received_events","type":"User","site_admin":false},"body":"![Codacy](https://www.codacy.com/assets/images/favicon.png) Issue found: [Redefining built-in 'type'](https://www.codacy.com/app/twhnat/CerebralCortex/pullRequest?prid=576559)","created_at":"2017-03-25T05:16:36Z","updated_at":"2017-03-25T05:16:36Z","html_url":"https://github.com/MD2Korg/CerebralCortex/pull/48#discussion_r108028508","pull_request_url":"https://api.github.com/repos/MD2Korg/CerebralCortex/pulls/48","_links":{"self":{"href":"https://api.github.com/repos/MD2Korg/CerebralCortex/pulls/comments/108028508"},"html":{"href":"https://github.com/MD2Korg/CerebralCortex/pull/48#discussion_r108028508"},"pull_request":{"href":"https://api.github.com/repos/MD2Korg/CerebralCortex/pulls/48"}}},"pull_request":{"url":"https://api.github.com/repos/MD2Korg/CerebralCortex/pulls/48","id":112547372,"html_url":"https://github.com/MD2Korg/CerebralCortex/pull/48","diff_url":"https://github.com/MD2Korg/CerebralCortex/pull/48.diff","patch_url":"https://github.com/MD2Korg/CerebralCortex/pull/48.patch","issue_url":"https://api.github.com/repos/MD2Korg/CerebralCortex/issues/48","number":48,"state":"open","locked":false,"title":"tried to solve codacy issues","user":{"login":"anjanatiha","id":22654200,"avatar_url":"https://avatars2.githubusercontent.com/u/22654200?v=3","gravatar_id":"","url":"https://api.github.com/users/anjanatiha","html_url":"https://github.com/anjanatiha","followers_url":"https://api.github.com/users/anjanatiha/followers","following_url":"https://api.github.com/users/anjanatiha/following{/other_user}","gists_url":"https://api.github.com/users/anjanatiha/gists{/gist_id}","starred_url":"https://api.github.com/users/anjanatiha/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/anjanatiha/subscriptions","organizations_url":"https://api.github.com/users/anjanatiha/orgs","repos_url":"https://api.github.com/users/anjanatiha/repos","events_url":"https://api.github.com/users/anjanatiha/events{/privacy}","received_events_url":"https://api.github.com/users/anjanatiha/received_events","type":"User","site_admin":false},"body":"","created_at":"2017-03-24T21:35:05Z","updated_at":"2017-03-25T05:16:36Z","closed_at":null,"merged_at":null,"merge_commit_sha":"6dff71097d9b78faef279c65dacad13317c99894","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/MD2Korg/CerebralCortex/pulls/48/commits","review_comments_url":"https://api.github.com/repos/MD2Korg/CerebralCortex/pulls/48/comments","review_comment_url":"https://api.github.com/repos/MD2Korg/CerebralCortex/pulls/comments{/number}","comments_url":"https://api.github.com/repos/MD2Korg/CerebralCortex/issues/48/comments","statuses_url":"https://api.github.com/repos/MD2Korg/CerebralCortex/statuses/5fe12667b37008d583225e74666def7e68d03b83","head":{"label":"anjanatiha:master","ref":"master","sha":"5fe12667b37008d583225e74666def7e68d03b83","user":{"login":"anjanatiha","id":22654200,"avatar_url":"https://avatars2.githubusercontent.com/u/22654200?v=3","gravatar_id":"","url":"https://api.github.com/users/anjanatiha","html_url":"https://github.com/anjanatiha","followers_url":"https://api.github.com/users/anjanatiha/followers","following_url":"https://api.github.com/users/anjanatiha/following{/other_user}","gists_url":"https://api.github.com/users/anjanatiha/gists{/gist_id}","starred_url":"https://api.github.com/users/anjanatiha/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/anjanatiha/subscriptions","organizations_url":"https://api.github.com/users/anjanatiha/orgs","repos_url":"https://api.github.com/users/anjanatiha/repos","events_url":"https://api.github.com/users/anjanatiha/events{/privacy}","received_events_url":"https://api.github.com/users/anjanatiha/received_events","type":"User","site_admin":false},"repo":{"id":82324508,"name":"CerebralCortexForked","full_name":"anjanatiha/CerebralCortexForked","owner":{"login":"anjanatiha","id":22654200,"avatar_url":"https://avatars2.githubusercontent.com/u/22654200?v=3","gravatar_id":"","url":"https://api.github.com/users/anjanatiha","html_url":"https://github.com/anjanatiha","followers_url":"https://api.github.com/users/anjanatiha/followers","following_url":"https://api.github.com/users/anjanatiha/following{/other_user}","gists_url":"https://api.github.com/users/anjanatiha/gists{/gist_id}","starred_url":"https://api.github.com/users/anjanatiha/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/anjanatiha/subscriptions","organizations_url":"https://api.github.com/users/anjanatiha/orgs","repos_url":"https://api.github.com/users/anjanatiha/repos","events_url":"https://api.github.com/users/anjanatiha/events{/privacy}","received_events_url":"https://api.github.com/users/anjanatiha/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/anjanatiha/CerebralCortexForked","description":"Cerebral Cortex is the backend architecture, powered by Apache Spark, that is designed to analyze population-scale mHealth data","fork":true,"url":"https://api.github.com/repos/anjanatiha/CerebralCortexForked","forks_url":"https://api.github.com/repos/anjanatiha/CerebralCortexForked/forks","keys_url":"https://api.github.com/repos/anjanatiha/CerebralCortexForked/keys{/key_id}","collaborators_url":"https://api.github.com/repos/anjanatiha/CerebralCortexForked/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/anjanatiha/CerebralCortexForked/teams","hooks_url":"https://api.github.com/repos/anjanatiha/CerebralCortexForked/hooks","issue_events_url":"https://api.github.com/repos/anjanatiha/CerebralCortexForked/issues/events{/number}","events_url":"https://api.github.com/repos/anjanatiha/CerebralCortexForked/events","assignees_url":"https://api.github.com/repos/anjanatiha/CerebralCortexForked/assignees{/user}","branches_url":"https://api.github.com/repos/anjanatiha/CerebralCortexForked/branches{/branch}","tags_url":"https://api.github.com/repos/anjanatiha/CerebralCortexForked/tags","blobs_url":"https://api.github.com/repos/anjanatiha/CerebralCortexForked/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/anjanatiha/CerebralCortexForked/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/anjanatiha/CerebralCortexForked/git/refs{/sha}","trees_url":"https://api.github.com/repos/anjanatiha/CerebralCortexForked/git/trees{/sha}","statuses_url":"https://api.github.com/repos/anjanatiha/CerebralCortexForked/statuses/{sha}","languages_url":"https://api.github.com/repos/anjanatiha/CerebralCortexForked/languages","stargazers_url":"https://api.github.com/repos/anjanatiha/CerebralCortexForked/stargazers","contributors_url":"https://api.github.com/repos/anjanatiha/CerebralCortexForked/contributors","subscribers_url":"https://api.github.com/repos/anjanatiha/CerebralCortexForked/subscribers","subscription_url":"https://api.github.com/repos/anjanatiha/CerebralCortexForked/subscription","commits_url":"https://api.github.com/repos/anjanatiha/CerebralCortexForked/commits{/sha}","git_commits_url":"https://api.github.com/repos/anjanatiha/CerebralCortexForked/git/commits{/sha}","comments_url":"https://api.github.com/repos/anjanatiha/CerebralCortexForked/comments{/number}","issue_comment_url":"https://api.github.com/repos/anjanatiha/CerebralCortexForked/issues/comments{/number}","contents_url":"https://api.github.com/repos/anjanatiha/CerebralCortexForked/contents/{+path}","compare_url":"https://api.github.com/repos/anjanatiha/CerebralCortexForked/compare/{base}...{head}","merges_url":"https://api.github.com/repos/anjanatiha/CerebralCortexForked/merges","archive_url":"https://api.github.com/repos/anjanatiha/CerebralCortexForked/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/anjanatiha/CerebralCortexForked/downloads","issues_url":"https://api.github.com/repos/anjanatiha/CerebralCortexForked/issues{/number}","pulls_url":"https://api.github.com/repos/anjanatiha/CerebralCortexForked/pulls{/number}","milestones_url":"https://api.github.com/repos/anjanatiha/CerebralCortexForked/milestones{/number}","notifications_url":"https://api.github.com/repos/anjanatiha/CerebralCortexForked/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/anjanatiha/CerebralCortexForked/labels{/name}","releases_url":"https://api.github.com/repos/anjanatiha/CerebralCortexForked/releases{/id}","deployments_url":"https://api.github.com/repos/anjanatiha/CerebralCortexForked/deployments","created_at":"2017-02-17T18:07:16Z","updated_at":"2017-03-15T23:28:48Z","pushed_at":"2017-03-25T05:14:56Z","git_url":"git://github.com/anjanatiha/CerebralCortexForked.git","ssh_url":"git@github.com:anjanatiha/CerebralCortexForked.git","clone_url":"https://github.com/anjanatiha/CerebralCortexForked.git","svn_url":"https://github.com/anjanatiha/CerebralCortexForked","homepage":"https://md2k.org/","size":6038,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"MD2Korg:master","ref":"master","sha":"4aa60880ace7716dd69f6753bb719bc7a5968c9b","user":{"login":"MD2Korg","id":7998840,"avatar_url":"https://avatars2.githubusercontent.com/u/7998840?v=3","gravatar_id":"","url":"https://api.github.com/users/MD2Korg","html_url":"https://github.com/MD2Korg","followers_url":"https://api.github.com/users/MD2Korg/followers","following_url":"https://api.github.com/users/MD2Korg/following{/other_user}","gists_url":"https://api.github.com/users/MD2Korg/gists{/gist_id}","starred_url":"https://api.github.com/users/MD2Korg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MD2Korg/subscriptions","organizations_url":"https://api.github.com/users/MD2Korg/orgs","repos_url":"https://api.github.com/users/MD2Korg/repos","events_url":"https://api.github.com/users/MD2Korg/events{/privacy}","received_events_url":"https://api.github.com/users/MD2Korg/received_events","type":"Organization","site_admin":false},"repo":{"id":75642801,"name":"CerebralCortex","full_name":"MD2Korg/CerebralCortex","owner":{"login":"MD2Korg","id":7998840,"avatar_url":"https://avatars2.githubusercontent.com/u/7998840?v=3","gravatar_id":"","url":"https://api.github.com/users/MD2Korg","html_url":"https://github.com/MD2Korg","followers_url":"https://api.github.com/users/MD2Korg/followers","following_url":"https://api.github.com/users/MD2Korg/following{/other_user}","gists_url":"https://api.github.com/users/MD2Korg/gists{/gist_id}","starred_url":"https://api.github.com/users/MD2Korg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MD2Korg/subscriptions","organizations_url":"https://api.github.com/users/MD2Korg/orgs","repos_url":"https://api.github.com/users/MD2Korg/repos","events_url":"https://api.github.com/users/MD2Korg/events{/privacy}","received_events_url":"https://api.github.com/users/MD2Korg/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/MD2Korg/CerebralCortex","description":"Cerebral Cortex is the backend architecture, powered by Apache Spark, that is designed to analyze population-scale mHealth data","fork":false,"url":"https://api.github.com/repos/MD2Korg/CerebralCortex","forks_url":"https://api.github.com/repos/MD2Korg/CerebralCortex/forks","keys_url":"https://api.github.com/repos/MD2Korg/CerebralCortex/keys{/key_id}","collaborators_url":"https://api.github.com/repos/MD2Korg/CerebralCortex/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/MD2Korg/CerebralCortex/teams","hooks_url":"https://api.github.com/repos/MD2Korg/CerebralCortex/hooks","issue_events_url":"https://api.github.com/repos/MD2Korg/CerebralCortex/issues/events{/number}","events_url":"https://api.github.com/repos/MD2Korg/CerebralCortex/events","assignees_url":"https://api.github.com/repos/MD2Korg/CerebralCortex/assignees{/user}","branches_url":"https://api.github.com/repos/MD2Korg/CerebralCortex/branches{/branch}","tags_url":"https://api.github.com/repos/MD2Korg/CerebralCortex/tags","blobs_url":"https://api.github.com/repos/MD2Korg/CerebralCortex/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/MD2Korg/CerebralCortex/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/MD2Korg/CerebralCortex/git/refs{/sha}","trees_url":"https://api.github.com/repos/MD2Korg/CerebralCortex/git/trees{/sha}","statuses_url":"https://api.github.com/repos/MD2Korg/CerebralCortex/statuses/{sha}","languages_url":"https://api.github.com/repos/MD2Korg/CerebralCortex/languages","stargazers_url":"https://api.github.com/repos/MD2Korg/CerebralCortex/stargazers","contributors_url":"https://api.github.com/repos/MD2Korg/CerebralCortex/contributors","subscribers_url":"https://api.github.com/repos/MD2Korg/CerebralCortex/subscribers","subscription_url":"https://api.github.com/repos/MD2Korg/CerebralCortex/subscription","commits_url":"https://api.github.com/repos/MD2Korg/CerebralCortex/commits{/sha}","git_commits_url":"https://api.github.com/repos/MD2Korg/CerebralCortex/git/commits{/sha}","comments_url":"https://api.github.com/repos/MD2Korg/CerebralCortex/comments{/number}","issue_comment_url":"https://api.github.com/repos/MD2Korg/CerebralCortex/issues/comments{/number}","contents_url":"https://api.github.com/repos/MD2Korg/CerebralCortex/contents/{+path}","compare_url":"https://api.github.com/repos/MD2Korg/CerebralCortex/compare/{base}...{head}","merges_url":"https://api.github.com/repos/MD2Korg/CerebralCortex/merges","archive_url":"https://api.github.com/repos/MD2Korg/CerebralCortex/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/MD2Korg/CerebralCortex/downloads","issues_url":"https://api.github.com/repos/MD2Korg/CerebralCortex/issues{/number}","pulls_url":"https://api.github.com/repos/MD2Korg/CerebralCortex/pulls{/number}","milestones_url":"https://api.github.com/repos/MD2Korg/CerebralCortex/milestones{/number}","notifications_url":"https://api.github.com/repos/MD2Korg/CerebralCortex/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/MD2Korg/CerebralCortex/labels{/name}","releases_url":"https://api.github.com/repos/MD2Korg/CerebralCortex/releases{/id}","deployments_url":"https://api.github.com/repos/MD2Korg/CerebralCortex/deployments","created_at":"2016-12-05T16:08:42Z","updated_at":"2017-02-21T03:18:08Z","pushed_at":"2017-03-25T05:14:57Z","git_url":"git://github.com/MD2Korg/CerebralCortex.git","ssh_url":"git@github.com:MD2Korg/CerebralCortex.git","clone_url":"https://github.com/MD2Korg/CerebralCortex.git","svn_url":"https://github.com/MD2Korg/CerebralCortex","homepage":"https://md2k.org/","size":5950,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":10,"mirror_url":null,"open_issues_count":1,"forks":10,"open_issues":1,"watchers":0,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/MD2Korg/CerebralCortex/pulls/48"},"html":{"href":"https://github.com/MD2Korg/CerebralCortex/pull/48"},"issue":{"href":"https://api.github.com/repos/MD2Korg/CerebralCortex/issues/48"},"comments":{"href":"https://api.github.com/repos/MD2Korg/CerebralCortex/issues/48/comments"},"review_comments":{"href":"https://api.github.com/repos/MD2Korg/CerebralCortex/pulls/48/comments"},"review_comment":{"href":"https://api.github.com/repos/MD2Korg/CerebralCortex/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/MD2Korg/CerebralCortex/pulls/48/commits"},"statuses":{"href":"https://api.github.com/repos/MD2Korg/CerebralCortex/statuses/5fe12667b37008d583225e74666def7e68d03b83"}}}}
{"actor":{"display_login":"codacy-bot"}}