{"action":"created","comment":{"url":"https://api.github.com/repos/ewels/MultiQC/pulls/comments/203129753","pull_request_review_id":137958863,"id":203129753,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIwMzEyOTc1Mw==","diff_hunk":"@@ -0,0 +1,688 @@\n+#!/usr/bin/env python\n+\n+\"\"\" MultiQC module to parse output from BISCUIT \"\"\"\n+\n+from __future__ import print_function\n+from collections import OrderedDict\n+import logging\n+import re\n+\n+from multiqc import config\n+from multiqc.plots import beeswarm, linegraph, bargraph, table\n+from multiqc.modules.base_module import BaseMultiqcModule\n+\n+# Initialise the logger\n+log = logging.getLogger(__name__)\n+\n+def _uniquify_ID(data, header, namespace):\n+    header2 = dict([(namespace+k, v) for k, v in header.items()])\n+    data2 = {}\n+    for sid, datum in data.items():\n+        data2[sid] = dict([(namespace+k,v) for k, v in datum.items()])\n+\n+    return (data2, header2)\n+\n+# Log parsing regexes\n+class MultiqcModule(BaseMultiqcModule):\n+\n+    def __init__(self):\n+\n+        # Initialise the parent object\n+        super(MultiqcModule, self).__init__(name='BISCUIT', anchor='biscuit',\n+        href=\"https://github.com/zwdzwd/biscuit\",\n+        info=\"is a tool to map bisulfite converted sequence reads and determine\"\\\n+        \" cytosine methylation states.\")\n+\n+        # Set up data structures\n+        self.mdata = {\n+            'mapq': {},\n+            'markdup': {},\n+            'coverage': {},\n+            'retention': {},\n+        }\n+\n+        # Find and parse bismark alignment reports\n+        for k in self.mdata:\n+            for f in self.find_log_files('biscuit/%s' % k):\n+                d = getattr(self, 'parse_logs_%s' % k)(f['f'], f['fn'])\n+                self.mdata[k][f['fn']] = d\n+\n+        num_parsed = 0\n+        for k in self.mdata:\n+            num_parsed += len(self.mdata[k])\n+        if num_parsed == 0:\n+            raise UserWarning\n+\n+        # Basic Stats Table\n+        self.biscuit_stats_table()\n+\n+        # Write out to the report\n+        for k in self.mdata:\n+            if len(self.mdata[k]) > 0:\n+                self.write_data_file(self.mdata[k], 'multiqc_biscuit_%s' % k)\n+                log.info(\"Found %d biscuit %s reports\" % (len(self.mdata[k]), k))\n+                if k != 'markdup':\n+                    getattr(self, 'chart_biscuit_%s' % k)()\n+\n+    def biscuit_stats_table(self):\n+\n+        pd = {}\n+        for sid, dd in self.mdata['mapq'].items():\n+            if not sid.endswith('_mapq_table.txt'):\n+                continue\n+            sid = sid.replace('_mapq_table.txt','')\n+            allreads = sum([int(_) for _ in dd.values()])\n+            pd[sid] = {'%aligned': float(allreads-int(dd['unmapped']))/allreads*100}\n+        \n+        hasPE = False\n+        hasSE = False\n+        for sid, dd in self.mdata['markdup'].items():\n+            sid = sid.replace('_markdup_report.txt','')\n+            sid = sid.replace('_markdup.bam','')\n+            sid = sid.replace('.bam','')\n+            sid = sid.replace('_markdup','')\n+            if sid not in pd:\n+                pd[sid] = {}\n+            if 'dupRatePE' in dd and dd['dupRatePE'] is not None:\n+                pd[sid]['%dupratePE'] = dd['dupRatePE']\n+                hasPE = True\n+            if 'dupRateSE' in dd and dd['dupRateSE'] is not None:\n+                pd[sid]['%duprateSE'] = dd['dupRateSE']\n+                hasSE = True\n+\n+        pheader = OrderedDict()\n+        pheader['%aligned'] = {'title':'% Aligned', 'max':100, 'min':0, 'suffix':'%','scale':'Greens'}\n+        if hasPE:\n+            pheader['%dupratePE'] = {'title':'% DupsPE', 'max':100, 'min':0, 'suffix':'%','scale':'Reds'}\n+        if hasSE:\n+            pheader['%duprateSE'] = {'title':'% DupsSE', 'max':100, 'min':0, 'suffix':'%','scale':'Reds'}\n+        self.general_stats_addcols(pd, pheader)\n+\n+        # if len(mdata)>0 and all([dd['Duplication Rate'] is not None for dd in mdata.values()]):\n+        # self.general_stats_addcols(mdata, {'% Dup': {'suffix':'%', 'min':0, 'max':100}})\n+\n+\n+    def parse_logs_mapq(self, f, fn):\n+\n+        data = {}\n+        if fn.endswith('_mapq_table.txt'):\n+            for l in f.splitlines():\n+                s = l.split()\n+                data[s[0]] = s[1]   # mapping quality > number of reads\n+                \n+        if fn.endswith('_strand_table.txt'):\n+            for l in f.splitlines():\n+                m = re.search(r'strand\\t([+-]*)\\t(\\d+)', l)\n+                if m is not None:\n+                    data[m.group(1)] = int(m.group(2))\n+\n+        if fn.endswith('_isize_score_table.txt'):\n+            data['I'] = {}      # insert size\n+            data['S'] = {}      # SW-score\n+\n+            for l in f.splitlines():\n+                fields = l.split()\n+                if fields[0] == 'I':\n+                    data[fields[0]][int(fields[1])] = float(fields[2]) * 100\n+                elif fields[0] == 'S':\n+                    data[fields[0]][fields[1]] = float(fields[2])\n+                \n+        return data\n+    \n+    def chart_biscuit_mapq(self):\n+\n+        # fraction of optimally mapped reads\n+        pd = {}\n+        for sid, dd in self.mdata['mapq'].items():\n+            if not sid.endswith('_mapq_table.txt'):\n+                continue\n+            sid = sid.replace('_mapq_table.txt','');\n+            pd[sid] = {'OAligned':0, 'SAligned':0, 'UAligned':1}\n+            for mapq, cnt in dd.items():\n+                if mapq == 'unmapped':\n+                    pd[sid]['UAligned'] += int(cnt)\n+                elif int(mapq) >= 40:\n+                    pd[sid]['OAligned'] += int(cnt)\n+                else:\n+                    pd[sid]['SAligned'] += int(cnt)\n+\n+        self.add_section(\n+            name = 'Mapping Summary',\n+            anchor = 'biscuit-mapping',\n+            plot = bargraph.plot(pd, OrderedDict([\n+                ('OAligned', {'name':'Optimally Aligned Reads', 'color': '#8bbc21'}),\n+                ('SAligned', {'name':'Suboptimally Aligned Reads', 'color': '#f7a35c'}),\n+                ('UAligned', {'name':'Unaligned Reads', 'color': '#000000'})\n+            ]), {'id':'biscuit_mapping_summary',\n+                 'title':'BISCUIT: Mapping Summary',\n+                 'ylab':'Number of Reads',\n+                 'cpswitch_c_active': True,\n+                 'cpswitch_counts_label': '# Reads'\n+            })\n+        )\n+\n+        # mapping strand distribution\n+        pd = dict([(k.replace('_strand_table.txt', ''),v) for k,v in self.mdata['mapq'].items() if k.endswith('_strand_table.txt')])\n+        self.add_section(\n+            name='Mapping Strand Distribution',\n+            anchor='biscuit-strands',\n+            description = \"<p>This plot shows the distribution of strand of mapping and strand of bisulfite conversion.</p>\",\n+            plot = bargraph.plot(pd, OrderedDict([\n+                ('++', {'name':'Waston-Aligned, Waston-Bisulfite Conversion', 'color': '#F53855'}),","path":"multiqc/modules/biscuit/biscuit.py","position":null,"original_position":171,"commit_id":"457badb412c99cdc5bf7e4b4eb991b88a26e197c","original_commit_id":"14b19c66a5640aa0ee94d471502a03eedd343deb","user":{"login":"zwdzwd","id":7670339,"node_id":"MDQ6VXNlcjc2NzAzMzk=","avatar_url":"https://avatars0.githubusercontent.com/u/7670339?v=4","gravatar_id":"","url":"https://api.github.com/users/zwdzwd","html_url":"https://github.com/zwdzwd","followers_url":"https://api.github.com/users/zwdzwd/followers","following_url":"https://api.github.com/users/zwdzwd/following{/other_user}","gists_url":"https://api.github.com/users/zwdzwd/gists{/gist_id}","starred_url":"https://api.github.com/users/zwdzwd/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zwdzwd/subscriptions","organizations_url":"https://api.github.com/users/zwdzwd/orgs","repos_url":"https://api.github.com/users/zwdzwd/repos","events_url":"https://api.github.com/users/zwdzwd/events{/privacy}","received_events_url":"https://api.github.com/users/zwdzwd/received_events","type":"User","site_admin":false},"body":"I leave the color of this one as it appears to highlight the contrast better. I think the color code I was using comes from the Documentation IIRC.","created_at":"2018-07-17T18:21:07Z","updated_at":"2018-07-17T18:21:07Z","html_url":"https://github.com/ewels/MultiQC/pull/690#discussion_r203129753","pull_request_url":"https://api.github.com/repos/ewels/MultiQC/pulls/690","author_association":"NONE","_links":{"self":{"href":"https://api.github.com/repos/ewels/MultiQC/pulls/comments/203129753"},"html":{"href":"https://github.com/ewels/MultiQC/pull/690#discussion_r203129753"},"pull_request":{"href":"https://api.github.com/repos/ewels/MultiQC/pulls/690"}},"in_reply_to_id":202054622},"pull_request":{"url":"https://api.github.com/repos/ewels/MultiQC/pulls/690","id":170921009,"node_id":"MDExOlB1bGxSZXF1ZXN0MTcwOTIxMDA5","html_url":"https://github.com/ewels/MultiQC/pull/690","diff_url":"https://github.com/ewels/MultiQC/pull/690.diff","patch_url":"https://github.com/ewels/MultiQC/pull/690.patch","issue_url":"https://api.github.com/repos/ewels/MultiQC/issues/690","number":690,"state":"open","locked":false,"title":"Add biscuit module","user":{"login":"zwdzwd","id":7670339,"node_id":"MDQ6VXNlcjc2NzAzMzk=","avatar_url":"https://avatars0.githubusercontent.com/u/7670339?v=4","gravatar_id":"","url":"https://api.github.com/users/zwdzwd","html_url":"https://github.com/zwdzwd","followers_url":"https://api.github.com/users/zwdzwd/followers","following_url":"https://api.github.com/users/zwdzwd/following{/other_user}","gists_url":"https://api.github.com/users/zwdzwd/gists{/gist_id}","starred_url":"https://api.github.com/users/zwdzwd/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zwdzwd/subscriptions","organizations_url":"https://api.github.com/users/zwdzwd/orgs","repos_url":"https://api.github.com/users/zwdzwd/repos","events_url":"https://api.github.com/users/zwdzwd/events{/privacy}","received_events_url":"https://api.github.com/users/zwdzwd/received_events","type":"User","site_admin":false},"body":"This adds support for QC output from BISCUIT. This includes: QC for mapping uniformity, retention rates, duplication uniformity, CpG coverage, methylation bias, mapping summary, etc. Initial testing should pass with the test data on MultiQC_TestData (also a pull request there). Please review. Thank you.","created_at":"2018-02-23T02:53:16Z","updated_at":"2018-07-17T18:21:07Z","closed_at":null,"merged_at":null,"merge_commit_sha":"0fed76846db622fdf80132dbda2370dcf9b1e113","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":699023547,"node_id":"MDU6TGFiZWw2OTkwMjM1NDc=","url":"https://api.github.com/repos/ewels/MultiQC/labels/awaiting-changes","name":"awaiting-changes","color":"fef2c0","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/ewels/MultiQC/pulls/690/commits","review_comments_url":"https://api.github.com/repos/ewels/MultiQC/pulls/690/comments","review_comment_url":"https://api.github.com/repos/ewels/MultiQC/pulls/comments{/number}","comments_url":"https://api.github.com/repos/ewels/MultiQC/issues/690/comments","statuses_url":"https://api.github.com/repos/ewels/MultiQC/statuses/457badb412c99cdc5bf7e4b4eb991b88a26e197c","head":{"label":"zwdzwd:master","ref":"master","sha":"457badb412c99cdc5bf7e4b4eb991b88a26e197c","user":{"login":"zwdzwd","id":7670339,"node_id":"MDQ6VXNlcjc2NzAzMzk=","avatar_url":"https://avatars0.githubusercontent.com/u/7670339?v=4","gravatar_id":"","url":"https://api.github.com/users/zwdzwd","html_url":"https://github.com/zwdzwd","followers_url":"https://api.github.com/users/zwdzwd/followers","following_url":"https://api.github.com/users/zwdzwd/following{/other_user}","gists_url":"https://api.github.com/users/zwdzwd/gists{/gist_id}","starred_url":"https://api.github.com/users/zwdzwd/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zwdzwd/subscriptions","organizations_url":"https://api.github.com/users/zwdzwd/orgs","repos_url":"https://api.github.com/users/zwdzwd/repos","events_url":"https://api.github.com/users/zwdzwd/events{/privacy}","received_events_url":"https://api.github.com/users/zwdzwd/received_events","type":"User","site_admin":false},"repo":{"id":122079887,"node_id":"MDEwOlJlcG9zaXRvcnkxMjIwNzk4ODc=","name":"MultiQC","full_name":"zwdzwd/MultiQC","owner":{"login":"zwdzwd","id":7670339,"node_id":"MDQ6VXNlcjc2NzAzMzk=","avatar_url":"https://avatars0.githubusercontent.com/u/7670339?v=4","gravatar_id":"","url":"https://api.github.com/users/zwdzwd","html_url":"https://github.com/zwdzwd","followers_url":"https://api.github.com/users/zwdzwd/followers","following_url":"https://api.github.com/users/zwdzwd/following{/other_user}","gists_url":"https://api.github.com/users/zwdzwd/gists{/gist_id}","starred_url":"https://api.github.com/users/zwdzwd/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zwdzwd/subscriptions","organizations_url":"https://api.github.com/users/zwdzwd/orgs","repos_url":"https://api.github.com/users/zwdzwd/repos","events_url":"https://api.github.com/users/zwdzwd/events{/privacy}","received_events_url":"https://api.github.com/users/zwdzwd/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/zwdzwd/MultiQC","description":"Aggregate results from bioinformatics analyses across many samples into a single report.","fork":true,"url":"https://api.github.com/repos/zwdzwd/MultiQC","forks_url":"https://api.github.com/repos/zwdzwd/MultiQC/forks","keys_url":"https://api.github.com/repos/zwdzwd/MultiQC/keys{/key_id}","collaborators_url":"https://api.github.com/repos/zwdzwd/MultiQC/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/zwdzwd/MultiQC/teams","hooks_url":"https://api.github.com/repos/zwdzwd/MultiQC/hooks","issue_events_url":"https://api.github.com/repos/zwdzwd/MultiQC/issues/events{/number}","events_url":"https://api.github.com/repos/zwdzwd/MultiQC/events","assignees_url":"https://api.github.com/repos/zwdzwd/MultiQC/assignees{/user}","branches_url":"https://api.github.com/repos/zwdzwd/MultiQC/branches{/branch}","tags_url":"https://api.github.com/repos/zwdzwd/MultiQC/tags","blobs_url":"https://api.github.com/repos/zwdzwd/MultiQC/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/zwdzwd/MultiQC/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/zwdzwd/MultiQC/git/refs{/sha}","trees_url":"https://api.github.com/repos/zwdzwd/MultiQC/git/trees{/sha}","statuses_url":"https://api.github.com/repos/zwdzwd/MultiQC/statuses/{sha}","languages_url":"https://api.github.com/repos/zwdzwd/MultiQC/languages","stargazers_url":"https://api.github.com/repos/zwdzwd/MultiQC/stargazers","contributors_url":"https://api.github.com/repos/zwdzwd/MultiQC/contributors","subscribers_url":"https://api.github.com/repos/zwdzwd/MultiQC/subscribers","subscription_url":"https://api.github.com/repos/zwdzwd/MultiQC/subscription","commits_url":"https://api.github.com/repos/zwdzwd/MultiQC/commits{/sha}","git_commits_url":"https://api.github.com/repos/zwdzwd/MultiQC/git/commits{/sha}","comments_url":"https://api.github.com/repos/zwdzwd/MultiQC/comments{/number}","issue_comment_url":"https://api.github.com/repos/zwdzwd/MultiQC/issues/comments{/number}","contents_url":"https://api.github.com/repos/zwdzwd/MultiQC/contents/{+path}","compare_url":"https://api.github.com/repos/zwdzwd/MultiQC/compare/{base}...{head}","merges_url":"https://api.github.com/repos/zwdzwd/MultiQC/merges","archive_url":"https://api.github.com/repos/zwdzwd/MultiQC/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/zwdzwd/MultiQC/downloads","issues_url":"https://api.github.com/repos/zwdzwd/MultiQC/issues{/number}","pulls_url":"https://api.github.com/repos/zwdzwd/MultiQC/pulls{/number}","milestones_url":"https://api.github.com/repos/zwdzwd/MultiQC/milestones{/number}","notifications_url":"https://api.github.com/repos/zwdzwd/MultiQC/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/zwdzwd/MultiQC/labels{/name}","releases_url":"https://api.github.com/repos/zwdzwd/MultiQC/releases{/id}","deployments_url":"https://api.github.com/repos/zwdzwd/MultiQC/deployments","created_at":"2018-02-19T15:13:15Z","updated_at":"2018-07-17T18:18:38Z","pushed_at":"2018-07-17T18:18:36Z","git_url":"git://github.com/zwdzwd/MultiQC.git","ssh_url":"git@github.com:zwdzwd/MultiQC.git","clone_url":"https://github.com/zwdzwd/MultiQC.git","svn_url":"https://github.com/zwdzwd/MultiQC","homepage":"http://multiqc.info","size":20784,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"gpl-3.0","name":"GNU General Public License v3.0","spdx_id":"GPL-3.0","url":"https://api.github.com/licenses/gpl-3.0","node_id":"MDc6TGljZW5zZTk="},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"ewels:master","ref":"master","sha":"ae7864fefe65ae2f461a698786d407c606de051b","user":{"login":"ewels","id":465550,"node_id":"MDQ6VXNlcjQ2NTU1MA==","avatar_url":"https://avatars3.githubusercontent.com/u/465550?v=4","gravatar_id":"","url":"https://api.github.com/users/ewels","html_url":"https://github.com/ewels","followers_url":"https://api.github.com/users/ewels/followers","following_url":"https://api.github.com/users/ewels/following{/other_user}","gists_url":"https://api.github.com/users/ewels/gists{/gist_id}","starred_url":"https://api.github.com/users/ewels/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ewels/subscriptions","organizations_url":"https://api.github.com/users/ewels/orgs","repos_url":"https://api.github.com/users/ewels/repos","events_url":"https://api.github.com/users/ewels/events{/privacy}","received_events_url":"https://api.github.com/users/ewels/received_events","type":"User","site_admin":false},"repo":{"id":40187375,"node_id":"MDEwOlJlcG9zaXRvcnk0MDE4NzM3NQ==","name":"MultiQC","full_name":"ewels/MultiQC","owner":{"login":"ewels","id":465550,"node_id":"MDQ6VXNlcjQ2NTU1MA==","avatar_url":"https://avatars3.githubusercontent.com/u/465550?v=4","gravatar_id":"","url":"https://api.github.com/users/ewels","html_url":"https://github.com/ewels","followers_url":"https://api.github.com/users/ewels/followers","following_url":"https://api.github.com/users/ewels/following{/other_user}","gists_url":"https://api.github.com/users/ewels/gists{/gist_id}","starred_url":"https://api.github.com/users/ewels/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ewels/subscriptions","organizations_url":"https://api.github.com/users/ewels/orgs","repos_url":"https://api.github.com/users/ewels/repos","events_url":"https://api.github.com/users/ewels/events{/privacy}","received_events_url":"https://api.github.com/users/ewels/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/ewels/MultiQC","description":"Aggregate results from bioinformatics analyses across many samples into a single report.","fork":false,"url":"https://api.github.com/repos/ewels/MultiQC","forks_url":"https://api.github.com/repos/ewels/MultiQC/forks","keys_url":"https://api.github.com/repos/ewels/MultiQC/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ewels/MultiQC/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ewels/MultiQC/teams","hooks_url":"https://api.github.com/repos/ewels/MultiQC/hooks","issue_events_url":"https://api.github.com/repos/ewels/MultiQC/issues/events{/number}","events_url":"https://api.github.com/repos/ewels/MultiQC/events","assignees_url":"https://api.github.com/repos/ewels/MultiQC/assignees{/user}","branches_url":"https://api.github.com/repos/ewels/MultiQC/branches{/branch}","tags_url":"https://api.github.com/repos/ewels/MultiQC/tags","blobs_url":"https://api.github.com/repos/ewels/MultiQC/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ewels/MultiQC/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ewels/MultiQC/git/refs{/sha}","trees_url":"https://api.github.com/repos/ewels/MultiQC/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ewels/MultiQC/statuses/{sha}","languages_url":"https://api.github.com/repos/ewels/MultiQC/languages","stargazers_url":"https://api.github.com/repos/ewels/MultiQC/stargazers","contributors_url":"https://api.github.com/repos/ewels/MultiQC/contributors","subscribers_url":"https://api.github.com/repos/ewels/MultiQC/subscribers","subscription_url":"https://api.github.com/repos/ewels/MultiQC/subscription","commits_url":"https://api.github.com/repos/ewels/MultiQC/commits{/sha}","git_commits_url":"https://api.github.com/repos/ewels/MultiQC/git/commits{/sha}","comments_url":"https://api.github.com/repos/ewels/MultiQC/comments{/number}","issue_comment_url":"https://api.github.com/repos/ewels/MultiQC/issues/comments{/number}","contents_url":"https://api.github.com/repos/ewels/MultiQC/contents/{+path}","compare_url":"https://api.github.com/repos/ewels/MultiQC/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ewels/MultiQC/merges","archive_url":"https://api.github.com/repos/ewels/MultiQC/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ewels/MultiQC/downloads","issues_url":"https://api.github.com/repos/ewels/MultiQC/issues{/number}","pulls_url":"https://api.github.com/repos/ewels/MultiQC/pulls{/number}","milestones_url":"https://api.github.com/repos/ewels/MultiQC/milestones{/number}","notifications_url":"https://api.github.com/repos/ewels/MultiQC/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ewels/MultiQC/labels{/name}","releases_url":"https://api.github.com/repos/ewels/MultiQC/releases{/id}","deployments_url":"https://api.github.com/repos/ewels/MultiQC/deployments","created_at":"2015-08-04T13:47:05Z","updated_at":"2018-07-13T19:56:23Z","pushed_at":"2018-07-17T18:18:38Z","git_url":"git://github.com/ewels/MultiQC.git","ssh_url":"git@github.com:ewels/MultiQC.git","clone_url":"https://github.com/ewels/MultiQC.git","svn_url":"https://github.com/ewels/MultiQC","homepage":"http://multiqc.info","size":20979,"stargazers_count":368,"watchers_count":368,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":188,"mirror_url":null,"archived":false,"open_issues_count":72,"license":{"key":"gpl-3.0","name":"GNU General Public License v3.0","spdx_id":"GPL-3.0","url":"https://api.github.com/licenses/gpl-3.0","node_id":"MDc6TGljZW5zZTk="},"forks":188,"open_issues":72,"watchers":368,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/ewels/MultiQC/pulls/690"},"html":{"href":"https://github.com/ewels/MultiQC/pull/690"},"issue":{"href":"https://api.github.com/repos/ewels/MultiQC/issues/690"},"comments":{"href":"https://api.github.com/repos/ewels/MultiQC/issues/690/comments"},"review_comments":{"href":"https://api.github.com/repos/ewels/MultiQC/pulls/690/comments"},"review_comment":{"href":"https://api.github.com/repos/ewels/MultiQC/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/ewels/MultiQC/pulls/690/commits"},"statuses":{"href":"https://api.github.com/repos/ewels/MultiQC/statuses/457badb412c99cdc5bf7e4b4eb991b88a26e197c"}},"author_association":"NONE"}}
{"actor":{"display_login":"zwdzwd"}}