view check_bcfile.py @ 3:1544278c272e draft

"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/stacks2 commit 9a6c14bcb90c0b30c583294a993fac47504f4009"
author iuc
date Tue, 27 Apr 2021 09:32:17 +0000
parents 8a55d29c8fcf
children
line wrap: on
line source

#!/usr/bin/env python

import argparse
import sys

parser = argparse.ArgumentParser()
parser.add_argument('bcfile', help='barcode file')
args = parser.parse_args()

barcodes = []

with open(args.bcfile, "r") as fh:
    for line in fh:
        if len(line) == 0:
            continue
        if line.startswith("#"):
            continue
        barcodes.append(line.split())

if len(barcodes) <= 1:
    sys.exit("barcode file is empty")

# check that all lines have the same number of columns
ncol = None
for bc in barcodes:
    if ncol is None:
        ncol = len(bc)
    elif ncol != len(bc):
        sys.exit("barcode file has inconsistent number of columns")

isname = False
for bc in barcodes:
    if len(bc[-1].strip("ATCGatcg")) > 0:
        isname = True
        break

names = set()
for bc in barcodes:
    if isname:
        n = bc[-1]
    else:
        n = '-'.join(bc)
    if n in names:
        sys.exit("duplicate sample %s in barcode file" % n)
    names.add(n)