viernes, 26 de diciembre de 2014

Análisis básico de cadenas de ADN y ARN. Programa en VC++.

Análisis básico de cadenas de ADN y ARN. Programa en VC++.


Categoría: 1. Programación y electrónica.

Tal vez la primera aplicación a gran escala de las técnicas de programación fue su utilización para decodificar mensajes encriptados durante la segunda guerra mundial. Para los países involucrados era posible interceptar mensajes enviados por escrito o mediante señales de radio. Sin embargo, el tiempo que tomaba decodificarlos resultaba de vital importancia, ya que en ellos se podía anticipar el movimiento de tropas, la disponibilidad de pertrechos, víveres y combustibles y todo lo que una cadena de suministro necesita para sostener el avance en los frentes de batalla.

Cuando ya se conocía el código de encriptación, el siguiente paso era descifrar el mensaje, lo cual era realizado por un programa cargado en una computadora, de manera que descifrar un mensaje tomaba cosa de segundos. Claro, una vez conocido el código de encriptación, se interceptaba el mensaje, se enviaba al centro de cómputo, se capturaba el mensaje en el formato requerido por el programa, se corregían los posibles errores. Aún después de esto, se enfrentaba el reto de interpretar la información contenida en el mensaje. Como puede verse, la velocidad proporcionada en el descifrado del mensaje con el uso de programas computacionales, ayudaba a pasar más deprisa uno de los obstáculos más difíciles en la logística de inteligencia.

En tiempos de paz, estas técnicas son también de gran utilidad, ya que los utilizan los poderosos buscadores de internet, también la llamada minería de datos. Las técnicas comerciales realizan un seguimiento de las costumbres de sus clientes y posibles clientes, mediante el análisis de sus estilos de vida, incluyendo lo que leen y lo que escriben en internet. Esto lo podemos encontrar en una presentación sumamente amena en el libro "Los Numerati", de Stephen Baker (2009).

En la entrada "La epistemología en la práctica" publicada en este mismo blog en noviembre de 2013 se comentó un poco sobre la forma en que se logró encontrar el código de encriptación que traduce una secuencia de bases en el ADN a una secuencia de aminoácidos. En ese texto se comenta que cuando el físico inglés Francis Crick y el genetista norteamericano James Watson estudiaron la estructura del ADN a comienzos de la década de 1950, en Cambridge, Inglaterra, contaban con gran cantidad de información experimental sobre la estructura de los ácidos nucleicos que lo conforman así como con imágenes de difracción de rayos X del ADN, pero tuvieron que hacer un ejercicio primordialmente teórico para encontrar la forma en que esas moléculas se unen para poder después ser traducidas por los ribosomas a un código que permite la formación cadenas de aminoácidos y como producto final, las proteínas.

En otro ejemplo, el relativamente reciente desarrollo de las ciencias genómicas tuvo como base precisamente el entendimiento del código genético en su proceso de traducción a proteínas. De manera que la biología centró sus esfuerzos en el estudio de los genes, podría decirse que durante todo el siglo 20. De manera más o menos racional o más o menos empírica, el enfoque de los estudiosos de los genes ha modificado ligeramente su enfoque hacia el estudio de genomas completos. Este enfoque permite integrar el estudio de vías metabólicas desde la codificación genética de las enzimas que intervienen pasando por su transcripción y síntesis. Esto ha dado origen al campo de la Biología conocido como Proteómica. Esto permite un entendimiento completo y la posibilidad de utilizar en la práctica vías metabólicas de interés médico, agrícola, de la ingeniería de los alimentos, industria farmacéutica, industria química, fabricación de biocombustibles y en muchas otras áreas de interés, por supuesto en las investigaciones sobre evolución, migración, especiación y domesticación de especies. La evolución de las vías metabólicas es un área que se abre para su estudio, ya que en la actualidad se cuenta con técnicas experimentales que permiten reconstruir las cadenas de ADN y ARN de microorganismos y de sus ancestros. Las ribozimas se supone fueron las moléculas precursoras de las actuales enzimas, se ha comprobado experimentalmente la capacidad catalítica de la molécula e ARN. Las ribozimas son pequeñas enzimas de RNA con sitios de reconocimiento específicos, pero menos eficientes que las enzimas proteínicas; de hecho, muchas ribozimas ejercen su actividad catalítica solo una vez, después pierden estabilidad y se degradan. las ribozimas existen tanto en eucariontes como en procariontes y virus.

En la genética molecular, las técnicas de análisis de textos han sido de gran utilidad, ya que el análisis de largas cadenas de ADN o de ARN se puede hacer de manera automatizada, con gran nivel de precisión y cada vez con mayor rapidez. Una de las aplicaciones de mayor utilidad es en el alineamiento de pares de secuencias y de secuencias múltiples de ADN o ARN. Estas comparaciones tienen por objeto comparar dos secuencias de bases obtenidas por PCR en dos muestras independientes y corroborar si corresponden al mismo gen o segmento de ADN. Al ser procesos que dependen de la calidad de la muestra, se pueden tener ausencia de bases (deleciones), repeticiones de bases, bases yuxtapuestas (encimadas) y otras situaciones por las que las secuencias no tienen el 100% de coincidencia. Las técnicas de análisis permiten generar parámetros que indican el grado de coincidencia de las cadenas y ayudar a tomar una decisión dentro de un nivel de confianza conocido. Utilizando programas como ClustalW es posible obtener el estadístico 'p', que indica el grado de similitud entre dos cadenas de ADN. Si el valor de probabilidad 'p' es más cercano a cero, esto significa que las coincidencias encontradas se deben menos al azar, mientras que un valor de 'p' elevado (su valor máximo es 1.0) indicará que las coincidencias reales son pocas y el mayor porcentaje de sus similitudes se debe al azar. En Attwood y Smith, 2004, se pueden encontrar algunas de las técnicas y algoritmos aplicados al análisis de estas cadenas de bases.

Problema 1.
El programa que se desarrolló recibe una cadena primaria de bases de ADN. El análisis de la cadena consiste en obtener los siguientes datos:

