|
| 1 | +#!/usr/bin/env python |
| 2 | +from __future__ import print_function |
| 3 | +from collections import OrderedDict |
| 4 | +import re |
| 5 | + |
| 6 | +regexes = { |
| 7 | + 'AlleleCount': ['v_allelecount.txt', r"(\S+)"], |
| 8 | + 'ASCAT': ['v_ascat.txt', r"(\d\.\d+)"], |
| 9 | + 'bcftools': ['v_bcftools.txt', r"bcftools (\S+)"], |
| 10 | + 'BWA': ['v_bwa.txt', r"Version: (\S+)"], |
| 11 | + 'FastQC': ['v_fastqc.txt', r"FastQC v(\S+)"], |
| 12 | + 'GATK': ['v_gatk.txt', r"GATK version(\S+)"], |
| 13 | + 'htslib': ['v_samtools.txt', r"htslib (\S+)"], |
| 14 | + 'Manta': ['v_manta.txt', r"([0-9.]+)"], |
| 15 | + 'MultiQC': ['v_multiqc.txt', r"multiqc, version (\S+)"], |
| 16 | + 'Nextflow': ['v_nextflow.txt', r"(\S+)"], |
| 17 | + 'FreeBayes': ['v_freebayes.txt', r"version: v(\d\.\d\.\d+)"], |
| 18 | + 'Picard': ['v_picard.txt', r"Picard version:(\d\.\d\.\d+)"], |
| 19 | + 'Qualimap': ['v_qualimap.txt', r"QualiMap v.(\S+)"], |
| 20 | + 'R': ['v_r.txt', r"R version (\S+)"], |
| 21 | + 'samtools': ['v_samtools.txt', r"samtools (\S+)"], |
| 22 | + 'Sarek': ['v_sarek.txt', r"(\S+)"], |
| 23 | + 'SnpEff': ['v_snpeff.txt', r"version SnpEff (\S+)"], |
| 24 | + 'Strelka': ['v_strelka.txt', r"([0-9.]+)"], |
| 25 | + 'vcftools': ['v_vcftools.txt', r"([0-9.]+)"], |
| 26 | + 'VEP': ['v_vep.txt', r"ensembl-vep : (\S+)"], |
| 27 | +} |
| 28 | +results = OrderedDict() |
| 29 | +results['Sarek'] = '<span style="color:#999999;\">N/A</span>' |
| 30 | +results['Nextflow'] = '<span style="color:#999999;\">N/A</span>' |
| 31 | +results['BWA'] = '<span style="color:#999999;\">N/A</span>' |
| 32 | +results['samtools'] = '<span style="color:#999999;\">N/A</span>' |
| 33 | +results['htslib'] = '<span style="color:#999999;\">N/A</span>' |
| 34 | +results['GATK'] = '<span style="color:#999999;\">N/A</span>' |
| 35 | +results['Picard'] = '<span style="color:#999999;\">N/A</span>' |
| 36 | +results['Manta'] = '<span style="color:#999999;\">N/A</span>' |
| 37 | +results['Strelka'] = '<span style="color:#999999;\">N/A</span>' |
| 38 | +results['FreeBayes'] = '<span style="color:#999999;\">N/A</span>' |
| 39 | +results['AlleleCount'] = '<span style="color:#999999;\">N/A</span>' |
| 40 | +results['R'] = '<span style="color:#999999;\">N/A</span>' |
| 41 | +results['ASCAT'] = '<span style="color:#999999;\">N/A</span>' |
| 42 | +results['SnpEff'] = '<span style="color:#999999;\">N/A</span>' |
| 43 | +results['VEP'] = '<span style="color:#999999;\">N/A</span>' |
| 44 | +results['FastQC'] = '<span style="color:#999999;\">N/A</span>' |
| 45 | +results['Qualimap'] = '<span style="color:#999999;\">N/A</span>' |
| 46 | +results['bcftools'] = '<span style="color:#999999;\">N/A</span>' |
| 47 | +results['vcftools'] = '<span style="color:#999999;\">N/A</span>' |
| 48 | +results['MultiQC'] = '<span style="color:#999999;\">N/A</span>' |
| 49 | + |
| 50 | +# Search each file using its regex |
| 51 | +for k, v in regexes.items(): |
| 52 | + try: |
| 53 | + with open(v[0]) as x: |
| 54 | + versions = x.read() |
| 55 | + match = re.search(v[1], versions) |
| 56 | + if match: |
| 57 | + results[k] = "v {}".format(match.group(1)) |
| 58 | + except Exception as FileNotFoundError: |
| 59 | + print("No such file:", v[0]) |
| 60 | + |
| 61 | +# Remove empty keys (defining them above ensures correct order) |
| 62 | +for k in ['Sarek', 'Nextflow', 'BWA', 'samtools', 'htslib', 'GATK', 'Picard', 'Manta', 'Strelka', 'FreeBayes', 'AlleleCount', 'R', 'ASCAT', 'SnpEff', 'VEP', 'FastQC', 'Qualimap', 'bcftools', 'vcftools', 'MultiQC']: |
| 63 | + if results[k] == '<span style="color:#999999;\">N/A</span>': |
| 64 | + del(results[k]) |
| 65 | + |
| 66 | +# Dump to YAML |
| 67 | +print (''' |
| 68 | +id: 'Sarek' |
| 69 | +order: -1000 |
| 70 | +section_href: 'https://github.com/SciLifeLab/Sarek' |
| 71 | +plot_type: 'html' |
| 72 | +description: 'tool versions are collected at run time from output.' |
| 73 | +data: | |
| 74 | + <dl class="dl-horizontal" style="margin-bottom:0;"> |
| 75 | +''') |
| 76 | +for k,v in results.items(): |
| 77 | + print(" <dt>{}</dt><dd>{}</dd>".format(k,v)) |
| 78 | +print (" </dl>") |
0 commit comments