# ---
# jupyter:
#   jupytext:
#     text_representation:
#       extension: .py
#       format_name: light
#       format_version: '1.5'
#       jupytext_version: 1.14.4
#   kernelspec:
#     display_name: Python 3
#     language: python
#     name: python3
# ---

# # Biopython - Esercizio3

# La classe `PairwiseAligner` del package `Align` implementa algoritmi di allineamento di due sequenze (globale, locale, etc.). 

# Installare il package `Bio` di Biopython.

# + active=""
# !conda install -y -c conda-forge biopython
# -

# Importare il package `Bio`.

import Bio

# Importare il package `Align`.

from Bio import Align

# Costruire un oggetto di tipo `PairwiseAligner`.

# +
from Bio.Align import PairwiseAligner

aligner = PairwiseAligner()
#help(Align.PairwiseAligner)
# -

# L'algoritmo corrente è: 

aligner.algorithm

# Si assegnino gli score di allineamento. 

aligner.match_score = 1.0
aligner.mismatch_score = -1.0
aligner.gap_score = -1.0

# Si considerino le due sequenze:

sequence1 = 'GATAATAATGCGAGGG'
sequence2 = 'GAAATAACTGCGAGG'

# Il loro score di allineamento è:

aligner.score(sequence1, sequence2)

# Si determinino tutti gli allineamenti delle due sequenze:

alignments = aligner.align(sequence1, sequence2)
type(alignments)

# Si stampino uno dopo l'altro gli allineamenti.

for align in alignments:
    print(align)

# Si considerino ora queste due sequenze:

sequence1 = 'AGAAGGGGGGAAGAA'
sequence2 = 'GGGGGG'

# Si determinino tutti gli allineamenti delle due sequenze:

alignments = aligner.align(sequence1, sequence2)

# Si stampino uno dopo l'altro gli allineamenti.

for align in alignments:
    print(align)

# Si passi alla modalità `local`. 

aligner.mode='local'

# L'algoritmo è ora:

aligner.algorithm

# Si determini l'allineamento locale tra le due sequenze.

alignments = aligner.align(sequence1, sequence2)

for align in alignments:
    print(align)

StarcoderdataJupyterScriptsDedupFiltered