- El número de bases de la cadena.
- Cadena complementaria de ADN, para la secuencia primaria (Replicación).
- Cadena de ARN correspondiente a la secuencia primaria (Transcripción).


Figura 1. Salida en la consola de Visual C++.

El reporte se despliega en la consola de VC++ y se envía a un archivo de texto en una unidad de memoria conectada en la PC del usuario.

Problema 2.
En un segundo programa se iniciará con una cadena de ARN para generar:

- Secuencia de aminoácidos que codifica, para una secuencia de ARN (Traducción).

Problema 3.
En un tercer programa se iniciará con dos cadenas de ADN de la misma longitud para obtener:

- Grado de similitud entre dos cadenas de ADN.

Bibliografía.


Atwood, T.K. y D.J. Parry Smith. 2002. Introducción a la bioinformática. Editorial Prentice-Hall. Madrid, España.

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

Bronson, G. J. 2007. C++ para ingeniería y ciencias. Segunda Edición. International Thomson Editores. México, D.F. México.

Baker, Stephen. 2009. Numerati. Seix Barral.


Anexo. Código de programa.


// ADN_Secuencias_1.cpp: define el punto de entrada de la aplicación de consola.
//

#include "stdafx.h"
#include <iostream>
#include <Windows.h>
char *adn_sequence = "atatagagctggcct";
char *complemento_adn;
int a,b,c;

void display_adn_sequence()
{
a=0;
std::cout << "The bases sequence of adn_secuencia is: \t";
while (adn_sequence[a] != '\0')
{
std::cout << adn_sequence[a];
a++;
}
std::cout << "\n";
}
void length_adn_sequence()
{
b=0;
while (adn_sequence[b] != '\0')
{
b++;
}
std::cout << "The lengh of sequence adn_secuencia is: \t" << b << "\n";
}
void complemento_adn_sequence()
{
c=0;
std::cout << "Complementary adn chain for adn_secuencia is: \n\t\t\t\t\t\t";
while (adn_sequence[c] != '\0')
{
switch (adn_sequence[c])
{
case 'a':
{
std::cout << 't';
// complemento_adn[c] = 't';
}
break;
case 't':
{
std::cout << 'a';
// complemento_adn[c] = 'a';
}
break;
case 'g':
{
std::cout << 'c';
// complemento_adn[c] = 'c';
}
break;
case 'c':
{
std::cout << 'g';
//complemento_adn[c] = 'g';
}
break;
default:
{
// std::cout << '-';
// complemento_adn[c] = '-';
}
}
c++;
}
}
void printDate()
{
SYSTEMTIME lt;
GetLocalTime(&lt);
printf("Local date is:\t\t\t\t\t %04d-%02d-%02d", lt.wYear, lt.wMonth, lt.wDay);
std::cout << "\n";
}
void printHour()
{
SYSTEMTIME lt;
GetLocalTime(&lt);
printf("Local time is:\t\t\t\t\t %02d:%02d:%02d:%03d", lt.wHour, lt.wMinute, lt.wSecond, lt.wMilliseconds, "\n");
std::cout << "\n";
}
int _tmain(int argc, _TCHAR* argv[])
{
printDate();
printHour();
display_adn_sequence();
length_adn_sequence();
complemento_adn_sequence();
std::cout << "\n\n";
return 0;
}





viernes, 28 de noviembre de 2014

Biocombustibles. Especies de ciclo corto y especies perennes. Continuación.

Biocombustibles. Especies de ciclo corto y especies perennes. Continuación.


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

Esta entrada presenta un ejercicio de programación en lenguaje Visual C++ (Microsoft, VC++) que ejecuta la simulación con el modelo logístico de crecimiento para una población de árboles de la especie Eucalypthus globulus, estudiada en la entrada titulada "Biocombustibles. Especies de ciclo corto y especies perennes", publicada en septiembre de 2014 en este mismo blog.

Los parámetros para este modelo se habían calculado como sigue:
M=374.1
a=73.82
k=0.4315

   (modelo logístico de crecimiento)

En aquella ocasión se compararon el modelo logístico y el modelo exponencial de crecimiento para esta población de E. globulus. El gráfico ilustra el comportamiento de ambos modelos:

a
b
Figura 1. Modelo de crecimiento logístico (a) y modelo de crecimiento exponencial (b) de una especie perenne (E. globulus). En ambas se incluye el rendimiento (ton/ha) para una especie de ciclo anual, en este caso, el maíz (Z. mays).

En este ejercicio se ilustra el uso de la librería fstream de VC++ para el manejo de archivos en la modalidad de escritura. La consola despliega una serie de mensajes para interactuar con el usuario y obtener el tiempo de simulación deseado y preguntando si se quiere realizar una nueva simulación. La rutina se ejecuta tantas veces como el usuario quiere y todos los resultados de una misma sesión de guardan en una archivo de salida de tipo datos.txt. Sin embargo, cada vez que se ejecuta nuevamente el programa, los datos anteriores se borran. Por lo tanto, si se desea recuperar de forma permanente esos datos, es necesario copiar en otro archivo o guardar con un nombre diferente (datos1.txt, por ejemplo).

En esta ocasión se graficaron nuevamente los datos, con el siguiente resultado:

Figura 2. Modelo de crecimiento logístico de crecimiento para una especie perenne (E. globulus) construido a partir de los datos generados con el modelo programado en VC++.

Las instrucciones básicas del programa serían las siguientes:

// Código para almacenar datos en archivo de texto:
/*
 #include <fstream>
ofstream archivo("E:\\ModLogistico.txt");

if (archivo.fail())
{
cerr << "\n\tNo pudo abrir archivo ...\n";
exit(1);
}

archivo << "\nPara t= " << y << " anhos\tg= " << g << "\n";
archivo.close();
//
*/

