Análisis de datos en python (ficheros)

21 04 2014

blog_2

 

Mediante un mini tutorial intentaré explicar como leer datos numéricos desde un archivos “.txt” y convertirlos a “float” para trabajarlos mediante el uso de listas.

 

Contexto:

Al trabajar en mi proyecto de tesis sobre análisis de cargas cíclicas mediante el uso de una máquina y un sistema asociado para medir presiones a través de un sensor, me topé con las disyuntiva de buscar una manera de trabajar con la enorme cantidad de datos que eran entregados por dicho sensor(del orden de 2 a 10 millones de datos). Lo primero que vino a mi mente fue excel, sin embargo me di cuenta que tenía una enorme cantidad de scripts realizados en python que me permitían obtener la información que realmente requería para mi estudio. Finalmente terminé transformando los scripts que necesitaba a funciones y lo único que me separaba de mi objetivo era el leer, transformar y analizar la información que venía en un archivo de bloc de notas. Después de buscar  y leer mucho terminé encontrando (mediante prueba y error) una solución mas menos simple.

 

Solución:


# direccion del archivo
entrada = open("C:\Users\pattop\Desktop\ensayo.txt")

# Lectura del archivo
c = entrada.read()

# division de datos
d = c.split()

# lista vacia para guardar los datos
datos = []

# transforma los datos en float y se pueden trabajar
for i in d:
    datos.append(float(i))

 

De esta manera los datos quedarán en la lista homónima y con las propiedades “float” para trabajarlas mediante cualquier función, en mi caso graficar mediante matplotlib y obtener información estadística. Cualquier consulta intentaré ayudar, aunque no es mi especialidad.

 

Herramientas: Lenguaje python, ninja IDE.
ninja-big1





La opción gratuita a AutoCAD

3 09 2013

4

Para quienes buscan una opción gratuita de un software de CAD profesional con una interfaz que nos recuerde al popularizado AutoCAD tenemos gracias la reconocida firma francesa dassault systemes (Solidwork, Catia, etc.)  a DraftSight. Este software posee las mismas características que posee AutoCAD (sin sus herramientas mas avanzadas, principalmente 3D) con una interfaz igualmente amigable  y con una mejor performance para computadores de baja capacidad de procesamieno (lo que quizá quería conseguir AutoDesk con sus versiones LT) junto con su bajo peso y facilidad de instalación.

Introducción a DraftSight

Para descargar se puede ir a la página donde se encuentran las instrucciones.

http://www.3ds.com/es/productos-y-servicios/draftsight/

También para los que desean interiorizarse mas, el software cuenta con un canal de youtube donde existe una serie de tutoriales.

http://www.youtube.com/user/DraftSight





Granulometría en Python

2 03 2013

granu

Un pequeño script desarrollado en el lenguaje Python para establecer la clasificación granulométrica de una muestra de suelos. Este método consiste principalmente en pasar las partículas de suelo por una serie de tamices que retienen un cierto volumen de la muestra según su diamatro. A partir de los resultados se obtiene un representación gráfica que ayuda en el proceso de clasificación.

Acá dejo el archivo para los que esten comenzando a programar en Python(es necesario cambiar la extensión a .py o copiar el código en el IDE). granulometria.

Código para el gráfico logarítmico en python(matplotlib).

from matplotlib import pyplot

col1 = [PA8, PA7, PA6, PA5, PA4, PA3, PA2, PA1]
col2 = [A8, A7, A6, A5, A4, A3, A2, A1]

pyplot.plot(col2, col1, color='blue', lw=2)

# escala logaritmica
pyplot.xscale('log')

 # sentencia que invierte el eje x
pyplot.gca().invert_xaxis()

# grilla log en eje x
pyplot.grid(True, which="minor", linestyle='-')

# grilla normal en eje y
pyplot.grid(True, linestyle='-')

pyplot.show()





Algunos lenguajes de programación

6 10 2012

