{"action":"created","comment":{"url":"https://api.github.com/repos/Clinical-Genomics/cgstats/pulls/comments/237123071","pull_request_review_id":179341700,"id":237123071,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIzNzEyMzA3MQ==","diff_hunk":"@@ -0,0 +1,340 @@\n+#!/usr/bin/env python\n+# encoding: utf-8\n+\n+from __future__ import print_function, division\n+import sys\n+import os\n+from glob import glob\n+import logging\n+import socket\n+\n+from path import Path\n+from sqlalchemy import func\n+\n+from demux.utils import Samplesheet\n+from cgstats.db.models import Supportparams, Version, Datasource, Flowcell, Demux, Project, Sample, Unaligned\n+from cgstats.utils import novaseqstats\n+from cgstats.utils.utils import get_projects, gather_flowcell\n+\n+logger = logging.getLogger(__name__)\n+\n+\n+class NoLogsFoundError(Exception):\n+    pass\n+\n+\n+def gather_supportparams(demux_dir, unaligned_dir):\n+    \"\"\"Aggregates all the support params:\n+    - bcl2fastq version\n+    - bcl2fastq path\n+    - command executed\n+    - datetime\n+    - SampleSheet.csv path\n+    - SampleSheet\n+    - DEMUX path\n+\n+    Args:\n+        demux_dir (str): FQPN run dir\n+\n+    Returns: dict(\n+        'document_path',\n+        'idstring',\n+        'program',\n+        'commandline',\n+        'sampleconfig_path',\n+        'sampleconfig',\n+        'time')\n+    \"\"\"\n+    rs = {}  # result set\n+\n+    # get some info from bcl2 fastq\n+    demux_dir = Path(demux_dir)\n+    logfile = demux_dir.joinpath('projectlog.*.log')\n+    logfilenames = glob(logfile)  # should yield one result\n+    logfilenames.sort(key=os.path.getmtime, reverse=True)\n+    if len(logfilenames) == 0:\n+        logger.error('No log files found! Looking for {}'.format(logfile))\n+        import errno\n+        raise IOError(errno.ENOENT, os.strerror(errno.ENOENT), logfile)\n+\n+    with open(logfilenames[0], 'r') as logfile:\n+        for line in logfile.readlines():\n+            if 'bcl2fastq v' in line:\n+                rs['idstring'] = line.strip()\n+\n+            if '--use-bases-mask' in line:\n+                line = line.strip()\n+                split_line = line.split(' ')\n+                rs['commandline'] = ' '.join(split_line[1:])  # remove the leading [date]\n+                rs['time'] = split_line[0].strip('[]')  # remove the brackets around the date\n+                rs['program'] = split_line[1]  # get the executed program\n+                break\n+\n+    # get the sample sheet and it's contents\n+    document_path = demux_dir.joinpath(unaligned_dir)\n+    samplesheet_path = document_path.joinpath('SampleSheet.csv')\n+    rs['sampleconfig_path'] = str(samplesheet_path)\n+    rs['sampleconfig'] = Samplesheet(samplesheet_path).raw()\n+\n+    # get the unaligned dir\n+    if not os.path.isdir(document_path):\n+        logger.error(\"Unaligned dir not found at '{}'\".format(document_path))\n+        import errno\n+        raise IOError(errno.ENOENT, os.strerror(errno.ENOENT), document_path)\n+    else:\n+        rs['document_path'] = str(document_path)\n+\n+    return rs\n+\n+\n+def gather_datasource(run_dir, unaligned_dir):\n+    \"\"\"TODO: Docstring for gather_datasource.\n+\n+    Args:\n+        run_dir (TODO): TODO\n+\n+    Returns: TODO\n+\n+    \"\"\"\n+\n+    run_dir = Path(run_dir)\n+    rs = {}  # result set\n+\n+    # get the run name\n+    rs['runname'] = str(run_dir.normpath().basename())\n+\n+    # get the run date\n+    rs['rundate'] = rs['runname'].split('_')[0]\n+\n+    # get the machine name\n+    rs['machine'] = rs['runname'].split('_')[1]\n+\n+    # get the server name on which the demux took place\n+    rs['servername'] = socket.gethostname()\n+\n+    # get the stats file\n+    document_path = run_dir.joinpath(unaligned_dir, 'Stats/ConversionStats.xml')\n+    if not document_path.isfile():\n+        logger.error(\"Stats file not found at '%s'\", document_path)\n+        import errno\n+        raise IOError(errno.ENOENT, os.strerror(errno.ENOENT), document_path)\n+    else:\n+        rs['document_path'] = str(document_path)\n+\n+    return rs\n+\n+\n+def gather_demux(run_dir):\n+    \"\"\"TODO: Docstring for gather_demux.\n+\n+    Args:\n+        demux_dir (TODO): TODO\n+\n+    Returns: TODO\n+\n+    \"\"\"\n+\n+    rs = {}  # result set\n+\n+    # get some info from bcl2 fastq\n+    run_dir = Path(run_dir)\n+    logfile = run_dir.joinpath('projectlog.*.log')\n+    logfilenames = glob(logfile)  # should yield one result\n+    logfilenames.sort(key=os.path.getmtime, reverse=True)\n+    if len(logfilenames) == 0:\n+        logger.error('No log files found! Looking for {}'.format(logfile))\n+        import errno\n+        raise IOError(errno.ENOENT, os.strerror(errno.ENOENT), logfile)\n+\n+    with open(logfilenames[0], 'r') as logfile:\n+        for line in logfile.readlines():\n+\n+            if '--use-bases-mask' in line:\n+                line = line.strip()\n+                split_line = line.split(' ')\n+                basemask_params_pos = [i for i, x in enumerate(split_line) if x == '--use-bases-mask'][0]\n+                rs['basemask'] = split_line[basemask_params_pos + 1]\n+\n+    return rs\n+\n+\n+def sanitize_sample(sample):\n+    \"\"\"Removes the _nxdual9 index indication\n+    Removes the B (reprep) or F (reception fail) suffix from the sample name\n+\n+    Args:\n+        sample (str): a sample name\n+\n+    Return (str): a sanitized sample name\n+\n+    \"\"\"\n+    return sample.split('_')[0].rstrip('BF')\n+\n+\n+def get_sample_sheet(demux_dir, unaligned_dir):\n+    sample_sheet = []\n+    samplesheet_file_name = f\"{demux_dir}/{unaligned_dir}/SampleSheet.csv\"\n+    with open(samplesheet_file_name, 'r') as samplesheet_fh:\n+        lines = [line.strip().split(',') for line in samplesheet_fh.readlines()]\n+        header = []\n+        for line in lines:\n+            # skip headers\n+            if line[0].startswith('['):\n+                continue\n+            if line[2] == 'SampleID':\n+                header = line\n+                continue\n+\n+            entry = dict(zip(header, line))\n+            sample_sheet.append(entry)\n+\n+    return sample_sheet\n+\n+\n+def get_nr_samples_lane(sample_sheet):\n+    samples_lane = {}\n+    for line in sample_sheet:\n+        if line['Lane'] not in samples_lane:\n+            samples_lane[line['Lane']] = 0\n+        samples_lane[line['Lane']] += 1\n+\n+    return samples_lane\n+\n+\n+def add(manager, demux_dir, unaligned_dir):\n+    \"\"\" Gathers and adds all data to cgstats.\n+\n+    params:\n+        manager (managerAlchamy): a manager object which can be used to query the DB\n+        demux_dir (str): the demux dir of the run\n+    returns: true on success!\n+    \"\"\"\n+    # ok, let's process the support params\n+    supportparams_id = Supportparams.exists(os.path.join(demux_dir, unaligned_dir))\n+    if not supportparams_id:\n+        new_supportparams = gather_supportparams(demux_dir, unaligned_dir)\n+        supportparams = Supportparams()\n+        supportparams.document_path = new_supportparams['document_path']\n+        supportparams.idstring = new_supportparams['idstring']\n+        supportparams.program = new_supportparams['program']\n+        supportparams.commandline = new_supportparams['commandline']\n+        supportparams.sampleconfig_path = new_supportparams['sampleconfig_path']\n+        supportparams.sampleconfig = new_supportparams['sampleconfig']\n+        supportparams.time = new_supportparams['time']\n+\n+        manager.add(supportparams)\n+        manager.flush()\n+        supportparams_id = supportparams.supportparams_id\n+\n+    datasource_id = Datasource.exists(os.path.join(demux_dir, unaligned_dir, 'Stats/ConversionStats.xml'))\n+    if not datasource_id:\n+        new_datasource = gather_datasource(demux_dir, unaligned_dir)\n+        datasource = Datasource()\n+        datasource.runname = new_datasource['runname']\n+        datasource.rundate = new_datasource['rundate']\n+        datasource.machine = new_datasource['machine']\n+        datasource.server = new_datasource['servername']\n+        datasource.document_path = new_datasource['document_path']\n+        datasource.document_type = 'xml'\n+        datasource.time = func.now()\n+        datasource.supportparams_id = supportparams_id\n+\n+        manager.add(datasource)\n+        manager.flush()\n+        datasource_id = datasource.datasource_id\n+\n+    flowcell_namepos = gather_flowcell(demux_dir)\n+    flowcell_name = flowcell_namepos['name']\n+    flowcell_pos = flowcell_namepos['pos']\n+    flowcell_id = Flowcell.exists(flowcell_name)\n+    if not flowcell_id:\n+        flowcell = Flowcell()\n+        flowcell.flowcellname = flowcell_name\n+        flowcell.flowcell_pos = flowcell_pos\n+        flowcell.hiseqtype = 'novaseq'\n+        flowcell.time = func.now()\n+\n+        manager.add(flowcell)\n+        manager.flush()\n+        flowcell_id = flowcell.flowcell_id\n+\n+    new_demux = gather_demux(demux_dir)\n+    demux_id = Demux.exists(flowcell_id, new_demux['basemask'])\n+    if not demux_id:\n+        demux = Demux()\n+        demux.flowcell_id = flowcell_id\n+        demux.datasource_id = datasource_id\n+        demux.basemask = new_demux['basemask']\n+        demux.time = func.now()\n+\n+        manager.add(demux)\n+        manager.flush()\n+        demux_id = demux.demux_id\n+\n+    project_id_of = {}  # project name: project id\n+    for project_name in get_projects(demux_dir, unaligned_dir='Unaligned*'):\n+        project_id = Project.exists(project_name)\n+        if not project_id:\n+            p = Project()\n+            p.projectname = project_name\n+            p.time = func.now()\n+\n+            manager.add(p)\n+            manager.flush()\n+            project_id = p.project_id\n+\n+        project_id_of[project_name] = project_id\n+\n+    sample_sheet = get_sample_sheet(demux_dir, unaligned_dir)\n+    # stats = novaseqstats.parse(Path(demux_dir).joinpath(unaligned_dir)) #  not needed for NovaSeq!","path":"cgstats/db/novaseqparse.py","position":289,"original_position":289,"commit_id":"41bb3b0066d8eb07097406c087f2b979c912f966","original_commit_id":"41bb3b0066d8eb07097406c087f2b979c912f966","user":{"login":"ingkebil","id":239608,"node_id":"MDQ6VXNlcjIzOTYwOA==","avatar_url":"https://avatars3.githubusercontent.com/u/239608?v=4","gravatar_id":"","url":"https://api.github.com/users/ingkebil","html_url":"https://github.com/ingkebil","followers_url":"https://api.github.com/users/ingkebil/followers","following_url":"https://api.github.com/users/ingkebil/following{/other_user}","gists_url":"https://api.github.com/users/ingkebil/gists{/gist_id}","starred_url":"https://api.github.com/users/ingkebil/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ingkebil/subscriptions","organizations_url":"https://api.github.com/users/ingkebil/orgs","repos_url":"https://api.github.com/users/ingkebil/repos","events_url":"https://api.github.com/users/ingkebil/events{/privacy}","received_events_url":"https://api.github.com/users/ingkebil/received_events","type":"User","site_admin":false},"body":"Remove unneeded code","created_at":"2018-11-28T15:10:48Z","updated_at":"2018-11-28T15:16:22Z","html_url":"https://github.com/Clinical-Genomics/cgstats/pull/12#discussion_r237123071","pull_request_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/pulls/12","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/Clinical-Genomics/cgstats/pulls/comments/237123071"},"html":{"href":"https://github.com/Clinical-Genomics/cgstats/pull/12#discussion_r237123071"},"pull_request":{"href":"https://api.github.com/repos/Clinical-Genomics/cgstats/pulls/12"}}},"pull_request":{"url":"https://api.github.com/repos/Clinical-Genomics/cgstats/pulls/12","id":234223651,"node_id":"MDExOlB1bGxSZXF1ZXN0MjM0MjIzNjUx","html_url":"https://github.com/Clinical-Genomics/cgstats/pull/12","diff_url":"https://github.com/Clinical-Genomics/cgstats/pull/12.diff","patch_url":"https://github.com/Clinical-Genomics/cgstats/pull/12.patch","issue_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/issues/12","number":12,"state":"open","locked":false,"title":"Parse novaseq stats","user":{"login":"barrystokman","id":26384108,"node_id":"MDQ6VXNlcjI2Mzg0MTA4","avatar_url":"https://avatars0.githubusercontent.com/u/26384108?v=4","gravatar_id":"","url":"https://api.github.com/users/barrystokman","html_url":"https://github.com/barrystokman","followers_url":"https://api.github.com/users/barrystokman/followers","following_url":"https://api.github.com/users/barrystokman/following{/other_user}","gists_url":"https://api.github.com/users/barrystokman/gists{/gist_id}","starred_url":"https://api.github.com/users/barrystokman/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/barrystokman/subscriptions","organizations_url":"https://api.github.com/users/barrystokman/orgs","repos_url":"https://api.github.com/users/barrystokman/repos","events_url":"https://api.github.com/users/barrystokman/events{/privacy}","received_events_url":"https://api.github.com/users/barrystokman/received_events","type":"User","site_admin":false},"body":"","created_at":"2018-11-28T10:30:33Z","updated_at":"2018-11-28T15:16:22Z","closed_at":null,"merged_at":null,"merge_commit_sha":"821e5a767fcca9ebcb3385da65a4a6c29be77d35","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/pulls/12/commits","review_comments_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/pulls/12/comments","review_comment_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/pulls/comments{/number}","comments_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/issues/12/comments","statuses_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/statuses/41bb3b0066d8eb07097406c087f2b979c912f966","head":{"label":"Clinical-Genomics:parse-novaseq-stats","ref":"parse-novaseq-stats","sha":"41bb3b0066d8eb07097406c087f2b979c912f966","user":{"login":"Clinical-Genomics","id":6412433,"node_id":"MDEyOk9yZ2FuaXphdGlvbjY0MTI0MzM=","avatar_url":"https://avatars1.githubusercontent.com/u/6412433?v=4","gravatar_id":"","url":"https://api.github.com/users/Clinical-Genomics","html_url":"https://github.com/Clinical-Genomics","followers_url":"https://api.github.com/users/Clinical-Genomics/followers","following_url":"https://api.github.com/users/Clinical-Genomics/following{/other_user}","gists_url":"https://api.github.com/users/Clinical-Genomics/gists{/gist_id}","starred_url":"https://api.github.com/users/Clinical-Genomics/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Clinical-Genomics/subscriptions","organizations_url":"https://api.github.com/users/Clinical-Genomics/orgs","repos_url":"https://api.github.com/users/Clinical-Genomics/repos","events_url":"https://api.github.com/users/Clinical-Genomics/events{/privacy}","received_events_url":"https://api.github.com/users/Clinical-Genomics/received_events","type":"Organization","site_admin":false},"repo":{"id":44966997,"node_id":"MDEwOlJlcG9zaXRvcnk0NDk2Njk5Nw==","name":"cgstats","full_name":"Clinical-Genomics/cgstats","private":false,"owner":{"login":"Clinical-Genomics","id":6412433,"node_id":"MDEyOk9yZ2FuaXphdGlvbjY0MTI0MzM=","avatar_url":"https://avatars1.githubusercontent.com/u/6412433?v=4","gravatar_id":"","url":"https://api.github.com/users/Clinical-Genomics","html_url":"https://github.com/Clinical-Genomics","followers_url":"https://api.github.com/users/Clinical-Genomics/followers","following_url":"https://api.github.com/users/Clinical-Genomics/following{/other_user}","gists_url":"https://api.github.com/users/Clinical-Genomics/gists{/gist_id}","starred_url":"https://api.github.com/users/Clinical-Genomics/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Clinical-Genomics/subscriptions","organizations_url":"https://api.github.com/users/Clinical-Genomics/orgs","repos_url":"https://api.github.com/users/Clinical-Genomics/repos","events_url":"https://api.github.com/users/Clinical-Genomics/events{/privacy}","received_events_url":"https://api.github.com/users/Clinical-Genomics/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/Clinical-Genomics/cgstats","description":"Models and connecting to clinstatsdb","fork":false,"url":"https://api.github.com/repos/Clinical-Genomics/cgstats","forks_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/forks","keys_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/teams","hooks_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/hooks","issue_events_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/issues/events{/number}","events_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/events","assignees_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/assignees{/user}","branches_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/branches{/branch}","tags_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/tags","blobs_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/git/refs{/sha}","trees_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/statuses/{sha}","languages_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/languages","stargazers_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/stargazers","contributors_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/contributors","subscribers_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/subscribers","subscription_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/subscription","commits_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/commits{/sha}","git_commits_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/git/commits{/sha}","comments_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/comments{/number}","issue_comment_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/issues/comments{/number}","contents_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/contents/{+path}","compare_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/merges","archive_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/downloads","issues_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/issues{/number}","pulls_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/pulls{/number}","milestones_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/milestones{/number}","notifications_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/labels{/name}","releases_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/releases{/id}","deployments_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/deployments","created_at":"2015-10-26T12:31:19Z","updated_at":"2018-04-24T06:34:03Z","pushed_at":"2018-11-28T10:30:34Z","git_url":"git://github.com/Clinical-Genomics/cgstats.git","ssh_url":"git@github.com:Clinical-Genomics/cgstats.git","clone_url":"https://github.com/Clinical-Genomics/cgstats.git","svn_url":"https://github.com/Clinical-Genomics/cgstats","homepage":null,"size":5862,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":7,"license":null,"forks":0,"open_issues":7,"watchers":0,"default_branch":"master"}},"base":{"label":"Clinical-Genomics:master","ref":"master","sha":"ec1e2c5d2310602043daa7946e43236e98334f3b","user":{"login":"Clinical-Genomics","id":6412433,"node_id":"MDEyOk9yZ2FuaXphdGlvbjY0MTI0MzM=","avatar_url":"https://avatars1.githubusercontent.com/u/6412433?v=4","gravatar_id":"","url":"https://api.github.com/users/Clinical-Genomics","html_url":"https://github.com/Clinical-Genomics","followers_url":"https://api.github.com/users/Clinical-Genomics/followers","following_url":"https://api.github.com/users/Clinical-Genomics/following{/other_user}","gists_url":"https://api.github.com/users/Clinical-Genomics/gists{/gist_id}","starred_url":"https://api.github.com/users/Clinical-Genomics/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Clinical-Genomics/subscriptions","organizations_url":"https://api.github.com/users/Clinical-Genomics/orgs","repos_url":"https://api.github.com/users/Clinical-Genomics/repos","events_url":"https://api.github.com/users/Clinical-Genomics/events{/privacy}","received_events_url":"https://api.github.com/users/Clinical-Genomics/received_events","type":"Organization","site_admin":false},"repo":{"id":44966997,"node_id":"MDEwOlJlcG9zaXRvcnk0NDk2Njk5Nw==","name":"cgstats","full_name":"Clinical-Genomics/cgstats","private":false,"owner":{"login":"Clinical-Genomics","id":6412433,"node_id":"MDEyOk9yZ2FuaXphdGlvbjY0MTI0MzM=","avatar_url":"https://avatars1.githubusercontent.com/u/6412433?v=4","gravatar_id":"","url":"https://api.github.com/users/Clinical-Genomics","html_url":"https://github.com/Clinical-Genomics","followers_url":"https://api.github.com/users/Clinical-Genomics/followers","following_url":"https://api.github.com/users/Clinical-Genomics/following{/other_user}","gists_url":"https://api.github.com/users/Clinical-Genomics/gists{/gist_id}","starred_url":"https://api.github.com/users/Clinical-Genomics/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Clinical-Genomics/subscriptions","organizations_url":"https://api.github.com/users/Clinical-Genomics/orgs","repos_url":"https://api.github.com/users/Clinical-Genomics/repos","events_url":"https://api.github.com/users/Clinical-Genomics/events{/privacy}","received_events_url":"https://api.github.com/users/Clinical-Genomics/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/Clinical-Genomics/cgstats","description":"Models and connecting to clinstatsdb","fork":false,"url":"https://api.github.com/repos/Clinical-Genomics/cgstats","forks_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/forks","keys_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/teams","hooks_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/hooks","issue_events_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/issues/events{/number}","events_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/events","assignees_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/assignees{/user}","branches_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/branches{/branch}","tags_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/tags","blobs_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/git/refs{/sha}","trees_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/statuses/{sha}","languages_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/languages","stargazers_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/stargazers","contributors_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/contributors","subscribers_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/subscribers","subscription_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/subscription","commits_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/commits{/sha}","git_commits_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/git/commits{/sha}","comments_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/comments{/number}","issue_comment_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/issues/comments{/number}","contents_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/contents/{+path}","compare_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/merges","archive_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/downloads","issues_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/issues{/number}","pulls_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/pulls{/number}","milestones_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/milestones{/number}","notifications_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/labels{/name}","releases_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/releases{/id}","deployments_url":"https://api.github.com/repos/Clinical-Genomics/cgstats/deployments","created_at":"2015-10-26T12:31:19Z","updated_at":"2018-04-24T06:34:03Z","pushed_at":"2018-11-28T10:30:34Z","git_url":"git://github.com/Clinical-Genomics/cgstats.git","ssh_url":"git@github.com:Clinical-Genomics/cgstats.git","clone_url":"https://github.com/Clinical-Genomics/cgstats.git","svn_url":"https://github.com/Clinical-Genomics/cgstats","homepage":null,"size":5862,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":7,"license":null,"forks":0,"open_issues":7,"watchers":0,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/Clinical-Genomics/cgstats/pulls/12"},"html":{"href":"https://github.com/Clinical-Genomics/cgstats/pull/12"},"issue":{"href":"https://api.github.com/repos/Clinical-Genomics/cgstats/issues/12"},"comments":{"href":"https://api.github.com/repos/Clinical-Genomics/cgstats/issues/12/comments"},"review_comments":{"href":"https://api.github.com/repos/Clinical-Genomics/cgstats/pulls/12/comments"},"review_comment":{"href":"https://api.github.com/repos/Clinical-Genomics/cgstats/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/Clinical-Genomics/cgstats/pulls/12/commits"},"statuses":{"href":"https://api.github.com/repos/Clinical-Genomics/cgstats/statuses/41bb3b0066d8eb07097406c087f2b979c912f966"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"ingkebil"}}