Se genera un objeto de tipo ofstream al que se dio el nombre de archivo. Como parámetro se proporciona el nombre y la dirección del archivo de salida. A continuación se verifica que el archivo haya sido abierto (con la instrucción archivo.fail()), de lo contrario se envía un mensaje de error a la consola. En seguida se ponen las instrucciones de escritura de datos en el archivo y finalmente se cierra el archivo, con la instrucción archivo.close().

Figura 3. Consola de VC++ desplegando las preguntas para interaccionar con el usuario solicitando que ingrese el tiempo que quiere considerar en la simulación.

La consola muestra los diálogos para introducir el tiempo de la simulación y también le pregunta al usuario si desea realizar un nuevo cálculo. Si responde afirmativamente, a continuación se le pregunta el tiempo que quiere en la siguiente simulación. La variable tiempo es del tipo float, de manera que se puede introducir un valor con decimales. Con sentido práctico, el mensaje para el usuario pide un valor con dos decimales. Pero puede prescindirse de ellos o poner tres o más cifras a la derecha del punto decimal.

El programa está compuesto por dos funciones 1) modeloLogistico(float tiempo, char modo) y 2)
simulacion( ) y el programa principal int main( ). La función simulacion( ) es llamada dentro de la función modeloLogistico(float tiempo, char modo) y esta a su vez es llamada dentro del programa principal int main( ).


Tabla 1. Valores obtenidos en la simulación con Microsoft VC++ para el modelo de crecimiento logístico.
t (años)
g (ton/ha)
0
5
1
7.64271
2
11.6382
3
17.6219
4
26.4576
5
39.236
6
57.1711
7
81.3136
8
112.047
9
148.504
10
188.3
11
227.984
12
264.141
13
294.475
14
318.212
15
335.793
16
348.292
17
356.922
18
362.76
19
366.655
20
369.23
30
374.034
40
374.099
50
374.1
60
374.1
70
374.1

Los valores de la simulación de crecimiento toman un comportamiento asintótico a partir de los 50 años, alcanzando un valor máximo de 374 ton/ha. Estos valores se compararon con los obtenidos en una simulación hecha con el paquete Microsoft Excel, obteniéndose los mismos resultados.

Figura 4. Salida de la simulación en un archivo de texto.

En una nueva simulación el programa pregunta al usuario si necesita cambiar los valores cinéticos. El usuario puede cambiar el valor de M, que es el crecimiento máximo asintótico; el valor de k, que es la constante cinética de crecimiento en la fase exponencial; y g(0), que es la biomasa inicial (por default es de 5.0 ton/ha). El programa calcula automáticamente el nuevo valor de a, utilizando el valor de biomasa inicial y el valor de M.

A manera de ejercicio se realizó una serie de simulaciones con tres valores para la constante cinética de crecimiento, k, de 0.01, 0.1 y 0.4315. Los datos se graficaron como se muestra en la figura 5.

Figura 5. Gráficos de las modelaciones para k=0.01, k=0.10 y k=0.4315.

Para obtener un efecto más notorio en el cambio de los valores de k, se utilizó un valor de biomasa inicial g(0)=1.3 ton/ha. De este modo, el crecimiento inicial se retrasa con respecto a la simulación hecha antes, donde se utilizó el valor predefinido g(0)=5.0 ton/ha.



Conclusiones.

- Almacenar los datos de salida de una simulación numérica en VC++ en un archivo de tipo archivo.txt facilita hacer una ulterior manipulación para su análisis y su presentación gráfica, utilizando paquetes como hojas de cálculo electrónicas (como Microsoft Excel y Lotus 123) o en paquetes matemáticos (como Matlab, Mathworks, Mathematica o Polymath).

- Los valores obtenidos en la simulación en el modelo logístico de crecimiento con Microsoft VC++ son los mismos que se obtuvieron con el paquete Microsoft Excel.


Bibliografía:

S. Pérez; C. J. Renedo; A. Ortiz; M. Mañana; D. Silió; and J Peredo. 2012. Comparison of energy potential of the Eucalyptus globulus and the Eucalyptus nitens. http://www.icrepq.com/icrepq06/285%20Perez.pdf



Malik, M.S; C. Surendran and K. Kailasham. 2003.

A MATHEMATICAL MODEL FOR PREDICTING THE GROWTH OF Eucalyptus globulus UNDER AGROFORESTRY PLANTATION

XII World Forestry COngress, 2003. Québeq City, Canada.

Disponible: http://www.fao.org/docrep/ARTICLE/WFC/XII/1021-B1.HTM



Sitios visitados:



Enlaces recomendados:

Biochar

Anexo. Programa para calcular el crecimiento de una población de E. globulus (en ton/ha), mediante un modelo logístico de crecimiento.


#include <iostream>
#include <fstream>
#include <iomanip>
#include <Windows.h>
using namespace std;

float m=374.1;
float a=73.82;
float k=0.4315;
float g_0=5.0;
float t=0;
int tiempo=200;

char modeloDecision() {
char b;
std::cout << "\nDesea realizar nueva simulacion? ... Si (y)  No (n) ... \t";
std::cin >> b;
char c='0';
if (b == 'y') {
std::cout << "\nDesea modificar valores cineticos? ... Si (y)  No (n) ... \t";
std::cin >> c;
}
else {
std::cout << "\nNo se hara una nueva simulacion ...";
return 0;
}
if (c == 'y') {
std::cout << "\nNuevo valor para M=374.1: ";
std::cin >> m;
std::cout << "\nNuevo valor para k=0.4315: ";
std::cin >> k;
std::cout << "\nNuevo valor para g(0)=5.0 ton/ha: ";
std::cin >> g_0;

a = (m-g_0)/g_0;
std::cout << "\nSe calculo nuevo valor para a= " << a << "\n";
std::cout << "\nAhora introduce la extension para la simulacion t=100 anhos: ";
std::cin >> tiempo;
tiempo *= 2;

t = 0;  // Refresca el valor de t.
}
else {
std::cout << "\nNueva simulacion con M=374.1; a=73.82; k=0.4315 ...\n";
}
return b;
}

