jueves, julio 15, 2010

Sobre las bolas de pelos: ridiculogramas

Quien no ha visto una imagen de una red? de internet, de reguladores de transcripción o de interacción entre proteínas?



Imagen tomada de http://www.bordalierinstitute.com/images/yeastProteinInteractionNetwork.jpg

Hoy en día son muy comunes y llaman mucho la atención. De hecho, uno de mis intereses particulares es estudiar la topología de esas redes y ver como responden a las perturbaciones.

Sin embargo la típica representación visual como bolitas y palitos no es muy útil, por eso ahora se les llama en forma generalizada 'bolas de pelos', incluso M. E. J. Newman, un experto en análisis de redes, las llama 'ridiculogramas'.

Un ridiculograma tiene las siguientes características:

* visualmente deslumbrantes.
* Sin valor científico.
* Publicados en Science o Nature.

lunes, julio 12, 2010

Ola de calor . . . y los servidores!

Este verano (2010) en el nor-este de Alemania hemos tenido temperaturas llegado a los 40°C, algo muy poco usual y que por supuesto ha estado estresando mas de la cuenta a los sistemas de refrigeración de nuestros cuartos de servidores.

Esta situación me llevo a instalar y configurar el paquete lm_sensors en mis servidores con CentOS. En principio todo era cuestión de instalar el paquete, detectar los sensores disponibles en el hardware (sensors-detect), cargar alguno módulos en memoria y revisar la temperatura con el comando
'sensors'. claro, la vida no es fácil, y el modulo coretemp que se necesitaba no esta instalado en CentOs, a pesar de que es incluido por defecto en versiones del kernel >= 2.6.22, pero la versión mas actual de CentOs 5.4 es 2.6.18. Ya me veía compilando el kernel y el modulo faltante.

Afortunadamente antes de enfrentar tan emocionante tarea hice una búsqueda que me ayudó a encontrar este sitio, en donde precisamente cuentan como instalar el modulo coretemp en centos 5.4.

En resumen:

1.- Descargar el rpm del modulo para el sistema deseado, en mi caso fue e15
2.- Instalar el modulo rpm -ivh kmod-coretemp-1.1-2.el5.x86_64.rpm
3.- ejecutrar (como root) sensors-detect
4.- ejecutar sensors, para ver las lecturas actuales de temperatura.

A este punto los sensores deben estar funcionando, claro con algo de suerte.

Para facilitar un poco el monitoreo escribí (partiendo de otro script que encontré en la web, pero cuya ubicación no recuerdo .-() un pequeño script de Perl que ejecuta 'sensors', guarda los datos en una base rrd, y crea las gráficas correspondientes al comportamiento de la temperatura. El script se puede ejecutar via cron, colectando datos cada 5 minutos.

Aquí esta el script:

#!/usr/bin/perl

use strict;
use warnings;
use RRDs;

# rrdtool databases
my $rrd = '/path/to/rrd/database/';
# output location of images
my $img = '/path/to/rrd/output/graphics/';

&CoreTemp();

sub CoreTemp{
my %cores;
my @CoreTemp=`sensors |grep Core`;
foreach my $line(@CoreTemp){
chomp $line;
if($line=~/^Core\s+(\d+):\s+([+-]\d+)°C/){
$cores{$1}=$2;
}
}
foreach my $core(keys %cores){
#if rrdtool database doesn't exist, create it
my $rrd_db="tempcore".$core.".rrd";
if(! -e "$rrd/$rrd_db"){
print "Creating RDD DB $rrd_db in $rrd . . . \n";
RRDs::create "$rrd/$rrd_db",
"-s 300",
"DS:temp:GAUGE:600:0:100",
"RRA:AVERAGE:0.5:1:576",
"RRA:AVERAGE:0.5:6:672",
"RRA:AVERAGE:0.5:24:732",
"RRA:AVERAGE:0.5:144:1460";
}
# insert value into rrd
RRDs::update "$rrd/$rrd_db",
"-t", "temp",
"N:$cores{$core}";
CreateGraph($core, "day");
CreateGraph($core, "week");
CreateGraph($core, "month");
CreateGraph($core, "year");
}
}

sub CreateGraph{
my ($core,$interval)=@_;
print "$core,$interval\n";
my $rrd_db="tempcore".$core.".rrd";
my $img_file="core".$core."-".$interval.".png";
RRDs::graph "$img/$img_file",
"--lazy",
"-s -1$interval",
"-t core temperature :: Core $core ",
"-h", "80", "-w", "600",
"-a", "PNG",
"-v degrees C",
"DEF:temp=$rrd/$rrd_db:temp:AVERAGE",
"LINE2:temp#0000FF:$core (Core $core)",
"GPRINT:temp:MIN: Min\\: %2.lf",
"GPRINT:temp:MAX: Max\\: %2.lf",
"GPRINT:temp:AVERAGE: Avg\\: %4.1lf",
"GPRINT:temp:LAST: Current\\: %2.lf degrees C\\n";
if (RRDs::error) { print "$0: unable to generate Core $core graph: $RRDs::error\n"; }
}


martes, junio 22, 2010

The foundation of scientific integrity - Richard P. Feynman

“The first principle is that you must not fool yourself—and you are the easiest person to fool.... After you’ve not fooled yourself, it’s easy not to fool other scientists. You just have to be honest in a conventional way after that.”

via: Scientific American