#===================================================================

#==Aparellador======================================================

import os.path

import sys

import subprocess

from subprocess import call



with open(sys.argv[1]) as fh:

path1 = 'Blastinator_data/Fitxerint1/'

text=(fh.read())

text=text.split("\t")

inici=text[0]

llargada=text[1]

inici=inici.split()

llargada=llargada.split()



asd=fh.name

forma1=".cutre"

name_file=fh.name.strip(".pre")

name_file=name_file.split("/")

name_file=name_file[-1]



nom1=path1+name_file+forma1

file1 = open(nom1,'w')

print >> file1, "fastasubseq "+ "Blastinator_data/Fastafetch_output/output_"+name_file+"_ID.txt", inici[0], llargada[0]

#___Aparellador2________________________________________________________________



import os.path

import sys

import subprocess

from subprocess import call







with open(sys.argv[1]) as fh:

path1 = 'Blastinator_data/Fitxerint2/'

text=(fh.read())

subseq=fh.name

query=fh.name



query=query.split("fastasubseq")

query=query[1]

nom_fitxer=query.replace(".cutre.txt","")



query=query.split("_")



query=query[0]





forma1=".gff"

forma2=".fa"

query="Trad_"+query+forma2



nom1=path1+nom_fitxer+forma1



file1 = open(nom1,'w')

print >> file1, "exonerate -m p2g --showtargetgff -q Blastinator_data/Translated_query/"+query+" -t "+fh.name+" --exhaustive "

#___Aparellador3________________________________________________________________



import os.path

import sys

import subprocess

from subprocess import call











with open(sys.argv[1]) as fh:

path1 = 'Blastinator_data/Fitxerint4/'

nom=fh.name



nom=nom.split("Exonerate_output/Exonerate_")



nom=nom[1]

nom=nom.strip(".ggf")











nom1=path1+""+nom+".fa"

nom=nom.split("Exonerate_")

nom="".join(nom)



file1 = open(nom1,'w')

print >> file1,"fastaseqfromGFF.pl Blastinator_data/Fastasubseq_output/fastasubseq"+nom+".cutre.txt "+fh.name



#___Aparellador4________________________________________________________________



import os.path

import sys

import subprocess

from subprocess import call











with open(sys.argv[1]) as fh:

path1 = 'Blastinator_data/Fitxerint6/'



nom=fh.name

nom=nom.split("/")



nom=nom[-1]

nom1=path1+"Tcofee_"+nom

nom=nom.split("_")

nom=nom[0]+".fa"

















file1 = open(nom1,'w')



print >> file1, "t_coffee Blastinator_data/Translated_query/Trad_"+nom+" "+fh.name



#___Corrector__________________________________________________________________



import os.path

import sys

import subprocess

from subprocess import call











with open(sys.argv[1]) as fh:

path1 = 'Blastinator_data/Fitxerint5/'

nom=fh.name

ftx=(fh.read())

nom=nom.split("Tradprot_")

nom=nom[1]



a =ftx.replace("*","X")



text=path1+nom

file1=open(text,'w')



print >> file1, a



#___Correctus_________________________________________________________________





import os.path

import sys

import subprocess

from subprocess import call



with open(sys.argv[1]) as fh:



path1 = 'Blastinator_data/Fitxerint3/'

text=(fh.read())

text=text.split(">")

try:

text=">"+text[1]

except Exception as e:

text=">"+text[0]

name=fh.name

name=name.split("/")

name=name[-1]



nom1=path1+name

file1=open(nom1,'w')

print >> file1, text





#___Filtrador________________________________________________



#Descarrega els paquests necessaris per que l'script funcioni





import sys

import subprocess

import os.path







#Cercador dels valors que haura de posar en el fastafetch i el fastasubseq





with open(sys.argv[1]) as fh:



#Divideixo el text en linies i blocs

text=(fh.read())

split_text=text.split("\n")

text_split2=text.split(">")

del text_split2[0]

cont = []

hit_list=[]

sbjct_list=[]

numb3r1=[]

numb3r2=[]

new="_"

tab="\t"

values_fastafetch=[]

valor = 1

ID_list=[]



for line in split_text:

#Busco aquesta paraula a la linia, ja que es troba unicament on esta l'E-value del hit, enregistro aquest com una variable

if "unplaced genomic..." in line:

cont=line.split()



try:

#Guardo els ID de la proteina, que es troben a la amteixa linia que l'E-value, unicament si el seu evalue es inferior a

# 0.001

if float(cont[-1]) <= float(1e-04):

prot_id=cont[0]

hit_list.append(prot_id)

ID_list.append(prot_id)

for lines in text_split2:

if prot_id in lines:

cerca = lines.split("\n")

caspa = lines.split("\n")

for linies in cerca:

#Busco aquesta paraula a la linia, ja que es troba unicament on esta l'E-value de l'alinieament, enre

#gistro aquest com una variable

if "Expect" in linies:

trash = linies.split()

evalue= (trash[7])

evalue=evalue[:-1]

evalue=(evalue)







#Busco la paraula a la linia, el primer element despres d'aquesta sera la poscio d'inici, l'ultim la

#posicio final, les guardo en llistes amb la seva ID corrsponent i l'evalue de l'alineament

if "Sbjct" in linies and float(evalue) <= float(1e-04):



valors = linies.split(" ")



hit_list.append(valors[1])

hit_list.append(valors[-1])

#hit_list.append(evalue)

#Netejo la llista hit_list per que no se'm acumulin valors

values_fastafetch.append(hit_list)

hit_list=[]

else:

pass



except Exception as e:

pass



#Si no hi hagut hits, ho dic xD

if " No hits found " in line:

break



else:

continue









#Nom de la carpeta que estic fent servir sense cap tipus d'extensio

#Redirigeixo una copia de les ID a una carpeta de input pel fasta-fetch

#Redirigeixo els resultats del primer alineament per cada hit (teoricament amb l'evalue

#mes petit a una carpeta que conte ID, Inici, Final, E-value







#Resultats pel fastafetch

name_file=fh.name.split(".")

name_file=name_file[0]

name_file=name_file.split("/")

name_file=name_file[-1]

path1 = 'Blastinator_data/Pre_fastafetch/'

path2= 'Blastinator_data/Coordinates_fastasubseq/'

forma1="_ID.txt"

#print name_file

for ID in ID_list:

nom1= path1+name_file+new+ID+forma1

file1 = open(nom1,'w')



print >> file1, ID









#Resultats pel blastq

# path2 = '/home/u93290/Input_blastq/'

# forma2="_save_ID.txt"

# nom2=path2+name_file+forma2

#file2 = open(nom2,'w')

forma2=".pre"





length=0

final_scaffold=0

with open(sys.argv[2]) as lengths:

scaffolds=(lengths.read())

scaffolds=scaffolds.split("\n")



for values in values_fastafetch:



ID2=values[0]

del values[0]



for numb in values:

numb=int(numb)

start=min(values)

start=int(start)-70000

end=max(values)

end=int(end)+50000



if start < 1:

start = 1



for longituds in scaffolds:

if ID2 in longituds:

lon=longituds.split()

final=int(lon[0])







if end > final:



end=final-1



length=(end-start)

nom2= path2+name_file+new+ID2+forma2

file2 = open(nom2,'w')

print >> file2, start, tab, length, tab, end, tab, ID2



#=======================================================================

#=================================END===================================