float modeloLogistico(float b) {
float f=m/(1+(a*exp(-k*b)));

return f;
}
float modeloPunto(float r) {
float w=m/(1+(a*exp(-k*r)));
return w;
}
int main() {
std::cout << "\t\t***  USO DE LA INSTRUCCION Return #;  ***" << "\n\n";

char f='0';

ofstream archivo("E:\\Return.txt", ios::app);

do {
if (archivo.fail()) {
cerr << "\n\tNo pudo abrir archivo ...\n";
exit(1);
}

std::cout << "\nIntroduzca el tiempo para la simulacion (anhos, con dos decimales):\t";
float y;
std::cin >> y;
std::cout << "\n**********  Nueva simulacion para y= " << y << " anhos  *************\n\n";

SYSTEMTIME lt;
GetLocalTime(&lt);
printf(" The local time is: %02d:%02d:%02d\n", lt.wHour, lt.wMinute, lt.wSecond);
printf(" The local date is: %04d-%02d-%02d\n", lt.wYear, lt.wMonth, lt.wDay);

archivo << "\n**********  Nueva simulacion para y= " << y << " anhos  *************\n\n";

archivo << setprecision(2);
archivo << "\n" << lt.wHour << ":" << lt.wMinute << ":" << lt.wSecond;
archivo << setprecision(4);
archivo << "\n" << lt.wYear;
archivo << setprecision(2);
archivo << "-" << lt.wMonth << "-" << lt.wDay;

archivo << setiosflags(ios::fixed);
archivo << setiosflags(ios::showpoint);
archivo << setprecision(2);
archivo << "\nValores para la modelacion: \n" << "M= " << m << "\nk= " << k << "\na= " << a << "" << tiempo;
archivo << "\nt_anho" << "\tg_ton/ha\n";

for (int x=0; x<tiempo; x++) {
float g = modeloLogistico(t);
std::cout << "t= " << t << "\tg= " << g << "\n";
archivo << t << "\t" << g << "\n";
t+=0.5;
}

float g = modeloPunto(y);

std::cout << "\nPara t= " << y << " anhos\tg=" << g << "\n";
archivo << "\nPara t= " << y << " anhos\tg= " << g << " ton/ha\n";

f = modeloDecision();
}
while (f == 'y');

archivo.close();
std::cout << "\n\t";
cin.get();  // Espera a que se presione una tecla.
return 0;
}










viernes, 14 de noviembre de 2014

Python para comunicación con Arduino.

Python para comunicación con Arduino.


Categoría: 1. Programación y electrónica.

Introducción.

Los microcontroladores son dispositivos electrónicos que permiten interactuar elementos electrónicos como sensores, interruptores, entradas y salidas analógicas y digitales y comunicarlos con un PC o con redes de datos como internet, bluetooth WiFi, entre otras. Esto los convierte en equipos muy versátiles para controlar equipos en respuesta a cambios registrados por sensores (retroalimentación o control de lazo cerrado) o bien para operar equipos a distancia.

Una aplicación de bastante utilidad es el censado de variables ambientales en sistemas naturales o en sistemas controlados para registrar el estado real del sistema durante todo el tiempo de operación. No importa si es de día o de noche, el censado se realiza conforme a la frecuencia programada. El resultado puede ser un registro de datos que se puede analizar en tiempo real, o bien, utilizarse para un análisis posterior, o ambas cosas. El sistema permite además controlar equipos en respuesta a cambios ambientales. Desde encender una lámpara cuando la intensidad lumínica baja de un valor establecido o encender un sistema de enfriamiento cuando la temperatura se eleva por encima del límite máximo, hasta controlar el vuelo de un dron equipado con GPS siguiendo un itinerario previamente establecido y registrando variables ambientales de interés o registrando imágenes en archivos electrónicos.

En este blog he publicado otras entradas sobre proyectos con la tarjeta electrónica Arduino. Accede AQUÍ.

Desarrollo del proyecto.

En este ejercicio se utiliza un programa en Python para abrir un puerto de comunicación serial. A través de este puerto se recibe una linea de datos generada por una tarjeta electrónica Arduino, que tiene un sensor de temperatura LM35. El dato se guarda en un archivo de texto, junto con la fecha y la hora en que fue realizada la lectura. 

# Abre un puerto de comunicacion con Arduino. Continuo.
from time import sleep
from time import strftime
import serial
serialPort=3
baudRate=115200
storeFile='E:/ArduinoDataFile.txt'
arduino=serial.Serial(serialPort,baudRate)
if (arduino.isOpen()):
        print "Arduino is available ..."
  arduino.close()
if (~arduino.isOpen()):
  arduino.open()
  print "Arduino is open ..."
  while (arduino.isOpen()):
                hora=strftime("%H:%M:%S")
  fecha=strftime("%Y-%m-%d")
  arduino.flush()
  print fecha,"\t",hora,"\t",arduino.readline()
  f=open(storeFile,'a')
  f.write(str(fecha)+"\t"+str(hora)+"\t"+str(arduino.readline()))
  f.close()
  sleep(2.0)
raw_input()  # Esta linea de codigo para archivo.py.


El programa se hizo para Python 2.7 y se instaló la librería PySerial para poder establecer la comunicación a través del puerto serie. También se utiliza la librería time para obtener la fecha y la hora del sistema.

En la consola de salida se despliega el valore de la temperatura junto con la fecha y la hora en que se realizó la lectura (Figura 1). La lectura se repite cada 2.0 segundos, dejando un tiempo de espera con la instrucción sleep().

El sensor de temperatura se instaló en una tarjeta electrónica ArduinoUNO, en la entrada digital A1. El código que se cargó en el microcontrolador es el siguiente:

void setup()
{
  Serial.begin(115200);
}
void loop()
{
  Serial.print(tempSensor());
  Serial.print("\t");
  Serial.println(analogRead(A0));
  delay(1000);
}

