diff --git a/README.md b/README.md index dcdf5a8..9dc2f2b 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,13 @@ # Sprint session 4o semestre 2024/2 -Tema: **CNN para detecção de deficiência de recombinação homologa (HRD)** +Tema: **Modelo para detecção de deficiência de recombinação homologa (HRD)** Empresa parceira: **DASA** ## Documentos relacionados +Antes de iniciar o projeto, **leiam com atenção os documentos a seguir, em espeical, o documento de Requisitos e o documento da Rubrica**. + * [Escopo do projeto](escopo.md) * [Requisitos](requisitos.md) * [Agenda](agenda.md) diff --git a/referencias/Bioinfo_101_INSPER.pdf b/referencias/Bioinfo_101_INSPER.pdf new file mode 100644 index 0000000..c6c33cb Binary files /dev/null and b/referencias/Bioinfo_101_INSPER.pdf differ diff --git a/reports/README.md b/reports/README.md index a993dbe..109adee 100644 --- a/reports/README.md +++ b/reports/README.md @@ -1 +1,7 @@ Neste diretório serão armazenados os documentos solicitados ao longo do projeto. + +Para compilar os arquivos markdown em PDF você pode utilizar o seguinte comando: + +```bash +pandoc --bibliography referencias.bib -N --variable "geometry=margin=1.2in" --variable fontsize=12pt relatorio_final.md --pdf-engine=xelatex --toc -o relatorio_final.pdf +``` diff --git a/reports/exemplo_apresentacao.md b/reports/exemplo_apresentacao.md new file mode 100644 index 0000000..1ad95bb --- /dev/null +++ b/reports/exemplo_apresentacao.md @@ -0,0 +1,93 @@ +--- +marp: true +title: Modelo para detecção de deficiência de recombinação homologa (HRD) +footer: 'Sprint DASA - 4o semestre' +--- + + + + +Modelo para detecção de deficiência de recombinação homologa (HRD) +=== + +![width:300px](img/capa.png) + +###### Equipe.... + +--- + +Qual é o problema? +=== + +- o problema é.... + +--- + +Datasets +=== + +A distribuição dos valores do dataset .... + +``` +Positivo 3295 +Negativo 1135 +Name: count, dtype: int64 +``` + +--- + +Exemplo de trecho de código +=== + +- talvez seja relevante... + +```python +merged_df['TeveAcesso'] = np.where( + merged_df['Decisao'] == 'Acesso Concedido', 'Acesso Concedido', + np.where( + merged_df['Decisao'] == 'Acesso Parcialmente Concedido', 'Acesso Parcialmente Concedido', 'Acesso Negado' + ) +) +``` + +--- + +Exemplo de apresentação dos resultados +=== + + +```python +F1 Score: 0.6859388509722292 Accuracy: 0.8428165007112376 +``` + +```python + precision recall f1-score support + + 0 0.89 0.76 0.82 507 + 1 1.00 0.22 0.36 83 + 2 0.82 0.96 0.88 816 + + accuracy 0.84 1406 + macro avg 0.90 0.64 0.69 1406 +weighted avg 0.86 0.84 0.83 1406 +``` + +--- + +Considerações finais e próximas atividades +=== + +* os resultados obtidos com o algoritmo xxxxx +* .... + diff --git a/reports/img/capa.png b/reports/img/capa.png new file mode 100644 index 0000000..39bc947 Binary files /dev/null and b/reports/img/capa.png differ diff --git a/reports/referencias.bib b/reports/referencias.bib new file mode 100644 index 0000000..0cf8a47 --- /dev/null +++ b/reports/referencias.bib @@ -0,0 +1,46 @@ +@ARTICLE{pozzo2023, + title = "{GIInger} predicts homologous recombination deficiency and + patient response to {PARPi} treatment from shallow genomic + profiles", + author = "Pozzorini, Christian and Andre, Gregoire and Coletta, Tommaso and + Buisson, Adrien and Bieler, Jonathan and Ferrer, Lo{\"\i}c and + Kempfer, Rieke and Saintigny, Pierre and Harl{\'e}, Alexandre and + Vacirca, Davide and Barberis, Massimo and Gilson, Pauline and + Roma, Cristin and Saitta, Alexandra and Smith, Ewan and Consales + Barras, Floriane and Ripol, Lucia and Fritzsche, Martin and + Marques, Ana Claudia and Alkodsi, Amjad and Marin, Ray and + Normanno, Nicola and Grimm, Christoph and M{\"u}llauer, Leonhard + and Harter, Philipp and Pignata, Sandro and Gonzalez-Martin, + Antonio and Denison, Ursula and Fujiwara, Keiichi and Vergote, + Ignace and Colombo, Nicoletta and Willig, Adrian and + Pujade-Lauraine, Eric and Just, Pierre-Alexandre and Ray-Coquard, + Isabelle and Xu, Zhenyu", + abstract = "Homologous recombination deficiency (HRD) is a predictive + biomarker for poly(ADP-ribose) polymerase 1 inhibitor (PARPi) + sensitivity. Routine HRD testing relies on identifying BRCA + mutations, but additional HRD-positive patients can be identified + by measuring genomic instability (GI), a consequence of HRD. + However, the cost and complexity of available solutions hamper GI + testing. We introduce a deep learning framework, GIInger, that + identifies GI from HRD-induced scarring observed in low-pass + whole-genome sequencing data. GIInger seamlessly integrates into + standard BRCA testing workflows and yields reproducible results + concordant with a reference method in a multisite study of 327 + ovarian cancer samples. Applied to a BRCA wild-type enriched + subgroup of 195 PAOLA-1 clinical trial patients, GIInger + identified HRD-positive patients who experienced significantly + extended progression-free survival when treated with PARPi. + GIInger is, therefore, a cost-effective and easy-to-implement + method for accurately stratifying patients with ovarian cancer + for first-line PARPi treatment.", + journal = "Cell Rep. Med.", + volume = 4, + number = 12, + pages = "101344", + month = dec, + year = 2023, + keywords = "HRD; PARPi; biomarker; breast cancer; cancer; convolutional + neural network; homologous recombination deficiency; low-pass + whole-genome sequencing; lpWGS; ovarian cancer", + language = "en" +} diff --git a/reports/relatorio_final.md b/reports/relatorio_final.md new file mode 100644 index 0000000..3c319f1 --- /dev/null +++ b/reports/relatorio_final.md @@ -0,0 +1,32 @@ +--- +title: Modelo para detecção de deficiência de recombinação homologa (HRD) - pode alterar +author: Listar o nome dos autores +date: 08 de novembro de 2024 +lang: pt-br +--- + +# Introdução e objetivos + +O objetivo deste trabalho é.... + +Este trabalho é baseado no artigo [@pozzo2023]. + +# Dados disponíveis + +Os dados disponíveis para este trabalho são... + +# Método + +O método utilizado para a classificação dos pedidos de acesso à informação foi... + +# Resultados + +Os resultados obtidos com o modelo de classificação foram... + +# Considerações finais + +As considerações finais deste trabalho são... + +# Referências + + diff --git a/reports/relatorio_final.pdf b/reports/relatorio_final.pdf new file mode 100644 index 0000000..bcfca80 Binary files /dev/null and b/reports/relatorio_final.pdf differ diff --git a/requisitos.md b/requisitos.md index 3fe575e..d40a8b0 100644 --- a/requisitos.md +++ b/requisitos.md @@ -11,7 +11,9 @@ Todas as equipes serão formadas por 4 estudantes. * **MLEng**: Equipe de Machine Learning Engineering. Esta equipe será responsável pelo entendimento dos dados e desenvolvimento do modelo de machine learning. Em algumas organizações, esta equipe também é chamada de equipe de *Data Science*. * **MLOps**: Equipe de Machine Learning Operations. Esta equipe será responsável por todos procedimentos relacionados a leitura e atualização de dados e modelos. Em algumas organizações, esta equipe também é chamada de equipe de *Data Engineering*. -As entregas de cada equipe são descritas em maiores detalhes logo abaixo. +As entregas de cada equipe são descritas em maiores detalhes logo abaixo. + +Todas as entregas devem ser feitas via GitHub. Inclusive relatórios ou questionários. Estes devem ser escritos em [Markdown](https://www.markdownguide.org/). ## Compreensão do problema @@ -50,12 +52,11 @@ A equipe da DASA irá disponibilizar o dataset para treinamento e validação em A equipe do Insper (MLEng e MLOps) precisam entender como funciona e como implementar uma CNN. -* A equipe do Insper precisa executar pelo menos um dos dois tutoriais abaixo para entender como funciona uma CNN e como implementar uma em Python. +* A equipe do Insper precisa executar o tutorial abaixo para entender como funciona uma CNN e como implementar uma em Keras: * https://www.tensorflow.org/tutorials/images/cnn - * https://pytorch.org/tutorials/beginner/blitz/cifar10_tutorial.html -O tutorial que foi executado precisa estar no repositório do projeto em uma pasta específica. +O tutorial executado precisa estar no repositório do projeto em uma pasta específica. * A equipe do Insper precisa entregar um documento que respondendo as seguintes perguntas: @@ -104,6 +105,10 @@ O tutorial que foi executado precisa estar no repositório do projeto em uma pas * Os dados utilizados neste projeto não poderão ser armazenados no repositório do GitHub. As ferramentas para armazenamento e controle de versão dos dados deverão ser outras. +* Todos os relatórios precisam ser escritos em Markdown e armazenados no repositório do projeto, inclusive a apresentação final. + +* Os scripts para pré-processamento dos dados, treinamento dos modelos e avaliação dos modelos precisam estar escritos em Python de preferência. Por favor, tentem utilizar o mínimo possível Jupyter Notebook para estas tarefas. O controle de versão dos scripts em Jupyter Notebook é muito difícil de ser feito. Talvez, o único momento onde será necessário usar Jupyter notebook é no pré-processamento dos dados e na análise exploratório. Mesmo assim, recomenda-se salvar um arquivo `.py` com a versão final. + ## Gestão do projeto * A equipe do Insper deve manter um kanban do projeto atualizado diariamente. A ferramenta de kanban deve ser a do GitHub Projects. diff --git a/rubrica.md b/rubrica.md index 29893cf..f2edaf0 100644 --- a/rubrica.md +++ b/rubrica.md @@ -1,29 +1,50 @@ # Rubrica -A rubrica deste projeto é apresentada na tabela a seguir: +A rubrica deste projeto é apresentada nas tabelas a seguir: | Grupo | Requisito | Data de entrega | Conceito | |-------|-----------|-----------------|----------| -| Estrutura da Equipe | [Definição da estrutura da equipe](./requisitos.md#estrutura-da-equipe) | 18/11 | | -| Compreensão do problema | [Participação no curso da DASA](./requisitos.md#compreensão-do-problema) | 6/11 | | -| Compreensão do problema | [Entrega do documento de compreensão do problema](./requisitos.md#compreensão-do-problema) | | | -| Análise exploratória de dados | [Entrega do relatório de análise exploratória de dados](./requisitos.md#análise-exploratória-de-dados) | | | -| Pré-processamento e armazenamento dos dados | [Garantir que os dados estejam disponíveis e acessíveis para a equipe de MLEng](./requisitos.md#pré-processamento-e-armazenamento-dos-dados) | | | -| Pré-processamento e armazenamento dos dados | [Automatizar o pipeline de pré-processamento dos dados](./requisitos.md#pré-processamento-e-armazenamento-dos-dados) | | | -| Pré-processamento e armazenamento dos dados | [Definir um sistema de versionamento dos dados](./requisitos.md#pré-processamento-e-armazenamento-dos-dados) | | | -| Modelagem | [Entregar o tutorial executado no repositório do projeto](./requisitos.md#modelagem) | | | -| Modelagem | [Entregar o documento de compreensão da CNN](./requisitos.md#modelagem) | | | -| Modelagem | [Implementação de um pipeline para geração de um modelo baseline](./requisitos.md#modelagem) | | | -| Modelagem | [Implementação da CNN descrita no artigo de referência](./requisitos.md#modelagem) | | | -| Modelagem | [Implementação de um modelo de rede neural com outras características](./requisitos.md#modelagem) | | | -| Apresentação dos resultados | [Identificar as melhores métricas para avaliação dos modelos](./requisitos.md#avaliação-e-apresentação-dos-resultados) | | | -| Apresentação dos resultados | [Apresentar os resultados obtidos com os modelos desenvolvidos](./requisitos.md#avaliação-e-apresentação-dos-resultados) | | | -| Apresentação dos resultados | [Apresentar os modelos desenvolvidos e comparar os resultados obtidos com os resultados apresentados no artigo](./requisitos.md#avaliação-e-apresentação-dos-resultados) | | | -| Deploy | [Armazenar as versões dos modelos usando uma ferramenta específica para isto](./requisitos.md#deploy) | | | -| Deploy | [Implementar um site web que demonstra o modelo treinado](./requisitos.md#deploy) | | | -| Deploy | [Implementar uma rotina para análise em lote de imagens](./requisitos.md#deploy) | | | -| Deploy | [Implementar uma infra-estrutura de log para monitoramento do modelo](./requisitos.md#deploy) | | | -| Estrutura dos repositórios | [Cada equipe deve ter dois repositórios: um para o desenvolvimento do modelo e outro para o desenvolvimento das aplicações](./requisitos.md#estrutura-dos-repositórios) | | | -| Gestão de projetos | [Manter um kanban atualizado diariamente](./requisitos.md#gestão-de-projetos) | | | -| Gestão de projetos | [Commits no mínimo diários](./requisitos.md#gestão-de-projetos) | | | -| Gestão de projetos | [Commits organizados e claros](./requisitos.md#gestão-de-projetos) | | | \ No newline at end of file +| Estrutura da Equipe | [Definição da estrutura da equipe](./requisitos.md#estrutura-da-equipe) | 18/11 | D | +| Compreensão do problema | [Entrega do documento de compreensão do problema em markdown no repositório do projeto](./requisitos.md#compreensão-do-problema) | 22/11 | D | +| Modelagem | [Entregar o tutorial executado no repositório do projeto](./requisitos.md#modelagem) | 22/11 | D | +| Modelagem | [Entregar o documento com perguntas sobre CNN em markdown no repositório do projeto](./requisitos.md#modelagem) | 22/11 | D | +| Análise exploratória de dados | [Entrega do relatório de análise exploratória de dados](./requisitos.md#análise-exploratória-de-dados) | 22/11 | D | +| Estrutura dos repositórios | [Cada equipe deve ter dois repositórios: um para o desenvolvimento do modelo e outro para o desenvolvimento das aplicações](./requisitos.md#estrutura-dos-repositórios) | 18/11 | D | + +| Grupo | Requisito | Data de entrega | Conceito | +|-------|-----------|-----------------|----------| +| Pré-processamento e armazenamento dos dados | [Garantir que os dados estejam disponíveis e acessíveis para a equipe de MLEng](./requisitos.md#pré-processamento-e-armazenamento-dos-dados) | 22/11 | C | +| Pré-processamento e armazenamento dos dados | [Automatizar o pipeline de pré-processamento dos dados](./requisitos.md#pré-processamento-e-armazenamento-dos-dados) | 29/11 | B | +| Pré-processamento e armazenamento dos dados | [Definir um sistema de versionamento dos dados e modelos](./requisitos.md#pré-processamento-e-armazenamento-dos-dados) | 29/11 | A | + +| Grupo | Requisito | Data de entrega | Conceito | +|-------|-----------|-----------------|----------| +| Modelagem | [Implementação de um pipeline para geração de um modelo baseline](./requisitos.md#modelagem) | 29/11 | C | +| Modelagem | [Implementação da CNN descrita no artigo de referência](./requisitos.md#modelagem) | 06/12 | B | +| Modelagem | [Implementação de um modelo de rede neural com outras características mas que tenham, no mínimo, um desempenho similar ao modelo descrito no artigo de referência.](./requisitos.md#modelagem) | 06/12 | A | + +| Grupo | Requisito | Data de entrega | Conceito | +|-------|-----------|-----------------|----------| +| Apresentação dos resultados | [Identificar as melhores métricas para avaliação dos modelos](./requisitos.md#avaliação-e-apresentação-dos-resultados) | 22/11 | C | +| Apresentação dos resultados | [Definir um pipeline correto para avaliação dos modelos](./requisitos.md#avaliação-e-apresentação-dos-resultados) | 29/11 | C | +| Apresentação dos resultados | [Apresentar os resultados obtidos com os modelos desenvolvidos](./requisitos.md#avaliação-e-apresentação-dos-resultados) | 06/12 | B | +| Apresentação dos resultados | [Apresentar os modelos desenvolvidos e comparar os resultados obtidos com os resultados apresentados no artigo](./requisitos.md#avaliação-e-apresentação-dos-resultados) | 06/12 | A | +| Apresentação dos resultados | [Entregar um relatório técnico em markdown no repositório do projeto](./requisitos.md#avaliação-e-apresentação-dos-resultados) | 06/12 | A | + +| Grupo | Requisito | Data de entrega | Conceito | +|-------|-----------|-----------------|----------| +| Deploy | [Armazenar as versões dos modelos usando uma ferramenta específica para isto](./requisitos.md#deploy) | | C | +| Deploy | [Implementar um site web que demonstra o modelo treinado](./requisitos.md#deploy) | | B | +| Deploy | [Implementar uma rotina para análise em lote de imagens](./requisitos.md#deploy) | | B | +| Deploy | [Implementar uma infra-estrutura de log para monitoramento do modelo](./requisitos.md#deploy) | | B | +| Deploy | [Deploy automático da aplicação ao atualizar o branch main](./requisitos.md#deploy) | | A | +| Deploy | [Rotinas de testes automatizados para o site web e para a rotina em lote](./requisitos.md#deploy) | | A | + +| Grupo | Requisito | Data de entrega | Conceito | +|-------|-----------|-----------------|----------| +| Gestão de projetos | [Manter um kanban atualizado diariamente](./requisitos.md#gestão-de-projetos) | Diário | Equipe* | +| Compreensão do problema | [Participação no curso da DASA](./requisitos.md#compreensão-do-problema) | 06/11 | Individual* | +| Gestão de projetos | [Commits diários e relevantes por parte de todos os integrantes da equipe](./requisitos.md#gestão-de-projetos) | Diário | Individual* | +| Gestão de projetos | [Commits organizados e claros](./requisitos.md#gestão-de-projetos). Por favor, considerem este [documento](https://bit.ly/insper_commits) de recomendações. | Diário | Individual* | +| Organização dos repositórios | [Todos os códigos devem ser salvos em arquivos `.py` e todos os relatórios (incluindo apresentação) devem ser escritos em Markdown](./requisitos.md#entregáveis-e-estrutura-dos-repositórios) | 06/12 | Equipe* | +