diff options
Diffstat (limited to 'Code/process_3way_interaction2.py')
-rw-r--r-- | Code/process_3way_interaction2.py | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/Code/process_3way_interaction2.py b/Code/process_3way_interaction2.py new file mode 100644 index 0000000..7ce26b3 --- /dev/null +++ b/Code/process_3way_interaction2.py @@ -0,0 +1,58 @@ +# Purpose: convert results from three-way interaction analysis to edge format. +# Usage: python process_3way_interaction.py ../Data/information/summary.txt > edges.txt.interaction.seeddata +# Create on 9 Aug 2019 by Hui Lan <lanhui@zjnu.edu.cn> + +from geneid2name import make_gene_name_AGI_map_dict, get_gene_name + +def get_2tf_1target_1score(s): + ''' + s looks like '398: ( AT3G10490;AT3G10480, AT1G03970, AT5G20910 ) 10.41 2' + ''' + + lst = s.split() + tf1_all = lst[2] + tf2_all = lst[3] + target = lst[4] + score = lst[6] + result = [] + for tf1 in tf1_all.split(';'): + tf1 = tf1.replace(',', '') + for tf2 in tf2_all.split(';'): + tf2 = tf2.replace(',', '') + result.append((tf1, tf2, target, score)) + + return result + +## main +import sys +from datetime import datetime + +f = open(sys.argv[1]) +lines = f.readlines() +f.close() + + +agi2name_dict = make_gene_name_AGI_map_dict('../Data/information/AGI-to-gene-names_v2.txt') + +result = '' +for line in lines[2:]: + line = line.strip() + lst = get_2tf_1target_1score(line) + for t in lst: + tf1, tf2, target, interaction_score_str = t + if tf1.startswith('AT') and tf2.startswith('AT') and target.startswith('AT'): + target_str = target + ' ' + get_gene_name(target, agi2name_dict) + tf1_str = tf1 + ' ' + get_gene_name(tf1, agi2name_dict) + tf2_str = tf2 + ' ' + get_gene_name(tf2, agi2name_dict) + score_str = '0.6' + cond_str = '.' + curr_date = datetime.now().strftime('%Y%m%d') + method_or_tissue = 'interact.with.%s' % (tf2 + '(' + get_gene_name(tf2, agi2name_dict) + ')') + s = '\t'.join([target_str, tf1_str, score_str, 'mix', '138', cond_str, '.', curr_date, interaction_score_str.replace('-',''), method_or_tissue]) + result += s + '\n' + method_or_tissue = 'interact.with.%s' % (tf1 + '(' + get_gene_name(tf1, agi2name_dict) + ')') + s = '\t'.join([target_str, tf2_str, score_str, 'mix', '138', cond_str, '.', curr_date, interaction_score_str.replace('-',''), method_or_tissue]) + result += s + '\n' + + +print(result) |