viernes, 29 de agosto de 2014

La energía solar y los invernaderos.

La energía solar y los invernaderos.

Categoría: 2. Ciencia y tecnología.

Sobre las recientes aperturas a la modalidad de generadores de energía eléctrica con fuentes alternas, un sector que se aprecia como productor natural de este tipo de energéticos son los productores bajo condiciones de invernadero. Esto tiene sentido desde varios puntos de vista. Uno es dar valor agregado a las instalaciones que se construyen o adaptar las que ya se tienen. Un segundo argumento es el auto-abasto, con el ahorro asociado en materia financiera. 

Algunos sistemas de producción bajo invernadero, por ejemplo en el ramo de la floricultura, necesitan de iluminación nocturna para controlar el fotoperiodo, que es muy importante para lograr mejor calidad y una programación precisa de la producción. Por otro lado, prácticamente todos los sistemas de producción agrícola y pecuario bajo invernadero requieren del bombeo de agua, ya sea para su extracción desde la fuente o bien para su adecuada dosificación. Algunos procesos utilizan sistemas para acondicionar el agua, como suavizadores por intercambio iónico, desmineralizadores, filtros de arena y filtros de carbón activado, desinfección con ozono, desinfección con luz ultravioleta, desinfección con productos químicos oxidantes, entre otros, que también consumen energía eléctrica.

Los invernaderos son cuerpos captadores de luz solar, que retienen la energía en forma de ondas de la región infra-roja del espectro, la cual mantiene el calor dentro del volumen aprovechado. Esta energía se captura colocando hojas de plástico transparente que rodean un volumen de aire dentro del cual se cultivan organismos vivos, para los cuales es necesario mantener condiciones de temperatura y humedad relativa apropiadas a su rango de adaptación ambiental. Si estas superficies se encuentran cubiertas de un material fotoeléctrico especialmente diseñado y construido, se puede mantener su función en la captación del calor solar, a la vez que se genera energía eléctrica, es posible mantener ahorros en el consumo de energía eléctrica y obtener mayor ingreso por la inversión en instalaciones.

En las instalaciones donde el balance entre generación/consumo de energía eléctrica sea superior a la unidad, se tiene la posibilidad de exportar ese superávit y obtener un ingreso por ese concepto. En estos casos el objetivo de la producción se diversifica y los ingresos netos pueden alcanzar niveles de rentabilidad financiera.

Las diferentes opciones que existen incluyen los diferentes tipos de paneles solares. Sin embargo, se están desarrollando tecnologías para producir plásticos con materiales fotosensibles que puedan utilizarse para cubrir los invernaderos. 

Esto aumentará las posibilidades de generación de recursos en las explotaciones que hacen uso de la tecnología de los invernaderos. Algunas de estas actividades son la piscicultura, la horticultura ornamental, el viverismo, el cultivo de hongos comestibles, la producción de aves, explotaciones hidropónicas, producción de especies menores, como codornices, conejos o insectos.

Según datos estimados, en 1991 se contaba con 791 ha de cultivos bajo invernadero y que para 2013 la cifra había superado las 15000 ha en México. Los estados con mayor superficie de invernaderos son Sinaloa, Jalisco, Baja California y Sonora (Cedillo, 2013). SAGARPA estima que en 2008 el 51% de la superficie de horticultura protegida corresponde a casas sombra, 44% a invernadero y 5% a otros sistemas como los denominados microtúneles y acolchados plásticos (Cedillo, 3013). Las casas sombra y los invernaderos son los únicos sistemas de este tipo que cuentan con estructuras permanentes que con modificaciones pertinentes en el diseño pueden soportar paneles solares o películas plásticas con aplicación fotovoltaica. Los otros son sistemas móviles que no soportan paneles solares o que no son aptos para colocar coberturas colectoras de energía solar.

En la década de 2003 a 2013 la superficie protegida en México se incrementó en 500%. En 2012 la superficie bajo agricultura protegida en México fue de 21,531 ha (SAGARPA, 2012), ocupando el séptimo lugar después de China (2,760,000 ha), Turquía (61,776 ha), Corea (57,444 ha), Japón (49,049 ha), España (45,700 ha) e Italia (39,100 ha). Y por encima de Holanda (9,820 ha), Francia (9,790 ha) y Estados Unidos (8425 ha). Según datos de FILP, 2013. La producción obtenida bajo esos esquemas de agricultura generaron en México un ingreso bruto de 1,500 millones de dólares. También cabe mencionar que ese sector generó 240,000 empleos directos, 300,000 empleos indirectos y tiene un crecimiento potencial de 10,000 nuevos empleos por año. Así mismo, el ritmo de crecimiento del sector es de 1,200 ha por año. Además, esta actividad generó 6,000 empleos en el extranjero en 2009, derivados de los procesos de comercialización, beneficiando principalmente a Estados Unidos. El valor de la infraestructura instalada al 2013 fue de 7,600 millones de dólares para este sector. Los principales cultivos que se manejan bajo el esquema de agricultura protegida son jitomate (Lycopersicum esculentum o Solanum lycopersicum) 70%, pimiento (Capsicum annum var annum), 16% y pepino (Cucumis sativus), 10%.

El 50% de la superficie cultivada bajo el esquema de agricultura protegida se concentra en tres estados: Sinaloa (22%), Jalisco (15%) y Baja California (12%). Entre 80 y 90% de la producción de este sector se destina a la exportación.

