|
1 |
| -# Alinhamento de Sequencias de DNA |
| 1 | +# Maratona de Filmes |
2 | 2 |
|
3 |
| -Em Bioinformática, o problema de **alinhamento de sequências de DNA** consiste no processo de comparar duas ou mais sequências de bases de forma a se observar seu nível de similaridade. Trata-se de um problema extremamente importante no contexto atual, pois permite comparar sequencias virais de SARS-COV2 em bancos de dados genômicos para detecção de novas mutações. |
| 3 | +Você quer passar um final de semana assistindo ao máximo de filmes possível, mas há restrições quanto aos horários disponíveis e ao número de títulos que podem ser vistos em cada categoria (comédia, drama, ação, etc). |
4 | 4 |
|
5 |
| -O nível de similaridade pode ser calculado com base em **acertos (match)** e **erros (gap e mismatch)**. Os acertos contribuem com sinal positivo (+) para o nível de similaridade e, os erros, com sinal negativo (-). Abaixo temos um exemplo de cálculo do nível similaridade: |
| 5 | +**Entrada**: Um inteiro N representando o número de filmes disponíveis para assistir e N trios de inteiros (H[i], F[i], C[i]), representando a hora de início, a hora de fim e a categoria do i-ésimo filme. Além disso, um inteiro M representando o número de categorias e uma lista de M inteiros representando o número máximo de filmes que podem ser assistidos em cada categoria. |
6 | 6 |
|
7 |
| - |
| 7 | +**Saída**: Um inteiro representando o número máximo de filmes que podem ser assistidos de acordo com as restrições de horários e número máximo por categoria. |
8 | 8 |
|
9 |
| -Vamos associar a pontuação **+1 (match)** e as penalidades **-1 (gap)** e **-4 (mismatch)**. Assim, teremos o seguinte nível de similaridade: |
10 |
| - |
11 |
| -23 matches x (+1) + 4 gaps x (-1) + 3 mismatches x (-4) = 23-4-12 = 7 |
12 |
| - |
13 |
| -Neste contexto, o problema de alinhamento de sequencias de DNA pode ser colocado da seguinte forma: |
14 |
| - |
15 |
| -``` |
16 |
| -Dadas duas sequencias de DNA, com as bases A,T,G,C e - para indicar gap, |
17 |
| -encontrar o alinhamento que maximize o nível de similaridade. |
18 |
| -``` |
19 |
| - |
20 |
| - |
21 |
| -Neste projeto, seu objetivo será construir programas para encontrar este alinhamento de nível máximo de similaridade, utilizando várias estratégias. |
22 |
| - |
23 |
| -Cada um dos seus programas tomará como entrada a seguinte estrutura: a primeira linha contém dois números `n` e `m`, onde `n` é o tamanho da primeira sequencia e, `m`, o tamanho da segunda. Assuma `n ≤ 200` e `m ≤ 200`. A segunda linha contém as bases da primeira sequencia e, a terceira linha, as bases da segunda. |
24 |
| - |
25 |
| -``` |
26 |
| -5 7 |
27 |
| -AT-CC |
28 |
| -TTTCCAA |
29 |
| -``` |
30 |
| - |
31 |
| -A saída deve ser uma linha com um número inteiro indicando o nível máximo de similaridade. |
32 |
| - |
33 |
| -``` |
34 |
| -2 |
35 |
| -``` |
36 |
| -Neste caso, este nível máximo de similaridade pode ser associado ao alinhamento T-CC/TTCC (1-1+1+1=2) ou a CC/CC(1+1=2). Você pode usar o código python abaixo para gerar instâncias aleatórias para seus testes. |
37 |
| - |
38 |
| -```python |
39 |
| -import random |
40 |
| -n = 10 # tamanho da primeira sequência |
41 |
| -m = 40 # tamanho da segunda sequência |
42 |
| -file = 'dna.seq' # nome do arquivo a ser gerado |
43 |
| -f = open(file, 'w') |
44 |
| -seq=[str(n)+'\n', |
45 |
| - str(m)+'\n', |
46 |
| - ''.join(random.choices(['A','T','C','G','-'],k=n))+'\n', |
47 |
| - ''.join(random.choices(['A','T','C','G','-'],k=m))] |
48 |
| -f.writelines(seq) |
49 |
| -f.close() |
50 |
| -print(''.join(seq)) |
51 |
| - |
52 |
| -``` |
53 |
| - |
54 |
| -Um possível output para este código acima é: |
55 |
| - |
56 |
| -``` |
57 |
| -10 |
58 |
| -40 |
59 |
| -TGGCGAT--C |
60 |
| -AGC-TCTCTTC--ATT--CAC-TACACCGACA-CGC-G-A |
61 |
| -``` |
62 |
| - |
63 |
| - |
64 |
| - |
65 |
| -## Estratégias a serem estudadas |
66 |
| - |
67 |
| -Para cada estratégia que vamos estudar, implementaremos um programa correspondente no projeto. Veja abaixo as datas de entrega e descrições de cada estratégia a ser implementada. Em geral, o enunciado de uma parte é liberado após a data de entrega da parte anterior. |
68 |
| - |
69 |
| -1. [Solução Heurística](heuristico) (18/03) |
70 |
| -2. [Busca Local](local) (01/04) |
71 |
| -3. [Busca Exaustiva](exaustiva) (22/04) |
72 |
| -4. Relatório Preliminar (29/04) |
73 |
| -5. [Paralelismo Multicore](openmp) (13/05) |
74 |
| -6. [Paralelismo GPU](gpu) (03/06) |
75 |
| -7. Relatório Final (05/06) |
76 |
| - |
77 |
| -<!-- 1. [Solução Heurística](heuristico) (23/03) |
78 |
| -2. [Busca local](busca-local) (09/04) |
79 |
| -3. [Busca exaustiva](busca-exaustiva) (16/04) |
80 |
| -4. [Relatório preliminar](relatorio-1) (30/04) |
81 |
| -5. [Paralelismo MultiCore](paralelismo-multicore) (21/05) --> |
82 |
| -<!-- |
83 |
| -Cada parte de implementação será conferida usando um script de correção checagem de resultados disponível no repositório de entregas do projeto, juntamente com instruções de uso. Registre seu usuário do github até **15/03** para ser convidado para seu repositório de entregas. |
84 |
| -
|
85 |
| -<iframe width="640px" height= "480px" src= "https://forms.office.com/Pages/ResponsePage.aspx?id=wKZwY5B7CUe9blnCjt6DO36bxJ3XetxChDUDKdweTOJURUNKWkFLSklHNk1RWlVBTUNHWEszVExOViQlQCN0PWcu&embed=true" frameborder= "0" marginwidth= "0" marginheight= "0" style= "border: none; max-width:100%; max-height:100vh" allowfullscreen webkitallowfullscreen mozallowfullscreen msallowfullscreen> </iframe> |
86 |
| -
|
87 |
| -### Instruções de correção |
88 |
| -
|
89 |
| -O corretor automático depende do pacote `grading-tools`, que deverá ser instalado como abaixo. |
90 |
| -
|
91 |
| -```shell |
92 |
| -$> python3.8 -m pip install --user git+https://github.com/igordsm/grading-tools |
93 |
| -``` |
94 |
| -
|
95 |
| -??? tip "Python 3.8 no Ubuntu" |
96 |
| - Se seu `python3` é uma versão inferior ao 3.8, você pode instalá-lo com os pacotes abaixo: |
97 |
| -
|
98 |
| - ``` |
99 |
| - python3.8 python3.8-dev |
100 |
| - ``` |
101 |
| -
|
102 |
| - A partir daí poderá seguir normalmente as instruções desta página. |
103 |
| -
|
104 |
| -Com isso configurado, é só compilar seu programa e rodar `python3.8 corretor.py executavel`. Para baixar os novos exercícios é só rodar `git pull`. Os exercícios serão entregues criando um commit com sua resposta e dando `git push`. |
105 |
| -
|
106 |
| -
|
107 |
| -!!! warning |
108 |
| - Fique atento a atualizações no seu repositório de projeto. Atualizações no corretor serão feitas ao longo do semestre, assim como serão disponibilizados novos arquivos de entrada/saída para cada parte a ser implementada. --> |
109 |
| - |
110 |
| -## Avaliação |
111 |
| - |
112 |
| -O projeto será avaliado usando rubricas para as entregas básicas. As rubricas de avaliação dos relatórios estarão descritas em suas páginas de entrega. |
113 |
| - |
114 |
| -### Conceito D |
115 |
| - |
116 |
| -Algum dos seguintes itens não foi entregue corretamente ou possui problemas sérios (no caso do relatório final). |
117 |
| - |
118 |
| -1. Solução heurística |
119 |
| -2. Busca local |
120 |
| -3. Busca exaustiva |
121 |
| -4. Busca local paralela (CPU) |
122 |
| -5. Busca local paralela (GPU) |
123 |
| -6. Relatório preliminar |
124 |
| -7. Relatório final |
125 |
| - |
126 |
| - |
127 |
| -### Conceito C |
128 |
| - |
129 |
| -Todas as atividades abaixo foram validadas pelo corretor e (no caso do relatório final) alcançaram qualidade mínima exigida. |
130 |
| - |
131 |
| -1. Solução heurística |
132 |
| -2. Busca local |
133 |
| -3. Busca exaustiva |
134 |
| -4. Busca local paralela (CPU) |
135 |
| -5. Busca local paralela (GPU) |
136 |
| -6. Relatório preliminar |
137 |
| -7. Relatório final |
138 |
| - |
139 |
| -### Conceito C+ |
140 |
| - |
141 |
| -Além do já validado no conceito **C**, os relatórios entregues não tinham nenhum ponto **em desenvolvimento** ou **insatisfatório** na rubrica do relatório. |
142 |
| - |
143 |
| -### Conceitos avançados |
144 |
| - |
145 |
| -A partir do conceito **C+** cada atividade avançada vale meio conceito. Elas serão listadas aqui conforme o semestre avança e serão testadas pela checagem de resultados disponível no repositório de entregas. |
0 commit comments