Ruby

El ataque de los clones: Arrays multidimensionales en ruby

Enviado por clbustos el Jue, 11/02/2010 - 10:19.

Trabajando en mi querido proyecto statsample, en la clase Polychoric me tocó inicializar una matriz de m*n elementos, con todos los valores a 0. Mi primera redacción fue

  1.  nr=3 # numero de filas
  2.  nc=3 # numero de columnas
  3.  matriz=Array.new(nr,Array.new(nc,0)) # => [[0, 0, 0], [0, 0, 0], [0, 0, 0]]

Como era de esperar. Al inicializar el valor de 0,0 pasa algo bastante "interesante"

  1.  matriz[0][0]=2 # => 2
  2.  matriz # => [[2, 0, 0], [2, 0, 0], [2, 0, 0]]

¿¡WTF!? Sencillo, mis amigos. El array en todas las filas es el mismo objeto

Gemcutter pasa a ser el servidor oficial para las gemas en Ruby

Enviado por clbustos el Dom, 22/11/2009 - 01:17.
Clasificado en:

Una de las cosas interesantes de Ruby es su sistema de empaquetamiento de bibliotecas, llamadas gems (gemas), disponibles de forma centralizada en Rubyforge. La idea es hacer para el lenguaje lo que para una distribución de Linux hace su sistema de manejo de paquetes, como los .deb de debian o el emerge de Gentoo.
Si bien existen experiencias similares en otros lenguajes, lo típico es que sólo una de las dimensiones adquiera preponderancia. Por ejemplo, en el caso de Perl, CPAN es el repositorio por defecto, pero no existe un sistema de empaquetado común; para Java, tenemos el sistema de Jar, pero no un repositorio central. Lo más cercano en funcionamiento (en mi experiencia) es el RCRAN de R.

nalidixic acid adult dose

Enviado por Perejilillo desconocido el Vie, 02/10/2009 - 15:17.
Clasificado en:

El paquete estadístico para las masas, en Ruby: Statsample

Enviado por clbustos el Lun, 03/08/2009 - 00:49.

Después de meses de trabajo, al fin me animé y subí mi paquete estadístico Statsample a Rubyforge. Gracias a él pude acelerar varios procesos de análisis de mi tesis, en particular el llamado Análisis de dominancia.

Todavía no tengo nada parecido a una interfaz gráfica, pero para aquellos que están acostumbrados a los macros de SPSS, SAS o cosas por el estilo, puede ser una interesante alternativa. R siempre será EL paquete estadístico para el software libre, pero creo que deja demasiado a la vista para el usuario común. Para que se hagan una idea, así pueden hacer un análisis de regresión múltiple.

Como instalar rsruby en Ubuntu 8.10

Enviado por clbustos el Mar, 16/06/2009 - 14:49.
Clasificado en:

Instalamos el núcleo de R y rubygems con

$ sudo apt-get install r-base-core rubygems

Instalamos rsruby con

$ sudo gem install rsruby -- --with-R-include=/usr/share/R/include --with-R-lib=/usr/lib/R/lib

Se define el directorio de R con R_HOME

$ export R_HOME=/usr/lib/R

Y probamos con irb

~$ irb
irb(main):001:0> require 'rsruby'
=> true
irb(main):002:0> r = RSRuby.instance
=> ##, "helpfun"=>#, "help"=>#, "NaN"=>NaN, "FALSE"=>false, "TRUE"=>true, "F"=>false, "NA"=>-2147483648, "eval"=>#, "T"=>true, "parse"=>#}, @proc_table={}, @class_table={}, @default_mode=-1, @caching=true>
irb(main):003:0> 

LISTO!

Alegrías de Geek: CDF para Chi-cuadrado calculado y por simulación

Enviado por clbustos el Vie, 29/08/2008 - 00:10.

Como me toca trabajar haciendo estadísticas de bases de datos variadas, siempre había tenido la idea de programar en ruby (mi lenguaje de preferencia) las funciones de formateo y estadísticas que con más frecuencia utilizaba. En particular, me interesaba implementar las funciones de estimación de parámetros para muestras estratificadas y por conglomerado, que ningún paquete estadístico que conozca ofrece fácilmente.

Hace un par de semanas comencé a trabajar en el paquete estadístico, el cual llamé 'RubySS'. Ya tengo listas la clase Vector (similar a la Vector de la biblioteca estándar) y Dataset, con una extensión para calcular las distribuciones acumuladas para las distribuiones chi, t y normal, entre otras. Utiliza Ruby/GSL si está disponible, para acelerar los cálculos y, como corresponde, casi todas las funciones tienen su test de regresión correspondiente.

Closures: respuesta a Vekman

Enviado por clbustos el Vie, 01/08/2008 - 11:49.
Clasificado en:

Leyendo el comentario de Venkman, debo reconocer que tiene razón en que el ejemplo que utilicé en el artículo era de funciones anónimas y no de un closure propiamente tal.

Para entender la diferencia, les pido que lean el interesante artículo Blocks and Closures in Ruby, donde el autor de Ruby nos habla sobre ambas estructuras. Leyendo con atención, llegué al siguiente ejemplo operacional en Ruby que puede ser útil para ver como funciona una closure:

  1.  def ciclo(colores)
  2.   x=-1
  3.   return Proc.new {
  4.   x=(x+1) % colores.size
  5.   colores[x]
  6.   }
  7.  end
  8.  closure=ciclo(%w{rojo azul negro})
  9.  1.upto(10) {|i|
  10.   puts closure.call
  11.  }

La salida en

rojo
azul
negro
rojo
azul
negro
rojo
azul
negro
rojo

Como se podrán dar cuenta, la función ciclo devuelve un procedimiento, dentro del cual se mantienen las variables colores y x. Cada vez que se llama el Proc, ahora convertido en closure, x se incremente en uno y nos entrega el elemento del array que corresponde.

Camino a una reseña de la biblioteca estándar de Ruby

Enviado por clbustos el Lun, 28/07/2008 - 03:42.

Como tengo pensado crear una pequeña aplicación estadística en Ruby que me alivie mi cotidiano procesamiento de datos en el trabajo, decidí que era una buena idea revisar la biblioteca estándar de ruby por funciones básicas que puede que ya estén listas.
Si bien existen variados recursos sobre la biblioteca estándar, como excelente la reseña de Programming Ruby, la documentación rdoc en ruby-doc o esta Quick Reference, no he encontrado hasta ahora alguna que comente todas las diversa bibliotecas de de una manera evaluativa, señalando para que podrían ser útiles o cuales son versiones de otras, por ejemplo.
Por tanto, me decidí a reseñar de forma breve cada uno de los archivos de mi /usr/lib/ruby/1.8, para ver que cosa me puede ser útil. Como estamos en un mundo abierto, les ofrezco la primera partida, que va desde "abbrev.rb" a "generator.rb", en formato PDF y Latex. Si alguien sabe para que sirve e2mmap.rb o finalizer.rb, que avise :)

Screenshots de Catori

Enviado por clbustos el Vie, 20/06/2008 - 00:26.

Consola:

GUI

Catori 0.2.5

Enviado por clbustos el Vie, 20/06/2008 - 00:23.
Clasificado en:
Download: catori-0.2.5.gem
Size: 233 KB
md5_file hash: cf2b858edbb506413cdcb921c71a51a7
First released: Vie, 20/06/2008 - 00:23

Cambios:
- Instalador para Mysql
- GUI preliminar, para búsquedas

Distribuir contenido