float tempSensor()
{
    analogReference(INTERNAL);
    int sens;
    for (int k=0; k<10;k++)  /* Lecturas mientras estabiliza despues de analogReference. */
    {
        sens=analogRead(A1);
        delay(5);
    }
    float temp=sens/9.31;
    analogReference(DEFAULT);
    return temp;
}

Para tomar la lectura del sensor analógico de temperatura se utilizó un ciclo for con 10 iteraciones. Esto con el fin de estabilizar la lectura y obtener un dato preciso. Normalmente las primeras dos o tres lecturas del LM35 después de cambiar la referencia de voltaje analógico con la instrucción analogReference(), se obtienen lecturas bastante alejadas del valor real.

Figura 1. Salida en Python de la función que abre el puerto serial, obtiene la lectura de temperatura y lo guarda en un archivo de texto.


Figura 2. Salida de Python a un archivo de texto donde se guarda el valor de temperatura (°C) junto con la fecha y la hora en que se realizó la lectura.


Para obtener lecturas de manera ininterrumpida, debe sustituirse la linea de código - while (k<25) - por la linea - while (arduino.isOpen()) -. Para detener la lectura simplemente se cierra la ventana de salida de Python.



Bibliografía

Arduino: www.arduino.cc/

Python 2.7: https://www.python.org/download/releases/2.7/



viernes, 31 de octubre de 2014

Robots. Aplicaciones en la agricultura.

Robots. Aplicaciones en la agricultura.


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

El número de aplicaciones de los robots en diversas ramas de la tecnología se mantiene en constante crecimiento. En la agricultura nos podemos imaginar robots humanoides realizando tareas pesadas, sustituyendo al ser humano. Sin embargo, esta no es mas que una visión recortada de lo que se puede obtener de las tecnologías robóticas.

Un ejemplo un poco alejado del tema, pero que nos puede ayudar a enfocar las aplicaciones más interesantes, por su utilidad, que tendrán los robots en un futuro cercano, para ayudarnos a mejorar la producción, la planeación, el diagnóstico, y muchas más aplicaciones. Digamos que hay un sitio contaminado con desechos radiactivos por una fuga que se salió de control en algún momento. El sitio del incidente queda prácticamente vedado a la presencia humana por el alto peligro que corre la salud en las cercanías de un derrame de este tipo. En este caso, se puede dotar a un dron con un equipo que registra los niveles de radiación. Además el robot cuenta con un GPS. Con este equipamiento, el robot es capaz de realizar un recorrido programado previamente, y de manera autónoma, o con diferentes grados de intervención, el dron es capaz de trazar un mapa con niveles de radiación en toda el área de interés. 

Sin embargo las aplicaciones de censado de las variables de interés para cada cultivo en particular es una de las que se encuentran en más rápido crecimiento. Así, tenemos en el mercado estaciones meteorológicas accesibles para prácticamente cualquier presupuesto, que pueden funcionar en ubicaciones remotas. Esto es posible ya que se pueden alimentar con celdas fotovoltaicas o con baterías de larga y muy larga duración. Además, estos equipos pueden enviar los datos a una red o a internet de manera inalámbrica. El usuario puede estar recibiendo reportes frecuentes directamente en su teléfono celular por medio de mensajes SMS o mensajes de correo electrónico. La información se puede estar respaldando constantemente en una memoria local o en un equipo en una ubicación remota. Estos sistemas pueden a su vez, controlar equipos para intervenir las condiciones ambientales que necesita el cultivo. Pensemos en cultivos de frutales de clima frío, como cerezas, manzanas o peras. Estos cultivos suelen necesitar calefacción en la temporada previa a la floración, cuando las temperaturas siguen siendo sumamente bajas, sobre todo durante las madrugadas. En estos cultivos se colocan calefactores que se deben encender para crear un efecto semejante a una inversión térmica, es decir, se trata de generar una masa de aire tibio al ras del suelo y mantener el aire frío por encima de este estrato. Si los calentadores llegan a fallar o se apagan demasiado pronto, antes de que haya pasado el peligro de helada, las yemas florales pueden congelarse y generar grandes pérdidas económicas. Algunos calentadores pueden dotarse con sensores de temperatura y controles automáticos. De esta manera, se crea una red de monitoreo que puede estar disponible en forma remota para los operadores de la plantación, así como para los responsables administrativos. De esta manera se pueden detectar fallas puntuales. En los sistemas tradicionales se usan termostatos que encienden automáticamente el calentador individual, pero no se puede verificar que realmente este elemento haya respondido al cambio de temperatura o que el combustible quedara agotado. Un sistema con retroalimentación sí detecta cuando la temperatura no está en el nivel correcto y emite un reporte de las condiciones reales.

Las estaciones remotas de censado de variables son muy útiles para registrar las condiciones del suelo, en la zona de interés agronómico, recopilando datos como humedad del suelo, pH, potencial redox, conductividad eléctrica, nivel de nitratos, nivel de fosfatos. Todas estas mediciones ayudan al operador de la explotación a tomar decisiones oportunas en la programación de riegos, dosificación de soluciones de ajuste de pH, adición de fertilizantes nitrogenados y fosfatados, operaciones de movimiento de suelo para mejorar la aireación, entre otras decisiones de importancia para la adecuada producción comercial.

En cuanto a aplicaciones remotas se puede mencionar la toma de imágenes y su procesamiento digital para diagnosticar las condiciones de nutrición del cultivo. Pero también son importantes esta información para planificar labores de deshierbe, mantenimiento de caminos, controlo de malezas, reparación de cercas perimetrales. Ya que estas imágenes permiten cuantificar la superficie que requiere de intervención.

En el caso de explotaciones pecuarias extensivas el empleo de sensores remotos pueden ayudar a dar seguimiento al movimiento de los rebaños para planificar las labores de mantenimiento de pastizales, ubicación de comederos, bebederos, sombras, cercas electrificadas temporales, ubicación de animales enfermos o lastimados. Entre otras.

