Mercurial > repos > iuc > humann_join_tables
comparison customizemapping.py @ 0:cf7f80d59099 draft
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/humann commit 077b8f34e081e6c427acb0fde0fbb97d1b241e0b"
| author | iuc |
|---|---|
| date | Wed, 12 May 2021 09:02:06 +0000 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:cf7f80d59099 |
|---|---|
| 1 #!/usr/bin/env python | |
| 2 # -*- coding: utf-8 -*- | |
| 3 | |
| 4 import argparse | |
| 5 from pathlib import Path | |
| 6 | |
| 7 | |
| 8 if __name__ == '__main__': | |
| 9 # Read command line | |
| 10 parser = argparse.ArgumentParser(description='Customize HUMAnN utility mapping') | |
| 11 parser.add_argument('--in_mapping', help="Path to mapping file to reduce") | |
| 12 parser.add_argument('--features', help="Path to tabular file with features to keep in first column") | |
| 13 parser.add_argument('--elements', help="Path to tabular file with elements to keep in other columns") | |
| 14 parser.add_argument('--out_mapping', help="Path to reduced mapping file") | |
| 15 args = parser.parse_args() | |
| 16 | |
| 17 in_mapping_fp = Path(args.in_mapping) | |
| 18 feature_fp = Path(args.features) | |
| 19 element_fp = Path(args.elements) | |
| 20 out_mapping_fp = Path(args.out_mapping) | |
| 21 | |
| 22 # extract features to keep | |
| 23 features = set() | |
| 24 with open(feature_fp, 'r') as feature_f: | |
| 25 for line in feature_f.readlines(): | |
| 26 features.add(line.split("\t")[0]) | |
| 27 print(features) | |
| 28 | |
| 29 # extract elements to keep | |
| 30 elements = set() | |
| 31 with open(element_fp, 'r') as element_f: | |
| 32 for line in element_f.readlines(): | |
| 33 elements.add(line.split("\t")[0]) | |
| 34 print(elements) | |
| 35 | |
| 36 # write mapping for features to keep while keeping only elements | |
| 37 with open(in_mapping_fp, 'r') as in_mapping_f: | |
| 38 with open(out_mapping_fp, 'w') as out_mapping_f: | |
| 39 for line in in_mapping_f.readlines(): | |
| 40 l_split = line.split("\t") | |
| 41 feat = l_split[0] | |
| 42 if feat in features: | |
| 43 to_write = [feat] | |
| 44 for e in l_split[1:]: | |
| 45 if e in elements: | |
| 46 to_write.append(e) | |
| 47 out_mapping_f.write("%s\n" % '\t'.join(to_write)) |
