-
Notifications
You must be signed in to change notification settings - Fork 6
/
parse_psql_file.py
executable file
·113 lines (72 loc) · 2.76 KB
/
parse_psql_file.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
#!/usr/bin/python
# -*- coding: utf-8 -*-
#-------------------------------------
#
# SCRIPT Parse_psql_file.py
#
# La sortie de prot4est (fichier .psql) est assez difficile à déchiffrer. Ce script permet de lire ce fichier et de sortir une sortie simple : contig, début CDS, fin CDS, orientation.
#
# Yan Holtz, yan1166@hotmail.com
#-------------------------------------
import os
import sys
import re
try:
import argparse
except ImportError:
print"oops, the import /argparse/ didn't work"
parser = argparse.ArgumentParser(description= 'La sortie de prot4est (fichier .psql) est assez difficile à déchiffrer. Ce script permet de lire ce fichier et de sortir une sortie simple : contig, début CDS, fin CDS, orientation.')
parser.add_argument('-psql', required=True, help=' fichier psql a traiter')
parser.add_argument('-out', required=False, help=' fichier de sortie : fichier texte : contig,début CDS, fin CDS, orientation')
args = parser.parse_args()
psql=args.psql
out=args.out
#------------------------------------------------------------------------------------------------------
#------------------------------------------------------------------------------------------------------
# C'est parti
tmp=open(out,"w")
nb_contig_tot=0
nb_contig_annote=0
#Pour chaque ligne du fichier psql d'origine.
for line in open(psql):
nb_contig_tot+=1
line=line.strip()
line=line.split(",")
#Quel est le contig de la ligne?
Contig=line[0]
#Je reformate le nom pour retrouver le nom de mon fichier fichier fasta
Contig=re.sub("_p$","",Contig)
Contig=re.sub("_n$","",Contig)
Contig=Contig.replace("_Con","|Con")
Contig=Contig.replace("_like","|like")
Contig=Contig.replace("_compl","|compl")
Contig=Contig.replace("_orig","|orig")
Contig=Contig.replace("_less","|less")
#Petite partie : au cas ou j'ai des "," dans les noms, je dois recoller les morceaux a posteriori (c'est le cas pour certains noms d'EPO"
if len(line)==12:
line[0]=line[0]+","+line[1]
line[1]=line[2]+","+line[3]
line.pop(2) ; line.pop(2)
if len(line)==14:
line[0]=line[0]+","+line[1]+","+line[2]
line[1]=line[3]+","+line[4]+","+line[5]
line.pop(2) ; line.pop(2) ; line.pop(2) ; line.pop(2)
#Quel est le début?
if line[4]=="":
start=line[5]
else:
start=line[4]
#Quelestlafin?
if line[8]=="" :
end=line[7]
else:
end=line[8]
#Quelestl'orientation?
if int(line[6])<0:
orientation="antisens"
else:
orientation="sens"
#Impression du fichier de sortie
tmp.write(Contig+"\t"+str(start)+"\t"+str(end)+"\t"+str(orientation)+"\n")
print "-----\n\nLe fichier psql a été parsé.\n\tNbr de contigs annotés : "+str(nb_contig_tot)+"\n\n----\n"
#------------------------------------------------------------------------------------------------------