diff --git a/README.md b/README.md index 1f945ec28..b9f6c353c 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ Todos os exemplos no diretório `notebook` são preparados para o ambiente Jupyt # Acionando os Notebooks via Binder * Última versão testada e estável: - [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/santanche/component2learn/v1.1.0) + [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/santanche/component2learn/v1.1.1) * Última versão disponível: [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/santanche/component2learn/master) diff --git a/labs/2021/02-dataflow_mvc/db/zombie-health-cases500.csv b/labs/2021/02-dataflow_mvc/db/zombie-health-cases500.csv new file mode 100644 index 000000000..208bd7390 --- /dev/null +++ b/labs/2021/02-dataflow_mvc/db/zombie-health-cases500.csv @@ -0,0 +1,501 @@ +paralysis,yellow_tongue,trembiling_finger,member_loss,chest_pain,severe_anger,diagnostic +f,f,f,f,t,f,viral_infection +f,t,t,f,f,f,zulombriga +f,f,f,t,t,f,viral_infection +f,f,t,f,f,f,zulombriga +f,t,t,f,f,f,zulombriga +f,t,f,f,f,f,zulombriga +f,t,t,f,f,f,zulombriga +f,f,f,t,t,f,viral_infection +f,f,f,f,t,f,viral_infection +t,t,f,f,f,f,bacterial_infection +t,t,f,f,f,f,bacterial_infection +f,f,f,f,t,t,fight +f,t,f,t,f,f,bacterial_infection +f,t,f,f,f,f,bacterial_infection +f,f,t,f,f,f,zulombriga +f,f,f,t,t,f,fight +f,t,f,f,f,f,bacterial_infection +f,f,f,t,t,f,viral_infection +f,f,f,t,t,t,fight +f,f,f,t,f,t,fight +f,f,f,t,t,f,viral_infection +f,f,t,f,f,f,zulombriga +f,f,f,t,t,t,fight +t,t,f,t,f,f,bacterial_infection +f,f,f,f,t,f,viral_infection +f,f,f,t,f,t,fight +f,f,f,t,f,t,fight +f,f,f,t,t,t,fight +f,f,f,t,f,f,viral_infection +f,f,f,t,f,t,fight +f,f,f,f,t,f,viral_infection +f,t,t,f,f,f,zulombriga +f,f,f,f,t,f,viral_infection +t,f,f,f,t,f,viral_infection +f,f,f,t,f,t,fight +f,f,f,t,t,t,fight +t,t,f,f,f,f,bacterial_infection +t,t,f,f,f,f,bacterial_infection +f,t,f,f,f,f,bacterial_infection +f,f,t,f,f,f,zulombriga +f,f,f,t,f,f,viral_infection +f,f,f,t,t,t,fight +f,f,f,f,t,f,viral_infection +f,f,f,t,t,f,viral_infection +f,t,f,t,f,f,bacterial_infection +t,t,f,f,f,f,bacterial_infection +f,f,f,f,t,f,viral_infection +f,f,f,f,t,f,viral_infection +f,t,f,f,f,f,bacterial_infection +f,t,t,f,f,f,zulombriga +f,f,f,t,t,t,fight +f,f,f,f,t,t,fight +f,f,t,f,f,f,zulombriga +f,t,f,f,f,f,bacterial_infection +f,f,f,t,t,f,viral_infection +f,f,f,f,t,f,viral_infection +t,t,f,t,f,f,bacterial_infection +f,f,f,t,t,t,fight +f,f,f,t,t,t,fight +f,f,f,f,t,f,viral_infection +f,f,f,f,f,f,bacterial_infection +f,f,f,f,t,t,fight +t,f,f,f,t,f,viral_infection +f,f,f,t,f,t,fight +f,t,t,f,f,f,zulombriga +t,t,f,t,f,f,bacterial_infection +f,f,f,t,f,t,fight +t,t,f,t,f,f,bacterial_infection +t,f,f,f,t,f,viral_infection +f,f,f,f,t,f,viral_infection +f,f,f,t,t,f,viral_infection +f,t,t,f,f,f,zulombriga +f,t,t,f,f,f,zulombriga +f,t,t,f,f,f,zulombriga +f,f,f,t,t,f,viral_infection +f,f,f,t,t,t,fight +f,t,f,t,f,f,bacterial_infection +f,f,f,t,f,t,fight +f,t,f,f,f,f,bacterial_infection +f,f,f,t,f,f,fight +f,f,f,f,t,f,viral_infection +f,f,f,f,t,f,viral_infection +f,f,f,t,t,t,fight +f,t,f,t,f,f,bacterial_infection +f,t,t,f,f,f,zulombriga +f,t,t,t,f,f,zulombriga +f,t,f,f,f,f,zulombriga +f,f,f,t,f,f,zulombriga +f,f,f,t,f,t,fight +f,t,t,f,f,f,zulombriga +f,f,f,f,f,t,fight +f,t,f,t,f,f,bacterial_infection +f,f,f,f,t,f,viral_infection +f,f,f,t,f,t,fight +f,f,f,f,f,t,fight +f,f,f,t,f,t,fight +f,f,t,f,f,f,zulombriga +f,f,f,f,t,f,viral_infection +f,t,f,f,f,f,bacterial_infection +t,t,f,t,f,f,bacterial_infection +f,f,f,f,f,f,viral_infection +f,t,f,f,f,f,bacterial_infection +f,f,f,t,t,t,fight +f,t,f,t,f,f,bacterial_infection +f,f,t,t,f,f,zulombriga +f,f,f,f,t,f,viral_infection +f,f,f,t,t,f,viral_infection +t,t,f,f,f,f,bacterial_infection +f,f,f,t,t,f,viral_infection +f,f,t,f,f,f,zulombriga +f,t,f,f,f,f,bacterial_infection +t,t,f,t,f,f,bacterial_infection +f,f,f,t,f,t,fight +f,f,f,t,t,t,fight +t,f,f,f,t,f,viral_infection +f,f,f,t,t,t,fight +f,f,f,f,f,t,fight +f,f,f,t,t,f,viral_infection +f,f,f,t,f,t,fight +f,f,f,t,t,f,viral_infection +f,f,f,t,t,t,fight +f,t,f,t,f,f,bacterial_infection +f,f,f,t,t,f,viral_infection +f,f,f,t,f,t,fight +f,f,f,t,t,f,viral_infection +f,f,f,t,f,f,bacterial_infection +f,f,t,f,f,f,zulombriga +f,t,f,f,f,f,bacterial_infection +f,f,f,t,t,t,fight +f,f,f,f,t,f,viral_infection +f,f,f,t,f,f,viral_infection +t,t,f,f,f,f,bacterial_infection +f,f,f,t,f,t,fight +f,f,t,f,f,f,zulombriga +f,f,t,f,f,f,zulombriga +f,t,f,t,f,f,bacterial_infection +f,f,f,t,t,t,fight +f,f,f,f,t,f,viral_infection +f,f,f,t,t,f,viral_infection +f,t,t,f,f,f,zulombriga +f,f,f,t,t,t,fight +f,f,f,f,t,f,viral_infection +f,t,t,f,f,f,zulombriga +f,f,t,f,f,f,zulombriga +f,f,t,t,f,f,zulombriga +f,f,f,t,t,f,viral_infection +f,t,f,f,f,f,bacterial_infection +t,t,f,t,f,f,bacterial_infection +f,t,t,f,f,f,zulombriga +f,f,f,f,t,t,fight +f,f,f,f,t,f,viral_infection +f,f,f,f,t,f,viral_infection +f,t,t,f,f,f,zulombriga +f,t,t,f,f,f,zulombriga +f,f,f,f,f,f,zulombriga +f,f,f,t,f,t,fight +f,f,f,t,t,t,fight +f,f,f,f,t,f,viral_infection +f,f,f,f,t,f,viral_infection +t,t,f,f,f,f,bacterial_infection +f,f,f,t,f,t,fight +f,f,f,t,t,t,fight +t,t,f,f,f,f,bacterial_infection +f,t,f,f,f,f,bacterial_infection +f,f,f,t,f,t,fight +f,t,f,f,f,f,bacterial_infection +f,f,f,t,t,f,viral_infection +f,f,t,f,f,f,zulombriga +f,f,f,f,t,f,viral_infection +f,f,f,t,f,t,fight +f,t,t,f,f,f,zulombriga +f,t,f,t,f,f,bacterial_infection +t,t,f,t,f,f,bacterial_infection +f,f,f,f,f,t,fight +f,f,f,t,t,f,viral_infection +t,t,f,t,f,f,bacterial_infection +f,t,t,t,f,f,zulombriga +f,t,t,f,f,f,zulombriga +f,t,t,f,f,f,zulombriga +t,t,f,f,f,f,bacterial_infection +f,f,f,t,t,f,viral_infection +f,t,f,t,f,f,bacterial_infection +f,f,f,f,f,t,fight +t,t,f,t,f,f,bacterial_infection +f,f,t,t,f,f,zulombriga +t,t,f,t,f,f,bacterial_infection +f,t,f,t,f,f,bacterial_infection +t,t,f,t,f,f,bacterial_infection +f,t,f,t,f,f,bacterial_infection +f,f,t,f,f,f,zulombriga +f,t,f,f,f,f,bacterial_infection +t,t,f,t,f,f,bacterial_infection +t,t,f,f,f,f,bacterial_infection +f,f,f,t,t,t,fight +f,t,f,f,f,f,bacterial_infection +f,f,f,f,t,t,fight +f,f,f,f,t,f,viral_infection +f,f,f,f,t,f,viral_infection +f,f,f,t,t,t,fight +f,f,f,f,f,f,bacterial_infection +f,f,f,f,t,f,viral_infection +f,f,f,t,t,t,fight +f,f,t,t,f,f,zulombriga +t,t,f,f,f,f,bacterial_infection +f,f,f,t,t,f,viral_infection +t,t,f,t,f,f,bacterial_infection +t,t,f,t,f,f,bacterial_infection +f,f,f,t,t,f,fight +f,t,f,t,f,f,bacterial_infection +f,f,f,t,t,f,viral_infection +f,f,f,f,f,t,fight +f,t,t,t,f,f,zulombriga +f,t,f,t,f,f,bacterial_infection +f,t,f,f,f,f,bacterial_infection +t,t,f,t,f,f,bacterial_infection +f,t,t,f,f,f,zulombriga +f,f,f,t,t,t,fight +f,f,f,f,t,t,fight +f,t,t,f,f,f,zulombriga +t,t,f,t,f,f,bacterial_infection +f,f,f,f,t,f,viral_infection +t,f,f,t,t,f,viral_infection +t,t,f,f,f,f,bacterial_infection +f,t,t,f,f,f,zulombriga +f,f,f,f,t,t,fight +f,f,f,t,t,f,viral_infection +t,f,f,t,t,f,viral_infection +f,t,f,t,f,f,zulombriga +f,t,f,t,f,f,bacterial_infection +f,f,t,f,f,f,zulombriga +f,f,f,t,t,t,fight +t,t,f,f,f,f,bacterial_infection +t,t,f,f,f,f,bacterial_infection +t,t,f,t,f,f,bacterial_infection +f,f,f,f,t,f,viral_infection +f,f,f,f,t,f,viral_infection +t,f,f,f,f,f,bacterial_infection +f,f,f,t,f,t,fight +f,t,f,t,f,f,bacterial_infection +f,t,t,f,f,f,zulombriga +f,t,f,t,f,f,bacterial_infection +f,f,t,f,f,f,zulombriga +f,f,f,t,f,t,fight +f,t,t,t,f,f,zulombriga +f,t,f,f,f,f,bacterial_infection +f,f,f,f,t,f,viral_infection +t,f,f,f,t,f,viral_infection +f,t,f,f,f,f,bacterial_infection +f,t,t,f,f,f,zulombriga +f,f,t,f,f,f,zulombriga +f,f,f,f,t,t,fight +t,f,f,t,f,f,bacterial_infection +f,f,f,f,t,f,viral_infection +f,f,f,t,t,f,viral_infection +t,t,f,t,f,f,bacterial_infection +f,f,f,t,f,f,fight +f,f,t,f,f,f,zulombriga +t,t,f,f,f,f,bacterial_infection +f,f,f,t,t,f,viral_infection +f,f,f,t,t,f,viral_infection +f,f,f,t,f,t,fight +f,f,f,f,f,t,fight +f,t,t,t,f,f,zulombriga +f,f,t,f,f,f,zulombriga +f,t,t,f,f,f,zulombriga +f,f,f,f,t,f,viral_infection +f,f,f,t,t,f,viral_infection +t,t,f,f,f,f,bacterial_infection +f,f,f,t,t,f,viral_infection +f,f,f,t,f,t,fight +t,t,f,f,f,f,bacterial_infection +f,f,f,f,t,f,fight +f,f,f,f,f,f,zulombriga +f,f,f,f,f,f,bacterial_infection +f,f,f,t,f,t,fight +f,f,f,f,f,f,zulombriga +f,t,t,f,f,f,zulombriga +f,t,f,f,f,f,bacterial_infection +f,f,t,f,f,f,zulombriga +f,f,f,f,f,t,fight +f,t,t,f,f,f,zulombriga +t,t,f,t,f,f,bacterial_infection +f,f,f,t,t,f,viral_infection +f,f,f,t,t,f,viral_infection +t,f,f,t,t,f,viral_infection +f,f,t,f,f,f,zulombriga +f,t,t,t,f,f,zulombriga +f,f,t,t,f,f,zulombriga +f,f,f,t,t,t,fight +f,f,f,t,t,t,fight +t,t,f,f,f,f,bacterial_infection +f,t,f,t,f,f,bacterial_infection +f,t,f,f,f,f,bacterial_infection +f,f,t,f,f,f,zulombriga +f,f,f,t,t,f,viral_infection +f,f,f,t,f,t,fight +f,t,t,f,f,f,zulombriga +f,t,t,t,f,f,zulombriga +f,f,f,t,t,f,viral_infection +t,t,f,f,f,f,bacterial_infection +f,t,f,t,f,f,bacterial_infection +f,f,f,t,f,t,fight +f,f,f,t,t,f,viral_infection +f,t,f,f,f,f,bacterial_infection +f,f,f,t,t,f,viral_infection +f,f,t,f,f,f,zulombriga +f,f,t,f,f,f,zulombriga +f,f,t,f,f,f,zulombriga +f,f,f,f,f,t,fight +f,f,f,f,t,f,viral_infection +f,f,t,t,f,f,zulombriga +t,t,f,f,f,f,bacterial_infection +f,f,f,f,t,f,viral_infection +f,f,f,f,t,t,fight +f,f,f,f,f,t,fight +f,t,t,f,f,f,zulombriga +f,f,t,f,f,f,zulombriga +f,f,f,t,f,t,fight +f,f,f,t,t,f,fight +f,f,f,f,t,f,viral_infection +f,f,t,f,f,f,zulombriga +f,f,f,f,t,f,fight +f,f,f,f,t,f,viral_infection +f,t,f,f,f,f,bacterial_infection +t,t,f,t,f,f,bacterial_infection +f,f,f,t,t,t,fight +f,f,f,f,t,f,viral_infection +f,f,f,t,f,f,zulombriga +f,f,f,f,t,f,viral_infection +f,f,f,f,t,f,viral_infection +f,t,t,f,f,f,zulombriga +f,f,f,f,t,t,fight +f,f,f,f,t,t,fight +f,f,f,t,t,t,fight +t,t,f,f,f,f,bacterial_infection +f,f,f,t,f,t,fight +f,f,f,t,f,f,fight +f,f,f,t,t,t,fight +f,f,f,t,t,f,viral_infection +f,f,f,t,t,f,viral_infection +t,t,f,t,f,f,bacterial_infection +f,f,f,t,t,t,fight +f,t,t,f,f,f,zulombriga +f,f,f,t,t,f,viral_infection +f,f,f,t,t,f,viral_infection +f,f,f,t,t,f,viral_infection +t,t,f,f,f,f,bacterial_infection +f,t,t,f,f,f,zulombriga +f,f,f,t,t,f,viral_infection +f,t,f,t,f,f,bacterial_infection +f,f,f,t,f,t,fight +f,f,f,f,t,f,viral_infection +t,t,f,f,f,f,bacterial_infection +t,t,f,t,f,f,bacterial_infection +f,t,f,f,f,f,bacterial_infection +f,f,f,t,t,f,viral_infection +f,t,t,f,f,f,zulombriga +f,f,f,f,t,f,viral_infection +t,t,f,f,f,f,bacterial_infection +f,f,f,t,t,t,fight +f,f,f,t,t,f,viral_infection +f,f,f,f,t,f,viral_infection +t,f,f,f,t,f,viral_infection +f,t,t,t,f,f,zulombriga +f,f,f,f,f,t,fight +f,t,f,f,f,f,bacterial_infection +f,f,f,t,t,f,viral_infection +f,t,t,f,f,f,zulombriga +f,f,t,t,f,f,zulombriga +f,t,t,f,f,f,zulombriga +f,f,f,f,t,t,fight +f,f,t,f,f,f,zulombriga +f,f,f,t,t,t,fight +f,t,t,t,f,f,zulombriga +f,t,t,f,f,f,zulombriga +f,f,f,t,t,f,viral_infection +f,t,t,f,f,f,zulombriga +f,f,t,f,f,f,zulombriga +f,f,f,f,f,f,fight +f,f,f,t,f,t,fight +f,f,f,t,t,f,viral_infection +f,t,t,f,f,f,zulombriga +f,f,f,t,t,f,viral_infection +f,f,f,f,t,f,viral_infection +t,t,f,f,f,f,bacterial_infection +f,f,t,f,f,f,zulombriga +f,f,t,f,f,f,zulombriga +f,f,t,f,f,f,zulombriga +t,t,f,t,f,f,bacterial_infection +f,f,f,f,f,t,fight +f,t,f,t,f,f,bacterial_infection +f,f,f,t,t,t,fight +t,t,f,f,f,f,bacterial_infection +f,t,t,f,f,f,zulombriga +f,f,f,f,t,t,fight +f,f,f,f,t,f,viral_infection +f,f,t,f,f,f,zulombriga +f,f,t,f,f,f,zulombriga +f,f,t,t,f,f,zulombriga +f,t,t,t,f,f,zulombriga +f,f,f,t,t,f,fight +f,f,t,f,f,f,zulombriga +t,t,f,t,f,f,bacterial_infection +f,t,f,t,f,f,bacterial_infection +f,f,f,t,t,f,viral_infection +f,f,f,t,t,t,fight +f,t,f,t,f,f,bacterial_infection +t,t,f,t,f,f,bacterial_infection +f,t,t,f,f,f,zulombriga +f,f,f,f,t,f,viral_infection +t,t,f,t,f,f,bacterial_infection +f,t,f,t,f,f,bacterial_infection +f,f,f,f,t,f,viral_infection +f,t,f,t,f,f,bacterial_infection +f,f,f,t,f,t,fight +t,t,f,f,f,f,bacterial_infection +f,f,f,t,t,f,viral_infection +f,t,f,f,f,f,zulombriga +f,t,f,t,f,f,bacterial_infection +f,f,f,t,t,t,fight +t,f,f,f,t,f,viral_infection +f,f,f,t,t,f,viral_infection +t,t,f,f,f,f,bacterial_infection +t,t,f,t,f,f,bacterial_infection +f,t,f,f,f,f,bacterial_infection +f,f,f,t,t,f,viral_infection +f,t,f,f,f,f,bacterial_infection +f,f,f,t,f,t,fight +t,t,f,t,f,f,bacterial_infection +f,f,t,f,f,f,zulombriga +t,t,f,f,f,f,bacterial_infection +f,f,t,f,f,f,zulombriga +f,f,f,f,t,f,viral_infection +f,f,f,t,t,f,viral_infection +f,f,f,f,t,f,viral_infection +t,t,f,t,f,f,bacterial_infection +f,f,f,t,t,f,viral_infection +t,t,f,f,f,f,bacterial_infection +f,f,t,f,f,f,zulombriga +f,t,f,f,f,f,zulombriga +f,f,f,t,f,t,fight +f,f,f,f,f,f,fight +f,f,t,f,f,f,zulombriga +f,f,f,f,f,t,fight +f,f,f,t,t,f,viral_infection +f,t,f,f,f,f,bacterial_infection +f,f,f,t,f,t,fight +f,t,t,f,f,f,zulombriga +f,f,f,t,f,t,fight +f,f,f,t,t,t,fight +f,f,f,t,t,t,fight +f,f,f,t,t,t,fight +f,t,t,t,f,f,zulombriga +f,f,f,t,t,t,fight +f,f,f,t,t,f,viral_infection +f,f,f,t,t,t,fight +f,f,f,t,t,f,viral_infection +f,t,t,f,f,f,zulombriga +f,f,f,t,t,f,viral_infection +f,t,t,f,f,f,zulombriga +f,f,f,t,t,t,fight +f,f,f,f,t,f,viral_infection +f,f,f,f,t,f,viral_infection +f,f,f,t,f,t,fight +f,f,f,t,f,t,fight +f,f,f,f,t,f,viral_infection +f,f,f,t,t,f,viral_infection +f,f,f,t,f,t,fight +t,f,f,t,t,f,viral_infection +t,f,f,f,t,f,viral_infection +f,t,f,t,f,f,bacterial_infection +f,f,f,t,t,t,fight +t,t,f,f,f,f,bacterial_infection +f,f,t,f,f,f,zulombriga +f,f,f,t,f,t,fight +f,f,f,t,f,t,fight +f,f,f,t,t,f,viral_infection +f,f,f,t,t,f,viral_infection +f,f,t,f,f,f,zulombriga +f,t,t,f,f,f,zulombriga +f,f,f,f,t,f,viral_infection +t,f,f,t,t,f,viral_infection +f,t,f,t,f,f,bacterial_infection +t,t,f,f,f,f,bacterial_infection +f,f,f,f,t,f,viral_infection +f,f,f,f,t,f,viral_infection +t,t,f,f,f,f,bacterial_infection +f,t,f,t,f,f,bacterial_infection +f,f,t,f,f,f,zulombriga +f,f,f,f,t,f,viral_infection +f,t,f,t,f,f,bacterial_infection +t,t,f,t,f,f,bacterial_infection +f,f,t,f,f,f,zulombriga +f,f,f,t,f,t,fight +f,f,f,t,t,f,viral_infection +t,f,f,t,f,f,bacterial_infection +f,f,f,t,t,f,viral_infection +f,f,f,t,f,t,fight +f,t,f,t,f,f,bacterial_infection +f,f,f,t,t,t,fight diff --git a/labs/2021/02-dataflow_mvc/db/zombie-health-new-cases20.csv b/labs/2021/02-dataflow_mvc/db/zombie-health-new-cases20.csv new file mode 100644 index 000000000..bf69dd852 --- /dev/null +++ b/labs/2021/02-dataflow_mvc/db/zombie-health-new-cases20.csv @@ -0,0 +1,21 @@ +paralysis,yellow_tongue,member_loss,chest_pain,trembiling_finger,severe_anger,red_eye,blue_skin,diagnostic +f,t,t,f,f,f,f,t,bacterial_infection +f,f,t,t,f,f,f,f,Infecção Viral +f,f,t,t,f,f,f,f,Infecção Viral +f,f,t,f,f,t,f,f,fight +f,f,f,f,f,f,f,f,fight +f,f,f,f,t,t,f,t,t_virus +f,t,t,f,t,f,f,f,zulombriga +f,t,f,f,f,f,f,f,zulombriga +t,t,f,f,f,f,f,f,bacterial_infection +f,f,t,t,f,f,f,f,Infecção Viral +f,f,t,t,f,t,f,f,fight +f,t,t,f,t,f,f,f,zulombriga +f,f,f,f,t,f,f,t,t_virus +t,f,t,f,f,f,f,t,bacterial_infection +f,f,f,f,t,t,f,t,t_virus +t,t,t,f,f,f,f,f,bacterial_infection +f,f,f,f,t,t,f,t,t_virus +f,t,t,f,t,f,f,f,zulombriga +t,t,t,f,f,f,f,t,bacterial_infection +f,f,f,f,t,f,f,f,zulombriga diff --git a/labs/2021/02-dataflow_mvc/db/zombie-health-new-cases500.csv b/labs/2021/02-dataflow_mvc/db/zombie-health-new-cases500.csv new file mode 100644 index 000000000..a8273d4ee --- /dev/null +++ b/labs/2021/02-dataflow_mvc/db/zombie-health-new-cases500.csv @@ -0,0 +1,501 @@ +Paralisia,Língua Amarela,Dedo Tremendo,Perda de Membro,Dor no Peito,Raiva Severa,Olho vermelho,Pele azul,Diagnóstico +0,0,1,0,0,0,0,0,Zulombriga +0,0,0,1,1,1,0,0,Briga +0,0,0,0,0,0,1,1,Gripe Aviaria +0,0,0,1,0,0,0,0,Infecção Bacteriana +0,0,0,0,0,1,0,1,T-Virus +0,0,1,1,0,0,0,0,Zulombriga +0,0,0,0,1,0,0,0,Infecção Viral +0,1,1,1,0,0,0,0,Zulombriga +0,1,0,0,0,0,0,1,Infecção Bacteriana +0,0,0,1,1,1,0,0,Briga +0,0,0,0,0,0,1,1,Gripe Aviaria +1,0,0,0,0,0,1,1,Gripe Aviaria +0,0,1,1,0,0,0,0,Zulombriga +0,0,0,1,0,1,0,0,Briga +0,0,1,0,0,1,0,1,T-Virus +0,0,0,0,0,0,1,1,Gripe Aviaria +0,0,1,0,0,1,0,1,T-Virus +0,1,0,0,0,0,0,0,Infecção Bacteriana +0,0,1,1,0,0,0,0,Zulombriga +0,0,0,0,0,0,1,0,Gripe Aviaria +0,0,0,0,1,0,0,0,Infecção Viral +1,1,0,0,0,0,0,1,Infecção Bacteriana +0,0,0,0,0,1,0,1,T-Virus +0,1,0,0,0,0,1,1,Gripe Aviaria +1,1,0,1,0,0,0,0,Infecção Bacteriana +0,0,0,0,0,1,0,1,T-Virus +0,0,0,1,0,1,0,0,Briga +0,1,0,1,0,0,0,1,Infecção Bacteriana +0,0,0,1,1,1,0,1,Briga +0,1,1,1,0,0,0,0,Zulombriga +0,0,0,0,0,0,1,1,Gripe Aviaria +0,0,0,0,0,1,0,1,T-Virus +0,1,1,0,0,0,0,0,Zulombriga +0,0,0,0,0,1,0,1,T-Virus +0,1,1,1,0,0,0,0,Zulombriga +0,1,1,0,0,0,0,0,Zulombriga +0,0,1,1,0,0,0,0,Zulombriga +0,0,0,1,0,1,0,0,Briga +0,0,1,0,0,1,0,1,T-Virus +1,0,0,0,0,0,0,1,Infecção Bacteriana +0,0,1,0,0,1,0,1,T-Virus +0,0,0,0,1,0,0,0,Infecção Viral +1,1,0,0,0,0,0,1,Infecção Bacteriana +0,0,0,1,0,0,0,0,Zulombriga +0,0,0,0,0,0,1,1,Gripe Aviaria +0,0,0,0,0,0,0,0,Infecção Viral +0,0,0,1,1,1,0,0,Briga +0,1,0,0,0,0,1,1,Gripe Aviaria +0,0,0,0,1,0,0,0,Infecção Viral +0,0,1,0,0,1,0,1,T-Virus +0,0,0,0,0,0,1,1,Gripe Aviaria +0,1,0,0,0,0,0,1,Infecção Bacteriana +0,0,0,0,1,1,0,0,Briga +0,0,0,0,1,1,0,1,Briga +0,0,0,0,0,1,0,1,T-Virus +0,1,0,0,0,0,1,1,Gripe Aviaria +0,0,0,1,1,0,0,0,Infecção Viral +0,0,0,0,0,0,0,0,Zulombriga +0,0,0,0,0,0,1,0,Gripe Aviaria +0,0,0,1,1,1,0,0,Briga +0,1,0,0,0,0,1,1,Infecção Bacteriana +1,1,0,0,0,0,0,0,Infecção Bacteriana +0,0,1,0,0,0,0,0,Zulombriga +0,0,0,1,0,1,0,0,Briga +1,1,0,0,0,0,0,0,Infecção Bacteriana +0,0,1,0,0,1,0,1,T-Virus +0,0,0,0,0,0,0,1,T-Virus +0,1,0,1,0,0,0,1,Infecção Bacteriana +0,0,0,0,1,0,0,0,Infecção Viral +0,0,1,0,0,1,0,0,T-Virus +0,0,1,0,0,1,0,1,T-Virus +1,0,0,1,0,0,0,1,Infecção Bacteriana +0,0,0,1,1,0,0,0,Infecção Viral +0,0,0,0,1,0,0,0,Infecção Viral +0,0,1,0,0,1,0,1,T-Virus +0,0,0,0,0,0,1,1,Gripe Aviaria +1,1,0,1,0,0,0,0,Infecção Bacteriana +0,0,0,1,1,0,0,0,Infecção Viral +0,0,0,1,1,1,0,0,Briga +0,1,0,1,0,0,0,1,Infecção Bacteriana +0,0,1,0,0,0,0,1,T-Virus +0,1,1,0,0,0,0,0,Zulombriga +0,0,0,1,1,0,0,0,Infecção Viral +0,1,1,0,0,0,0,0,Zulombriga +0,0,0,1,1,0,0,0,Infecção Viral +1,1,0,1,0,0,0,0,Infecção Bacteriana +0,0,0,1,0,1,0,0,Briga +1,1,0,1,0,0,0,0,Infecção Bacteriana +0,1,0,1,0,0,0,1,Infecção Bacteriana +0,0,1,0,0,1,0,1,T-Virus +0,1,0,0,0,0,0,0,Infecção Bacteriana +0,0,1,0,0,1,0,1,T-Virus +0,1,1,0,0,0,0,0,Zulombriga +0,0,0,0,1,0,0,0,Infecção Viral +0,1,0,1,0,0,0,0,Infecção Bacteriana +0,0,1,0,0,1,0,1,T-Virus +0,0,0,0,0,0,1,1,Gripe Aviaria +0,1,1,0,0,0,0,0,Zulombriga +0,0,1,1,0,0,0,0,Zulombriga +1,1,0,0,0,0,0,0,Infecção Bacteriana +0,1,1,1,0,0,0,0,Zulombriga +0,0,0,0,1,0,0,0,Infecção Viral +0,0,0,0,1,0,0,0,Infecção Viral +0,1,0,0,0,0,0,0,Infecção Bacteriana +0,0,0,0,0,0,1,1,Gripe Aviaria +0,0,0,0,0,1,0,1,T-Virus +0,0,0,0,0,0,1,1,Gripe Aviaria +1,1,0,0,0,0,0,0,Infecção Bacteriana +1,1,0,1,0,0,0,1,Infecção Bacteriana +0,0,0,1,1,1,0,0,Briga +0,0,0,0,0,0,1,1,Gripe Aviaria +0,0,0,1,0,1,0,0,Briga +0,0,0,0,1,0,0,0,Infecção Viral +1,1,0,0,0,0,0,1,Infecção Bacteriana +0,0,0,0,1,1,0,0,Briga +0,0,0,1,1,0,0,0,Infecção Viral +0,0,1,0,0,0,0,0,Zulombriga +0,0,0,0,0,0,1,0,Gripe Aviaria +0,0,0,0,0,0,1,1,Gripe Aviaria +0,0,1,0,0,1,0,1,T-Virus +0,1,0,0,0,0,1,1,Gripe Aviaria +0,0,0,1,1,0,0,0,Infecção Viral +0,1,1,1,0,0,0,0,Zulombriga +0,1,0,1,0,0,0,0,Zulombriga +0,0,0,1,1,1,0,0,Briga +0,1,0,1,0,0,0,1,Infecção Bacteriana +0,0,0,0,1,0,0,0,Infecção Viral +0,0,0,1,1,0,0,0,Infecção Viral +0,0,0,1,1,0,0,0,Infecção Viral +0,1,1,1,0,0,0,0,Zulombriga +0,0,1,0,0,0,0,0,Zulombriga +0,0,0,0,1,0,0,0,Infecção Viral +0,0,0,0,0,0,0,1,Gripe Aviaria +1,1,0,0,0,0,0,0,Infecção Bacteriana +0,1,0,0,0,0,0,0,Infecção Bacteriana +0,0,1,1,0,0,0,0,Zulombriga +0,1,0,1,0,0,1,0,Infecção Bacteriana +0,0,0,1,0,1,0,0,Briga +0,0,0,0,0,0,1,1,Gripe Aviaria +0,0,0,0,1,0,0,0,Infecção Viral +0,0,0,1,1,1,0,1,Briga +0,0,1,0,0,0,0,0,Zulombriga +0,0,0,0,0,0,0,0,Infecção Viral +0,0,1,0,0,1,0,1,T-Virus +0,0,1,1,0,0,0,0,Zulombriga +0,0,0,0,0,1,0,1,T-Virus +1,0,0,0,0,0,1,0,Gripe Aviaria +0,0,1,0,0,1,0,1,T-Virus +0,1,0,1,0,0,0,0,Infecção Bacteriana +0,0,0,1,1,0,0,0,Infecção Viral +0,0,0,0,0,0,1,1,Gripe Aviaria +0,0,1,0,0,1,0,1,T-Virus +0,0,0,0,0,0,1,1,Gripe Aviaria +1,1,0,0,0,0,1,0,Infecção Bacteriana +0,0,0,1,1,0,0,0,Infecção Viral +0,1,0,1,0,0,0,1,Infecção Bacteriana +0,0,0,1,0,1,0,1,Briga +0,1,0,0,0,0,1,1,Gripe Aviaria +0,0,0,1,1,1,0,0,Briga +0,0,0,0,0,1,0,0,Briga +0,0,1,0,0,1,0,1,T-Virus +1,1,0,0,0,0,1,1,Gripe Aviaria +0,0,0,0,0,0,1,1,Gripe Aviaria +0,0,0,0,0,0,1,1,Gripe Aviaria +0,0,1,0,0,1,0,1,T-Virus +0,0,0,1,1,1,0,1,Briga +0,0,1,0,0,1,0,1,T-Virus +0,0,0,0,0,1,0,0,Briga +0,1,1,1,0,0,0,0,Zulombriga +0,0,0,1,1,0,0,0,Infecção Viral +0,1,0,0,0,0,1,1,Gripe Aviaria +1,1,0,0,0,0,0,1,Infecção Bacteriana +0,0,0,0,0,1,0,1,T-Virus +0,0,0,0,1,1,0,0,Briga +0,0,0,1,0,1,0,0,Briga +0,1,0,0,0,0,0,0,Infecção Bacteriana +0,1,0,0,0,0,0,0,Infecção Bacteriana +0,0,0,0,0,0,1,1,Gripe Aviaria +0,1,1,0,0,0,0,0,Zulombriga +0,0,0,0,0,1,0,0,Briga +0,0,0,0,1,0,0,0,Infecção Viral +0,1,1,1,0,0,0,0,Zulombriga +0,0,1,0,0,0,0,0,Zulombriga +0,1,0,0,0,0,1,1,Infecção Bacteriana +0,1,0,0,0,0,0,0,Infecção Bacteriana +0,0,0,1,0,1,0,0,Briga +1,1,0,0,0,0,0,0,Infecção Bacteriana +0,0,1,0,0,1,0,1,T-Virus +0,1,1,1,0,0,0,0,Zulombriga +1,0,0,1,0,0,0,0,Infecção Bacteriana +1,1,0,1,0,0,1,1,Infecção Bacteriana +0,0,0,0,0,1,0,1,T-Virus +0,0,0,0,0,0,0,0,Zulombriga +0,0,0,0,1,0,0,0,Infecção Viral +0,0,0,0,0,1,0,1,Briga +0,0,0,1,0,1,0,0,Briga +0,0,0,0,0,1,0,1,T-Virus +0,1,0,0,0,0,0,1,Infecção Bacteriana +0,0,0,0,0,0,1,1,Gripe Aviaria +0,0,0,1,0,1,0,0,Briga +0,0,0,1,1,0,0,0,Infecção Viral +0,0,0,1,1,0,0,0,Infecção Viral +0,0,1,1,0,0,0,0,Zulombriga +0,1,1,1,0,0,0,0,Zulombriga +0,0,0,0,0,0,0,0,Infecção Viral +0,0,1,0,0,0,0,1,T-Virus +0,0,0,1,1,0,0,0,Infecção Viral +0,1,0,1,0,0,0,1,Infecção Bacteriana +1,0,0,0,1,0,0,0,Infecção Viral +0,1,1,1,0,0,0,0,Zulombriga +1,0,0,0,0,0,1,1,Gripe Aviaria +0,0,0,1,0,0,0,0,Infecção Viral +0,0,0,1,0,1,0,0,Briga +0,0,0,1,1,0,0,0,Infecção Viral +0,1,0,0,0,0,0,0,Infecção Bacteriana +0,1,1,1,0,0,0,0,Zulombriga +0,0,0,0,0,1,0,1,T-Virus +0,0,0,1,1,1,0,0,Briga +0,0,1,0,0,1,0,1,T-Virus +0,0,0,0,0,0,1,1,Gripe Aviaria +0,1,0,0,0,0,0,0,Infecção Bacteriana +0,0,0,1,1,0,0,0,Infecção Viral +0,0,0,1,1,1,0,0,Briga +0,0,1,0,0,1,0,0,T-Virus +0,0,0,0,0,0,1,1,Gripe Aviaria +0,0,0,1,1,0,0,0,Infecção Viral +0,0,0,0,1,1,0,1,Briga +1,0,0,0,0,0,1,1,Gripe Aviaria +0,0,1,0,0,1,0,0,T-Virus +0,0,0,0,0,0,0,1,Gripe Aviaria +0,0,0,0,0,0,1,0,Gripe Aviaria +0,0,0,0,1,1,0,0,Briga +0,1,1,1,0,0,0,0,Zulombriga +0,0,0,1,1,0,0,0,Infecção Viral +0,1,1,1,0,0,0,0,Zulombriga +0,0,0,0,0,0,1,1,Gripe Aviaria +0,0,0,0,0,0,1,1,Gripe Aviaria +0,0,0,0,0,1,0,0,Briga +0,0,0,0,0,0,1,1,Gripe Aviaria +0,0,1,0,0,1,0,0,T-Virus +0,0,0,0,1,0,0,0,Infecção Viral +0,0,0,0,0,0,1,1,Gripe Aviaria +0,0,0,0,0,0,0,1,T-Virus +0,0,0,0,1,0,0,0,Infecção Viral +0,0,0,0,1,0,0,0,Infecção Viral +0,0,0,0,0,1,0,1,T-Virus +1,1,0,1,0,0,0,1,Infecção Bacteriana +1,1,0,0,0,0,0,0,Infecção Bacteriana +0,1,0,0,0,0,1,1,Gripe Aviaria +0,0,0,1,1,0,0,0,Infecção Viral +0,0,0,1,1,0,0,0,Briga +0,0,0,1,1,1,0,0,Briga +0,1,0,0,0,0,0,1,Infecção Bacteriana +0,0,1,1,0,0,0,0,Zulombriga +0,0,0,0,0,1,0,0,Briga +0,0,1,0,0,1,0,1,T-Virus +0,1,0,0,0,0,0,1,Infecção Bacteriana +0,0,0,0,0,0,0,0,Infecção Viral +1,1,0,1,0,0,0,0,Infecção Bacteriana +0,0,1,0,0,1,0,1,T-Virus +0,1,0,0,0,0,1,1,Gripe Aviaria +0,0,0,0,0,0,1,1,Gripe Aviaria +0,0,0,1,0,1,0,1,Briga +0,1,1,0,0,0,0,0,Zulombriga +0,0,0,0,0,0,1,1,Gripe Aviaria +0,0,0,1,1,0,0,0,Infecção Viral +0,0,0,0,1,0,0,0,Infecção Viral +0,0,1,0,0,0,0,0,Zulombriga +0,0,0,0,0,1,0,1,T-Virus +0,0,1,0,0,1,0,1,T-Virus +0,1,0,0,0,0,1,1,Gripe Aviaria +0,0,0,1,1,0,0,0,Infecção Viral +0,0,0,0,1,0,0,0,Infecção Viral +0,0,1,0,0,1,0,1,T-Virus +0,0,1,1,0,0,0,0,Zulombriga +0,0,1,1,0,0,0,0,Zulombriga +0,0,0,0,0,1,0,1,T-Virus +0,0,0,0,1,0,0,0,Infecção Viral +0,1,1,1,0,0,0,0,Zulombriga +1,1,0,0,0,0,0,1,Infecção Bacteriana +0,0,1,0,0,0,0,0,Zulombriga +0,0,0,1,0,1,0,0,Briga +0,0,0,0,0,1,0,0,Briga +0,0,0,0,0,1,0,0,Briga +0,0,0,0,0,1,0,1,T-Virus +0,1,0,0,0,0,1,1,Gripe Aviaria +0,1,0,0,0,0,1,1,Gripe Aviaria +0,0,1,1,0,0,0,0,Zulombriga +0,0,0,0,0,1,0,1,T-Virus +0,0,1,0,0,1,0,1,T-Virus +0,0,1,1,0,0,0,0,Zulombriga +0,0,0,0,0,0,1,1,Gripe Aviaria +0,0,0,0,0,1,0,1,T-Virus +0,0,0,1,1,0,0,0,Infecção Viral +0,1,1,0,0,0,0,0,Zulombriga +0,0,0,0,0,1,0,0,Briga +0,0,0,0,0,0,1,0,Gripe Aviaria +0,0,0,1,1,1,0,0,Briga +0,0,0,1,0,1,0,0,Briga +0,1,1,1,0,0,0,0,Zulombriga +0,0,0,1,1,0,0,0,Briga +0,1,0,0,0,0,0,1,Infecção Bacteriana +0,0,0,1,0,0,0,0,Infecção Viral +1,1,0,1,0,0,1,1,Infecção Bacteriana +0,0,0,0,1,1,0,0,Briga +0,0,0,1,0,1,0,0,Briga +0,0,0,0,1,1,0,0,Briga +0,0,0,1,1,1,0,0,Briga +0,0,0,0,0,1,0,1,T-Virus +0,0,1,0,0,0,0,0,Zulombriga +0,0,0,1,1,0,0,0,Infecção Viral +0,0,0,0,0,1,0,1,T-Virus +0,0,0,0,0,0,1,1,Gripe Aviaria +0,0,0,0,0,0,1,1,Gripe Aviaria +0,0,0,1,1,1,0,0,Briga +0,0,0,0,0,0,1,1,Gripe Aviaria +0,0,0,0,0,1,0,1,T-Virus +0,1,0,0,0,0,1,1,Gripe Aviaria +0,0,1,0,0,0,0,1,T-Virus +0,0,0,0,0,0,0,1,Gripe Aviaria +0,0,0,0,0,1,0,1,T-Virus +0,0,0,1,1,1,0,0,Briga +0,0,0,1,1,0,0,0,Infecção Viral +0,1,1,1,0,0,0,0,Zulombriga +0,0,1,0,0,1,0,1,T-Virus +0,0,0,0,1,0,0,0,Infecção Viral +0,0,1,0,0,1,0,1,T-Virus +0,0,0,1,0,1,0,0,Briga +0,0,1,0,0,1,0,1,T-Virus +0,0,0,1,1,1,0,0,Briga +1,0,0,0,0,0,1,1,Gripe Aviaria +0,1,1,1,0,0,0,0,Zulombriga +0,0,0,0,0,0,1,1,Gripe Aviaria +0,0,0,0,0,0,1,1,Gripe Aviaria +1,1,0,1,0,0,0,1,Infecção Bacteriana +1,1,0,0,0,0,0,0,Infecção Bacteriana +0,0,0,1,1,1,0,0,Briga +1,1,0,0,0,0,1,0,Infecção Bacteriana +1,0,0,0,1,0,0,0,Infecção Viral +0,0,0,1,0,0,0,0,Infecção Viral +0,1,0,1,0,0,0,0,Infecção Bacteriana +0,0,0,0,0,0,1,1,Gripe Aviaria +0,0,0,1,1,0,0,0,Infecção Viral +0,1,0,0,0,0,1,1,Gripe Aviaria +0,1,0,0,0,0,0,0,Infecção Bacteriana +1,1,0,1,0,0,0,0,Infecção Bacteriana +0,0,0,0,0,0,1,1,Gripe Aviaria +0,0,1,0,0,0,0,0,Zulombriga +0,0,0,0,1,0,0,0,Infecção Viral +0,0,0,0,1,1,0,0,Briga +0,0,0,0,1,0,0,0,Infecção Viral +0,0,1,0,0,1,0,1,T-Virus +0,1,0,0,0,0,0,1,Infecção Bacteriana +0,0,0,1,0,0,0,0,Zulombriga +0,0,1,0,0,1,0,1,T-Virus +0,0,0,0,0,1,0,1,T-Virus +0,0,1,0,0,1,0,1,T-Virus +0,0,0,1,0,1,0,0,Briga +0,0,0,0,0,1,0,0,Briga +0,0,1,0,0,1,0,1,T-Virus +0,0,1,0,0,0,0,0,Zulombriga +0,0,0,0,1,1,0,0,Briga +0,0,0,0,0,0,1,0,Gripe Aviaria +0,1,0,0,0,0,1,0,Infecção Bacteriana +0,0,0,0,1,0,0,0,Infecção Viral +0,1,0,0,0,0,1,1,Gripe Aviaria +0,0,0,0,0,1,0,1,T-Virus +0,0,0,0,0,1,0,0,Briga +0,0,0,1,0,1,0,0,Briga +0,1,1,0,0,0,0,0,Zulombriga +0,0,0,0,0,1,0,0,Briga +0,0,0,1,0,1,0,0,Briga +0,0,0,1,1,0,0,0,Infecção Viral +0,0,0,0,0,1,0,1,T-Virus +0,0,1,0,0,1,0,1,T-Virus +0,0,0,0,1,0,0,0,Infecção Viral +0,0,0,0,0,0,1,1,Gripe Aviaria +0,0,0,0,0,0,0,0,Infecção Viral +0,0,0,0,1,1,0,0,Briga +0,0,0,0,0,0,1,1,Gripe Aviaria +0,0,0,1,1,0,0,0,Infecção Viral +0,0,0,0,0,1,0,1,T-Virus +1,0,0,1,0,0,0,1,Infecção Bacteriana +0,0,1,0,0,0,0,0,Zulombriga +0,0,0,0,0,0,1,1,Gripe Aviaria +0,0,0,0,1,0,0,0,Infecção Viral +0,1,0,0,0,0,0,0,Infecção Bacteriana +0,0,0,0,0,0,1,1,Gripe Aviaria +0,0,0,0,0,0,0,1,Gripe Aviaria +0,0,0,1,0,0,0,0,Briga +0,0,0,0,0,0,1,1,Gripe Aviaria +0,0,0,1,1,0,0,0,Infecção Viral +0,0,0,0,0,0,1,1,Gripe Aviaria +0,0,1,0,0,1,0,1,T-Virus +0,0,0,1,1,0,0,0,Infecção Viral +1,0,0,0,0,0,1,1,Gripe Aviaria +0,1,1,0,0,0,0,0,Zulombriga +0,0,0,0,1,0,0,0,Infecção Viral +0,0,1,1,0,0,0,0,Zulombriga +0,0,0,0,0,1,0,1,T-Virus +0,1,1,1,0,0,0,0,Zulombriga +1,0,0,1,1,0,0,0,Infecção Viral +0,0,0,0,0,0,1,1,Gripe Aviaria +0,0,0,0,0,1,0,0,Briga +0,0,0,0,1,1,0,0,Briga +0,0,0,1,1,0,0,0,Infecção Viral +0,1,1,0,0,0,0,0,Zulombriga +0,0,0,0,1,0,0,0,Infecção Viral +0,1,0,1,0,0,0,1,Infecção Bacteriana +0,0,1,0,0,0,0,0,Zulombriga +0,0,1,0,0,1,0,1,T-Virus +0,0,0,0,0,0,0,1,T-Virus +0,0,0,0,0,1,0,1,T-Virus +0,0,0,0,1,0,0,0,Infecção Viral +0,0,0,1,1,1,0,0,Briga +0,0,0,0,0,0,1,1,Gripe Aviaria +0,0,0,0,1,0,0,0,Infecção Viral +0,0,0,0,0,1,0,1,T-Virus +0,0,0,0,1,0,0,0,Infecção Viral +0,0,1,0,0,0,0,0,Zulombriga +1,1,0,1,0,0,0,0,Infecção Bacteriana +0,0,0,1,0,1,0,0,Briga +0,0,0,0,1,1,0,1,Briga +0,0,0,1,0,1,0,0,Briga +0,0,0,0,1,0,0,0,Infecção Viral +0,0,1,0,0,1,0,0,T-Virus +0,0,0,0,1,0,0,0,Infecção Viral +0,0,0,0,1,0,0,0,Infecção Viral +0,0,1,0,0,0,0,1,T-Virus +0,0,1,0,0,1,0,1,T-Virus +0,0,0,0,0,0,1,1,Gripe Aviaria +0,0,1,0,0,0,0,0,Zulombriga +0,0,0,1,0,1,0,0,Briga +0,0,1,0,0,0,0,1,T-Virus +0,1,0,1,0,0,0,0,Infecção Bacteriana +0,0,0,1,1,0,0,0,Infecção Viral +0,0,0,1,1,1,0,0,Briga +0,0,0,1,0,1,0,0,Briga +0,0,0,1,0,1,0,0,Briga +0,0,0,1,1,0,0,0,Infecção Viral +0,0,0,1,1,0,0,0,Infecção Viral +0,1,0,1,0,0,0,1,Infecção Bacteriana +0,0,0,0,0,0,1,0,Gripe Aviaria +0,1,0,0,0,0,0,1,Infecção Bacteriana +0,0,0,1,0,1,0,0,Briga +0,0,1,1,0,0,0,0,Zulombriga +1,0,0,0,0,0,0,1,Infecção Bacteriana +0,0,0,0,1,0,0,0,Infecção Viral +0,0,0,1,1,1,0,0,Briga +0,0,0,0,0,0,1,1,Gripe Aviaria +1,1,0,0,0,0,1,1,Infecção Bacteriana +0,0,0,1,1,0,0,0,Infecção Viral +0,0,0,1,1,0,0,0,Infecção Viral +0,0,0,0,0,1,0,0,Briga +0,0,1,0,0,0,0,1,T-Virus +0,0,0,1,1,0,0,0,Infecção Viral +0,0,1,1,0,0,0,0,Zulombriga +0,0,1,0,0,1,0,1,T-Virus +0,1,1,0,0,0,0,0,Zulombriga +0,0,0,0,1,0,0,0,Infecção Viral +0,0,1,1,0,0,0,0,Zulombriga +0,0,1,0,0,1,0,1,T-Virus +0,0,0,0,0,1,0,1,T-Virus +0,0,0,1,1,1,0,0,Briga +0,1,0,0,0,0,1,1,Gripe Aviaria +0,0,1,0,0,1,0,1,T-Virus +0,0,0,0,0,1,0,1,T-Virus +1,1,0,0,0,0,0,1,Infecção Bacteriana +0,0,1,1,0,0,0,0,Zulombriga +0,0,0,0,1,0,0,0,Infecção Viral +0,0,0,0,0,0,1,1,Gripe Aviaria +0,0,0,0,0,0,0,1,Gripe Aviaria +0,0,0,1,0,1,0,0,Briga +0,0,0,1,0,1,0,0,Briga +0,1,1,1,0,0,0,0,Zulombriga +0,0,1,1,0,0,0,0,Zulombriga +0,1,1,0,0,0,0,0,Zulombriga +0,0,0,1,0,1,0,0,Briga +0,0,0,1,0,1,0,0,Briga +0,1,1,1,0,0,0,0,Zulombriga +1,0,0,1,1,0,0,0,Infecção Viral +0,0,0,1,0,1,0,0,Briga +0,0,0,1,0,1,0,1,Briga +0,0,0,0,0,0,1,1,Gripe Aviaria +0,0,0,0,1,0,0,0,Infecção Viral +0,0,0,0,0,1,0,0,Briga +0,0,0,1,1,0,0,0,Infecção Viral +0,1,0,0,0,0,0,1,Infecção Bacteriana +1,1,0,0,0,0,0,1,Infecção Bacteriana +0,0,0,1,1,0,0,0,Infecção Viral +0,0,1,0,0,0,0,0,Zulombriga +0,1,1,1,0,0,0,0,Zulombriga +0,0,0,1,1,0,0,0,Infecção Viral +0,0,0,0,1,0,0,0,Infecção Viral +0,1,1,0,0,0,0,0,Zulombriga +0,1,0,1,0,0,0,0,Infecção Bacteriana +0,0,1,0,0,0,0,0,Zulombriga +0,0,1,0,0,1,0,1,T-Virus +1,1,0,1,0,0,1,1,Infecção Bacteriana +0,1,0,0,0,0,1,0,Gripe Aviaria diff --git a/labs/2021/02-dataflow_mvc/db/zombie-health-spreadsheet-ml-training.csv b/labs/2021/02-dataflow_mvc/db/zombie-health-spreadsheet-ml-training.csv new file mode 100644 index 000000000..f8972aea6 --- /dev/null +++ b/labs/2021/02-dataflow_mvc/db/zombie-health-spreadsheet-ml-training.csv @@ -0,0 +1,20 @@ +paralysis,yellow_tong,member_loss,chest_pain,trembling_finger,severe_anger,history_bacteria,diagnostic +t,t,f,f,f,f,f,bacterial_infection +f,t,f,f,f,f,f,bacterial_infection +f,t,f,f,t,f,t,bite_deficit +f,t,t,f,t,f,f,bite_deficit +f,f,t,t,f,f,f,viral_infection +f,f,t,f,f,t,f,fights +f,f,f,f,f,t,f,nothing +f,f,f,f,t,f,f,bite_deficit +f,t,f,t,f,f,f,bacterial_infection +f,f,f,t,f,f,f,viral_infection +f,t,t,f,f,f,t,bite_deficit +t,t,f,f,f,f,f,bacterial_infection +f,f,f,t,f,f,t,viral_infection +f,f,t,f,f,f,f,fights +f,t,f,f,t,f,t,bite_deficit +f,t,t,f,t,f,f,bite_deficit +f,f,f,t,f,f,f,fights +f,t,f,f,f,f,f,bacterial_infection +f,f,f,f,t,f,f,bite_deficit diff --git a/labs/2021/02-dataflow_mvc/db/zombie-health-spreadsheet.csv b/labs/2021/02-dataflow_mvc/db/zombie-health-spreadsheet.csv new file mode 100644 index 000000000..8d1b6e172 --- /dev/null +++ b/labs/2021/02-dataflow_mvc/db/zombie-health-spreadsheet.csv @@ -0,0 +1,20 @@ +name,age,paralysis,yellow_tong,member_loss,chest_pain,trembling_finger,severe_anger,history_bacteria,diagnostic,days_recovery,has_disease +Rot Donnadd,43,t,t,f,f,f,f,f,bacterial_infection,9,t +Pid Mught,38,f,t,f,f,f,f,f,bacterial_infection,7,t +Thulk Lebbimp,63,f,t,f,f,t,f,t,bite_deficit,10,t +Bouvossam Damme,71,f,t,t,f,t,f,f,bite_deficit,13,t +Pirg Zall,48,f,f,t,t,f,f,f,viral_infection,4,t +Nullon Rackindock,23,f,f,t,f,f,t,f,fights,8,f +Shor Splitturch,35,f,f,f,f,f,t,f,nothing,0,f +Ger Ackeng,66,f,f,f,f,t,f,f,bite_deficit,11,t +Gleldo Shruck,45,f,t,f,t,f,f,f,bacterial_infection,8,t +Nadross Pilch,60,f,f,f,t,f,f,f,viral_infection,8,t +Sadrent Pemmir,73,f,t,t,f,f,f,t,bite_deficit,14,t +Read Rait,55,t,t,f,f,f,f,f,bacterial_infection,9,t +Dallun Whadder,15,f,f,f,t,f,f,t,viral_infection,2,t +Eapplar Thorg,25,f,f,t,f,f,f,f,fights,5,f +Blottork Patter,68,f,t,f,f,t,f,t,bite_deficit,12,t +Darrutt Bottall,75,f,t,t,f,t,f,f,bite_deficit,16,t +Gallir Shauch,20,f,f,f,t,f,f,f,fights,12,f +Dirpe Polnay,39,f,t,f,f,f,f,f,bacterial_infection,7,t +Harrimp Fottiem,65,f,f,f,f,t,f,f,bite_deficit,9,t \ No newline at end of file diff --git a/labs/2021/02-dataflow_mvc/lib/README.md b/labs/2021/02-dataflow_mvc/lib/README.md new file mode 100644 index 000000000..8f792a056 --- /dev/null +++ b/labs/2021/02-dataflow_mvc/lib/README.md @@ -0,0 +1 @@ +# Libraries adopted in the notebooks diff --git a/labs/2021/02-dataflow_mvc/lib/component-catalog-2020-08-04.jar b/labs/2021/02-dataflow_mvc/lib/component-catalog-2020-08-04.jar new file mode 100644 index 000000000..f2312a537 Binary files /dev/null and b/labs/2021/02-dataflow_mvc/lib/component-catalog-2020-08-04.jar differ diff --git a/labs/2021/02-dataflow_mvc/lib/weka-3.9.3.jar b/labs/2021/02-dataflow_mvc/lib/weka-3.9.3.jar new file mode 100644 index 000000000..48a766ba9 Binary files /dev/null and b/labs/2021/02-dataflow_mvc/lib/weka-3.9.3.jar differ diff --git a/labs/2021/02-dataflow_mvc/lib/xchart-3.5.2.jar b/labs/2021/02-dataflow_mvc/lib/xchart-3.5.2.jar new file mode 100644 index 000000000..19b30f7d8 Binary files /dev/null and b/labs/2021/02-dataflow_mvc/lib/xchart-3.5.2.jar differ diff --git a/labs/2021/02-dataflow_mvc/notebooks/components-chart-1-single-class.ipynb b/labs/2021/02-dataflow_mvc/notebooks/components-1-chart-single-class.ipynb similarity index 83% rename from labs/2021/02-dataflow_mvc/notebooks/components-chart-1-single-class.ipynb rename to labs/2021/02-dataflow_mvc/notebooks/components-1-chart-single-class.ipynb index 1242fb8d1..6412ad29d 100644 --- a/labs/2021/02-dataflow_mvc/notebooks/components-chart-1-single-class.ipynb +++ b/labs/2021/02-dataflow_mvc/notebooks/components-1-chart-single-class.ipynb @@ -4,7 +4,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Componentes" + "# Componentes em Java" ] }, { @@ -35,7 +35,7 @@ { "data": { "text/plain": [ - "com.twosigma.beaker.javash.bkr685f263d.ISequence" + "com.twosigma.beaker.javash.bkr7a26df1a.ISequence" ] }, "execution_count": 1, @@ -71,7 +71,7 @@ { "data": { "text/plain": [ - "com.twosigma.beaker.javash.bkr685f263d.IGeometricProgressionProperties" + "com.twosigma.beaker.javash.bkr7a26df1a.IGeometricProgressionProperties" ] }, "execution_count": 2, @@ -106,7 +106,7 @@ { "data": { "text/plain": [ - "com.twosigma.beaker.javash.bkr685f263d.IGeometricProgression" + "com.twosigma.beaker.javash.bkr7a26df1a.IGeometricProgression" ] }, "execution_count": 3, @@ -137,7 +137,7 @@ { "data": { "text/plain": [ - "com.twosigma.beaker.javash.bkr685f263d.GeometricProgression" + "com.twosigma.beaker.javash.bkr7a26df1a.GeometricProgression" ] }, "execution_count": 4, @@ -253,7 +253,7 @@ { "data": { "text/plain": [ - "com.twosigma.beaker.javash.bkr685f263d.IChart" + "com.twosigma.beaker.javash.bkr7a26df1a.IChart" ] }, "execution_count": 6, @@ -289,7 +289,7 @@ { "data": { "text/plain": [ - "com.twosigma.beaker.javash.bkr685f263d.IBarChartProperties" + "com.twosigma.beaker.javash.bkr7a26df1a.IBarChartProperties" ] }, "execution_count": 7, @@ -328,7 +328,7 @@ { "data": { "text/plain": [ - "com.twosigma.beaker.javash.bkr685f263d.IRSequence" + "com.twosigma.beaker.javash.bkr7a26df1a.IRSequence" ] }, "execution_count": 8, @@ -359,7 +359,7 @@ { "data": { "text/plain": [ - "com.twosigma.beaker.javash.bkr685f263d.IBarChart" + "com.twosigma.beaker.javash.bkr7a26df1a.IBarChart" ] }, "execution_count": 9, @@ -390,7 +390,7 @@ { "data": { "text/plain": [ - "com.twosigma.beaker.javash.bkr685f263d.BarChart" + "com.twosigma.beaker.javash.bkr7a26df1a.BarChart" ] }, "execution_count": 10, @@ -502,6 +502,48 @@ "bc.connect(gp);\n", "bc.plot();" ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Laboratório 2a" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Tarefa 1\n", + "\n", + "Escreva um componente em Java chamado `Media` que receba um lote contendo uma sequência de `n` números e gere a média desses números. O componente deve seguir o estilo arquitetural Data Flow, respeitando a interface pivô `ISequence`, tanto para receber o lote de números, quanto para gerar média. O componente é customizado pelos seguintes parâmetros:\n", + "\n", + "* `n` - indica quantos números ele considerará para cada lote de cálculo de média; por exemplo, se o `n` for `5`, o componente solicita 5 números, calcula a média e passa adiante, depois solicita mais 5, calcula a média e passa adiante;\n", + "* `lotes` - número de lotes para cálculo de média, por exemplo, se a propriedade `lotes` for `3` e a propriedade `n` for `5`, ele calcula a média de 3 lotes de 5 números cada." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Tarefa 2\n", + "\n", + "Escreva um programa em Java que conecte um componente `GeometricProgression` a um `Media` que por sua vez é conectado a um componente `BarChart`. O componente `Media` deve calcular as médias de 4 lotes de 3 números da progressão geométrica. Essas médias serão apresentadas no `BarChart`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { diff --git a/labs/2021/02-dataflow_mvc/notebooks/components-chart-2-multiple-classes.ipynb b/labs/2021/02-dataflow_mvc/notebooks/components-2-chart-multiple-classes.ipynb similarity index 100% rename from labs/2021/02-dataflow_mvc/notebooks/components-chart-2-multiple-classes.ipynb rename to labs/2021/02-dataflow_mvc/notebooks/components-2-chart-multiple-classes.ipynb diff --git a/labs/2021/02-dataflow_mvc/notebooks/components-chart-3-factory.ipynb b/labs/2021/02-dataflow_mvc/notebooks/components-3-chart-factory.ipynb similarity index 100% rename from labs/2021/02-dataflow_mvc/notebooks/components-chart-3-factory.ipynb rename to labs/2021/02-dataflow_mvc/notebooks/components-3-chart-factory.ipynb diff --git a/labs/2021/02-dataflow_mvc/notebooks/components-4-catalog.ipynb b/labs/2021/02-dataflow_mvc/notebooks/components-4-catalog.ipynb new file mode 100644 index 000000000..df762b5ed --- /dev/null +++ b/labs/2021/02-dataflow_mvc/notebooks/components-4-catalog.ipynb @@ -0,0 +1,732 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Componentes de Software\n", + "\n", + "A seguir são reunidos alguns conceitos importantes para se entender o princípio de **Componentes de Software**.\n", + "\n", + "Em linhas gerais, um componente é um módulo de software reusável, que se liga aos seus parceiros exclusivamente através de interfaces. Apresentaremos aqui uma abordagem típica de ligação de componentes baseada em interfaces e conexões:\n", + "* **Interfaces** - expressam os serviços providos pelos componentes, declarados através de `interfaces` Java;\n", + "* **Conexões** - é a forma como componentes são ligados entre si; a partir delas um componente toma conhecimento do outro para que se comuniquem.\n", + "\n", + "## Interfaces\n", + "\n", + "Idealmente, todas as funcionalidades de um componente deveriam ser acessadas exclusivamente através de interfaces.\n", + "\n", + "Vamos analisar o processo de definição do `DataSetComponent` como um componente de software. Considerando que o código a seguir é uma versão inicial do componente, uma representação visual para o mesmo pode ser feita em UML, conforme segue:\n", + "\n", + "![Componente](images/console-dataset-a.png)\n", + "\n", + "Veja a seguir a representação em Java:\n", + "\n", + "~~~java\n", + "public interface IDataSetProperties {\n", + " public String getDataSource();\n", + " public void setDataSource(String dataSource);\n", + "}\n", + "\n", + "public interface ITableProducer {\n", + " String[] requestAttributes();\n", + " String[][] requestInstances();\n", + "}\n", + "~~~\n", + "\n", + "Note que cada interface que ele disponibiliza é apresentada na forma de uma haste com um círculo na ponta.\n", + "\n", + "Como a interface `IDataSetProperties` tem métodos `get` e `set` para definir a propriedade `DataSource`, em vez de representar essa interface da forma tradicional, podemos representá-la na forma de uma propriedade associada ao componente como segue:\n", + "\n", + "![Componente](images/console-dataset-b.png)\n", + "\n", + "A representação de propriedades não é padrão UML, mas é usada por algumas extensões. Isso introduz um terceiro elemento usual em algumas implementações de componentes:\n", + "\n", + "* **Propriedades** - podem ser usadas como mecanismos de configuração externa do componente; por exemplo, através da propriedade `dataSource` é possível externamente se configurar a fonte de dados do componente.\n", + "\n", + "A partir de agora, criaremos uma interface específica para a modificação de propriedades e usaremos a representação na forma de propriedade.\n", + "\n", + "Para englobar todas as interfaces em uma única, foi usada a estratégia de criar uma interface para o componente (`IDataSet`) unificando as demais na forma de herança:\n", + "\n", + "~~~java\n", + "public interface IDataSet extends IDataSetProperties, ITableProducer {\n", + "}\n", + "~~~\n", + "\n", + "Essa estratégia será adotada em todos os componentes." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Conexões\n", + "\n", + "Uma das formas mais comuns de comunicação entre componentes é a criação de uma conexão entre eles. Em linguagens orientadas a objetos uma estratégia consiste em um objeto (componente) guardar a referência de outro objeto (componente).\n", + "\n", + "Utilizaremos um método padrão chamado `connect` que conecta dois componentes. Para isso um dos objetos recebe a referência de outro:\n", + "~~~java\n", + "public void connect(ITableProducer producer)\n", + "~~~\n", + "\n", + "Esse método recebe a referência para qualquer objeto que implementa a interface `ITableProducer` e a guarda. A referência é posteriormente usada para a comunicação entre os dois objetos.\n", + "\n", + "# Interface Requerida\n", + "\n", + "O ideal é que tudo seja explícito e que haja uma interface para realizar essa conexão. Desse modo, criaremos uma interface chamada `ITableReceptacle`. Ela define o método para se estabelecer a conexão com objetos que têm a interface `ITableProducer`.\n", + "\n", + "~~~java\n", + "public interface ITableReceptacle {\n", + " public void connect(ITableProducer producer);\n", + "}\n", + "~~~\n", + "\n", + "A interface requerida é representada visualmente por um meio círculo e indica o nome da interface que ela requer:\n", + "\n", + "![Componente](images/console-dataset-d.svg)\n", + "\n", + "Outra maneira bastante usual de representar os dois componentes conectados é ligando diretamente a interface provida com a requerida:\n", + "\n", + "![Componente](images/console-dataset-e.svg)\n", + "\n", + "Para tornar o componente `ConsoleComponent` completamente acessível por interfaces, acrescentamos outra interface para o seu método `update()`.\n", + "\n", + "~~~java\n", + "public interface IConsoleUpdate {\n", + " public void update();\n", + "}\n", + "~~~\n", + "\n", + "O Diagrama completo fica:\n", + "\n", + "![Componente](images/console-dataset-f.svg)\n", + "\n", + "Como foi feito antes, usamos a interface `IConsole` para juntar as duas outras interfaces através da herança:\n", + "\n", + "~~~java\n", + "public interface IConsole extends ITableReceptacle, IConsoleUpdate {\n", + "}\n", + "~~~" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Composição de Componentes\n", + "\n", + "Vamos ilustrar agora como criar uma composição de componentes. Inicialmente, vamos importar a biblioteca onde estão implementados:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "3a6e1dbc-19af-4960-aa5d-79acac904325", + "version_major": 2, + "version_minor": 0 + }, + "method": "display_data" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%classpath add jar ../lib/component-catalog-2020-08-04.jar" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Usando a Interface Requerida\n", + "\n", + "Note no código a seguir que ambos os componentes passam a ser tratados completamente a partir de suas interfaces. Mais adiante analisaremos a importância de realizar dessa maneira." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "=== Attributes ===\n", + "name, age, paralysis, yellow_tong, member_loss, chest_pain, trembling_finger, severe_anger, history_bacteria, diagnostic, days_recovery, has_disease\n", + "\n", + "=== Instances ===\n", + "Rot Donnadd, 43, t, t, f, f, f, f, f, bacterial_infection, 9, t\n", + "Pid Mught, 38, f, t, f, f, f, f, f, bacterial_infection, 7, t\n", + "Thulk Lebbimp, 63, f, t, f, f, t, f, t, bite_deficit, 10, t\n", + "Bouvossam Damme, 71, f, t, t, f, t, f, f, bite_deficit, 13, t\n", + "Pirg Zall, 48, f, f, t, t, f, f, f, viral_infection, 4, t\n", + "Nullon Rackindock, 23, f, f, t, f, f, t, f, fights, 8, f\n", + "Shor Splitturch, 35, f, f, f, f, f, t, f, nothing, 0, f\n", + "Ger Ackeng, 66, f, f, f, f, t, f, f, bite_deficit, 11, t\n", + "Gleldo Shruck, 45, f, t, f, t, f, f, f, bacterial_infection, 8, t\n", + "Nadross Pilch, 60, f, f, f, t, f, f, f, viral_infection, 8, t\n", + "Sadrent Pemmir, 73, f, t, t, f, f, f, t, bite_deficit, 14, t\n", + "Read Rait, 55, t, t, f, f, f, f, f, bacterial_infection, 9, t\n", + "Dallun Whadder, 15, f, f, f, t, f, f, t, viral_infection, 2, t\n", + "Eapplar Thorg, 25, f, f, t, f, f, f, f, fights, 5, f\n", + "Blottork Patter, 68, f, t, f, f, t, f, t, bite_deficit, 12, t\n", + "Darrutt Bottall, 75, f, t, t, f, t, f, f, bite_deficit, 16, t\n", + "Gallir Shauch, 20, f, f, f, t, f, f, f, fights, 12, f\n", + "Dirpe Polnay, 39, f, t, f, f, f, f, f, bacterial_infection, 7, t\n", + "Harrimp Fottiem, 65, f, f, f, f, t, f, f, bite_deficit, 9, t\n" + ] + }, + { + "data": { + "text/plain": [ + "null" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import pt.c08componentes.s20catalog.s10ds.*;\n", + "import pt.c08componentes.s20catalog.s20console.*;\n", + "\n", + "IDataSet dataset = new DataSetComponent();\n", + "dataset.setDataSource(\"../db/zombie-health-spreadsheet.csv\");\n", + "\n", + "IConsole console = new ConsoleComponent();\n", + "console.connect(dataset);\n", + "\n", + "console.update();" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Projection Component\n", + "\n", + "Componente que realiza o recorte (projeção) de colunas em uma tabela.\n", + "\n", + "![Projection Component](images/projection-component.png)\n", + "\n", + "~~~java\n", + "public interface IProjectionProperties {\n", + " String[] getAttributes();\n", + " void setAttributes(String attribute[]);\n", + "}\n", + "\n", + "public interface IProjection extends IProjectionProperties, ITableProducer, ITableReceptacle {\n", + "}\n", + "~~~\n", + "\n", + "Recebe uma tabela de entrada (através da interface requerida `ITableProducer`) e gera uma tabela com as colunas recortadas (através da interface provida `ITableProducer`). A propriedade `attributes` contém um vetor com o nome das colunas a serem filtradas." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Tarefa 1\n", + "\n", + "Conecte o componente `DataSet` aos componentes de projeção e console para mostrar na tela as seguintes colunas: `name` e `age`." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "null" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import pt.c08componentes.s20catalog.s10ds.*;\n", + "import pt.c08componentes.s20catalog.s20console.*;\n", + "import pt.c08componentes.s20catalog.s30projection.*;\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Selection Component\n", + "\n", + "Componente que seleciona linhas da tabela que atendem a uma certa condição.\n", + "\n", + "![Selection Component](images/selection-component.png)\n", + "\n", + "~~~java\n", + "public interface ISelectionProperties {\n", + " String getAttribute();\n", + " void setAttribute(String attributeA);\n", + " public String getOperator();\n", + " public void setOperator(String operator);\n", + " public String getValue();\n", + " public void setValue(String value);\n", + " boolean isNominalComparison();\n", + " void setNominalComparison(boolean nominalComparison);\n", + "}\n", + "~~~\n", + "\n", + "Os três propriedades `attribute`, `operator` e `value` definem a expressão de seleção. Por exemplo, a seguinte seleção `name = Rot Donnadd` seria:\n", + "* **attribute:** `name`\n", + "* **operator:** `=`\n", + "* **value:** ` Rot Donnadd`\n", + "\n", + "A propriedade `nominalComparison` indica se a comparação será entre strings (`true`) ou números (`false`). O padrão é `true`.\n", + "\n", + "A interface unificada do componente é:\n", + "~~~java\n", + "public interface ISelection extends ISelectionProperties, ITableProducer, ITableReceptacle {\n", + "}\n", + "~~~" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Tarefa 2\n", + "\n", + "Conecte o componente `DataSet` aos componentes de seleção e console para mostrar na tela aquelas instâncias cujo diagnóstico seja `bacterial_infection`." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "null" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import pt.c08componentes.s20catalog.s10ds.*;\n", + "import pt.c08componentes.s20catalog.s20console.*;\n", + "import pt.c08componentes.s20catalog.s40selection.*;\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Tarefa 3\n", + "\n", + "Conecte os componentes que você achar necessários para mostrar no console as colunas `name` e `age` de zumbis com `bacterial_infection`." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "null" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import pt.c08componentes.s20catalog.s10ds.*;\n", + "import pt.c08componentes.s20catalog.s20console.*;\n", + "import pt.c08componentes.s20catalog.s40selection.*;\n", + "import pt.c08componentes.s20catalog.s30projection.*;\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Bubble Chart Component\n", + "\n", + "Componente que plota um gráfico de dispersão de uma tabela recebida como entrada. Para isso a tabela deve ter recortadas apenas as duas colunas que serão apresentadas.\n", + "\n", + "![Bubble Chart Component](images/chartbubble-component.png)\n", + "\n", + "As propriedades `Title`, `XTitle` e `YTitle` são os títulos do gráfico, do eixo X e Y respectivamente.\n", + "\n", + "A interface `IRun` dispõe de métodos para ativar e desativar a plotagem do gráfico (métodos `start` e `stop` respectivamente):\n", + "\n", + "~~~java\n", + "public interface IRun {\n", + " public boolean start();\n", + " public boolean stop();\n", + "}\n", + "\n", + "public interface IChart extends ITableReceptacle, IRun, IChartProperties {\n", + " /* Component Interfaces Set */\n", + "}\n", + "~~~\n", + "\n", + "A interface unificada é:\n", + "\n", + "~~~java\n", + "public interface IChart extends ITableReceptacle, IRun, IChartProperties {\n", + " /* Component Interfaces Set */\n", + "}\n", + "~~~\n", + "\n", + "O comando a seguir importa uma biblioteca gráfica necessária para o componente:" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "039b7024-5fdf-4955-87f6-6b54bb89e3e9", + "version_major": 2, + "version_minor": 0 + }, + "method": "display_data" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%classpath add jar ../lib/xchart-3.5.2.jar" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "com.twosigma.beaker.javash.bkr2508c3d6.ChartBubbleComponent" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import java.util.ArrayList;\n", + "import java.util.Hashtable;\n", + "import java.util.List;\n", + "\n", + "import java.io.IOException;\n", + "\n", + "import org.knowm.xchart.BubbleChart;\n", + "import org.knowm.xchart.BubbleChartBuilder;\n", + "import org.knowm.xchart.SwingWrapper;\n", + "import org.knowm.xchart.BitmapEncoder;\n", + "import org.knowm.xchart.BitmapEncoder.BitmapFormat;\n", + "\n", + "import com.twosigma.beakerx.mimetype.MIMEContainer;\n", + "import java.io.File;\n", + "import java.nio.file.Files;\n", + "\n", + "import pt.c08componentes.s20catalog.s00shared.*;\n", + "import pt.c08componentes.s20catalog.s50chart.IChart;\n", + "\n", + "public class ChartBubbleComponent implements IChart {\n", + " private BubbleChart chart = null;\n", + "\n", + " private String title = \"Chart\";\n", + " private String xTitle = \"X\",\n", + " yTitle = \"Y\";\n", + "\n", + " private ITableProducer producer = null;\n", + " \n", + " public void connect(ITableProducer producer) {\n", + " this.producer = producer;\n", + " }\n", + " \n", + " public ChartBubbleComponent() {\n", + " }\n", + " \n", + " public String getTitle() {\n", + " return title;\n", + " }\n", + " \n", + " public void setTitle(String title) {\n", + " this.title = title;\n", + " }\n", + "\n", + " public String getXTitle() {\n", + " return xTitle;\n", + " }\n", + " \n", + " public void setXTitle(String title) {\n", + " xTitle = title;\n", + " }\n", + "\n", + " public String getYTitle() {\n", + " return title;\n", + " }\n", + " \n", + " public void setYTitle(String title) {\n", + " yTitle = title;\n", + " }\n", + "\n", + " public boolean start() {\n", + " boolean status = true;\n", + " \n", + " chart = new BubbleChartBuilder().width(600).height(400).title(title).xAxisTitle(xTitle).yAxisTitle(yTitle).build();\n", + " try{\n", + " \n", + " buildChart(); \n", + " BitmapEncoder.saveBitmap(chart, \"./chart\", BitmapFormat.PNG);\n", + " \n", + " File file = new File(\"chart.png\");\n", + " byte[] data = Files.readAllBytes(file.toPath());\n", + " \n", + " MIMEContainer image = new MIMEContainer(MIMEContainer.MIME.IMAGE_PNG, data);\n", + " display(image);\n", + " }catch(IOException ex){\n", + " status = false;\n", + " System.out.println (ex.toString()); \n", + " }\n", + " \n", + " return status;\n", + " }\n", + " \n", + " public boolean stop() {\n", + " return true;\n", + " }\n", + " \n", + " public double[] toDouble(String[][] instances, int column ) {\n", + " double[] numbers = new double[instances.length];\n", + " for (int i = 0; i < instances.length; i++)\n", + " numbers[i] = Double.parseDouble(instances[i][column]);\n", + " return numbers;\n", + " }\n", + "\n", + " private void buildChart() {\n", + " if (chart != null && producer != null) {\n", + " String[][] instances = producer.requestInstances();\n", + "\n", + " if (instances != null) {\n", + " double[] xData = toDouble(instances, 0),\n", + " yData = toDouble(instances, 1);\n", + " \n", + " String[] categoryData = null;\n", + " if (instances[0].length > 2) {\n", + " categoryData = new String[instances.length];\n", + " for (int c = 0; c < instances.length; c++)\n", + " categoryData[c] = instances[c][2];\n", + " }\n", + " \n", + " double[] bubbleData = null;\n", + " if (instances[0].length > 3)\n", + " bubbleData = toDouble(producer.requestInstances(), 3);\n", + " else {\n", + " bubbleData = new double[instances.length];\n", + " for (int i = 0; i < xData.length; i++)\n", + " bubbleData[i] = 10;\n", + " }\n", + " \n", + " \n", + " if (categoryData == null ||\n", + " xData.length != yData.length || yData.length != bubbleData.length ||\n", + " bubbleData.length != categoryData.length) {\n", + " chart.addSeries(\" \", xData, yData, bubbleData);\n", + " } else {\n", + " Hashtable hash = new Hashtable();\n", + " int outer = 0;\n", + " int size = categoryData.length;\n", + " while (outer < size) {\n", + " if (hash.containsKey(categoryData[outer]))\n", + " outer++;\n", + " else {\n", + " hash.put(categoryData[outer],categoryData[outer]);\n", + " List xSub = new ArrayList(),\n", + " ySub = new ArrayList(),\n", + " bubbleSub = new ArrayList();\n", + " for (int inner = outer; inner < size; inner++)\n", + " if (categoryData[inner].equalsIgnoreCase(categoryData[outer])) {\n", + " xSub.add(xData[inner]);\n", + " ySub.add(yData[inner]);\n", + " bubbleSub.add(bubbleData[inner]);\n", + " }\n", + " chart.addSeries(categoryData[outer], xSub, ySub, bubbleSub);\n", + " outer++;\n", + " }\n", + " }\n", + " }\n", + " }\n", + " \n", + " }\n", + " \n", + " }\n", + " \n", + "}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Tarefa 4\n", + "\n", + "Conecte os componentes que você achar necessários para apresentar um gráfico comparativo entre idade e tempo de recuperação dos zumbis, conforme exemplo abaixo.\n", + "\n", + "![Graph](images/example1.png)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "null" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import pt.c08componentes.s20catalog.s10ds.*;\n", + "import pt.c08componentes.s20catalog.s30projection.*;\n", + "import pt.c08componentes.s20catalog.s50chart.IChart;\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Tarefa 5\n", + "\n", + "Conecte os componentes que você achar necessários para apresentar um gráfico comparativo entre idade e tempo de recuperação dos zumbis, colorindo os pontos por diagnóstico, conforme exemplo abaixo.\n", + "\n", + "**Recomendação:** Se você recortar uma terceira coluna com o diagnóstico, o gráfico resultante irá colorir os pontos por diagnóstico.\n", + "\n", + "![Graph](images/example2.png)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "null" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import pt.c08componentes.s20catalog.s10ds.*;\n", + "import pt.c08componentes.s20catalog.s30projection.*;\n", + "import pt.c08componentes.s20catalog.s50chart.IChart;\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Tarefa 6\n", + "\n", + "Conecte os componentes que você achar necessários para apresentar um gráfico comparativo entre idade e tempo de recuperação, filtrando apenas a doença “bacterial_infection”." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "null" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import pt.c08componentes.s20catalog.s10ds.*;\n", + "import pt.c08componentes.s20catalog.s30projection.*;\n", + "import pt.c08componentes.s20catalog.s40selection.*;\n", + "import pt.c08componentes.s20catalog.s50chart.IChart;\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Java", + "language": "java", + "name": "java" + }, + "language_info": { + "codemirror_mode": "text/x-java", + "file_extension": ".java", + "mimetype": "", + "name": "Java", + "nbconverter_exporter": "", + "version": "1.8.0_152-release" + }, + "toc": { + "base_numbering": 1, + "nav_menu": {}, + "number_sections": false, + "sideBar": false, + "skip_h1_title": false, + "title_cell": "Table of Contents", + "title_sidebar": "Contents", + "toc_cell": false, + "toc_position": {}, + "toc_section_display": false, + "toc_window_display": false + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/labs/2021/02-dataflow_mvc/notebooks/images/chartbubble-component.png b/labs/2021/02-dataflow_mvc/notebooks/images/chartbubble-component.png new file mode 100644 index 000000000..efb630d6e Binary files /dev/null and b/labs/2021/02-dataflow_mvc/notebooks/images/chartbubble-component.png differ diff --git a/labs/2021/02-dataflow_mvc/notebooks/images/console-dataset-a.png b/labs/2021/02-dataflow_mvc/notebooks/images/console-dataset-a.png new file mode 100644 index 000000000..fe859c590 Binary files /dev/null and b/labs/2021/02-dataflow_mvc/notebooks/images/console-dataset-a.png differ diff --git a/labs/2021/02-dataflow_mvc/notebooks/images/console-dataset-b.png b/labs/2021/02-dataflow_mvc/notebooks/images/console-dataset-b.png new file mode 100644 index 000000000..d335cd857 Binary files /dev/null and b/labs/2021/02-dataflow_mvc/notebooks/images/console-dataset-b.png differ diff --git a/labs/2021/02-dataflow_mvc/notebooks/images/console-dataset-c.svg b/labs/2021/02-dataflow_mvc/notebooks/images/console-dataset-c.svg new file mode 100644 index 000000000..05e0654bf --- /dev/null +++ b/labs/2021/02-dataflow_mvc/notebooks/images/console-dataset-c.svg @@ -0,0 +1,705 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + «component» + + + «component» + + DataSetComponent + + + ITableProducer + + + + + dataSource: String + ConsoleComponentA + diff --git a/labs/2021/02-dataflow_mvc/notebooks/images/console-dataset-d.svg b/labs/2021/02-dataflow_mvc/notebooks/images/console-dataset-d.svg new file mode 100644 index 000000000..017a1fda4 --- /dev/null +++ b/labs/2021/02-dataflow_mvc/notebooks/images/console-dataset-d.svg @@ -0,0 +1,781 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + «component» + + ConsoleComponent + + + «component» + + DataSetComponent + + + ITableProducer + + + + + dataSource: String + ITableProducer + + + + + diff --git a/labs/2021/02-dataflow_mvc/notebooks/images/console-dataset-e.svg b/labs/2021/02-dataflow_mvc/notebooks/images/console-dataset-e.svg new file mode 100644 index 000000000..bd77b5148 --- /dev/null +++ b/labs/2021/02-dataflow_mvc/notebooks/images/console-dataset-e.svg @@ -0,0 +1,766 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + «component» + + ConsoleComponent + + + «component» + + DataSetComponent + + + + + + + + dataSource: String + ITableProducer + + + diff --git a/labs/2021/02-dataflow_mvc/notebooks/images/console-dataset-f.svg b/labs/2021/02-dataflow_mvc/notebooks/images/console-dataset-f.svg new file mode 100644 index 000000000..f95fd896e --- /dev/null +++ b/labs/2021/02-dataflow_mvc/notebooks/images/console-dataset-f.svg @@ -0,0 +1,821 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + «component» + + ConsoleComponent + + + «component» + + DataSetComponent + + + + + + + + dataSource: String + ITableProducer + + + + + + + IConsoleUpdate + diff --git a/labs/2021/02-dataflow_mvc/notebooks/images/example1.png b/labs/2021/02-dataflow_mvc/notebooks/images/example1.png new file mode 100644 index 000000000..d70e81e36 Binary files /dev/null and b/labs/2021/02-dataflow_mvc/notebooks/images/example1.png differ diff --git a/labs/2021/02-dataflow_mvc/notebooks/images/example2.png b/labs/2021/02-dataflow_mvc/notebooks/images/example2.png new file mode 100644 index 000000000..919a28d31 Binary files /dev/null and b/labs/2021/02-dataflow_mvc/notebooks/images/example2.png differ diff --git a/labs/2021/02-dataflow_mvc/notebooks/images/projection-component.png b/labs/2021/02-dataflow_mvc/notebooks/images/projection-component.png new file mode 100644 index 000000000..a337671cb Binary files /dev/null and b/labs/2021/02-dataflow_mvc/notebooks/images/projection-component.png differ diff --git a/labs/2021/02-dataflow_mvc/notebooks/images/selection-component.png b/labs/2021/02-dataflow_mvc/notebooks/images/selection-component.png new file mode 100644 index 000000000..34bed180d Binary files /dev/null and b/labs/2021/02-dataflow_mvc/notebooks/images/selection-component.png differ