Welcome to qc-utils’s documentation!¶
qc-utils is a python package that provides QCMetric and QCMetricRecord classes that can be used for representing ENCODE pipeline quality control metrics.
Getting Started¶
qc-utils is a Python-only package hosted on PyPI. The recommended installation method is pip:
$ pip install qc-utils
Usage¶
The basic pattern is to create QCMetric objects, and then add related ones to a QCMetricRecord. QCMetric objects can be created from dicts. Parsers include STAR metrics and also parsers required to handle the metrics from ENCODE4 dnase-seq-pipeline. You can also write your own: provide a function that takes a path to a file as input and returns a dict.
Examples¶
To create directly from dicts:
from qc_utils import QCMetric, QCMetricRecord
record = QCMetricRecord()
qc_obj1 = QCMetric('first_metric', {'metric1': 1, 'metric2': 2})
qc_obj1 = QCMetric('second_metric', {'metric1': 3, 'metric2': 4})
record.add_all([qc_obj1, qcobj2])
To create from a STAR log file in /path/to/star_Log.out:
from qc_utils import QCMetric, QCMetricRecord
from qc_utils.parsers import parse_starlog
starlog = parse_starlog("/path/to/star_Log.out")
record = QCMetricRecord()
log_qc_obj = QCMetric("starlogQC", starlog)
record.add(log_qc_obj)
To create from a samtools flagstats file in /path/to/flagstats.txt and write into a json-object in /path/to/flagstats.json:
import json
from qc_utils import QCMetric, QCMetricRecord
from qc_utils.parsers import parse_flagstats
flagstats = parse_flagstats("/path/to/flagstats.txt")
flagstat_qc_obj = QCMetric("flagstat", flagstats)
flagstat_qc_obj.save("/path/to/flagstats.json")
QCMetricRecord can also have a name, and can be written into json as follows:
import json
from qc_utils import QCMetric, QCMetricRecord
from qc_utils.parsers import parse_flagstats, parse_starlog
starlog = parse_starlog("/path/to/star_Log.out")
flagstats = parse_flagstats("/path/to/flagstats.txt")
log_qc_obj = QCMetric("starlogQC", starlog)
flagstat_qc_obj = QCMetric("flagstat", flagstats)
record = QCMetricRecord([log_qc_obj, flagstat_qc_obj], name="alignment_qc")
record.save("/path/to/alignment_qc.json")
You can combine two QCMetricRecords as follows:
from qc_utils import QCMetric, QCMetricRecord
record1 = QCMetricRecord()
record2 = QCMetricRecord()
qc_obj1 = QCMetric('first_metric', {'metric1': 1, 'metric2': 2})
qc_obj1 = QCMetric('second_metric', {'metric1': 3, 'metric2': 4})
record1.add(qc_obj1)
record2.add(qc_obj2)
record1.add_all(record2)