{"action":"created","comment":{"url":"https://api.github.com/repos/mne-tools/mne-python/pulls/comments/38575432","id":38575432,"diff_hunk":"@@ -0,0 +1,393 @@\n+\"\"\" Cross frequency coupling functions. \"\"\"\n+# Authors: Praveen Sripad <praveen.sripad@rwth-aachen.de>\n+#          Alexandre Gramfort <alexandre.gramfort@telecom-paristech.fr>\n+#          Christopher Holdgraf <choldgraf@berkeley.edu>\n+#\n+# License: BSD (3-clause)\n+\n+import numpy as np\n+from numpy.random import shuffle\n+\n+from ..stats import fdr_correction\n+from ..time_frequency import morlet\n+from ..time_frequency.tfr import cwt\n+from ..preprocessing.peak_finder import peak_finder\n+from ..filter import band_pass_filter\n+from ..parallel import parallel_func\n+from ..utils import check_random_state, ProgressBar\n+\n+\n+def _abs_cwt(x, W):\n+    \"\"\" Aux function \"\"\"\n+    return np.abs(cwt(x, [W], use_fft=False).ravel()).astype(np.float)\n+\n+\n+def shuffle_data(data):\n+    \"\"\" Returns a copy of the shuffled data.\n+\n+    Parameters\n+    ----------\n+    data : array (n_epochs, n_times)\n+        Input array to be shuffled.\n+\n+    Returns\n+    -------\n+    shuffled_data : ndarray, shape (n_epochs, n_times)\n+        The shuffled data, with each epoch shuffled across n_times.\n+    \"\"\"\n+    shuffled_data = data.copy()\n+    map(shuffle, shuffled_data)\n+    return shuffled_data\n+\n+\n+def phase_locked_amplitude(data, sfreq, freq_phase, freqs_amplitude,\n+                           n_cycles=5, tmin=-.5, tmax=.5, n_jobs=1):\n+    \"\"\" Compute the phase peak-triggered amplitude of a signal.\n+\n+    Parameters\n+    ----------\n+    data : array, shape (n_times,)\n+        Signal time series.\n+    sfreq : float\n+        Sampling frequency.\n+    freq_phase : float\n+        The phase modulating frequency in Hz. (eg. 10.) This is the low\n+        frequency wave you expect to modify high-frequency amplitude.\n+    freqs_amplitude : array, shape (n_freqs,)\n+        Frequencies of interest for amplitude modulation. Generally\n+        this is a range of frequencies.\n+    n_cycles : float\n+        Number of cycles used to compute Morlet wavelets.\n+    tmin : float, (negative)\n+        Start time (s) before phase peak.\n+    tmax : float, (positive)\n+        End time (s) after phase peak.\n+    n_jobs : int\n+        Number of jobs to run in parallel. Default 1.\n+\n+    Returns\n+    -------\n+    times : array, shape (n_times,)\n+        Time points bef/after a phase peak for signal plotting.\n+    raw_spec_amplitude : ndarray (n_freqs, n_times)\n+        Time-frequency amplitude traces for amplitude modulated frequencies.\n+    evoked_spec_amplitude : ndarray, shape (n_freqs, n_times_epoch)\n+        The average evoked spectral amplitude before/after phase peaks. This\n+        will have a peri-peak time window where tmin < times < tmax.\n+    evoked_raw : array, shape (n_times_epoch,)\n+        Average (or evoked) raw signal before/after phase peaks. This\n+        will have a peri-peak time window where tmin < times < tmax.\n+    trigger_inds : array (trigger_inds,)\n+        Indices of maxima in the phase signal.\n+\n+    References\n+    ----------\n+    [1] High gamma power is phase-locked to theta oscillations in human\n+    neocortex. Canolty RT1, Edwards E, Dalal SS, Soltani M, Nagarajan SS,\n+    Kirsch HE, Berger MS, Barbaro NM, Knight RT.\n+    (Science. 2006)\n+    \"\"\"\n+\n+    if data.ndim != 1:\n+        raise ValueError('Dimensions of data incorrect. Please use 1d array.')\n+\n+    Ws = morlet(sfreq, [freq_phase], n_cycles=n_cycles,\n+                sigma=None, zero_mean=True)\n+    data = data.reshape([1, -1])\n+    x_low = cwt(data, Ws, use_fft=False).ravel()\n+\n+    # Calculate phase of low frequency and find phase peaks for time-locking\n+    phases = np.angle(x_low)\n+    trigger_inds, _ = peak_finder(phases)\n+\n+    n_times = data.shape[1]\n+    n_freqs = len(freqs_amplitude)\n+\n+    if tmin > 0 or tmax < 0:\n+        raise ValueError('tmin must be < 0 and tmax must be > 0')\n+\n+    # obtain min and max indices around phase peaks\n+    n_times_min = np.abs(int(round(tmin * sfreq)))\n+    n_times_max = np.abs(int(round(tmax * sfreq)))\n+    times = np.arange(-n_times_min, n_times_max, dtype=np.float) / sfreq\n+\n+    # makes sure all triggers have enough time bef/after phase peak\n+    trigger_inds = trigger_inds[trigger_inds > n_times_min]\n+    trigger_inds = trigger_inds[trigger_inds < n_times - n_times_max]\n+\n+    # Compute amplitude for amplitude modulated frequencies\n+    Ws = morlet(sfreq, freqs_amplitude, n_cycles=n_cycles, sigma=None,\n+                zero_mean=True)\n+\n+    parallel, my_abs_cwt, n_jobs = parallel_func(_abs_cwt, n_jobs)\n+\n+    if n_jobs == 1:\n+        raw_spec_amplitude = np.empty((n_freqs, n_times), dtype=np.float)\n+        for e, W in enumerate(Ws):\n+            raw_spec_amplitude[e] = np.array(_abs_cwt(data, W))\n+    else:\n+        raw_spec_amplitude = np.array(\n+            parallel(my_abs_cwt(data, W) for W in Ws))\n+\n+    # zscore for normalization\n+    raw_spec_amplitude -= np.mean(raw_spec_amplitude, axis=1)[:, None]","path":"mne/connectivity/cfc.py","position":null,"original_position":133,"commit_id":"0dd5f97f53e00b2f57f50159e2386d106907762a","original_commit_id":"241e6e688765275738f68cf7ff1076de1582f122","user":{"login":"choldgraf","id":1839645,"avatar_url":"https://avatars.githubusercontent.com/u/1839645?v=3","gravatar_id":"","url":"https://api.github.com/users/choldgraf","html_url":"https://github.com/choldgraf","followers_url":"https://api.github.com/users/choldgraf/followers","following_url":"https://api.github.com/users/choldgraf/following{/other_user}","gists_url":"https://api.github.com/users/choldgraf/gists{/gist_id}","starred_url":"https://api.github.com/users/choldgraf/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/choldgraf/subscriptions","organizations_url":"https://api.github.com/users/choldgraf/orgs","repos_url":"https://api.github.com/users/choldgraf/repos","events_url":"https://api.github.com/users/choldgraf/events{/privacy}","received_events_url":"https://api.github.com/users/choldgraf/received_events","type":"User","site_admin":false},"body":"OK, I added in bits to the tests so that they actually do tests on CFC\nsimulated data. Regarding function naming etc, not sure if anyone has\nstrong thoughts on that. I renamed the functions already so that they are\nmore \"this is what I will do with the data\" and less \"this is what the\noriginal journal article called me\". I need to propagate that to other\nparts of the code too (e.g., it shouldn't be called\n\"plot_phase_amplitude_coupling\" but instead\n\"plot_cross_freq_phase_binned_connectivity\" or something like this).\nThoughts?\n\nOn Mon, Aug 31, 2015 at 3:27 AM, Eric Larson <notifications@github.com>\nwrote:\n\n> In mne/connectivity/cfc.py\n> <https://github.com/mne-tools/mne-python/pull/2306#discussion_r38300160>:\n>\n> > +    # Compute amplitude for amplitude modulated frequencies\n> > +    Ws = morlet(sfreq, freqs_amplitude, n_cycles=n_cycles, sigma=None,\n> > +                zero_mean=True)\n> > +\n> > +    parallel, my_abs_cwt, n_jobs = parallel_func(_abs_cwt, n_jobs)\n> > +\n> > +    if n_jobs == 1:\n> > +        raw_spec_amplitude = np.empty((n_freqs, n_times), dtype=np.float)\n> > +        for e, W in enumerate(Ws):\n> > +            raw_spec_amplitude[e] = np.array(_abs_cwt(data, W))\n> > +    else:\n> > +        raw_spec_amplitude = np.array(\n> > +            parallel(my_abs_cwt(data, W) for W in Ws))\n> > +\n> > +    # zscore for normalization\n> > +    raw_spec_amplitude -= np.mean(raw_spec_amplitude, axis=1)[:, None]\n>\n> use np.newaxis instead of None -- even though it's an alias *right now*,\n> it is more explicit and if they ever improve it to be something more than\n> None later we will benefit\n>\n> —\n> Reply to this email directly or view it on GitHub\n> <https://github.com/mne-tools/mne-python/pull/2306/files#r38300160>.\n>\n","created_at":"2015-09-02T19:46:50Z","updated_at":"2015-09-02T19:46:50Z","html_url":"https://github.com/mne-tools/mne-python/pull/2306#discussion_r38575432","pull_request_url":"https://api.github.com/repos/mne-tools/mne-python/pulls/2306","_links":{"self":{"href":"https://api.github.com/repos/mne-tools/mne-python/pulls/comments/38575432"},"html":{"href":"https://github.com/mne-tools/mne-python/pull/2306#discussion_r38575432"},"pull_request":{"href":"https://api.github.com/repos/mne-tools/mne-python/pulls/2306"}}},"pull_request":{"url":"https://api.github.com/repos/mne-tools/mne-python/pulls/2306","id":40149782,"html_url":"https://github.com/mne-tools/mne-python/pull/2306","diff_url":"https://github.com/mne-tools/mne-python/pull/2306.diff","patch_url":"https://github.com/mne-tools/mne-python/pull/2306.patch","issue_url":"https://api.github.com/repos/mne-tools/mne-python/issues/2306","number":2306,"state":"open","locked":false,"title":"Add support for cross-frequency coupling and circular stats","user":{"login":"choldgraf","id":1839645,"avatar_url":"https://avatars.githubusercontent.com/u/1839645?v=3","gravatar_id":"","url":"https://api.github.com/users/choldgraf","html_url":"https://github.com/choldgraf","followers_url":"https://api.github.com/users/choldgraf/followers","following_url":"https://api.github.com/users/choldgraf/following{/other_user}","gists_url":"https://api.github.com/users/choldgraf/gists{/gist_id}","starred_url":"https://api.github.com/users/choldgraf/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/choldgraf/subscriptions","organizations_url":"https://api.github.com/users/choldgraf/orgs","repos_url":"https://api.github.com/users/choldgraf/repos","events_url":"https://api.github.com/users/choldgraf/events{/privacy}","received_events_url":"https://api.github.com/users/choldgraf/received_events","type":"User","site_admin":false},"body":"This is a clone of #1388, also discussed in #182 \r\n\r\nNext up is to decide whether to keep the basic functionality the same, or to include ability to compute CFC between multiple signals (so it would behave similarly to the `spectral_connectivity` function)","created_at":"2015-07-16T16:41:10Z","updated_at":"2015-09-02T19:46:50Z","closed_at":null,"merged_at":null,"merge_commit_sha":"2889e6a7afe797b0a95ad1e35e30276486ac856d","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/mne-tools/mne-python/pulls/2306/commits","review_comments_url":"https://api.github.com/repos/mne-tools/mne-python/pulls/2306/comments","review_comment_url":"https://api.github.com/repos/mne-tools/mne-python/pulls/comments{/number}","comments_url":"https://api.github.com/repos/mne-tools/mne-python/issues/2306/comments","statuses_url":"https://api.github.com/repos/mne-tools/mne-python/statuses/0dd5f97f53e00b2f57f50159e2386d106907762a","head":{"label":"choldgraf:add_cfc","ref":"add_cfc","sha":"0dd5f97f53e00b2f57f50159e2386d106907762a","user":{"login":"choldgraf","id":1839645,"avatar_url":"https://avatars.githubusercontent.com/u/1839645?v=3","gravatar_id":"","url":"https://api.github.com/users/choldgraf","html_url":"https://github.com/choldgraf","followers_url":"https://api.github.com/users/choldgraf/followers","following_url":"https://api.github.com/users/choldgraf/following{/other_user}","gists_url":"https://api.github.com/users/choldgraf/gists{/gist_id}","starred_url":"https://api.github.com/users/choldgraf/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/choldgraf/subscriptions","organizations_url":"https://api.github.com/users/choldgraf/orgs","repos_url":"https://api.github.com/users/choldgraf/repos","events_url":"https://api.github.com/users/choldgraf/events{/privacy}","received_events_url":"https://api.github.com/users/choldgraf/received_events","type":"User","site_admin":false},"repo":{"id":29602471,"name":"mne-python","full_name":"choldgraf/mne-python","owner":{"login":"choldgraf","id":1839645,"avatar_url":"https://avatars.githubusercontent.com/u/1839645?v=3","gravatar_id":"","url":"https://api.github.com/users/choldgraf","html_url":"https://github.com/choldgraf","followers_url":"https://api.github.com/users/choldgraf/followers","following_url":"https://api.github.com/users/choldgraf/following{/other_user}","gists_url":"https://api.github.com/users/choldgraf/gists{/gist_id}","starred_url":"https://api.github.com/users/choldgraf/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/choldgraf/subscriptions","organizations_url":"https://api.github.com/users/choldgraf/orgs","repos_url":"https://api.github.com/users/choldgraf/repos","events_url":"https://api.github.com/users/choldgraf/events{/privacy}","received_events_url":"https://api.github.com/users/choldgraf/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/choldgraf/mne-python","description":"MNE : Magnetoencephalography (MEG) and Electroencephalography (EEG) in Python","fork":true,"url":"https://api.github.com/repos/choldgraf/mne-python","forks_url":"https://api.github.com/repos/choldgraf/mne-python/forks","keys_url":"https://api.github.com/repos/choldgraf/mne-python/keys{/key_id}","collaborators_url":"https://api.github.com/repos/choldgraf/mne-python/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/choldgraf/mne-python/teams","hooks_url":"https://api.github.com/repos/choldgraf/mne-python/hooks","issue_events_url":"https://api.github.com/repos/choldgraf/mne-python/issues/events{/number}","events_url":"https://api.github.com/repos/choldgraf/mne-python/events","assignees_url":"https://api.github.com/repos/choldgraf/mne-python/assignees{/user}","branches_url":"https://api.github.com/repos/choldgraf/mne-python/branches{/branch}","tags_url":"https://api.github.com/repos/choldgraf/mne-python/tags","blobs_url":"https://api.github.com/repos/choldgraf/mne-python/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/choldgraf/mne-python/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/choldgraf/mne-python/git/refs{/sha}","trees_url":"https://api.github.com/repos/choldgraf/mne-python/git/trees{/sha}","statuses_url":"https://api.github.com/repos/choldgraf/mne-python/statuses/{sha}","languages_url":"https://api.github.com/repos/choldgraf/mne-python/languages","stargazers_url":"https://api.github.com/repos/choldgraf/mne-python/stargazers","contributors_url":"https://api.github.com/repos/choldgraf/mne-python/contributors","subscribers_url":"https://api.github.com/repos/choldgraf/mne-python/subscribers","subscription_url":"https://api.github.com/repos/choldgraf/mne-python/subscription","commits_url":"https://api.github.com/repos/choldgraf/mne-python/commits{/sha}","git_commits_url":"https://api.github.com/repos/choldgraf/mne-python/git/commits{/sha}","comments_url":"https://api.github.com/repos/choldgraf/mne-python/comments{/number}","issue_comment_url":"https://api.github.com/repos/choldgraf/mne-python/issues/comments{/number}","contents_url":"https://api.github.com/repos/choldgraf/mne-python/contents/{+path}","compare_url":"https://api.github.com/repos/choldgraf/mne-python/compare/{base}...{head}","merges_url":"https://api.github.com/repos/choldgraf/mne-python/merges","archive_url":"https://api.github.com/repos/choldgraf/mne-python/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/choldgraf/mne-python/downloads","issues_url":"https://api.github.com/repos/choldgraf/mne-python/issues{/number}","pulls_url":"https://api.github.com/repos/choldgraf/mne-python/pulls{/number}","milestones_url":"https://api.github.com/repos/choldgraf/mne-python/milestones{/number}","notifications_url":"https://api.github.com/repos/choldgraf/mne-python/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/choldgraf/mne-python/labels{/name}","releases_url":"https://api.github.com/repos/choldgraf/mne-python/releases{/id}","created_at":"2015-01-21T17:41:37Z","updated_at":"2015-01-21T17:41:40Z","pushed_at":"2015-09-02T19:41:58Z","git_url":"git://github.com/choldgraf/mne-python.git","ssh_url":"git@github.com:choldgraf/mne-python.git","clone_url":"https://github.com/choldgraf/mne-python.git","svn_url":"https://github.com/choldgraf/mne-python","homepage":"http://martinos.org/mne/","size":81128,"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":"mne-tools:master","ref":"master","sha":"05f0f9eba5c602bf77fe8f430b3c430b21b0784b","user":{"login":"mne-tools","id":583875,"avatar_url":"https://avatars.githubusercontent.com/u/583875?v=3","gravatar_id":"","url":"https://api.github.com/users/mne-tools","html_url":"https://github.com/mne-tools","followers_url":"https://api.github.com/users/mne-tools/followers","following_url":"https://api.github.com/users/mne-tools/following{/other_user}","gists_url":"https://api.github.com/users/mne-tools/gists{/gist_id}","starred_url":"https://api.github.com/users/mne-tools/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mne-tools/subscriptions","organizations_url":"https://api.github.com/users/mne-tools/orgs","repos_url":"https://api.github.com/users/mne-tools/repos","events_url":"https://api.github.com/users/mne-tools/events{/privacy}","received_events_url":"https://api.github.com/users/mne-tools/received_events","type":"Organization","site_admin":false},"repo":{"id":1301584,"name":"mne-python","full_name":"mne-tools/mne-python","owner":{"login":"mne-tools","id":583875,"avatar_url":"https://avatars.githubusercontent.com/u/583875?v=3","gravatar_id":"","url":"https://api.github.com/users/mne-tools","html_url":"https://github.com/mne-tools","followers_url":"https://api.github.com/users/mne-tools/followers","following_url":"https://api.github.com/users/mne-tools/following{/other_user}","gists_url":"https://api.github.com/users/mne-tools/gists{/gist_id}","starred_url":"https://api.github.com/users/mne-tools/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mne-tools/subscriptions","organizations_url":"https://api.github.com/users/mne-tools/orgs","repos_url":"https://api.github.com/users/mne-tools/repos","events_url":"https://api.github.com/users/mne-tools/events{/privacy}","received_events_url":"https://api.github.com/users/mne-tools/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/mne-tools/mne-python","description":"MNE : Magnetoencephalography (MEG) and Electroencephalography (EEG) in Python","fork":false,"url":"https://api.github.com/repos/mne-tools/mne-python","forks_url":"https://api.github.com/repos/mne-tools/mne-python/forks","keys_url":"https://api.github.com/repos/mne-tools/mne-python/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mne-tools/mne-python/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mne-tools/mne-python/teams","hooks_url":"https://api.github.com/repos/mne-tools/mne-python/hooks","issue_events_url":"https://api.github.com/repos/mne-tools/mne-python/issues/events{/number}","events_url":"https://api.github.com/repos/mne-tools/mne-python/events","assignees_url":"https://api.github.com/repos/mne-tools/mne-python/assignees{/user}","branches_url":"https://api.github.com/repos/mne-tools/mne-python/branches{/branch}","tags_url":"https://api.github.com/repos/mne-tools/mne-python/tags","blobs_url":"https://api.github.com/repos/mne-tools/mne-python/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mne-tools/mne-python/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mne-tools/mne-python/git/refs{/sha}","trees_url":"https://api.github.com/repos/mne-tools/mne-python/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mne-tools/mne-python/statuses/{sha}","languages_url":"https://api.github.com/repos/mne-tools/mne-python/languages","stargazers_url":"https://api.github.com/repos/mne-tools/mne-python/stargazers","contributors_url":"https://api.github.com/repos/mne-tools/mne-python/contributors","subscribers_url":"https://api.github.com/repos/mne-tools/mne-python/subscribers","subscription_url":"https://api.github.com/repos/mne-tools/mne-python/subscription","commits_url":"https://api.github.com/repos/mne-tools/mne-python/commits{/sha}","git_commits_url":"https://api.github.com/repos/mne-tools/mne-python/git/commits{/sha}","comments_url":"https://api.github.com/repos/mne-tools/mne-python/comments{/number}","issue_comment_url":"https://api.github.com/repos/mne-tools/mne-python/issues/comments{/number}","contents_url":"https://api.github.com/repos/mne-tools/mne-python/contents/{+path}","compare_url":"https://api.github.com/repos/mne-tools/mne-python/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mne-tools/mne-python/merges","archive_url":"https://api.github.com/repos/mne-tools/mne-python/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mne-tools/mne-python/downloads","issues_url":"https://api.github.com/repos/mne-tools/mne-python/issues{/number}","pulls_url":"https://api.github.com/repos/mne-tools/mne-python/pulls{/number}","milestones_url":"https://api.github.com/repos/mne-tools/mne-python/milestones{/number}","notifications_url":"https://api.github.com/repos/mne-tools/mne-python/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mne-tools/mne-python/labels{/name}","releases_url":"https://api.github.com/repos/mne-tools/mne-python/releases{/id}","created_at":"2011-01-28T03:31:13Z","updated_at":"2015-08-23T12:38:45Z","pushed_at":"2015-09-02T19:42:00Z","git_url":"git://github.com/mne-tools/mne-python.git","ssh_url":"git@github.com:mne-tools/mne-python.git","clone_url":"https://github.com/mne-tools/mne-python.git","svn_url":"https://github.com/mne-tools/mne-python","homepage":"http://martinos.org/mne/","size":181968,"stargazers_count":145,"watchers_count":145,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":140,"mirror_url":null,"open_issues_count":196,"forks":140,"open_issues":196,"watchers":145,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/mne-tools/mne-python/pulls/2306"},"html":{"href":"https://github.com/mne-tools/mne-python/pull/2306"},"issue":{"href":"https://api.github.com/repos/mne-tools/mne-python/issues/2306"},"comments":{"href":"https://api.github.com/repos/mne-tools/mne-python/issues/2306/comments"},"review_comments":{"href":"https://api.github.com/repos/mne-tools/mne-python/pulls/2306/comments"},"review_comment":{"href":"https://api.github.com/repos/mne-tools/mne-python/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/mne-tools/mne-python/pulls/2306/commits"},"statuses":{"href":"https://api.github.com/repos/mne-tools/mne-python/statuses/0dd5f97f53e00b2f57f50159e2386d106907762a"}}}}