{"action":"created","comment":{"url":"https://api.github.com/repos/nilearn/nilearn/pulls/comments/34877178","id":34877178,"diff_hunk":"@@ -0,0 +1,631 @@\n+\"\"\"High-level decoding object that exposes standard classification\n+and regression strategies such as SVM, LogisticRegression and Ridge,\n+with optional feature selection, and integrated parameter selection.\n+\"\"\"\n+# Authors : Yannick Schwartz\n+#           Andres Hoyos-Idrobo\n+#\n+# License: simplified BSD\n+\n+import collections\n+import itertools\n+import warnings\n+import copy\n+\n+import numpy as np\n+\n+from sklearn.externals.joblib import Parallel, delayed, Memory\n+from sklearn.linear_model.ridge import Ridge, RidgeClassifier, _BaseRidge\n+from sklearn.linear_model import LogisticRegression\n+from sklearn.svm import LinearSVC, SVR\n+from sklearn.preprocessing import LabelBinarizer\n+from sklearn.feature_selection import SelectPercentile, SelectKBest\n+from sklearn.feature_selection import f_classif, f_regression\n+from sklearn.svm.bounds import l1_min_c\n+from sklearn.metrics import make_scorer\n+from sklearn.metrics import r2_score, f1_score, precision_score, recall_score\n+from sklearn.metrics.scorer import check_scoring\n+from sklearn.grid_search import ParameterGrid\n+from sklearn.base import BaseEstimator\n+from sklearn.base import is_classifier\n+from sklearn.utils import check_X_y, check_consistent_length\n+from sklearn import clone\n+\n+try:\n+    from sklearn.utils import check_arrays as check_array\n+except ImportError as e:\n+    from sklearn.utils import check_array\n+\n+try:\n+    # scikit-learn < 0.17\n+    from sklearn.cross_validation import _check_cv as check_cv\n+except ImportError as e:\n+    # scikit-learn >= 0.17\n+    from sklearn.cross_validation import check_cv\n+\n+from ..input_data import NiftiMasker, MultiNiftiMasker\n+from ..image import index_img\n+\n+\n+# Volume of a standard (MNI152) brain mask in mm^3\n+MNI152_BRAIN_VOLUME = 1827243.\n+\n+\n+ESTIMATOR_CATALOG = dict(\n+    svc_l1=LinearSVC(penalty='l1', dual=False, class_weight='auto'),\n+    svc_l2=LinearSVC(penalty='l2', class_weight='auto'),\n+    svc=LinearSVC(penalty='l2', class_weight='auto'),\n+    logistic_l1=LogisticRegression(penalty='l1', class_weight='auto'),\n+    logistic_l2=LogisticRegression(penalty='l2', class_weight='auto'),\n+    logistic=LogisticRegression(penalty='l2', class_weight='auto'),\n+    ridge_classifier=RidgeClassifier(class_weight='auto'),\n+    ridge_regression=Ridge(),\n+    svr=SVR(kernel='linear'),\n+)\n+\n+REQUIRES_POS_LABEL = [f1_score, precision_score, recall_score]\n+\n+\n+class Decoder(BaseEstimator):\n+    \"\"\"Popular classification and regression strategies for neuroimgaging.\n+\n+    The `Decoder` object supports classification and regression methods.\n+    It implements a model selection scheme that averages the best models\n+    within a cross validation loop. The resulting average model is the\n+    one used as a classifier or a regressor. The `Decoder` object also\n+    leverages the `NiftiMaskers` to provide a direct interface with the\n+    nifti files on disk.\n+\n+    Parameters\n+    -----------\n+    estimator : str, optional\n+        The estimator to choose among: 'svc', 'svc_l1', 'logistic',\n+        'logistic_l1', 'ridge_classifier', 'ridge_regression',\n+        and 'svr'. Defaults to 'svc'.\n+\n+    mask: filename, NiImage, NiftiMasker, or MultiNiftiMasker, optional\n+        Mask to be used on data. If an instance of masker is passed,\n+        then its mask will be used. If no mask is given,\n+        it will be computed automatically by a masker with default\n+        parameters.\n+\n+    cv : cross-validation generator, optional\n+        A cross-validation generator. If None, a 3-fold cross\n+        validation is used for regression or 3-fold stratified\n+        cross-validation for classification.\n+\n+    param_grid : dict of string to sequence, or sequence of such\n+        The parameter grid to explore, as a dictionary mapping estimator\n+        parameters to sequences of allowed values.\n+\n+        An empty dict signifies default parameters.\n+\n+        A sequence of dicts signifies a sequence of grids to search, and is\n+        useful to avoid exploring parameter combinations that make no sense\n+        or have no effect. See scikit-learn documentation for more information.\n+\n+    screening_percentile: int, float, optional, in the closed interval [0., 100]\n+        Perform an univariate feature selection based on the Anova F-value for\n+        the input data. A float according to a percentile of the highest scores.\n+        Defaults to 20.\n+\n+    pos_label: str or None\n+        The positive class label in case of a binary classification. It is\n+        used in the case of binary classification, and only the following\n+        scoring metrics require it: f1, precision, and recall.\n+\n+    scoring : string or callable, optional\n+        The scoring strategy to use. See the scikit-learn documentation\n+        If callable, takes as arguments the fitted estimator, the\n+        test data (X_test) and the test target (y_test) if y is\n+        not None.\n+\n+    smoothing_fwhm: float, optional\n+        If smoothing_fwhm is not None, it gives the size in millimeters of the\n+        spatial smoothing to apply to the signal.\n+\n+    standardize : boolean, optional\n+        If standardize is True, the time-series are centered and normed:\n+        their variance is put to 1 in the time dimension.\n+\n+    target_affine: 3x3 or 4x4 matrix, optional\n+        This parameter is passed to image.resample_img. Please see the\n+        related documentation for details.\n+\n+    target_shape: 3-tuple of integers, optional\n+        This parameter is passed to image.resample_img. Please see the\n+        related documentation for details.\n+\n+    mask_strategy: {'background' or 'epi'}, optional\n+        The strategy used to compute the mask: use 'background' if your\n+        images present a clear homogeneous background, and 'epi' if they\n+        are raw EPI images. Depending on this value, the mask will be\n+        computed from masking.compute_background_mask or\n+        masking.compute_epi_mask. Default is 'background'.\n+\n+    memory: instance of joblib.Memory or string\n+        Used to cache the masking process.\n+        By default, no caching is done. If a string is given, it is the\n+        path to the caching directory.\n+\n+    memory_level: integer, optional\n+        Rough estimator of the amount of memory used by caching. Higher value\n+        means more memory for caching.\n+\n+    n_jobs : int, optional. Default is -1.\n+        The number of CPUs to use to do the computation. -1 means\n+        'all CPUs'.\n+\n+    verbose : int, optional\n+        Verbosity level. Default is False\n+    \"\"\"\n+    # XXX problems when performing regression, it shold change to svr or\n+    # ridge_regression\n+    def __init__(self, estimator='svc', mask=None, cv=None, param_grid=None,\n+                 screening_percentile=20, pos_label=None, scoring=None,\n+                 smoothing_fwhm=None, standardize=True, target_affine=None,\n+                 target_shape=None, mask_strategy='background',\n+                 memory=Memory(cachedir=None), memory_level=0,\n+                 n_jobs=1, verbose=False,\n+                 ):\n+        self.estimator = estimator\n+        self.mask = mask\n+        self.cv = cv\n+        self.param_grid = param_grid\n+        self.screening_percentile = screening_percentile\n+        self.pos_label = pos_label\n+        self.scoring = scoring\n+        self.smoothing_fwhm = smoothing_fwhm\n+        self.standardize = standardize\n+        self.target_affine = target_affine\n+        self.target_shape = target_shape\n+        self.mask_strategy = mask_strategy\n+        self.memory = memory\n+        self.memory_level = memory_level\n+        self.n_jobs = n_jobs\n+        self.verbose = verbose\n+\n+\n+    def fit(self, niimgs, y, index=None):\n+        \"\"\"Fit the decoder\n+\n+        Parameters\n+        ----------\n+        niimgs: list of filenames or NiImages\n+            Data on which the mask must be calculated. If this is a list,\n+            the affine is considered the same for all.\n+\n+        y: 1D array-like\n+           Target variable to predict. Must have exactly as many elements as\n+           3D images in niimg.\n+\n+        index: Any type compatible with numpy array indexing\n+            Used for indexing the 4D NiImages in the fourth dimension.\n+\n+        Attributes\n+        ----------\n+        `mask_img_`: NiImage\n+            Mask computed by the masker object.\n+        `classes_`: numpy.ndarray\n+            Classes to predict. For classification only.\n+        `coef_`: numpy.ndarray, shape=(n_classes, n_features)\n+            Contains the mean of the models weight vector across\n+            fold for each class.\n+        `std_coef_`: numpy.ndarray, shape=(n_classes, n_features)\n+            Contains the standard deviation of the models weight vector across\n+            fold for each class.\n+        `coef_img_`: dict of NiImage\n+            Dictionary containing `coef_` with class names as keys,\n+            and `coef_` transformed in NiImages as values. In the case\n+            of a regression, it contains a single NiImage at the key 'beta'.\n+        `std_coef_img_`: dict of NiImage\n+            Dictionary containing `std_coef_` with class names as keys,\n+            and `coef_` transformed in NiImages as values. In the case\n+            of a regression, it contains a single NiImage at the key 'beta'.\n+        `cv_y_true_` : numpy.ndarray\n+            Ground truth labels for left out samples in inner cross validation.\n+        `cv_y_pred_` : numpy.ndarray\n+            Predicted labels for left out samples in inner cross validation.\n+        `cv_params_`: dict of lists\n+            Best point in the parameter grid for each tested fold\n+            in the inner cross validation loop.\n+        \"\"\"\n+        # Setup memory, parallel and masker\n+        if isinstance(self.memory, basestring) or self.memory is None:\n+            self.memory = Memory(cachedir=self.memory, verbose=self.verbose)\n+\n+        parallel = Parallel(n_jobs=self.n_jobs, verbose=self.verbose,\n+                            pre_dispatch='n_jobs')\n+\n+        self.masker_ = _check_masking(self.mask, self.smoothing_fwhm,\n+                                      self.target_affine, self.target_shape,\n+                                      self.standardize, self.mask_strategy,\n+                                      self.memory, self.memory_level)\n+\n+        if index is not None :\n+            if isinstance(index, collections.Iterable):\n+                niimgs = index_img(niimgs, index)\n+\n+        # Fit masker\n+        if not hasattr(self.masker_, 'mask_img_'):\n+            self.masker_.fit(niimgs)\n+        else:\n+            if isinstance(self.masker_, basestring):\n+                self.masker_.fit()\n+        self.mask_img_ = self.masker_.mask_img_\n+        mask_volume = _get_mask_volume(self.mask_img_)\n+\n+        # Load data and target\n+        X = self.masker_.transform(niimgs)\n+        X = np.vstack(X) if isinstance(X, tuple) else X\n+        y, = check_array(y)\n+\n+        # Additional checking, otherwise it will continue\n+        X, y = check_X_y(X, y, ['csr', 'csc', 'coo'], dtype=np.float,\n+                         multi_output=True, y_numeric=True)\n+\n+        # Setup model\n+        if not isinstance(self.estimator, basestring):\n+            warnings.warn('Use a custom estimator at your own risk.')\n+\n+        estimator = ESTIMATOR_CATALOG.get(self.estimator, self.estimator)","path":"nilearn/decoding/decoder.py","position":271,"original_position":271,"commit_id":"ff7b676fcacafd07dbd823e3884fd59a7e363baf","original_commit_id":"ff7b676fcacafd07dbd823e3884fd59a7e363baf","user":{"login":"banilo","id":3907396,"avatar_url":"https://avatars.githubusercontent.com/u/3907396?v=3","gravatar_id":"","url":"https://api.github.com/users/banilo","html_url":"https://github.com/banilo","followers_url":"https://api.github.com/users/banilo/followers","following_url":"https://api.github.com/users/banilo/following{/other_user}","gists_url":"https://api.github.com/users/banilo/gists{/gist_id}","starred_url":"https://api.github.com/users/banilo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/banilo/subscriptions","organizations_url":"https://api.github.com/users/banilo/orgs","repos_url":"https://api.github.com/users/banilo/repos","events_url":"https://api.github.com/users/banilo/events{/privacy}","received_events_url":"https://api.github.com/users/banilo/received_events","type":"User","site_admin":false},"body":"interesting...","created_at":"2015-07-17T10:03:32Z","updated_at":"2015-07-17T10:03:32Z","html_url":"https://github.com/nilearn/nilearn/pull/698#discussion_r34877178","pull_request_url":"https://api.github.com/repos/nilearn/nilearn/pulls/698","_links":{"self":{"href":"https://api.github.com/repos/nilearn/nilearn/pulls/comments/34877178"},"html":{"href":"https://github.com/nilearn/nilearn/pull/698#discussion_r34877178"},"pull_request":{"href":"https://api.github.com/repos/nilearn/nilearn/pulls/698"}}},"pull_request":{"url":"https://api.github.com/repos/nilearn/nilearn/pulls/698","id":40210022,"html_url":"https://github.com/nilearn/nilearn/pull/698","diff_url":"https://github.com/nilearn/nilearn/pull/698.diff","patch_url":"https://github.com/nilearn/nilearn/pull/698.patch","issue_url":"https://api.github.com/repos/nilearn/nilearn/issues/698","number":698,"state":"open","locked":false,"title":"[WIP] Decoder: Metaestimator ","user":{"login":"ahoyosid","id":6594763,"avatar_url":"https://avatars.githubusercontent.com/u/6594763?v=3","gravatar_id":"","url":"https://api.github.com/users/ahoyosid","html_url":"https://github.com/ahoyosid","followers_url":"https://api.github.com/users/ahoyosid/followers","following_url":"https://api.github.com/users/ahoyosid/following{/other_user}","gists_url":"https://api.github.com/users/ahoyosid/gists{/gist_id}","starred_url":"https://api.github.com/users/ahoyosid/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ahoyosid/subscriptions","organizations_url":"https://api.github.com/users/ahoyosid/orgs","repos_url":"https://api.github.com/users/ahoyosid/repos","events_url":"https://api.github.com/users/ahoyosid/events{/privacy}","received_events_url":"https://api.github.com/users/ahoyosid/received_events","type":"User","site_admin":false},"body":"High-level decoding object that exposes standard classification and regression strategies such as SVM, LogisticRegression and Ridge, with optional feature selection, and integrated parameter selection.\r\n\r\nIn other words, this object implements the pipelie:  \r\nmasking + feature selection (screening) + estimation (parameter selection and model averaging)\r\n\r\nHaxby dataset, face  > house (similar to [Haxby face > cat] (http://nilearn.github.io/auto_examples/plot_haxby_simple.html))\r\n\"full brain\"\r\nestimator =  'ridge_classifier'\r\nscreening_percentile = 20\r\n\r\n![coef](https://cloud.githubusercontent.com/assets/6594763/8743369/8b8560d0-2c6e-11e5-9d19-aefe1a345c03.png)\r\n\r\nOasis dataset, age prediction (same as [OASIS example](http://nilearn.github.io/auto_examples/decoding/plot_oasis_vbm.html))\r\nestimator =  'ridge_regression'\r\nscreening_percentile = 2 \r\n\r\n![weights](https://cloud.githubusercontent.com/assets/6594763/8743374/95d5122e-2c6e-11e5-8065-b1c4fec53342.png)\r\n\r\n\r\n","created_at":"2015-07-17T08:30:59Z","updated_at":"2015-07-17T10:03:32Z","closed_at":null,"merged_at":null,"merge_commit_sha":"7f6371129f24b7874bb56c99107a95667825d0ed","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/nilearn/nilearn/pulls/698/commits","review_comments_url":"https://api.github.com/repos/nilearn/nilearn/pulls/698/comments","review_comment_url":"https://api.github.com/repos/nilearn/nilearn/pulls/comments{/number}","comments_url":"https://api.github.com/repos/nilearn/nilearn/issues/698/comments","statuses_url":"https://api.github.com/repos/nilearn/nilearn/statuses/ff7b676fcacafd07dbd823e3884fd59a7e363baf","head":{"label":"ahoyosid:decoder","ref":"decoder","sha":"ff7b676fcacafd07dbd823e3884fd59a7e363baf","user":{"login":"ahoyosid","id":6594763,"avatar_url":"https://avatars.githubusercontent.com/u/6594763?v=3","gravatar_id":"","url":"https://api.github.com/users/ahoyosid","html_url":"https://github.com/ahoyosid","followers_url":"https://api.github.com/users/ahoyosid/followers","following_url":"https://api.github.com/users/ahoyosid/following{/other_user}","gists_url":"https://api.github.com/users/ahoyosid/gists{/gist_id}","starred_url":"https://api.github.com/users/ahoyosid/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ahoyosid/subscriptions","organizations_url":"https://api.github.com/users/ahoyosid/orgs","repos_url":"https://api.github.com/users/ahoyosid/repos","events_url":"https://api.github.com/users/ahoyosid/events{/privacy}","received_events_url":"https://api.github.com/users/ahoyosid/received_events","type":"User","site_admin":false},"repo":{"id":39217784,"name":"nilearn","full_name":"ahoyosid/nilearn","owner":{"login":"ahoyosid","id":6594763,"avatar_url":"https://avatars.githubusercontent.com/u/6594763?v=3","gravatar_id":"","url":"https://api.github.com/users/ahoyosid","html_url":"https://github.com/ahoyosid","followers_url":"https://api.github.com/users/ahoyosid/followers","following_url":"https://api.github.com/users/ahoyosid/following{/other_user}","gists_url":"https://api.github.com/users/ahoyosid/gists{/gist_id}","starred_url":"https://api.github.com/users/ahoyosid/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ahoyosid/subscriptions","organizations_url":"https://api.github.com/users/ahoyosid/orgs","repos_url":"https://api.github.com/users/ahoyosid/repos","events_url":"https://api.github.com/users/ahoyosid/events{/privacy}","received_events_url":"https://api.github.com/users/ahoyosid/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/ahoyosid/nilearn","description":"Machine learning for NeuroImaging in Python","fork":true,"url":"https://api.github.com/repos/ahoyosid/nilearn","forks_url":"https://api.github.com/repos/ahoyosid/nilearn/forks","keys_url":"https://api.github.com/repos/ahoyosid/nilearn/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ahoyosid/nilearn/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ahoyosid/nilearn/teams","hooks_url":"https://api.github.com/repos/ahoyosid/nilearn/hooks","issue_events_url":"https://api.github.com/repos/ahoyosid/nilearn/issues/events{/number}","events_url":"https://api.github.com/repos/ahoyosid/nilearn/events","assignees_url":"https://api.github.com/repos/ahoyosid/nilearn/assignees{/user}","branches_url":"https://api.github.com/repos/ahoyosid/nilearn/branches{/branch}","tags_url":"https://api.github.com/repos/ahoyosid/nilearn/tags","blobs_url":"https://api.github.com/repos/ahoyosid/nilearn/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ahoyosid/nilearn/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ahoyosid/nilearn/git/refs{/sha}","trees_url":"https://api.github.com/repos/ahoyosid/nilearn/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ahoyosid/nilearn/statuses/{sha}","languages_url":"https://api.github.com/repos/ahoyosid/nilearn/languages","stargazers_url":"https://api.github.com/repos/ahoyosid/nilearn/stargazers","contributors_url":"https://api.github.com/repos/ahoyosid/nilearn/contributors","subscribers_url":"https://api.github.com/repos/ahoyosid/nilearn/subscribers","subscription_url":"https://api.github.com/repos/ahoyosid/nilearn/subscription","commits_url":"https://api.github.com/repos/ahoyosid/nilearn/commits{/sha}","git_commits_url":"https://api.github.com/repos/ahoyosid/nilearn/git/commits{/sha}","comments_url":"https://api.github.com/repos/ahoyosid/nilearn/comments{/number}","issue_comment_url":"https://api.github.com/repos/ahoyosid/nilearn/issues/comments{/number}","contents_url":"https://api.github.com/repos/ahoyosid/nilearn/contents/{+path}","compare_url":"https://api.github.com/repos/ahoyosid/nilearn/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ahoyosid/nilearn/merges","archive_url":"https://api.github.com/repos/ahoyosid/nilearn/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ahoyosid/nilearn/downloads","issues_url":"https://api.github.com/repos/ahoyosid/nilearn/issues{/number}","pulls_url":"https://api.github.com/repos/ahoyosid/nilearn/pulls{/number}","milestones_url":"https://api.github.com/repos/ahoyosid/nilearn/milestones{/number}","notifications_url":"https://api.github.com/repos/ahoyosid/nilearn/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ahoyosid/nilearn/labels{/name}","releases_url":"https://api.github.com/repos/ahoyosid/nilearn/releases{/id}","created_at":"2015-07-16T20:04:09Z","updated_at":"2015-07-16T20:04:10Z","pushed_at":"2015-07-17T07:40:25Z","git_url":"git://github.com/ahoyosid/nilearn.git","ssh_url":"git@github.com:ahoyosid/nilearn.git","clone_url":"https://github.com/ahoyosid/nilearn.git","svn_url":"https://github.com/ahoyosid/nilearn","homepage":"http://nilearn.github.io","size":7080,"stargazers_count":0,"watchers_count":0,"language":"Python","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":0,"default_branch":"master"}},"base":{"label":"nilearn:master","ref":"master","sha":"08f023a6185b66647eb1e0b0baa2d0e6e729c0a9","user":{"login":"nilearn","id":4646912,"avatar_url":"https://avatars.githubusercontent.com/u/4646912?v=3","gravatar_id":"","url":"https://api.github.com/users/nilearn","html_url":"https://github.com/nilearn","followers_url":"https://api.github.com/users/nilearn/followers","following_url":"https://api.github.com/users/nilearn/following{/other_user}","gists_url":"https://api.github.com/users/nilearn/gists{/gist_id}","starred_url":"https://api.github.com/users/nilearn/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nilearn/subscriptions","organizations_url":"https://api.github.com/users/nilearn/orgs","repos_url":"https://api.github.com/users/nilearn/repos","events_url":"https://api.github.com/users/nilearn/events{/privacy}","received_events_url":"https://api.github.com/users/nilearn/received_events","type":"Organization","site_admin":false},"repo":{"id":1235740,"name":"nilearn","full_name":"nilearn/nilearn","owner":{"login":"nilearn","id":4646912,"avatar_url":"https://avatars.githubusercontent.com/u/4646912?v=3","gravatar_id":"","url":"https://api.github.com/users/nilearn","html_url":"https://github.com/nilearn","followers_url":"https://api.github.com/users/nilearn/followers","following_url":"https://api.github.com/users/nilearn/following{/other_user}","gists_url":"https://api.github.com/users/nilearn/gists{/gist_id}","starred_url":"https://api.github.com/users/nilearn/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nilearn/subscriptions","organizations_url":"https://api.github.com/users/nilearn/orgs","repos_url":"https://api.github.com/users/nilearn/repos","events_url":"https://api.github.com/users/nilearn/events{/privacy}","received_events_url":"https://api.github.com/users/nilearn/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/nilearn/nilearn","description":"Machine learning for NeuroImaging in Python","fork":false,"url":"https://api.github.com/repos/nilearn/nilearn","forks_url":"https://api.github.com/repos/nilearn/nilearn/forks","keys_url":"https://api.github.com/repos/nilearn/nilearn/keys{/key_id}","collaborators_url":"https://api.github.com/repos/nilearn/nilearn/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/nilearn/nilearn/teams","hooks_url":"https://api.github.com/repos/nilearn/nilearn/hooks","issue_events_url":"https://api.github.com/repos/nilearn/nilearn/issues/events{/number}","events_url":"https://api.github.com/repos/nilearn/nilearn/events","assignees_url":"https://api.github.com/repos/nilearn/nilearn/assignees{/user}","branches_url":"https://api.github.com/repos/nilearn/nilearn/branches{/branch}","tags_url":"https://api.github.com/repos/nilearn/nilearn/tags","blobs_url":"https://api.github.com/repos/nilearn/nilearn/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/nilearn/nilearn/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/nilearn/nilearn/git/refs{/sha}","trees_url":"https://api.github.com/repos/nilearn/nilearn/git/trees{/sha}","statuses_url":"https://api.github.com/repos/nilearn/nilearn/statuses/{sha}","languages_url":"https://api.github.com/repos/nilearn/nilearn/languages","stargazers_url":"https://api.github.com/repos/nilearn/nilearn/stargazers","contributors_url":"https://api.github.com/repos/nilearn/nilearn/contributors","subscribers_url":"https://api.github.com/repos/nilearn/nilearn/subscribers","subscription_url":"https://api.github.com/repos/nilearn/nilearn/subscription","commits_url":"https://api.github.com/repos/nilearn/nilearn/commits{/sha}","git_commits_url":"https://api.github.com/repos/nilearn/nilearn/git/commits{/sha}","comments_url":"https://api.github.com/repos/nilearn/nilearn/comments{/number}","issue_comment_url":"https://api.github.com/repos/nilearn/nilearn/issues/comments{/number}","contents_url":"https://api.github.com/repos/nilearn/nilearn/contents/{+path}","compare_url":"https://api.github.com/repos/nilearn/nilearn/compare/{base}...{head}","merges_url":"https://api.github.com/repos/nilearn/nilearn/merges","archive_url":"https://api.github.com/repos/nilearn/nilearn/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/nilearn/nilearn/downloads","issues_url":"https://api.github.com/repos/nilearn/nilearn/issues{/number}","pulls_url":"https://api.github.com/repos/nilearn/nilearn/pulls{/number}","milestones_url":"https://api.github.com/repos/nilearn/nilearn/milestones{/number}","notifications_url":"https://api.github.com/repos/nilearn/nilearn/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/nilearn/nilearn/labels{/name}","releases_url":"https://api.github.com/repos/nilearn/nilearn/releases{/id}","created_at":"2011-01-09T19:02:23Z","updated_at":"2015-07-14T23:48:39Z","pushed_at":"2015-07-17T09:57:25Z","git_url":"git://github.com/nilearn/nilearn.git","ssh_url":"git@github.com:nilearn/nilearn.git","clone_url":"https://github.com/nilearn/nilearn.git","svn_url":"https://github.com/nilearn/nilearn","homepage":"http://nilearn.github.io","size":15154,"stargazers_count":101,"watchers_count":101,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":71,"mirror_url":null,"open_issues_count":85,"forks":71,"open_issues":85,"watchers":101,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/nilearn/nilearn/pulls/698"},"html":{"href":"https://github.com/nilearn/nilearn/pull/698"},"issue":{"href":"https://api.github.com/repos/nilearn/nilearn/issues/698"},"comments":{"href":"https://api.github.com/repos/nilearn/nilearn/issues/698/comments"},"review_comments":{"href":"https://api.github.com/repos/nilearn/nilearn/pulls/698/comments"},"review_comment":{"href":"https://api.github.com/repos/nilearn/nilearn/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/nilearn/nilearn/pulls/698/commits"},"statuses":{"href":"https://api.github.com/repos/nilearn/nilearn/statuses/ff7b676fcacafd07dbd823e3884fd59a7e363baf"}}}}