# -*- coding: utf-8 -*-
"""
Created on Thu May  8 09:21:18 2014

@author: carlo
"""

from Bio import SeqIO
from Bio.Seq import Seq

# Punto I

# Creo una nuova sequenza
sequenza = Seq("ACT")
# Ottengo la sequenza complementare invocando il metodo 'complement' (il metodo complement non modifica la sequenza ma ne crea una nuova)
seq_compl = Seq("ACT").complement()

print sequenza
print seq_compl

# Punto II

# Apro il file
input_handle = open("ls_orchid.gbk", "rU")

# Creo una lista vuota che conterra' tutte le sequenze lette dal file
sequenze = []

# Leggo le sequenze contenute nel file, a ciascuna iterazione ottengo un istanza di SeqRecord (seq + metainformazioni associate)
for record in SeqIO.parse(input_handle, "genbank") :

    # Aggiungo la sequenza alla lista
    sequenze.append(record)
    
    # Conto le occorrenze di 'ACT' nella sequenza
    occorrenze =  record.seq.count(sequenza.tostring())

    # Ottengo la sequenza complementare
    c = record.seq.complement()
    
    # Conto le occorrenze del complementare di 'ACT' nella sequenza c 
    occorrenze_compl = c.count(seq_compl.tostring())
    
    print "ID = %s, lunghezza %i occorrenze %i occorrenze compl %i" \
          % (record.id, len(record.seq), occorrenze, occorrenze_compl)    
    
input_handle.close()

# Punto III

# Creo una nuova lista che contiene solo le sequenza con lunghezza < 700
sequenze_filtrate = [record for record in sequenze \
                   if len(record.seq) < 700]

print 'Prima ' + str(len(sequenze)) + ', Dopo ' + str(len(sequenze_filtrate))

# Punto IV

# Apro un nuovo file in sola scrittura
output_handle = open("ls_orchid.fasta", "w")

# Per ogni sequenza con lunghezza < 700
for record in sequenze_filtrate:
    
    # Scrivo il record nel file aperto in scrittura usando codifica 'fasta'
    SeqIO.write(record, output_handle, "fasta")    
    
output_handle.close()
