#!/usr/bin/python ### GAD PIPELINE ### ## annotate_report_with_aberrant_splice_Leafcutter.py ## Description : annotate a report file with leafcutter results ## Usage : python annotate_report_with_aberrant_splice_leafcutter.py -i <input file> -o <output file> -e <event file> ## Output : an annotated report file including leafcutter annotation for aberrant splice ## Requirements : python 2.7 ## Author : Emilie.Tisserant@u-bourgogne.fr, yannis.duffourd@u-bourgogne.fr ## Creation Date : 20170331 ## last revision date : 20201020 ## Known bugs : None import os import sys import getopt # Options try: opts, args = getopt.getopt(sys.argv[1:], 'e:i:o:') for opt, arg in opts: if opt in ("-e"): event = arg elif opt in ("-i"): filein = arg elif opt in ("-o"): sys.stdout = open(arg, 'w') except getopt.GetoptError: print 'usage : ' sys.exit(1) event_dict = {} stream = open(event, 'r') for line in stream: line = line.strip() tabs = line.split('\t') if not line.startswith('cluster'): event_dict[tabs[7]]=tabs[0] stream.close() #Annotate variants stream = open(filein, 'r') i = 0 for line in stream: line = line.strip() tabs = line.split('\t') if not line.startswith('#'): event_list = [] tag = 0 for e in event_dict: chrm,start,end = e.split(":")[0],int(e.split(":")[1].split("-")[0])-500,int(e.split(":")[1].split("-")[1])+500 if tabs[0].split(":")[0] == chrm and int(tabs[0].split(":")[1]) >= start and int(tabs[0].split(":")[1]) <= end: event_list.append("Leafcutter:"+e) tag += 1 if tag > 0: print "\t".join(tabs[0:])+"\t"+",".join(event_list) else: print line+"\t." else: print "\t".join(tabs[0:-1])+"\tLeafcutter_coord\tComments" stream.close()