Para todos es sabido que todo ingeniero o estudiante de ingeniería debería, a lo menos, tener el dominio intermedio o básico de algún lenguaje de programación. Si bien es cierto, muchas veces es más práctico y más cómodo encontrar soluciones a partir de software de pago o gratuitos como lo son las hojas de cálculo, que con el tiempo se han vuelto herramientas poderosas y con cada vez más opciones. Sin embargo existen muchas opciones para robustecer estas características mediante el uso de lenguajes de programación asociados a las compañías, como es el caso de Excel con Visual estudio de Microsoft. Esta relación simbiótica nos da luces de que muchas veces un software no contará con un solución que sea expuesta bajo una interfaz gráfica. Es por esto que programar se vuelve algo profesionalmente vital, práctico (a la larga) y en algunas ocasiones divertido.

 Como estudiante de ingeniería civil no especializado en la rama de informática y a lo largo de mis años de estudio, he utilizado varios lenguajes (unos más que otros) y me he hecho una idea de algunos ocupándolos en diferentes tópicos de ingeniería. Por ende intentaré dar algunas luces, fortalezas y debilidades de algunos de ellos.

Fortran.

Para comenzar aprovecharé el impulso del post anterior y daré sólo mi opinión.

Opinión: Salvo algunos aspectos,  debo decir que es un buen lenguaje para iniciarse puesto contiene varias características antiguas sobre la escritura de un programa que con el paso del tiempo fueron quitadas. Personalmente lo encuentro poco práctico y al momento de desarrollar rutinas más complejas puede tornarse engorroso y plano para detectar errores, flaquea en ámbitos como funciones incluidas y librerías (si bien tiene, son pocas). Lo bueno es libre y la rapidez, que en algunos niveles es irrelevante.

Java.

No hay mucho que decir que no se encuentre por montones en  la red sobre las particularidades de este lenguaje de programación de alto nivel. Sus opciones OOP permiten desarrollar aplicaciones y programas informáticos basándolos en técnicas que incluyen conceptos como herencia, cohesión, abstracción, polimorfismo, acoplamiento y encapsulamiento. En cuanto a las funciones matemáticas en Java, las funciones disponibles vienen definidas en la clase Math. Hay muchas funciones disponibles. Se puede consultar la lista completa en la documentación oficial del API de Java

Opinión: Al poco tiempo de utilizarlo me dio la sensación de que es un lenguaje en el que es posible desarrollar casi cualquier tipo de programa o solución informática. Existen librerías, funciones y textos por montones en la red, además de diferentes IDE´s  para desarrolladores. A pesar de no ser un lenguaje complicado, la verdad es que exige un tiempo de aprendizaje considerable, sobre todo en la parte de programación orientada a objetos. Podría decir que al considerar su versatilidad para propósitos tan generales, su principal característica se vuelve una desventaja cuando es utilizado para programar sobre tópicos específicos como el análisis numérico, matrices y otros. Quizás si quieres crear tu universo java y dispones de tiempo considerable para dominar el lenguaje (o cuentas con la amistad o soporte de algún programador) puede darte a largo plazo una buena performance en el ámbito laboral.

Matlab.

Opinión: El otrora conocido como todopoderoso matlab ya no lo es tan así, por una serie de falencias que personas más especializadas en el tema esgriman. Sin embargo es el más efectivo y práctico lenguaje para desarrollar script matemáticos y análisis de matrices que he ocupado, por ende es el que más comúnmente utilizo. Es muy versátil en el análisis numérico y existe mucha bibliografía del tema, posee muchas funciones incluidas y es el lenguaje que aprendí con mayor rapidez debido a su simplicidad. Lo recomendaría para iniciarse y después cambiarse a Octave o Scilab llegando al ámbito laboral, ya que estos si son software libre y conservan muchas de las propiedades de Matlab.

Como confesión debo reconocer que dispongo de una versión ilegal de Matlab, ya que si tuviera el dinero para comprar la licencia tendría que ser dueño de algún centro de investigación o millonario excéntrico, de otra manera dudo mucho que la pagaría.

Nota: En estricto rigor matlab no es un lenguaje como tal sino que es un software que ofrece un IDE de lenguaje M.

Python.

Ya hace un buen tiempo está dando mucho que hablar, Python es un lenguaje multiparadigma ya que soporta orientación a objetos, programación imperativa y, en menor medida, programación funcional. Es libre y de código abierto, viene preinstalado en muchas de las distribuciones actuales de Linux, y también puede ser instalado en Windows.

