view check_bcfile.py @ 4:8a35a3bc6752 draft

"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/stacks2 commit 75f83e7b16127aecc68a58df2cb75062f2a9296a"
author iuc
date Wed, 01 Sep 2021 11:25:12 +0000
parents d033e1ccb386
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)