En las actividades forestales, es de gran utilidad la interpretación de imágenes tomadas con drones, por ejemplo, que ayudan a identificar posibles derribos no registrados, planificación de actividades de derribo, limpieza, mantenimiento de caminos, identificación de deslaves y otros fenómenos que con detección oportuna, pueden atenderse antes de que causen demoras en las labores de manejo.

La maquinaria agrícola incorpora gran cantidad de tecnologías robóticas. Esto no es ninguna novedad. Se utilizan en la nivelación de terrenos, en el control de grupos de sembradoras o equipos de preparación de suelos (enjambres), interpretación de imágenes satelitales para la dosificación de fertilizantes y mejoradores de suelo.

Conclusiones.

- Los robots tienen aplicaciones de alto valor en las actividades agrícolas.

- Los robots tienen aplicaciones de alto valor en las actividades pecuarias.

- Los robots tienen aplicaciones de alto valor en las actividades forestales.

- las aplicaciones más valiosas de los robots en la agricultura no tienen necesariamente una relación directa con el movimiento de tierras o manipulación de plantas y animales. Aunque en estas actividades también tienen importantes aplicaciones.




viernes, 24 de octubre de 2014

Del arca de Noé a Svalvard.

Del arca de Noé a Svalvard.


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

Tal parece que las preocupaciones de la mente humana por conservar la vida en este planeta no son ninguna novedad. La parábola del arca de Noé tiene al menos 2000 años de haberse plasmado por escrito y su leyenda seguramente viene transmitiéndose en la tradición oral desde milenios antes que eso. 
Los esfuerzos que cada generación ha realizado en este sentido tienen como ´sello característico la tecnología disponible en ese momento.

Zoológicos.

En la conservación de animales se enfrenta la dificultad de que no se puede disponer de estructuras que se mantengan en estado de latencia por periodos prolongados de tiempo, como lo hacen las semillas de las plantas, las esporas de los hongos, levaduras y bacterias o los quistes de los protozoarios. En estas instalaciones se realizan programas de reproducción de especies que están amenazadas en su hábitat natural, ya sea por destrucción del hábitat debido a la presión sobre los recursos naturales, alteraciones por contaminación de origen natural o antropogénico, por alteraciones en el clima, también de origen natural o antropogénico, por presión de especies invasoras, o por cualquier otra causa.
Algunos de los desarrollos tecnológicos desarrollados para especies animales de interés económico se aplican con éxito en la reproducción de estas especies silvestres. Como la inseminación artificial, el trasplante de embriones, congelación de esperma y embriones, entre otras.


Jardines botánicos.

Los jardines botánicos resguardan colecciones de plantas representativas de diferentes ecosistemas del mundo. Y al igual que los zoológicos, realizan intercambio de individuos con el fin de procurar su reproducción, cuando se trata de especies de crecimiento lento, propagación limitada, especies amenazadas o en peligro de extinción, especies rescatadas de ecosistemas amenazados o degradados. En estos centros se utilizan técnicas de propagación especializados como la injertación, la multiplicación in vitro o micropropagación, la polinización artificial, el rescate de embriones, la embriogénesis somática, entre otras. También se llevan registros de identidad genética utilizando técnicas de biología molecular, como la hibridación de ADN, la PCR, entre otras.
El jardín botánico de la UNAM abrió un centro para la adopción de especies con estatus de amenazadas o en peligro de extinción. Con el fin de apoyarse en el público interesado en el cuidado de este tipo de materiales. Este tipo de estrategias sirven para aprovechar recursos de entes particulares que se responsabilizan del cuidado de algunos de estos individuos de manera responsable. Algo así realiza por ejemplo la NASA, en un programa en el que uno puede registrar un equipo de cómputo conectado a internet y que durante los tiempos en que está fuera de uso, se utiliza parte de su capacidad para el análisis de datos obtenidos por los diferentes programas de investigación espacial de esa agencia. Estos programas incrementan la capacidad de estos programas sin la necesidad de invertir en nuevos equipos, instalaciones o personal para llevarlos a cabo. En ambos casos se hace uso de las nuevas tecnologías de la información y la comunicación (TIC) para hacer un seguinmiento de los progresos del proyecto.

Sitio: http://www.ib.unam.mx/jardin/adopcion/galeria/0#Astrophytum Ornatum


Áreas naturales protegidas.

Este es un método de conservación de especies dentro de su ecosistema natural. En términos técnicos se trata de un método de conservación de tipo legal. Porque el establecimiento de estas zonas de protección parte de un decreto o, en el caso de México, de la publicación en el Diario Oficial de la Federación, de la declaración de una extensión territorial como área natural protegida, que se regirá de ahí en adelante bajo los preceptos de la Ley General del Equilibrio Ecológico y Protección al Ambiente (LGEEPA) vigente, para esta categoría.

Estas áreas cuentan con un área núcleo y con áreas de amortiguamiento en su periferia. Para cada una de ellas la LGEEPA y la normatividad aplicable, aplican restricciones a la realización de actividades productivas, al establecimiento de núcleos poblacionales, al acceso y manejo de las especies que habitan en el sitio, y establecen las condiciones que deberán cumplir los equipos de investigadores que realicen actividades científicas dentro de sus límites.

Desde la creación de estas áreas naturales protegidas (ANP) quedan definidos claramente los objetivos para los que fue creada. Puede ser la protección de un ecosistema cuyo equilibrio puede ser precario, la protección de un ecosistema con características particulares que ameritan su cuidado, la protección del hábitat de una especie o conjunto de especies que se encuentren amenazadas o en peligro de extinción, entre otras razones.

Otras categorías son Unidades de Manejo Ambiental (UMA), Reservas de la biósfera.

Bancos de semen.

Los sistemas de producción animal han sido altamente beneficiados con la aplicación de tecnologías enfocadas a la reproducción de genotipos especialmente valiosos o de alto registro. Una de ellas es la inseminación artificial y los programas de conservación de semen de animales con características genéticas desarrolladas a través de programas de mejoramiento tradicional (genética mendeliana) o bien, mediante ingeniería genética.