Opinión: Lo estoy usando hace algún tiempo ocupando el entorno de desarrollo NINJA (apoyando las iniciativas de IDE´s sudamericanos) y la verdad es que personalmente me agradó mucho, de hecho me hizo dejar en stand by a MATLAB. Es muy sencillo de aprender y a la vez subir de nivel en cuanto a sus opciones. Cuenta con muchas librerías, funciones y en cuanto a textos si bien existen muchos, todavía escasean los documentos en español (aunque recomiendo aprender de literatura en inglés para ahorrarse problemas). En cuanto a su uso para tópicos más matemáticos y científicos existen para Python herramientas muy útiles como SciPy, que a su vez cuentan con variadas clases como por ejemplo la clase array para trabajo con vectores.

Para no llenar de links el post hice un pdf  con todos los links importantes con información de cada uno de estos lenguajes.

Links para lenguajes de programación

Tutorial esencial de python y extension numpy, a partir de diferentes documentos (avanzar hacia atrás en las fotos)

http://www.flickr.com/photos/pvargasbello/8190463765/





FORTRAN

6 08 2012

Fortran es un lenguaje informático desarrollado en 1957 cuyo nombre viene del acrónimo de la palabras en inglés Formula Translation. Fue el primer lenguaje de alto nivel de propósito general desarrollado originalmente por IBM para aplicaciones científicas y de ingeniería. Entre muchas de sus aplicaciones se cuenta la predicción numérica del tiempo,  análisis de elemento finito, dinámica de fluidos,  física computacional, química, etc.

El compilador actualmente más usado para la plataforma Windows es Force 2.0 y puede obtenerse gratuitamente desde su página de desarrollo http://www.lepsch.com/

Acá un tutorial introductorio sobre el uso del lenguaje fortran en el compilador Force 2.0.





Watercad

17 05 2011

Con una función un poco mas abocada al campo de la modelación y por ende a la presentación de proyectos, este software cuenta con variadas herramientas para la simulación de modelos hidráulicos desde un ambiente geoespacial.

Entre la propiedades destacan:

-Variadas herramientas técnica para obtención de datos (elevaciones, consumo, etc.)

-Gestión de datos mediante uso de sentencias SQL multiparamétricas.

-Integración de herramienta HAMMER para análisis de golpe de ariete

-Herramientas para diseño de cálculo de redes (Darwin Designer)

-Análisis de calidad y vulnerabilidad de Sistemas (WaterSAFE)

En difinitiva es un programa bastante flexible, y con variadas aplicaciones que permiten desarrollar proyectos con cofiabilidad (Desarrollado por Bentley)

  •  Guía de Usuario (A pesar de estar en inglés se entiende bastante)

 

http://www.scribd.com/fullscreen/50235880?access_key=key-1to5kffgcf36q40afgj4

Material: http://www.megaupload.com/?d=ZQU8VXZ0

Fuente: http://www.bentley.com/





Pipe flow

2 04 2011

 

Dentro de los software destinados a al cálculo y diseño de redes de agua potable se pueden encontrar diversos productos. En un artículo anterior mencionamos a Epanet, esta vez serán mostraré caractersiticas generales uno de los programas de pago más conocidos. Pipe Flow es una serie de aplicaciones destinadas al diseño y calculo de redes de tuberías complejas, consta principalmente de tres programas (Pipe Flow Expert , Pipe Flow Wizard, Pipe Flow Advisor), y una versión para 3D.

-Pipe Flow Expert

Este programa este diseñado para facilitar el diseño y los cálculos de ingeniería , para este efecto cuenta con una gamma de herramientas que permiten obtener soluciones en las cuales deben obtenerse flujos y perdidas de presiones.

Los informes del programa entregaran datos como: Tasas de flujo, velocidad, número de Reynolds, factores de fricción y pérdidas propias de los sistemas de redes.

-Pipe Flow Advisor

Puede ser usado para estimar la cantidad de flujo desde canales abiertos, cerrados o diferentes formatos de tanques de suministros.

-Pipe Flow Wizard

Puede realizar cuatro diferentes tipos de calculo para suministrar información de una tubería dada. Entre ellos están: Calculo de caídas de presión, cálculos de flujos y cálculos de diámetro y de longitud de la tubería.

 

 

Material de descarga: http://www.megaupload.com/?d=XZ13YNGM

 

fuentes: http://www.pipeflow.co.uk