comparison Marea/marea.py @ 48:e4235b5231e4 draft

Uploaded
author bimib
date Sun, 23 Feb 2020 09:41:14 -0500
parents 3af9d394367c
children 7b57a93ac594
comparison
equal deleted inserted replaced
47:3af9d394367c 48:e4235b5231e4
16 16
17 def process_args(args): 17 def process_args(args):
18 parser = argparse.ArgumentParser(usage = '%(prog)s [options]', 18 parser = argparse.ArgumentParser(usage = '%(prog)s [options]',
19 description = 'process some value\'s'+ 19 description = 'process some value\'s'+
20 ' genes to create a comparison\'s map.') 20 ' genes to create a comparison\'s map.')
21 parser.add_argument('-rs', '--rules_selector', 21 parser.add_argument('-cr', '--custom_rules',
22 type = str, 22 type = str,
23 default = 'HMRcore', 23 default = 'false',
24 choices = ['HMRcore', 'Recon', 'Custom'], 24 choices = ['true', 'false'],
25 help = 'chose which type of dataset you want use') 25 help = 'choose whether to use custom rules')
26 parser.add_argument('-cr', '--custom', 26 parser.add_argument('-cc', '--custom_rule',
27 type = str, 27 type = str,
28 help='your dataset if you want custom rules') 28 help='custom rules to use')
29 parser.add_argument('-cm', '--custom_map',
30 type = str,
31 help='custom map to use')
29 parser.add_argument('-n', '--none', 32 parser.add_argument('-n', '--none',
30 type = str, 33 type = str,
31 default = 'true', 34 default = 'true',
32 choices = ['true', 'false'], 35 choices = ['true', 'false'],
33 help = 'compute Nan values') 36 help = 'compute Nan values')
53 type = str, 56 type = str,
54 help = 'input dataset') 57 help = 'input dataset')
55 parser.add_argument('-ic', '--input_class', 58 parser.add_argument('-ic', '--input_class',
56 type = str, 59 type = str,
57 help = 'sample group specification') 60 help = 'sample group specification')
58 parser.add_argument('-cm', '--custom_map',
59 type = str,
60 help = 'custom map')
61 parser.add_argument('-yn', '--yes_no',
62 type = str,
63 choices = ['yes', 'no'],
64 help = 'if make or not custom map')
65 parser.add_argument('-gs', '--generate_svg', 61 parser.add_argument('-gs', '--generate_svg',
66 type = str, 62 type = str,
67 default = 'true', 63 default = 'true',
68 choices = ['true', 'false'], 64 choices = ['true', 'false'],
69 help = 'generate svg map') 65 help = 'generate svg map')
549 warnings.simplefilter('ignore') 545 warnings.simplefilter('ignore')
550 recon = cb.io.read_sbml_model(data) 546 recon = cb.io.read_sbml_model(data)
551 react = recon.reactions 547 react = recon.reactions
552 rules = [react[i].gene_reaction_rule for i in range(len(react))] 548 rules = [react[i].gene_reaction_rule for i in range(len(react))]
553 ids = [react[i].id for i in range(len(react))] 549 ids = [react[i].id for i in range(len(react))]
554 except cb.io.sbml3.CobraSBMLError: 550 except cb.io.sbml.CobraSBMLError:
555 try: 551 try:
556 data = (pd.read_csv(data, sep = '\t', dtype = str, engine='python')).fillna('') 552 data = (pd.read_csv(data, sep = '\t', dtype = str, engine='python')).fillna('')
557 if len(data.columns) < 2: 553 if len(data.columns) < 2:
558 sys.exit('Execution aborted: wrong format of '+ 554 sys.exit('Execution aborted: wrong format of '+
559 'custom datarules\n') 555 'custom datarules\n')
691 tmp_csv = tmp_csv.reset_index() 687 tmp_csv = tmp_csv.reset_index()
692 header = ['ids', 'P_Value', 'Log2(fold change)'] 688 header = ['ids', 'P_Value', 'Log2(fold change)']
693 tmp_csv.to_csv(tab, sep = '\t', index = False, header = header) 689 tmp_csv.to_csv(tab, sep = '\t', index = False, header = header)
694 690
695 if create_svg or create_pdf: 691 if create_svg or create_pdf:
696 if args.rules_selector == 'HMRcore' or (args.rules_selector == 'Custom' 692 if args.custom_rules == 'false' or (args.custom_rules == 'true'
697 and args.yes_no == 'yes'): 693 and args.custom_map != ''):
698 fix_map(tmp, core_map, threshold_P_V, threshold_F_C, max_F_C) 694 fix_map(tmp, core_map, threshold_P_V, threshold_F_C, max_F_C)
699 file_svg = 'result/' + i + '_vs_' + j + ' (SVG Map).svg' 695 file_svg = 'result/' + i + '_vs_' + j + ' (SVG Map).svg'
700 with open(file_svg, 'wb') as new_map: 696 with open(file_svg, 'wb') as new_map:
701 new_map.write(ET.tostring(core_map)) 697 new_map.write(ET.tostring(core_map))
702 698
758 if not create_svg: 754 if not create_svg:
759 os.remove('result/' + single_cluster + '_vs_ rest (SVG Map).svg') 755 os.remove('result/' + single_cluster + '_vs_ rest (SVG Map).svg')
760 756
761 elif comparison == "onevsmany": 757 elif comparison == "onevsmany":
762 for i, j in it.combinations(class_pat.keys(), 2): 758 for i, j in it.combinations(class_pat.keys(), 2):
763
764 if i != control and j != control:
765 print(str(control) + " " + str(i) + " " + str(j))
766 #Se รจ un confronto fra elementi diversi dal controllo, skippo
767 continue
768
769 print('vado')
770 tmp = {} 759 tmp = {}
771 count = 0 760 count = 0
772 max_F_C = 0 761 max_F_C = 0
773 for l1, l2 in zip(class_pat.get(i), class_pat.get(j)): 762 for l1, l2 in zip(class_pat.get(i), class_pat.get(j)):
774 try: 763 try:
821 create_svg = check_bool(args.generate_svg) 810 create_svg = check_bool(args.generate_svg)
822 create_pdf = check_bool(args.generate_pdf) 811 create_pdf = check_bool(args.generate_pdf)
823 812
824 if os.path.isdir('result') == False: 813 if os.path.isdir('result') == False:
825 os.makedirs('result') 814 os.makedirs('result')
826 815
827 if args.rules_selector == 'HMRcore': 816 if args.custom_rules == 'true':
828 recon = pk.load(open(args.tool_dir + '/local/HMRcore_rules.p', 'rb')) 817 ids, rules, gene_in_rule = make_recon(args.custom_rule)
829 elif args.rules_selector == 'Recon':
830 recon = pk.load(open(args.tool_dir + '/local/Recon_rules.p', 'rb'))
831 elif args.rules_selector == 'Custom':
832 ids, rules, gene_in_rule = make_recon(args.custom)
833 818
834 class_pat = {} 819 class_pat = {}
835 820
836 if args.option == 'datasets': 821 if args.option == 'datasets':
837 num = 1 822 num = 1
883 classes = classes.astype(str) 868 classes = classes.astype(str)
884 869
885 if resolve_rules_float != None: 870 if resolve_rules_float != None:
886 class_pat = split_class(classes, resolve_rules_float) 871 class_pat = split_class(classes, resolve_rules_float)
887 872
888 if args.rules_selector == 'Custom': 873
889 if args.yes_no == 'yes': 874 if args.custom_rules == 'true':
890 try: 875 try:
891 core_map = ET.parse(args.custom_map) 876 core_map = ET.parse(args.custom_map)
892 except (ET.XMLSyntaxError, ET.XMLSchemaParseError): 877 except (ET.XMLSyntaxError, ET.XMLSchemaParseError):
893 sys.exit('Execution aborted: custom map in wrong format') 878 sys.exit('Execution aborted: custom map in wrong format')
894 elif args.yes_no == 'no': 879 else:
895 core_map = ET.parse(args.tool_dir + '/local/HMRcoreMap.svg')
896 else:
897 core_map = ET.parse(args.tool_dir+'/local/HMRcoreMap.svg') 880 core_map = ET.parse(args.tool_dir+'/local/HMRcoreMap.svg')
898 881
899 maps(core_map, class_pat, ids, args.pValue, args.fChange, create_svg, create_pdf, args.comparison, args.control) 882 maps(core_map, class_pat, ids, args.pValue, args.fChange, create_svg, create_pdf, args.comparison, args.control)
900 883
901 print('Execution succeded') 884 print('Execution succeded')