Sin embargo, estas tecnologías también encuentran aplicación en la conservación de especies silvestres cuyo hábitat se encuentra amenazado o bajo una presión creciente de recursos. De esta manera, los zoológicos pueden reproducir las especies animales que se encuentran bajo su cuidado, aumentando las probabilidades de éxito.


Bancos de embriones.

Otra técnica desarrollada para la reproducción de especies animales de alto valor genético es la conservación de embriones, utilizando bajas temperaturas (inmersión en  nitrógeno líquido). En este caso se guardan óvulos fecundados o embriones en sus primeras etapas de desarrollo, que posteriormente se pueden descongelar e implantarse en una hembra que fungirá como madre sustituta o vientre alterno. Además de generar la posibilidad de obtener mayor cantidad de descendencia a partir de una hembra adulta, se han desarrollado técnicas de división de embriones para obtener más de un individuo por cada embrión. Esto acelera la recuperación de poblaciones, ya sea en su estado silvestre o en cautiverio dentro de los zoológicos.



Semillas artificiales.

En el caso de las especies vegetales, se tiene la ventaja de que sus semillas presentan un embrión en estado de latencia, que puede ser reanimado en cualquier momento sis se le coloca en las condiciones ambientales adecuadas durante un periodo suficientemente prolongado. Sin embargo, en la naturaleza existen numerosas especies de plantas que no tienen reproducción sexual, por lo que son incapaces de formar estas estructuras botánicas. En esos casos la única vía de propagación es utilizando técnicas de reproducción asexual, como injertación, enraizamiento de estacas, esquejes y acodos, embriogénesis somática, cultivo de meristemos, entre las más conocidas. Sin embargo, todos estos métodos exigen el mantenimiento de las estructuras vegetativas en crecimiento permanente.

En esos casos, la producción de semillas artificiales se presenta como una posibilidad de conservar individuos con características valiosas por su escasez, por su valor genético, por estar su especie amenazada o en peligro de extinción, o por alguna otra razón. Este tema está en pleno desarrollo, ya que es difícil obtener condiciones para que los tejidos cultivados in vitro, como yemas vegetativas o embriones somáticos, puedan entrar en estado de latencia y germinar después de periodos prolongados de almacenamiento.

Esta técnica no solo resulta atractiva para la conservación de especies amenazadas o en peligro de extinción, sino que también sería de gran potencial para la producción de semillas de gran uniformidad (forma, tamaño y peso) para su utilización en la siembra mecanizada. Así mismo, permitirá la propagación en masa de especies de reproducción asexual de variedades novedosas, como en el caso de la producción de ornamentales y frutales.


Cultivo de células in vitro.

Las técnicas de cultivo de células y tejidos in vitro se han desarrollado a gran velocidad. Este desarrollo tuvo un gran auge durante la década de 1960, cuando se empezaron a fabricar los equipos de filtración de aire de alta eficiencia (HEPA) y se comenzaron a formular los medios de cultivo para células animales y vegetales a partir de sustancias puras. Las técnicas de cultivo in vitro en medios de cultivo artificiales y bajo condiciones asépticas, han facilitado la conservación de estos materiales pro periodos prolongados manteniendo su viabilidad. Para ellos se han empleado medios de cultivo con agentes preservadores, la crio-preservación (conservación en bajas temperaturas), las atmósferas modificadas (sustitución de aire por nitrógeno u otros gases).


Depósito global de semillas de Svalvard.

El depósito global de semillas de Svalvard, en Noruega, es un proyecto de conservación de materiales vegetales de alto registro genético, dedicado a guardar el patrimonio que se ha generado a través de la domesticación y el reciente desarrollo, durante los dos siglos pasados, de programas de mejoramiento genético. Este proyecto aprovecha la situación del archipiélago Svalvard en el círculo polar ártico. Dentro de la zona de permafrost, se excavó un sistema de túneles que en forma natural mantienen una temperatura constante por debajo del punto de congelación. Pero además cuenta con un sistema de refrigeración para mantener la temperatura a -15 °C, que es la idónea para la conservación de bancos de semillas.

Aunuqe los bancos de semillas son una necesidad para el desarrollo tecnológico actual, la magnitud de este proyecto se ha justificado como una reserva que se podrá utilizar en caso de que el cambio climático o alguna anomalía aún menos predecible, pudiera poner en riesgo los sistemas de producción mundial de alimentos. Por ello se resguardan ahí semillas de cultivos de importancia alimenticia para todas las regiones del mundo. De manera que puedan conservarse a salvo de conflictos armados, migraciones forzosas, cambio climático, o lo que se pueda presentar.


Sitio: http://www.regjeringen.no/en/dep/lmd.html?id=627

Bancos de semillas y tejidos espaciales.

Los bancos de semillas se han utilizado ampliamente en los centros dedicados al mejoramiento genético de especies de interés fitotécnico. Se tienen metodologías para la conservación de semillas a temperaturas cercanas a los 0 °C, en las que se pueden hacer depósitos de nuevas colecciones con intervalos de un año. También se tienen metodologías para conservar las semillas a temperaturas de -15 °C, en las que se pueden hacer depósitos cada 15 años.
Cabe señalar que cuando se abre uno de estos depósitos, cada año  o cada 15 años, se depositan colecciones de variedades y líneas genéticas de reciente desarrollo o bien se depositan colecciones en sustitución de lotes que ya cumplieron una edad en la que su viabilidad y vigor puede empezar a disminuir.
El banco de semillas del CIMMyT en Texcoco, Méx., tiene un perfil en Facebook donde publica datos sobre el manejo de sus colecciones. Nuevas entradas y datos sobre sus colecciones. No es nada raro pensar en un banco de semillas como una gran biblioteca, donde se guardan líneas y variedades antiguas, pero que van acumulando nuevas entradas´como si de primeras ediciones de una novela o poemario se tratara. (CIMMyT).

Bancos de genes.

