Mercurial > repos > iuc > stacks2_cstacks
comparison check_bcfile.py @ 2:fcce77c09289 draft
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/stacks2 commit f55e2407891a3c1f73f14a77b7ddadcd6f5eb1f8"
author | iuc |
---|---|
date | Thu, 16 Jul 2020 07:23:04 -0400 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
1:f4aab9196d1e | 2:fcce77c09289 |
---|---|
1 #!/usr/bin/env python | |
2 | |
3 import argparse | |
4 import sys | |
5 | |
6 parser = argparse.ArgumentParser() | |
7 parser.add_argument('bcfile', help='barcode file') | |
8 args = parser.parse_args() | |
9 | |
10 barcodes = [] | |
11 | |
12 with open(args.bcfile, "r") as fh: | |
13 for line in fh: | |
14 if len(line) == 0: | |
15 continue | |
16 if line.startswith("#"): | |
17 continue | |
18 barcodes.append(line.split()) | |
19 | |
20 if len(barcodes) <= 1: | |
21 sys.exit("barcode file is empty") | |
22 | |
23 # check that all lines have the same number of columns | |
24 ncol = None | |
25 for bc in barcodes: | |
26 if ncol is None: | |
27 ncol = len(bc) | |
28 elif ncol != len(bc): | |
29 sys.exit("barcode file has inconsistent number of columns") | |
30 | |
31 isname = False | |
32 for bc in barcodes: | |
33 if len(bc[-1].strip("ATCGatcg")) > 0: | |
34 isname = True | |
35 break | |
36 | |
37 names = set() | |
38 for bc in barcodes: | |
39 if isname: | |
40 n = bc[-1] | |
41 else: | |
42 n = '-'.join(bc) | |
43 if n in names: | |
44 sys.exit("duplicate sample %s in barcode file" % n) | |
45 names.add(n) |