Source: https://www.cacheme.org/category/cursos/python/
Timestamp: 2020-08-08 17:51:04+00:00

Document:
Python Archives - CAChemE
cursos optimización Python
Siguiendo el éxito de la anterior edición, y con el fin de continuar impartiendo el conocimiento sobre la resolución de problemas de optimización en ingeniería con aplicación tanto a nivel académico como industrial, se presenta el uso de Pyomo, la alternativa gratuita a GAMS y AMPL desarrollada en Python.
Los métodos de resolución de este tipo de problemas, especialmente cuando existen variables discretas, son a menudo desconocidos o relegados por falta de tiempo, recursos o ambas. Por ello, en este taller, se hará un breve repaso de los conceptos básicos de la optimización.
16:00-19:00 h L028i, edificio EPS IV.
https://www.sigua.ua.es/index.html?id=0039PB052
16:00-19:00 h en L027i , edificio EPS IV.
Daniel Vázquez es Ingeniero Químico por la Universidad de Santiago de Compostela. Actualmente cursa el doctorado en la Universidad de Alicante y forma parte del grupo de investigación COnCEPT (Computer Optimization in Chemical Engineering Processes and Technologies). Su campo de investigación es la síntesis y optimización de procesos industriales utilizando simuladores de procesos químicos y herramientas de programación matemática.
Ha trabajado anteriormente en métodos de reducción de objetivos para problemas de optimización multiobjetivo, así como en índices de seguridad para uso en la industria química. Ha sido instructor de un taller de Pyomo, en la Pycon 2018, así como de cursos de introducción a Python en el ámbito científico y de simuladores de procesos, como Aspen Plus.
• Conocimientos de optimización. Haber cursado una asignatura de optimización de procesos que incluya conocimientos básicos sobre problemas de tipo LP, MIP, NLP y MINLP, y sobre el modelado de estos problemas (incluyendo variables binarias). Si no estás familiarizado a la resolución de problemas de optimización GAMS o AMPL, te recomendamos varios recursos online para aprender por tu cuenta y/la o documentación de Pyomo.
• Conocimientos básicos de programación (aunque se realizará un breve repaso del lenguaje Python).
Una profesora nos ha preguntado información de material docente para enseñar a programar en el colegio o instituto. Esta pregunta nos encanta y dado que en EEUU y otros países se está apostando mucho por ello, vamos a recopilar un listado de las opciones más interesantes de menor a mayor complejidad.
Por lo tanto, para comenzar desde cero recomendamos code.org y Blocky. Este último nos gusta porque que te enseña el código de tu programa en Python que resuelve un laberinto:
¿Puedes resolver este laberinto programando con bloques? (¡ojo que no es tan sencillo!)
Aprender a programar Python jugando
Existen varias webs con videojuegos online muy sofisticados para aprender Python muy interesantes tanto para alumnos como docentes, por ejemplo:
[box type=»note»]Recuerda: En esta entrada de CAChemE ya hablamos de libros, algunos con licencia permisiva, para enseñar programación con Python a cualquier interesado (sin importar la edad). ¡No te la pierdas!
En esta línea, aquí unos serie de libros de Python para crear aplicaciones o videjuegos personalizados:
(en ingés) https://inventwithpython.com/
(en español) http://pilas-engine.com.ar/
Aunque hay que reconocer, que una de las plataformas más llamativas, pese a no ser Python, es la de appinventor.
Crea tus propias aplicaciones móviles para Android
Python para física o matemáticas:
Si los alumnos van a utilizar Python en sus asignaturas de física o matemáticas, hay que dar un un vistazo al canal de youtube de Jose Luis Tabara Carbajo.
https://www.youtube.com/playlist?list=PLilnwC7Bci67FKx1GUkF9PlvR2r_La2vN
Nosotros recomendamos instalar miniconda y Python 3 ya que es multiplataforma y gratuito.
Si van a hacer algo científico, lo mejor instalarse la versión completa de Python llamada Anaconda:
Como editor de código, puedes usar notepad++, atom o sublime. Te recomiendo darle un vistazo a Python Tutor que es lo cómo enseñan Python en universidades americanas:
Como IDE científco Jupyter Notebook es lo que utilizamos nosotros. Dale un vistazo a la demo de Nature u otros materials donde explican conceptos complicados con código de forma similar a PHET.
Y voy a parar aquí porque si tus alumnos y alumnas aprenden todo esto nos dejas sin trabajo en la Universidad 😉
Etiquetas pandas, scikit-learn
Me encuentro en el tren de vuelta, de Cáceres a Madrid. No había estado nunca allí y la razón que me llevó a esta ciudad no fue otra que la PyConES 2017, un evento y un lenguaje prácticamente nuevos para mi.
Apenas había comenzado a aprender Python con un proyecto donde utilizaba una Raspberry Pi (o raspi). Lo primero que pensé del lenguaje (viniendo de programar con C# y Fortran) fue: “¡el código se escribe solo!”. En unas pocas horas ahí estaba yo monitorizando y controlando equipos (de forma muy sencilla) con raspi.
Oí hablar de la PyConES en el grupo de Telegram de CAChemE, pero en la web las entradas llevaban semanas ya agotadas. Sin embargo, tres días antes de comenzar el evento, recibí una llamada de CAChemE con motivo de un sorteo que había realizado la empresa Kaleidos: ¡Me ofrecía una entrada a la PyConES 2017! Una noticia totalmente inesperada. ¡Muchas gracias Kaleidos por la entrada, y muchas gracias a CAChemE por los trámites!
Ahí estaba yo, camino a Cáceres, sin saber muy bien lo que me iba a encontrar. Nunca había asistido a una PyConES. Llegué al hotel y de ahí rápidamente al evento para no perderme el primer taller, Parallel and Non-Parallel Stuff, con Pablo Galindo, sobre multithreading y multiprocessing. Ésta fue mi primera, y una de mis favoritas de la PyConES. Me quedo con: ‘Miedo y respeto a los hilos’ y el concepto de que el GIL (global interpreter lock) no se puede quitar (de momento) de forma general, solamente para una aplicación.
Al día siguiente comenzaba el maratón. Me gustó mucho la charla de Naomi Ceder, haciendo hincapié en la importancia de la comunidad, la diversidad, e inclusión. Una charla llena de emoción. Admiro su valentía por compartir con todos su experiencia personal, un ejemplo a seguir para continuar creciendo como comunidad.
Otra de mis charlas favoritas fue la famosa de las Metaclases: exactamente qué y (sobre todo) por qué, por Pablo Galindo y Víctor Terrón. Me quedó claro que ‘una clase es a una metaclase como una instancia es a una clase’. Pero lo mejor fue la manera de impartir la charla: la energía, la ilusión y el poder de transmisión de Pablo y Víctor.
Y por supuesto, sin que quepa duda, me encantó la Keynote final de Juan Luis Cano, presidente de Python España: Código abierto. Mucho camino por delante. Gran orador, invita a la reflexión. Un speech motivador, con fuerza, con sentido. Busquemos oportunidades en nuestro entorno, donde el código abierto puede marcar la diferencia, puede solucionar problemas. Busquemos oportunidades para hacer de este mundo un mundo mejor.
Y esto fue todo… ¿todo? Realmente no.
Es difícil resumir mi experiencia en unos pocos párrafos. Disfruté de esta conferencia como nadie sabe. Me fascinó el ambiente, la comunidad, la motivación de cada persona allí presente. Disfruté aprendiendo, no solo de las ponencias, sino de lo que se hablaba en los pasillos y las esquinas. Esta conferencia me trasladó unos años atrás, me recordó a mi experiencia en MIT donde, por los pasillos, se habla de cómo cambiar el mundo a través de la ciencia y tecnología. Un nexo de unión que, de forma remota, me ha llevado hasta la PyConES 2017.
¡Nos vemos en Málaga en la PyConES 2018!
Python es de facto el lenguaje de programación más popular del momento. Pero, ¿cómo realizar tareas sencillas en paralelo y sin apenas esfuerzo?
Lo creas o no, esto es es posible y lo mejor es que sólo existen tres palabras claves que necesitas conocer: numba, map y submit
No nos engañemos, programar en paralelo va a añadir inevitablemente mayor complejidad al código y pronto aprenderás que existe algo llamado Heisenbugs.
Por lo tanto y en primer lugar, si lo que queremos es acelerar el código, con numba conseguiremos dos ordenes de magnitud de mejora simplemente añadiendo ´@jit´ a una función.
Pero, si sigues leyendo esto es porque quieres programar en paralelo, sin apenas esfuerzo y ya tienes:
perfilado tú código para ver dónde se encuentran los cuellos de botella
pensado en la complejidad de tus algoritmos y/o utilizado la herramienta adecuada de la forma adecuada (ej. consejos de NumPy y pandas).
testeado la función en secuencial
Entonces… ¡buenas noticias! Con la nueva versión de numba también podemos paralelizar las funciones compiladas al vuelo:
map & submit
Cualquier librería para trabajar en paralelo tendrá implementadas estás dos funciones:
map: Si tienes una operación que debe repetirse n veces de forma indpendiente y en paralelo
submit: Si la tarea a repetir depende de alguna condición y no ves claro cómo usar map
Ambas operaciones pueden llevarse a cabo trabajando con dos técnicas muy diferentes:
multithreading: compartimos datos en memoria y trabajamos de forma independiente sobre ellos (ej. leer archivos de una lista de nombres).
multiprocessing: nuestros datos de entrada pueden cambiar durante la operación por lo que necesitamos hacer una copia de cada uno de ellos y distribuirlo de forma independiente.
Por defecto, el intérprete de Python bloquea las variables globales y, por tanto, si queremos trabajar sobre ellas necesitamos copiar datos de un lado a otro (lo que conlleva un tiempo extra y obliga a usar multiprocessing). Esto se le conoce como GIL y es un tema de gran controversia.
Entonces, ¿por dónde empiezo y qué herramienta es la mejor?
Nosotros recomendamos seguir estos tres tutoriales de la conferencia SciPy 2017.
Parallel Data Analysis in Python
Para aprender los fundamentos y varias opciones que existen dentro de Python.
Si trabajas con NumPy/pandas y quieres paralelizar o trabajar con archivos que no caben en memoria
Numba: Tell Those C++ Bullies to Get Lost (2017)
Si inevitablemente tienes muchos bucles for y NumPy no es suficiente
Conclusiones (TL;DR)
Si de verdad necesitas trabajar en paralelo, usa Dask (ver diapositivas).
Etiquetas dask, numba, paralelo
La mejor forma de aprender a programar es haciendo algo útil, por lo que esta introducción a Python se centrará alrededor de una tarea común: el análisis de datos. En este taller práctico se hará un breve repaso a los conceptos básicos de programación con el fin de automatizar procesos cubriendo la sintaxis de Python (junto a NumPy y matplotlib).
En esta ocasión haremos una breve introducción a Python siguiendo los materiales de Software-Carpentry. Por lo tanto, cubriremos:
Los conceptos de programación generales analizando datos de diferentes archivos
La sintaxis de Python 3 (haciendo uso de variables, bucles, condicionales y funciones)
Ver material (en inglés)
Jueves 9 y viernes 10 de febrero de 16:00 a 19:00 h en el edificio Politécnica IV (Laboratorio S13i y 27i, respectivamente)
Conocimientos de programación. Conocimientos básicos de cualquier lenguaje de programación (MATLAB o similares)
El plazo de solicitud de inscripción se abrirá el miércoles 1 de febrero a las 16:00 h siendo accesible desde esta página web. Las plazas son limitadas y se asignaran por riguroso orden de entrada. Se prevén bastantes inscripciones así que comprueba tu horario y si ya es seguro que puedes asistir, te recomendamos ponerte una alarma para apuntarte y evitar sorpresas ;). Tal y como habíamos avisado, el nº de plazas se agotó rápidamente. Puedes apuntarte a la lista de espera por si algún alumno no puede asistir.
Debido a la alta demanda y las plazas limitas, se confirmará la inscripción vía email. Te recomendamos que estés pendiente de nuestras redes sociales (Twitter, Facebook) para recibir la información más inmediata. Para cualquier duda que tengáis podéis usar las mismas, los comentarios, nuestro formulario de contacto o preguntarnos por los pasillos de la facultad.
Software Carpentry ha llevado a cabo cientos de eventos para miles de científicos en los últimos dos años y medio. El material actual refleja la última iteración de un proceso en curso para perfeccionar las lecciones.
No dudes en apuntarte a este taller basado en las lecciones de Software Carpentry si te gustaría:
No ver como algo raro una mejora de 10x
Prepararte para el Big Data, la nube, HPC, Open Science…
¿Software-Carpentry?
Automatizar tareas de escritorio repetitivas (Shell de linux)
Llevar control y compartir el trabajo (Git/GitHub)
Manejar tablas de datos (SQL)
Software-Carpentry.org ayuda a investigadores/as de todo el mundo a llevar a cabo más trabajo en menos tiempo y con el «menor dolor posible».
La visión artificial o visión por computador es una disciplina científica que incluye métodos para adquirir, procesar, analizar y comprender las imágenes del mundo real con el fin de producir información numérica o simbólica para que puedan ser tratados por un computador. Esta comprensión se consigue gracias a distintos campos como la geometría, la estadística, la física y otras disciplinas. Hay muchas tecnologías que utilizan la visión por computador, entre las cuales están: reconocimiento de objetos, detección de eventos, reconstrucción de una escena (mapping) y restauración de imágenes.
Ejemplo de aplicación de Visión Artificial (contador mediante cámara infrarroja)
La visión artificial se incluye en varios planes de estudio de los distintos grados en ingeniería o másteres como el de robótica, pero, normalmente, se utiliza software propietario como MATLAB para ello. Este taller permitiría que los estudiantes conozcan herramientas informáticas libres y gratuitas específicas para la resolución de los problemas de visión artificial con los que se enfrentarán en su vida profesional.
Del jueves 23 y viernes 24 de febrero de 15:00 a 18:00 h en el edificio Politécnica IV (Laboratorio 27i)
El workshop irá orientado a estudiantes con conocimientos de programación en un lenguaje de alto nivel (Python, MATLAB, R, C++, C, Java, etc.) y hará una introducción a las diferentes funcionalidades disponibles y su uso mediante la interfaz de Python de OpenCV (otros ejemplos interesantes se pueden encontrar en Scikit-Image).
Introducción a OpenCV y su interfaz Python.
Manejo de ficheros, cámaras e interfaces gráficas de usuario.
Filtros y convolución de imágenes.
Detección y extracción de características mediante algoritmos de aprendizaje automático.
Este workshop es un taller de introducción a OpenCV, por lo que si ya has trabajado con esta librería, probablemente no aprendas nada nuevo.
Conocimientos de programación. Por falta de tiempo, no podremos de explicar conceptos básicos de programación (por ejemplo, qué es un bucle y un condicional, etc.) Con saber cualquier otro lenguaje de programación (MATLAB/GNU Octave o similares) es suficiente.
Visualización previa del curso online de Python. Si bien Python es uno de los lenguajes más fáciles de aprender, no cubriremos la sintaxis y posibilidades del lenguaje en esta ocasión (es un taller de OpenCV). La sintaxis y funcionalidades del lenguaje serán referenciadas a este material online durante el curso.
El plazo de solicitud de inscripción se abrirá el miércoles 15 de febrero a las 13:00 h siendo accesible desde esta página web. Las plazas son limitadas y se asignaran por riguroso orden de entrada. Se prevén bastantes inscripciones así que comprueba tu horario y si ya es seguro que puedes asistir, te recomendamos ponerte una alarma para apuntarte y evitar sorpresas 😉
Debido a la alta demanda y las plazas limitas, se confirmará la inscripción vía email. Te recomendamos que estés pendiente de esta entrada y nuestras redes sociales (Twitter, Facebook) para recibir la información más inmediata. Para cualquier duda que tengáis podéis usar los comentarios, nuestro formulario de contacto, preguntarnos por las redes sociales o el MundoReal
CAChemE Python
Autor de la entrada Por Daniel Domene
El viernes 7 tuvimos la primera participación, en la que Francisco Navarro y Benjamin Laken, instructores Software Carpentry, que junto a Zuria Bauer, llevaron a cabo el taller “Introducción a Python para principiantes (basado en Software Carpentry)”. En el taller se introdujeron los conceptos de programación generales, analizando datos de diferentes archivos, así como una introducción a la sintaxis de Python 3. Destacar otros talleres interesantes que hubieron, como por ejemplo: «Simplifica tu vida con sistemas complejos (y algoritmos genéticos)» por miembros de @AeroPython y «Sistemas distribuidos en Python» por Guillem Borrell.
Etiquetas PyConES
cursos Python tutorial
Tras los éxitos consecutivos de las dos ediciones del curso de introducción a Python para científicos e ingenieros llega el momento de dar el salto para plantear la resolución de problemas de optimización matemática con aplicación a nivel académico y/o industrial. En este taller práctico enseñaremos a utilizar Pyomo, la alternativa gratuita a GAMS y AMPL desarrollada en Python.
Un problema de optimización consiste, a grandes rasgos, en maximizar o minimizar una función real eligiendo sistemáticamente valores de entrada (tomados de un conjunto permitido) y calculando el valor de la función. Este problema se vuelve interesante cuando aparecen restricciones (lineales y no lineales) y variables enteras (para modelar la toma de decisiones discretas). Dos de los lenguajes de modelado comerciales más utilizados para resolver este tipo de problemas matemáticos son GAMS y AMPL. Pyomo (pyomo.org) proporciona una alternativa libre y gratuita a estos lenguajes de modelado algebraico haciendo uso de Python, un lenguaje de programación de alto nivel con todas las funciones con un rico conjunto bibliotecas científicas.
Respecto a sus capacidades como lenguaje de modelado algebraico, Pyomo es compatible con una amplia gama de tipos de problemas de optimización tipo LP, QP, NP, MILP, MINLP, MISP entre otros y se comunica con los principales solvers comerciales, gratuitos y/o libres.
La resolución mediante métodos de optimización son a menudo desconocidos o bien delegados por falta de tiempo y/o recursos. Por este motivo, en este taller para estudiantes de la EPS de la Universidad de Alicante se realizará un breve repaso a conceptos de optimización y presentará Pyomo para la resolución de diferentes problemas tipo.
Guía de instalación de Python y Pyomo
Del jueves 18 y viernes 19 de febrero de 16:00 a 19:00 h en el edificio Politécnica I (laboratorio L24)
Repaso al ecosistema Python, Jupyter Notebook e instalación de Pyomo
Introducción a Pyomo (ver vídeo)
Resolución de problemas de optimización con Pyomo tipo LP (ver vídeo)
Repaso a las posibilidades de Pyomo:
Problemas con un archivo de datos como entrada y conexión varios solvers + NEOS Server
Variables estocásticas para modelar con incertidumbre
Resolución de DAEs
A continuación, puedes ver las diapositivas de introducción a Pyomo que Daniel Domene y Carlos Planelles presentaron durante la PyConES 2015:
Juan Luis Cano es Ingeniero Aeronáutico por la Universidad Politécnica de Madrid y editor del blog de Pybonacci, referencia a nivel nacional en cuanto al uso de Python científico.
Juan Luis repite como instructor y posee amplia experiencia docente tanto en empresas interesadas en adoptar Python como herramienta de trabajo como en su universidad de origen (UPM).
CAChemE (@CAChemEorg) estará presente como organización y apoyo. El curso se ha diseñado para que sea totalmente práctico, con ejemplos extraídos de asignaturas de optimización comunes en carreras científicas y de ingeniería química.
Conocimientos de optimización. Haber cursado una asignatura de optimización de procesos que incluya conocimientos básicos sobre problemas de tipo LP, MIP, NLP y MINLP, y sobre el modelado de estos problemas (incluyendo variables binarias). Si no estás familiarizado a la resolución de problemas de optimización GAMS o AMPL, te recomendamos varios recursos online para aprender por tu cuenta y/la o documentación de Pyomo.
Conocimientos de programación. Por falta de tiempo, no podremos de explicar conceptos básicos de programación (por ejemplo, qué es un bucle y un condicional, etc.) Con saber cualquier otro lenguaje de programación MATLAB (o similares) es suficiente.
Visualización previa del curso online de Python. Si bien Python es uno de los lenguajes más fáciles de aprender, no cubriremos la sintaxis y posibilidades del lenguaje en esta ocasión (es un taller de Pyomo). Todas sus funcionalidades y librerías serán referenciadas a este material online durante el curso.
El plazo de solicitud de inscripción se abrirá el miércoles 10 de febrero a las 16:00 h siendo accesible desde esta página web. Las plazas son limitadas y se asignaran por riguroso orden de entrada. Se prevén bastantes inscripciones así que comprueba tu horario y si ya es seguro que puedes asistir, te recomendamos ponerte una alarma para apuntarte y evitar sorpresas 😉
Debido a la alta demanda y las plazas limitas, se confirmará la inscripción vía email. Te recomendamos que estés pendiente de nuestras redes sociales (Twitter, Facebook) para recibir la información más inmediata. Para cualquier duda que tengáis podéis usar las mismas, los comentarios, nuestro formulario de contacto o preguntarnos por los pasillos de la facultad.Este curso es posible gracias a la generosa financiación de la EPS y sus actividades del Mes Cultural.
Pese a que los ordenadores de las salas tendrán Anaconda con Python 3 instalado, es buena idea que traigas tu portátil para configurarlo en tu equipo. Recomendamos instalar Anaconda siguiendo estas instrucciones:
Leer instrucciones de instalación
Bonus – Charla de programación: ¡Sed Hackers!
El viernes tendremos a Victor Terrón (Ingeniero de Google) que nos hablará de como convertirse en hackers
Viernes 18 de febrero a las 13:00 h en el Salon de Actos I de la EPS (leer más)
Dirigida a estudiantes, esta charla tiene como objetivo ofrecer un enfoque distinto al habitual, mostrando el mundo de la programación accesible para todos. Todos conocemos las “Leyendas Urbanas” que existen sobre Hackers y la programación, a lo largo de la charla se lleva a cabo la comparativa de la realidad frente a la ficción. Dando también a conocer al oyente como puede comenzar a desenvolverse en este nuevo mundo. El acceso a esta charla no necesita de registro alguno.
Etiquetas AMPL, GAMS, optimización, Pyomo

References: resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 

Resolución 

Resolución 
 resolución