La conservación de ácidos nucleicos por periodos prolongados de tiempo se ha convertido en una necesidad en los laboratorios de investigación, ya que muchos de los proyectos que realizan requieren la realización de experimentos de larga duración. Esta ha sido la primera actividad con la necesidad de preservar estos materiales. Sin embargo, a medida que las ciencias genómicas encuentran aplicaciones en diferentes áreas de trabajo, las exigencias por la preservación de los ácidos nucleicos se vuelve una herramienta imprescindible. Entre estas aplicaciones se mencionan la conservación de genes de especies de alto valor, la conservación de genomas de células cancerosas en espera de herramientas más avanzadas de análisis, en el campo de las ciencias forenses, la conservación de los ácidos nucleicos en óptimas condiciones es de gran importancia (ASKION, 2013).

El método que se emplea mas frecuentemente consiste en almacenar los ácidos nucleicos en una solución de estabilización que puede ser trehalosa o beta-mercaptoetanol y mantenerlos en refrigeración con temperaturas de +4 a -80 ºC. Siendo que la velocidad de degradación es significativamente menor a temperatura más baja. También se ha empleado la liofilización, aunque este método no proporciona resultados satisfactorios debido a que a pesar de que la humedad y el oxígeno están presentes en cantidades sumamente bajas, la degradación por depurinación, hidrólisis y oxidación ocurren a velocidades relativamente lentas. Así mismo, las nucleasas (enzimas) permanecen activas aún bajo estas condiciones tan adversas. Un tercer método de preservación de ácidos nucleicos es mantenerlos en tubos inmersos en nitrógeno líquido (<-135ºC). A estas temperaturas se minimiza el movimiento termal de las moléculas en la solución y llevando las fuerzas de fricción al mínimo. Bajo estas condiciones se dispone de hasta cuatro días para reparar el sistema o re-ubicar los tubos con material almacenado a un sitio seguro, en caso de presentarse un desperfecto. El uso de ultra-enfriadores eléctricos es el menos recomendado, ya que una falla puede llevar la temperatura del contenido de -80 a +20 ºC en menos de dos horas, lo que eleva el riesgo de perder el material a valores demasiado altos (ASKION,2013).

Productos comerciales como el DNAstable (TM), de la empresa Biomatrica han demostrado que en muestras de ADN plásmido almacenadas en condiciones extremas (60ºC durante 26 meses) se han encontrado intactas después de analizarlas contra controles recién obtenidos (Biomatrica).

En Oxford gene technology, 2011, se mencionan cuatro condiciones principales en las que se puede conservar muestras de ADN: 1) A temperatura ambiente en una matriz sólida seca (del tipo DNAstable); 2) En frío a -20 ºC; 3) En frío a -80 ºC, y 4) En estado vítreo a -196 ºC (en nitrógeno líquido). Tanto la conservación en seco como el almacenamiento en nitrógeno líquido tienen en común el mantener al ADN en su estado vitreo.

Los bancos de genes pueden preservar ácidos nucleicos (ADN y ARN) de todos los reinos en los que el hombre ha clasificado a los seres vivos. En una perspectiva temporal, los bancos de genes pueden preservar este material en condiciones reproducibles por periodos de tiempo variables. Pero en el extremo podemos considerar los genes que se han preservado en los restos fósiles de los seres vivos, que han permanecido en condiciones reproducibles por millones de años.

Bancos de microorganismos.


Los microorganismos han tenido aplicaciones importantes desde la antigüedad para la producción de alimentos fermentados (levaduras, hongos y bacterias), para su consumo como alimento (algas y hongos). Estos organismos se conservan por largos periodos en lo laboratorios de investigación utilizando tecnologías de crio-preservación (conservación a baja temperatura) o utilizando medios de cultivo para crecimiento lento y con atmósfera modificada.

Conservación de insectos.


Estos organismos se multiplican de forma artificial en los zoológicos y en los centros de investigación. también se producen en forma industrial para el control biológico de algunas plagas agrícolas, como la mosca del mediterráneo, o la mosca mexicana de la fruta. Sin embargo, el manejo de su ciclo de vida bajo condiciones de cautiverio representa un reto para la mayoría de las especies de este grupo y puede decirse, que aunque su ciclo de vida se conoce a detalle desde hace mucho tiempo, el manejo de las condiciones ambientales adecuadas requiere de tecnologías modernas muy especializadas, como el uso de sensores y microcontroladores así como sus respectivos programas computacionales, el uso de materiales especializados, ya sea como sustratos, en la formulación de los alimentos, en la construcción de invernaderos o mallas. Muchas de estas tecnologías no estuvieron disponibles hasta muy recientemente. De manera que es un área en expansión.

Bibliografía.


ASKION. 2013. Long term storage of nucleic acids.
Sitio: https://www.google.com.mx/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&cad=rja&uact=8&ved=0CCIQFjAB&url=http%3A%2F%2Fwww.askion.com%2Fmediacenter%2Fdownloads%2F551%2FWhite%2520Paper%2520long-term%2520storage%2520of%2520DNA.pdf&ei=-ARAVL-WF8HG8QGV94GAAQ&usg=AFQjCNEZkopRTD00S9pYJ5QrEwBGjR5D6w&bvm=bv.77648437,d.b2U

Biomatrica. DNAstable (TM) preserves plasmid DNA for long term storage.
Sitio: https://www.google.com.mx/url?sa=t&rct=j&q=&esrc=s&source=web&cd=3&cad=rja&uact=8&ved=0CCgQFjAC&url=http%3A%2F%2Fwww.biomatrica.com%2Fmedia%2Fdnastable%2FDNAstable_preserves_plasmid_DNA_for_long-term%2520storage.pdf&ei=-ARAVL-WF8HG8QGV94GAAQ&usg=AFQjCNH6lPmCn8n281jjT5YEXkyLb0FyMg&bvm=bv.77648437,d.b2U

Oxford gene technology. 2011. DNA storage and quality.
Sitio: http://www.ogt.com/resources/literature/403_dna_storage_and_quality

Svalvard Global Seed Vault.
Sitio: http://www.regjeringen.no/en/dep/lmd.html?id=627