Un panel solar de 500W o 0.5kW puede generar una cantidad variable de energía independientemente del sitio donde se coloque. Para estimar la cantidad de energía que puede generar este panel al colocarse en un sitio particular es necesario conocer el factor de insolación (kWh/m2/día) (Eco-Experts). En la ciudad de Londres, el factor de insolación para un panel colocado en la orientación de mejor rendimiento a lo largo del año (38°) los factores de insolación a lo largo del año son los siguientes: enero=1.27, febrero=2.04, marzo=2.76, abril=3.67, mayo=4.17, junio=4.20, julio=4.25, agosto=4.16, septiembre=3.26, octubre=2.41, noviembre=1.53 y diciembre=1.05 kWh/m^2/día (http://www.theecoexperts.co.uk/freebook/appendix-solar-insolation-values-uk).

Para estimar la cantidad de energía que va a producir nuestro sistema podemos emplear la siguiente relación:


Donde h es el factor de insolación; A es la superficie del panel solar; y eta_nom es la eficiencia nominal del panel solar (http://www.greenrhinoenergy.com/solar/technologies/pv_energy_yield.php).

Para la ciudad de Berlín, por ejemplo, se tiene que h=1,200kWh/m^2/año (estimación). De manera que una superficie de 10m^2 de panel solar que tenga una eficiencia nominal del 14%, tendrá una generación estimada de 1,680kWh, durante un año.

En México, el 70% del territorio tiene un factor de insolación superior a 4.5kWh/m^2/día GHI (Global Horizontal Irradiation). Incluyendo los estados con mayor superficie con invernaderos: Sinaloa, Sonora, Baja California y Jalisco. Para la ciudad de Hermosillo, Sonora, los valores del factor de insolación GHI son: enero=3.71; febrero=4.62; marzo=6.12; abril=7.16; mayo=7.69; junio=7.67; julio=6.66; agosto=6.11; septiembre=5.72; octubre=5.02; noviembre=4.06; diciembre=3.48 kWh/m^2/día (Solar Electricity Handbook).

Calculando la generación para un panel de 10 m^2 y una eficiencia de 0.14 (14%) para los datos de factor de insolación reportados para Londres y Hermosillo, encontramos los siguientes valores (kWh al año):

Ciudad
ene
feb
mar
abr
may
jun
jul
ago
sep
oct
nov
dic
Total
Hermosillo
156
194
257
301
323
322
280
257
240
211
71
146
2857
Londres
53
86
116
154
175
177
179
175
137
101
64
44
1460
Berlin












1680

Considerando que la superficie bajo agricultura protegida en México en 2012 fue de 21,531 ha (SAGARPA, 2012), y que el 51% de la superficie de horticultura protegida corresponde a casas sombra, 44% a invernadero. Se tiene una superficie total de 20,454 ha susceptibles de soportar paneles solares. Considerando el factor de insolación para la ciudad de hermosillo (285.7 kWh/m^2/año). Esto da un estimado de 5.8438e+11 kWh  (584,383.6 MWh).

En 2011 el consumo nacional en México fue de 27,092 GWh (27,092,000 MWh) (SENER, 2012). Esto es, la generación estimada para la superficie cubierta con invernaderos asciende a 2.16% del consumo total de energía eléctrica en México.

La tecnología fotovoltaica está en proceso de introducir tintes o coberturas que se pueden presentar en forma de plásticos traslúcidos susceptibles de ser instalados sobre los invernaderos, cubriendo la función de efecto invernadero, sombreo y generación de energía eléctrica.

La viabilidad financiera puede no ser atractiva para las primeras versiones de esta tecnología. Pero con el avance tecnológico, esto se va a acercar cada vez más a las posibilidades económicas de los productores.

Conclusiones.

- Los productores agrícolas que ya se manejan dentro de la modalidad de agricultura protegida utilizando casas sombra e invernaderos, pueden optar por convertirse en generadores de energía eléctrica, satisfacer sus propias necesidades y en algunos casos exportar el excedente.

- Se puede sustituir hasta un 2.16% del consumo nacional de energía eléctrica si el 100% de la superficie cubierta con invernaderos se destina a la generación de energía eléctrica con paneles solares.

- La viabilidad financiera puede no ser atractiva para las primeras versiones de esta tecnología. Pero con el avance tecnológico, esto se va a acercar cada vez más a las posibilidades económicas de los productores.




Fuentes de información:

Eugenio Cedillo Portugal. 2013. http://noticias.universia.net.mx/ciencia-nn-tt/noticia/2013/02/22/1006897/agriculutra-protegida-encuentra-expansion-mexico.html

Foro Internacional de Logística de Perecederos (FILP). 2013.
Sitio: http://www.expo-carga.com/upload/Pdf/conferencias2013/foros/filp/AMHPAC.pdf

Eco-Experts: http://www.theecoexperts.co.uk/average-annual-yield-pv-solar-panels

Green Rhino Energy: http://www.greenrhinoenergy.com/solar/technologies/pv_energy_yield.php

Editor de ecuaciones: http://rinconmatematico.com/latexrender/

Solar Electricity Handbook: http://solarelectricityhandbook.com/solar-irradiance.html

SENER, 2012: http://sener.gob.mx/res/PE_y_DT/pub/2012/PSE_2012_2026.pdf



viernes, 15 de agosto de 2014

Python básico para estadística.

Python básico para estadística.

Categoría: 2. Ciencia y tecnología.

En esta entrada se presenta un ejercicio básico de estadística utilizando como herramienta el lenguaje de programación Python.

En un principio se trata de elaborar un programa mínimo en Python que pueda correrse sin dificultades. A continuación se agregan funciones para obtener un código más complejo.

Si encuentras de interés esta información, tal vez te sea útil visitar una entrada donde resuelvo problemas parecidos utilizando MATLAB: Análisis de varianza para un blog.

Se puede trabajar en la ventana de Python para realizar cálculos relativamente simples. Cálculos repetitivos se pueden manejar con funciones, que están activas solamente durante el tiempo que dura la sesión. Puede realizar por ejemplo los siguientes cálculos con números binarios:

>>> y=0b0001
>>> for i in range(1,5):
...             y=y<<1
...             print y
...
2
4
8
16
>>>

El primer paso es entonces crear un archivo de texto con el nombre estadistica_1.txt. Selecciona un destino donde puedas guardar estos archivos, por ejemplo, una memoria USB en la unidad E:(E:/estadistica_codigo.txt). En esta unidad también es recomendable crear una carpeta llamada python donde guardar los archivos con extensión .py: E:/python/.

También vas a utilizar el directorio raíz de la unidad E: para guardar los archivos de salida. 

Algunas instrucciones previas para explicar lo que vamos haciendo:
- En Python se coloca un signo hash (#) para iniciar un comentario.
- Se deben llamar las librerías necesarias que contengan las funciones que ocupamos en el código. Esto se hace al inicio, después del nombre del programa y los créditos.
- Se pueden crear funciones que se ejecutan desde la ventana principal de Python.
- La indentación es muy importante para que se ejecute el código.
- La instrucción print despliega los valores de salida en la ventana de sistema.
- En el manejo de archivos no olvides utilizar las instrucciones de apertura, f=open('file.txt',"w") y de cierre, f.close().

Ejercicio en la ventana principal de Python. Después de la primera instrucción, def writefile(): se debe pulsar la tecla tab al inicio de la siguentes instrucciones; las instrucciones que estén dentro del ciclo for necesitan dos tab de indentación. Escribir una función que envía datos a un archivo de salida:

>>> def writefile():
... f=open("E:/myfile.txt","a")
... f.write("\n")
... for i in range(-10,10):
... i=i**3
... print i,"\t"
... v=str(i) # Convierte int a cadena
... f.write(v)
... f.write("\t")
... f.close() 
...

Es importante mencionar algunos modos en que puede abrirse un archivo para escribir datos.

Escribir datos en archivo de salida:
- Función: open() # deveulve un objeto archivo
- open(nombre_de_archivo, modo)

modo acción
'r' Lectura
'w' Escritura
'a' Abre archivo para agregar información. 
El dato se agrega automáticamente al final.
'r+' Abre archivo tanto para lectura como para escritura.

Ahora vas a preparar el mismo programa en un archivo con extensión .py para poderlo ejecutar de manera repetitiva sin necesidad de escribirlo cada vez, como lo haces en la ventana principal de Python. Lo primero que destaca es que se elimina la linea con el nombre de la función - def writefile(): - y también se agrega la instrucción raw_input() al final del código.

f=open("E:/myfile.txt","a")
f.write("\n")
for i in range(-10,10):
i=i**3
print i,"\t"
v=str(i) # Convierte int a cadena
f.write(v)
f.write("\t")
f.close() 
raw_input()

Este código lo capturas en un archivo de texto: E:/vector_Codigo.txt; y guardas. Ahora seleccionas [Archivo] [Guardar como], te desplazas a la carpeta E:/python/ y guardas el archivo como E:/python/vector.py. Recuerda colocar las indentaciones (un tab) en la cinco instrucciones dentro del ciclo for.

Es importante que lleve la extensión .py, de lo contrario no podrá ejecutarse tu código. La máquina donde se corre el programa debe tener instalado Python 2.7. En el explorador de archivos seleccionas el archivo vector.py y das [Enter]. Aparece una ventana de sistema desplegando los resultados. Das [Enter] para cerrar esta ventana de salida y te desplazas en el explorador de archivos hasta E: Ahí seleccionas el archivo myfile.txt y das [Enter]. Entonces puedes ver los resultados de tu primer programa. 

Nota que para este programa sólo utilizas funciones instaladas en la librería principal. Por eso no se incluyeron bibliotecas en el inicio del código.

******************************           *************************************
En el siguiente ejemplo se parte de tres conjuntos de datos, vectores dataset_1, dataset_2 y dataset_3, y se realizan los cálculos de la prueba de Wilcoxon y la prueba de Kruskal-Wallis.

La prueba de Wilcoxon se utiliza para poner a prueba la hipótesis nula Ho: mu1=mu2, contra la hipótesis alternativa H1: mu1 != mu2. Si el valor calculado para la prueba, w_calculada, es menor o igual que w_alfa, la hipótesis nula se rechaza (en este caso != se lee "no igual o diferente a").

Esta prueba solo se utiliza para la comparación de datos en pares. En el ejemplo, la prueba se realiza sobre los conjuntos de datos dataset_1 vs dataset_2 y sobre dataset_2 vs dataset_3.

Puedes ver el código de Programa1 al fina de esta página. La figura siguiente muestra la ventana de salida.


Salida de Programa1.

Para n=10 y alfa=0.05 el valor de w_alfa es w_alfa=8; para la prueba de dos extremos (este valor lo obtienes de tablas estadísticas, valores para la prueba de Wilcoxon).

En la comparación de los conjuntos dataset_1 vs dataset_2 la prueba genera los siguientes resultados: 8.5, 0.05. El primero corresponde a w+ y el segundo a w-. Como el menor de estos valores es menor que w_alfa se rechaza Ho: mu1=mu2 para dataset_1 vs dataset_2. El siguiente resultado muestra 0.0, 0.01, se rechaza Ho: mu1=mu2 para dataset_2 vs dataset_3.

La prueba de Kruskal-Wallis se utiliza para comparar los promedios de dos o más conjuntos de datos, que pueden ser los resultados de tratamientos diferentes en un experimento. Cuando se presume que los datos no muestran una distribución normal. El estadístico de prueba, H, se compara con el valor de Xi^2 con significancia alfa y a-1 grados de libertad. Donde a es el número de conjuntos de datos o tratamientos de donde provienen las muestras. Si el valor de H es mayor que Xi^2,alfa,a-1, Ho se rechaza. Se trata de probar Ho: mu1=mu2= ... =mu_n.

El resultado que muestra el programa despliega el valor de S^2 y de H. En el ejemplo S^2=22.5 y H=1.3e-5. Como el valor de X^2,0.05,2 es de 5.99, el estadístico de prueba cae dentro de la zona de rechazo de Ho. De manera que dataset_1 != dataset_2 != dataset_3.

La curtosis es un valor que indica la forma en que se distribuyen los datos alrededor de la media. Un valor elevado indica que los datos se concentran cerca de la media. En este ejemplo se tienen valores bajos para la curtosis. Esto se explica por la gran dispersión alrededor del promedio, como lo indican los valores altos de la varianza.

******************************            *************************************

En el ejemplo a continuación, se presenta el análisis de varianza para los tres conjuntos de datos que se utilizaron en el ejemplo anterior.

Puedes ver el código de Programa2 al fina de esta página. La salida del programa tiene el aspecto siguiente:


Salida de Programa2:

El resultado del análisis de varianza muestra que el valor del estadístico de prueba es F=204.1; el otro es el valor del estadístico p, que en este caso es p=5.01e-17. Para una prueba con significancia alfa=0.05 la hipótesis nula Ho: mu1=mu2=mu3 se rechaza. En este caso es claro por el elevado valor de F, marcadamente dentro de la zona de rechazo. El valor de p<<0.05 indica que el estadístico de prueba quedó bastante dentro de la zona de rechazo de Ho.

Debe recordarse que en esta prueba debe rechazarse Ho: tao_1=tao_2= ... tao_n=0, si f_obs > f_alfa_a-1_a(n-1).

El valor F con n-1 grados de libertad en el numerador y a(n-1) grados de libertad en el denominador y significancia alfa=0.05, que para este caso es F0.05,2,27=3.35, comparado con el valor f_obs=204.1 nos dice que se debe rechazar Ho.

******************************            *************************************

Ahora una función que crea un vector de nombre A y lo llena con valores generados aleatoriamente.

Puedes ver el código de Programa3 al fina de esta página. La salida del programa tiene el aspecto siguiente:


Salida Programa3.

Los valores de salida son diferentes cada vez que se corre el programa. De manera que nunca vas a obtener los mismos resultados que aparecen en esta imagen.

El programa genera un conjunto de 1000 valores con un generador de números aleatorios con distribución normal. En la salida se muestran los estadísticos que describen al conjunto. Aparece la media, mediana, mínimo, máximo, varianza, sesgo, curtosis y percentil 90.

El sesgo es un valor de la asimetría que se aplica a un histograma o a una distribución de probabilidad. Como la curtosis, es un valor que describe la simetría de un conjunto de datos alrededor del promedio. Su valor puede ser positivo, negativo, cero o inclusive una indefinición. Su interpretación no es muy directa, pero en una distribución unimodal un valor negativo del sesgo indica que hay una cola más alargada en el lado izquierdo de la función de densidad de probabilidad.

*************************                               ****************************

Conclusiones.

Los estadísticos que describen un conjunto de datos pueden calcularse de manera sencilla en python.

El análisis de varianza para hacer comparaciones entre las varianzas de varios conjuntos de datos para saber si provienen de poblaciones independientes, se puede hacer con python de manera rápida.

Una vez que se corren algunos ejercicios en python se puede experimentar con programas más complicados.

Visita la página web de python. Ahí puedes descargar python 2.7, por ahora la versión más reciente.

También puedes visitar la página web de SciPy, donde puedes descargar librerías: NumPy, SciPy, SymPy, MatPlotLib y Pandas.





Bibliografía.

Montgomery, Douglas C., and George C. Runger. 2003. Applied statistics and probability for engineers. Third edition. John Willey $ Sons Inc. United States of America.

Cárdenas Montes, Miguel. Estadística. Site: http://wwwae.ciemat.es/~cardenas/curso_MD/Estadistica.pdf


************************************                     ******************************
************************************                     ******************************
Código Programa1:

# Practica: Estadistica inferencia
# Se trabaja sobre los mismos datos que Estadistica basica
# Prueba de Kruskal-Wallis
# Prueba de Wilcoxon con signo

import scipy.stats

dataset_1=[326.4,324.9,316.3,302.8,317.0,325.4,311.9,322.4,312.1,322.2]
dataset_2=[299.0,301.9,309.4,316.9,304.8,314.2,305.3,308.9,312.5,308.1]
dataset_3=[264.8,275.9,259.0,270.6,266.7,261.8,266.1,268.4,266.2,267.4]

print 'dataset_1: ',dataset_1,'\n','Media: ',scipy.mean(dataset_1)
print 'dataset_2: ',dataset_2,'\n','Media: ',scipy.mean(dataset_2)
print 'dataset_3: ',dataset_3,'\n','Media: ',scipy.mean(dataset_3)

f=open('E:/Estadistica_Inferencia.txt','a')

f.write("Dataset_1: " + str(dataset_1) + '\n')
f.write("Media dataset_1: " + str(scipy.mean(dataset_1)) + '\n')
f.write("Dataset_2: " + str(dataset_2) + '\n')
f.write("Media dataset_2: " + str(scipy.mean(dataset_2)) + '\n')
f.write("Dataset_3: " + str(dataset_3) + '\n')
f.write("Media dataset_3: " + str(scipy.mean(dataset_3)) + '\n')

print 'dataset_1 Median: ',scipy.median(dataset_1)
f.write("Dataset_1 Median: " + str(scipy.median(dataset_1)) + '\n')
print 'dataset_2 Median: ',scipy.median(dataset_2)
f.write("Dataset_2 Median: " + str(scipy.median(dataset_2)) + '\n')
print 'dataset_3 Median: ',scipy.median(dataset_3)
f.write("Dataset_3 Median: " + str(scipy.median(dataset_3)) + '\n')

print 'dataset_1 Min: ',min(dataset_1)
f.write("Dataset_1 Min: " + str(min(dataset_1)) + '\n')
print 'dataset_2 Min: ',min(dataset_2)
f.write("Dataset_2 Min: " + str(min(dataset_2)) + '\n')
print 'dataset_3 Min: ',min(dataset_3)
f.write("Dataset_3 Min: " + str(min(dataset_3)) + '\n')

print 'dataset_1 Max: ',max(dataset_1)
f.write("Dataset_1 Max: " + str(max(dataset_1)) + '\n')
print 'dataset_2 Max: ',max(dataset_2)
f.write("Dataset_2 Max: " + str(max(dataset_2)) + '\n')
print 'dataset_3 Max: ',max(dataset_3)
f.write("Dataset_3 Max: " + str(max(dataset_3)) + '\n')

print 'dataset_1 Var: ',scipy.var(dataset_1)
f.write("Dataset_1 Var: " + str(scipy.var(dataset_1)) + '\n')
print 'dataset_2 Var: ',scipy.var(dataset_2)
f.write("Dataset_2 Var: " + str(scipy.var(dataset_2)) + '\n')
print 'dataset_3 Var: ',scipy.var(dataset_3)
f.write("Dataset_3 Var: " + str(scipy.var(dataset_3)) + '\n')

print 'dataset_1 Sesgo: ',scipy.stats.skew(dataset_1)
f.write("Dataset_1 Sesgo: " + str(scipy.stats.skew(dataset_1)) + '\n')
print 'dataset_2 Sesgo: ',scipy.stats.skew(dataset_2)
f.write("Dataset_2 Sesgo: " + str(scipy.stats.skew(dataset_2)) + '\n')
print 'dataset_3 Sesgo: ',scipy.stats.skew(dataset_3)
f.write("Dataset_3 Sesgo: " + str(scipy.stats.skew(dataset_3)) + '\n')

print 'dataset_1 Kurtosis: ',scipy.stats.kurtosis(dataset_1)
f.write("Dataset_1 Kurtosis: " + str(scipy.stats.kurtosis(dataset_1)) + '\n')
print 'dataset_2 Kurtosis: ',scipy.stats.kurtosis(dataset_2)
f.write("Dataset_2 Kurtosis: " + str(scipy.stats.kurtosis(dataset_2)) + '\n')
print 'dataset_3 Kurtosis: ',scipy.stats.kurtosis(dataset_3)
f.write("Dataset_3 Kurtosis: " + str(scipy.stats.kurtosis(dataset_3)) + '\n')

KW_test=scipy.stats.kruskal(scipy.array(dataset_1),scipy.array(dataset_2),scipy.array(dataset_3))

Wi_test_1vs2=scipy.stats.wilcoxon(dataset_1,dataset_2)
Wi_test_2vs3=scipy.stats.wilcoxon(dataset_2,dataset_3)

print 'Kruskal-Wallis test: ',KW_test

f.write("Kruskal-Wallis test: " + str(KW_test) + '\n')

f.write("Wilcoxon signed-rank test dataset_1 vs dataset_2: " + str(Wi_test_1vs2) + '\n')
f.write("Wilcoxon signed-rank test dataset_2 vs dataset_3: " + str(Wi_test_2vs3) + '\n')

print 'Wilcoxon signed-rank test dataset_1 vs dataset_2: ',Wi_test_1vs2
print 'Wilcoxon signed-rank test dataset_2 vs dataset_3: ',Wi_test_2vs3

f.write('\n')
f.close()


raw_input()

*******************************                          ****************************
Código Programa2:

# Practica: ANOVA
#
# print 'X= %5.3f' % X[i]

import numpy as np
import scipy.stats
import random
from numpy import array
from scipy.stats import kstest

dataset_1=[326.4,324.9,316.3,302.8,317.0,325.4,311.9,322.4,312.1,322.2]
dataset_2=[299.0,301.9,309.4,316.9,304.8,314.2,305.3,308.9,312.5,308.1]
dataset_3=[264.8,275.9,259.0,270.6,266.7,261.8,266.1,268.4,266.2,267.4]

f=open('E:/Estadistica_ANOVA.txt','a')
anova_ans=scipy.stats.f_oneway(dataset_1,dataset_2,dataset_3)
print 'ANOVA: ',anova_ans

f.write('ANOVA: ')
w=str(anova_ans)
f.write(w)
f.write("\n")

# ***
f.write('dataset_1: ')
v=str(dataset_1)
f.write(v)
f.write("\n")

f.write('dataset_2: ')
v=str(dataset_2)
f.write(v)
f.write("\n")

f.write('dataset_3: ')
v=str(dataset_3)
f.write(v)
f.write("\n")

# ***
v=scipy.mean(dataset_1)
print 'Mean dataset_1: ',v
w=str(v)
f.write('Mean dataset_1: ')
f.write(w)
f.write("\n")

v=scipy.mean(dataset_2)
print 'Mean dataset_2: ',v
w=str(v)
f.write('Mean dataset_2: ')
f.write(w)
f.write("\n")

v=scipy.mean(dataset_3)
print 'Mean dataset_3: ',v
w=str(v)
f.write('Mean dataset_3: ')
f.write(w)
f.write("\n")

# ***
v=scipy.var(dataset_1)
print 'Var dataset_1: ',v
w=str(v)
f.write('Var dataset_1: ')
f.write(w)
f.write("\n")

v=scipy.var(dataset_2)
print 'Var dataset_2: ',v
w=str(v)
f.write('Var dataset_2: ')
f.write(w)
f.write("\n")

v=scipy.var(dataset_3)
print 'Var dataset_3: ',v
w=str(v)
f.write('Var dataset_3: ')
f.write(w)
f.write("\n")

# ***
v=scipy.stats.skew(dataset_1)
print 'sesgo dataset_1: ',v
w=str(v)
f.write('sesgo dataset_1: ')
f.write(w)
f.write("\n")

v=scipy.stats.skew(dataset_2)
print 'sesgo dataset_2: ',v
w=str(v)
f.write('sesgo dataset_2: ')
f.write(w)
f.write("\n")

v=scipy.stats.skew(dataset_3)
print 'sesgo dataset_3: ',v
w=str(v)
f.write('sesgo dataset_3: ')
f.write(w)
f.write("\n")

# ***
v=scipy.stats.kurtosis(dataset_1)
print 'curtosis dataset_1: ',v
w=str(v)
f.write('curtosis dataset_1: ')
f.write(w)
f.write("\n")

v=scipy.stats.kurtosis(dataset_2)
print 'curtosis dataset_2: ',v
w=str(v)
f.write('curtosis dataset_2: ')
f.write(w)
f.write("\n")

v=scipy.stats.kurtosis(dataset_3)
print 'curtosis dataset_3: ',v
w=str(v)
f.write('curtosis dataset_3: ')
f.write(w)
f.write("\n")

# ***
v=kstest(dataset_1,'norm')
print 'KS test, Gaussian dataset_1?',v
w=str(v)
f.write('KS test, Gaussian dataset_1? ')
f.write(w)
f.write("\n")

v=kstest(dataset_2,'norm')
print 'KS test, Gaussian dataset_2?',v
w=str(v)
f.write('KS test, Gaussian dataset_2? ')
f.write(w)
f.write("\n")

v=kstest(dataset_3,'norm')
print 'KS test, Gaussian dataset_3?',v
w=str(v)
f.write('KS test, Gaussian dataset_3? ')
f.write(w)
f.write("\n")

f.write("\n")
f.close()
raw_input()


*********************************                        *****************************
Código Programa3:

# Practica: Estadistica Ajuste
#

import numpy
import numpy as np
import scipy.stats
from scipy import stats

a=numpy.random.normal(size=1000)
loc, std=stats.norm.fit(a)
print loc,'\n',std

f=open('E:/Estadistica_Ajuste.txt','a')
f.write(str(loc) + str(std) + '\n')

v=scipy.mean(a)
print 'Mean: ',v
f.write('Mean: ' + str(v) + '\n')

v=scipy.median(a)
print 'Median: ',v
f.write('Median: ' + str(v) + '\n')

v=min(a)
print 'Min: ',v
f.write('Min: ' + str(v) + '\n')

v=max(a)
print 'Max: ',v
f.write('Max: ' + str(v) + '\n')

v=scipy.var(a)
print 'Var: ',v
f.write('Var: ' + str(v) + '\n')

v=scipy.stats.skew(a)
print 'Sesgo: ',v
f.write('Sesgo: ' + str(v) + '\n')

v=scipy.stats.kurtosis(a)
print 'Kurtosis: ',v
f.write('Kurtosis: ' + str(v) + '\n')

v=scipy.stats.scoreatpercentile(a,90)
print 'Percentil 90: ',v
f.write('Percentil 90: ' + str(v) + '\n')

f.write('\n')
f.close()



raw_input()


*********************************                     ***************************





lunes, 4 de agosto de 2014

Balance global de agua

Categoría: 2. Ciencia y tecnología.

Ciclo del agua.



Se estima que el volumen total de agua en el planeta es de aproximadamente 1390km^3 (Revista Cómo ves? 12 de marzo de 2015).

Datos para calcular la vida media del agua en la Tierra:

Masa total de agua (1.454e+18 ton). 1.454e+24g

Destrucción de agua por fotosíntesis (-dw/dt). 1.7986e+17gH2O*año^-1
Síntesis de agua por la respiración (+dw/dt). 1.7986e+17gH2O*año^-1
Síntesis de agua por la combustión (+dw/dt). 1.4737e+16gH2O*año^-1

Balance:                   +1.4737e+16gH2O*año^-1


1. Masa total.

Sitio: http://digitum.um.es/jspui/bitstream/10201/13708/1/limnologia_practica_02.pdf


2. Destrucción de agua por fotosíntesis (-dw/dt).

La producción primaria bruta global (PPB) se ha estimado en 120PgC*año^-1 (Peta = 1x10^15); del cual aproximadamente la mitad (60PgC*año^-1) se incorpora a los tejidos vegetales, como hojas, raíces y tejido leñoso, y la otra mitad regresa a la atmósfera debido a la respiración autotrófica (respiración de los tejidos vegetales, Ra). La masa de carbono que queda fijo en forma de tejidos vegetales se conoce como producción primaria neta (PPN) y en el nivel global se ha estimado en 60PgC*año^-1.

 Figura 1. El ciclo global del carbono en la actualidad. Los almacenes están expresados en PgC y los flujos en PgC*año^-1. PPB= producción primaria bruta; Ra= respiración autótrofa; Rh= respiración heterótrofa; COD= carbono orgánico disuelto; CID= carbono inorgánico disuelto. Fuente:  http://www2.inecc.gob.mx/publicaciones/libros/437/jaramillo.html


Ecuaciones relevantes:

Fotosíntesis:

6CO2 + 6H2O -- (hv) -- > C6H12O6 + 6O2 Fotosíntesis(1)

nCO2 + 2nH2A – (hv) -- > (CH2O) + nH2O + 2nA Fotosíntesis(2)

Producción primeria neta:

PPN = PPB – Ra

Sabiendo que la producción primaria neta es el proceso responsable de la fijación de 120PgC*año^-1 se puede calcular la cantidad de agua que se destruye por el proceso conocido como fotólisis del agua, que sucede en la fase luminosa de la fotosíntesis. El electrón excitado por la energía luminosa del sol es conducido por una serie de citocromos (moléculas que se oxidan y reducen, embutidas en la membrana del tilacoide, dentro del cloroplasto) que se encargan de la reducción de los aceptores de electrones NADP+. Cuando el electrón ha cedido su energía en la reducción escalonada de estos citocromos es finalmente conducido a una reacción enzimática en la que dos electrones se unen a dos protones (H+) desprendidos de una molécula de agua H2O, liberando 0.5O2. 

Los protones así separados de la molécula de agua pasan a formar un gradiente de concentración [H+] entre el interior del tilacoide (mayor concentración) y el estroma o espacio intermembranal. Las proteínas ATP-asa embutidas en la membrana tilacoide catalizan la formación de ATP a partir de ADP + Pi utilizando la energía del flujo de protones a favor de un gradiente de concentración. Los aceptores de electrones en su forma reducida (NADPH) proporcionan energía para la síntesis de 3-fosfo-glicerato a partir de CO2 en las reacciones de la fase oscura de la fotosíntesis o ciclo de Calvin (http://www.uam.es/personal_pdi/ciencias/jsatrust/Tema24-2009.pdf).

La cantidad de agua que se destruye durante el proceso de fotosíntesis es de un mol de agua por cada mol de CO2 fijado. Sabiendo que se fijan 120PgC*año^-1, lo cual es igual que 4.397e+17gCO2*año^-1 o 439.7PgCO2*año^-1 (120PgC*año^-1*3.664gCO2*(gC)^-1).
Como un mol de CO2 equivale a 44.008g, la fijación total de CO2 es de 9.992e+15molCO2*año^-1.
Ahora considerando que un mol de agua equivale a 18.001g*mol^-1, tenemos que por fotosíntesis se destruyen 1.7986e+17gH2O*año^-1.

Sitio: http://www2.inecc.gob.mx/publicaciones/libros/437/jaramillo.html


3. Síntesis de agua por la respiración (+dw/dt).

La respiración autotrófica consume el 50% del carbono fijado por la PPB. Esto es 60PgC*año^-1 o 2.1986e+17gCO2*año^-1. Por cierto, se estima que los ecosistemas forestales de #México almacenan 2,043 millones de ton. de carbono.( #COP21 #climatízate )

De este modo, la producción primaria neta global se estima en 60PgC*año^-1. Se considera que una buena estimación de la cantidad de carbono fijado (PPN) que pasa al siguiente nivel trófico (herbívoros) es de 25% del total fijado, esto sería 15PgC*año^-1 o 5.4965e+16gCO2*año^-1.

Y solo un 25% del carbono que alcanza a los herbívoros pasaría a los carnívoros.

Ahora sumando el C consumido por la respiración autotrófica y por la respiración de los herbívoros, tenemos un total de 75PgC*año^-1 o 2.74825e+17gCO2*año^-1.

Al final de cuentas, todo el carbono no contabilizado estará disponible para los organismos descomponedores. Esto quiere decir que no hay acumulación. El 100% del carbono fijado por los organismos autótrofos (plantas, bacterias y algas autótrofas) va terminar siendo consumido por el metabolismo respiratorio de estos mismos organismos, o bien, por organismos con metabolismo heterótrofo. En este consumo de carbono fijado por la fotosíntesis también se considera el carbono que se consume por combustión durante incendios forestales. Este proceso también genera agua en la misma proporción estequiométrica que la respiración.

Ecuaciones relevantes.

Respiración heterótrofa:

C6H12O6 + 6O2 ---- > 6CO2 + 6H2O


4. Síntesis de agua por la combustión (+dw/dt).

Emisiones globales de CO2.

Año Emisión anual (CO2) Fuente

1990 20.878e+9ton 7
2005 26.402e+9ton 7
2008 31.6e+9ton 7
2010 10PgC 6
2010 33e+9ton   5
2011 10.4PgC          8
2012 35e+9ton          1
2012 35.6e+9ton 3
2012 9.7PgC      8
2013 36e+9ton    2
2013 36e+9ton   4


1: http://www.jornada.unam.mx/ultimas/2013/11/19/emisiones-de-co2-aumentaron-2-2-en-2012-en-el-mundo-estudio-5338.html
2: http://www.20minutos.es/noticia/1981076/0/carbono/cambio-climatico/emisiones/
3: http://www.elmundo.es/elmundo/2012/12/03/natura/1354532573.html
4: http://www.agenciasinc.es/Noticias/2013-batira-un-nuevo-record-de-emisiones-globales-de-CO2
5: http://noticiasdelaciencia.com/not/2521/record_en_2010_de_las_emisiones_de_dioxido_de_carbono
6: http://sociedad.elpais.com/sociedad/2011/12/04/actualidad/1322953201_850215.html
7: http://es.wikipedia.org/wiki/Emisiones_de_CO2
8: http://calentamientoglobalclima.org/tag/emisiones-co2/


Ecuaciones relevantes.

Estequiometría de la oxidación de glucosa:

C6H12O6 + 6O2 ---- > 6CO2 + 6H2O

En esta ecuación cada mol de CO2 generado por la oxidación de la glucosa, genera también 1 mol de agua. Si las emisiones globales de CO2 corresponden a la combustión de materia orgánica, como glucosa, se tiene 36e+15gCO2*año^-1, lo cual equivale a 3.18e+14mol de CO2*año^-1. Esto es, se generan 3.18e+14molH2O*año^-1, lo que equivale a 1.4737e+16gH2O*año^-1 por procesos de combustión.


5. Balance y velocidad de renovación.

Como hemos visto hasta aquí, la cantidad de agua que se destruye por la fotólisis durante la fotosíntesis es más o menos igual que la cantidad de moléculas de agua que se forman durante el proceso de respiración. En este ciclo bioquímico del agua se destruye y se sintetiza una cantidad de agua aproximadamente 1.7986e+17gH2O*año^-1.

Considerando que las existencias globales de agua en la tierra ascienden a 1.454e+24g, es posible calcular el tiempo que tarda en renovarse:

Theta (años) = Existencia de agua (g) / Velocidad de desaparición (g*año^-1)

En esta ecuación, Theta, es el tiempo de residencia del agua en la tierra (años); Existencia de agua, es la cantidad total de agua disponible en la Tierra (expresada en gramos); Velocidad de desaparición es la velocidad con que el agua se descompone en hidrógeno y oxígeno debido a la fotosíntesis, que es la misma velocidad con que se forman nuevas moléculas de agua a partir del hidrógeno contenido en los alimentos y el oxígeno atmosférico que utilizan los organismos en el proceso de respiración (expresada en g*año^-1). De esta manera se calcula que en 8.084e+6 años se renueva toda el agua existente en la tierra.

En el apartado anterior se calculó la cantidad de agua que se forma por procesos de combustión de origen antropogénico. En el balance de agua, esta sería la cantidad de agua que se acumula en la Tierra. La velocidad de acumulación según este balance sería de 1.4737e+16gH2O*año^-1. Con esta velocidad, el tiempo que tardarían en duplicarse las existencias globales de agua en la Tierra sería de 98.66e+6años. De esta manera puede verse que no es urgente estabilizar el balance de agua por las actividades antropogénicas, pero es recomendable empezar a manejar estas cifras, ya que con el análisis de todas ellas podemos obtener valores que nos indiquen si el tratamiento de los problemas ambientales va caminando por el camino correcto.


6. Otras formas en que se forma agua en los organismos vivos.

La formación de enlaces peptídicos entre los aminoácidos durante la síntesis de proteínas es una forma en la que se forman nuevas moléculas de agua. Cada enlace peptídico entre el grupo amino (-NH2) de un aminoácido con el grupo carboxilo (-COOH) del aminoácido precedente conlleva la formación de una molécula de agua (H2O).

La formación de enlaces glucosídicos en los carbohidratos y los ácidos nucleicos también genera una molécula de agua por cada enlace que se forma (o por cada mol de sustancias reaccionantes, dicho de forma más precisa). Para la formación de un enlace glucosídico en un nucleósido, el enlace se forma entre el grupo hidroxilo (-OH) de la pentosa y un hidrógeno (-H) de la base nitrogenada (adenina, timina, citosina, guanina y uracilo).

Discusión.

En el apartado 4 se estimó la cantidad de agua que se forma por los procesos de combustión. Para esto se investigó el valor de las emisiones de CO2 de origen antropogénico. En las discusiones acerca del cambio climático se proponen, entre otras cosas, buscar mecanismos o tecnologías para fijar o secuestrar carbono, con el fin de reducir las fuentes de CO2 a la atmósfera. Este procedimiento en principio tiene sentido lógico. Lo que no es evidente es de qué volumen debe ser ese flujo de carbono hacia su inmovilización. Sabemos que las cosas que tenemos que hacer son más dinámicas cuando conocemos la meta a alcanzar. Pues con este ejercicio es posible conocer el valor aproximado que deben alcanzar las tecnologías para secuestrar carbono. Este valor es 36e15gCO2*año^-1 o 9.825PgC*año^-1. Es necesario tener en cuenta que para que esas cantidades de carbono no se transformen en CO2 por la actividad de microorganismos descomponedores, es necesario ponerlo fuera del alcance de estos. Por ello, los mecanismos más prometedores son la inyección de CO2 en el océano profundo, almacenamiento de gases carbonáceos en pozos petroleros agotados, pirólisis de madera y otros residuos orgánicos y su posterior incorporación en suelos agrícolas. 

La cantidad de agua que se renueva por los procesos de fotosíntesis (fotólisis) y respiración (formación de agua) es tal (1.7986e+17gH2O*año^-1) que las existencias globales de agua en la Tierra (1.454e+24g) se renuevan en promedio cada 8.084e+6 años.

También se hizo una estimación del balance de agua en la Tierra y se encontró que hay una acumulación que más o menos corresponde con la cantidad de agua formada por la combustión debida a actividades antropogénicas, es decir, calefacción, preparación de alimentos, generación de energía eléctrica, movimiento de vehículos, obtención de energía para procesos industriales, entre otros. La velocidad con que se acumula esta agua haría que las existencias totales de agua en la Tierra se duplicaran en 98.66e+6años. Sin embargo, no existen reservas para mantener esta velocidad de acumulación y solo se mantendría durante el tiempo que continúe la utilización masiva de combustibles fósiles. Debe recordarse que este inventario de combustibles se acumuló durante al menos los últimos 500 millones de años. También debe tenerse en cuenta que cada vez es más difícil alcanzar estos depósitos y eventualmente quedarán sin tocar grandes yacimientos que serán las mayores reservas de carbono secuestrado hasta que la tecnología ponga a disposición de la humanidad un método capaz de inmovilizar carbono en cantidades semejantes.


Bibliografía.

INE: http://www2.inecc.gob.mx/publicaciones/libros/437/jaramillo.html

Sitio: http://digitum.um.es/jspui/bitstream/10201/13708/1/limnologia_practica_02.pdf

Beas, Carlos; Daniel Ortuño; y Juan Armendáriz. 2009. Biología molecular. Fundamentos y aplicaciones. MacGraw-Hill Interamericana SA de CV. México, D.F., México.

Lecturas recomendadas:

Global photosynthesis on the rise

#nfjh