04 enero 2007

Modelos, realidad, incertidumbre… y Turing de nuevo

Comentábamos el otro día que probablemente el aspecto más importante a la hora de valorar el test de Turing era tener claras las relaciones entre los modelos y la realidad.
Antes de seguir no me resisto a incluir aquí una de las frases lapidarias atribuidas a Dijkstra (no verificada) y sacada de las Wikicitas a propósito de nuestro debate:
«La pregunta de si un computador puede pensar no es más interesante que la pregunta de si un submarino puede nadar.»
Pero sigamos. Quería desarrollar uno de los párrafos de Pedro en los comentarios al post anterior:
Lo que él [Turing] propone es análogo a la confrontación de un modelo con la realidad en el método científico: diseñar experimentos para comparar lo que hace el modelo con lo que hace la realidad, y si no somos capaces de falsar la hipótesis de que el modelo reproduce el comportamiento real, nos quedamos con el modelo.
No me gusta demasiado la última frase porque creo que se refiere a situaciones conceptualmente irreales y que cuando usamos modelos en la investigación no procedemos así. A ver si me explico comentando algo sobre objetivos y métodos de modelado (RAE dixit) aunque es difícil sintetizar esto en dos páginas.
Usamos los modelos como recurso para simplificar la forma, estructura o funcionamiento de objetos y procesos reales y, así, poder deducir o conocer algunas de sus propiedades con más comodidad: la complejidad de la realidad hace incómodo (o imposible) someterla a experimentación directa y usamos una simplificación. Para que este método funcione es necesario suponer que la simplificación de la realidad no penaliza excesivamente la exactitud del resultado. Lógicamente, esta suposición no puede hacerse sin más y debe comprobarse y valorarse cuantitativamente siempre.
Aceptamos por tanto que lo que genera el modelo (resultados) será similar a lo que generaría el objeto real en las mismas condiciones de experimentación (escenario) y utilizamos los resultados dándoles un valor de verosimilitud. Pero esta suposición debe tomarse con pinzas y tener en cuenta:
  • Que el escenario es a su vez un modelo de las condiciones reales, simplificado y truncado, por lo que no puede ser asumido directamente como “real”.
  • Que, consecuentemente, los resultados se generan condicionados por la calidad del escenario, de los modelos de los objetos (a través de datos) y de los modelos de los procesos (a través de ecuaciones o algoritmos que las traducen al lenguaje informático).
Es decir, en teoría siempre podremos falsar o refutar la hipótesis de que el modelo se comporta como la realidad. Los modelos “perfectos” no existen por propia definición, donde la realidad se simplifica en sus componentes y en sus interacciones. Si no hiciéramos esa simplificación el modelo no sería tal sino un réplica, un duplicado, y no tendría ventaja alguna el usarlo porque no reduciría la complejidad del experimento.
Para saber si podemos usar un modelo es necesario estimar la similitud del resultado modelado respecto al resultado real y valorar si ese resultado nos es útil y para qué.
Esto puede realizar de dos formas:
  • Cuando es posible, contrastando una pequeña parte de los resultados modelados con resultados reales (muestra de contraste).
  • Cuando no es posible, realizando un análisis de sensibilidad (aunque éste debe hacerse siempre).
Un ejemplo me ayudará a explicarme: tenemos una hoja de cálculo para modelar las variaciones de temperaturas en un perfil de suelo a lo largo de un día. La hoja representa el suelo en estratos o capas de 2 cm (primera simplificación) y estima la transferencia de calor de un estrato a otro mediante elementos finitos. Los datos de entrada son la luz solar (irradiancia) que se calcula cada 20 minutos (segunda simplificación), un coeficiente de conductividad y otro de difusividad que suponemos iguales para todo el perfil (tercera simplificación), etc. En el modelo hemos descartado introducir la nubosidad por su irregularidad (suponemos un día despejado) y así otros factores que creemos menos relevantes.
Este modelo tiene la bondad de ser contrastable: iríamos a varios lugares de características diferentes, pondríamos termómetros a varias profundidades y contrastaríamos las temperaturas reales con las predichas. Las divergencias nos permitirían dar valores de incertidumbre a los resultados mediante, por ejemplo, un intervalo de confianza al 95%. Los resultados adoptarían la forma, por ejemplo, de 13.2±1.5 ºC (I.C.: 95%). Lógicamente, el valor de incertidumbre puede no ser constante sino función de la temperatura y de los valores de conductividad o de sus combinaciones…
La idea fundamental es que conocemos hasta dónde llega la exactitud de los resultados modelados. Si nos vale o no es otra cuestión y depende de nuestros objetivos: habrá trabajos que soporten esa incertidumbre y otros que no.
Segundo ejemplo, más de moda que el anterior: predicciones de cambio climático. Resulta que aplicamos el modelo X de predicción de cambio climático y encontramos que en una zona determinada X predice una subida de 3.0 ºC en los próximos 80 años. ¿Cómo puedo saber si este resultado es fiable? Pues lamentablemente este modelo no es contrastable y no podemos, en principio, saber hasta qué punto es fiable. ¿Estamos perdidos? No del todo, podemos hacer una prueba que nos va a dar información indirecta sobre el asunto. Sería la siguiente: si el modelo X usa n variables xi (i=1..n) como entrada, vamos a hacer mil réplicas del proceso de modelado. Lógicamente, esos mil valores de temperatura que resultan serían iguales pero en estas réplicas vamos a cambiar esos valores originales añadiéndoles una desviación aleatoria: xi + ei . Esa desviación ei estará dentro del rango de incertidumbre de la medida xi. ¿Y cómo sabemos esa incertidumbre? Midiendo repetidas veces el valor xi en la realidad. Es decir, asignamos una incertidumbre a cada uno de los datos de entrada. En nuestro caso, si una de las entradas es la transparencia de la atmósfera habrá que medirla unos cientos de veces y calcular el valor medio y la incertidumbre asociada. Los modelos de cambio no se harán introduciendo repetidamente el valor medio sino muchos valores posibles calculados a partir de la incertidumbre de la medida. Y todo esto para cada variable y valor de entrada en el modelo X.
Este procedimiento nos permitirá ver, analizando los resultados, varias cosas. Entre ellas cuál es la variación en esos resultados. Cabe que esa subida de 3.0 sea, en realidad 3.0±0.3 ºC o cabe que sea 3.0±5.3 ºC. En este segundo caso el modelo no nos vale para nada que se me ocurra.

Otra cosa que podemos ver es si hay variables críticas, es decir, variables cuyas variaciones implican cambios relativamente mayores en los resultados que otras. Esas variables deben ser medidas con mayor exactitud que el resto (o dicho de otra forma, los otros pueden ser medidos con menos exactitud) lo que facilita la eficaz distribución de recursos a la hora de planificar la toma de datos.
Este análisis debe hacerse siempre, no sólo cuando el modelo no es contrastable, porque la información que nos proporciona es enormemente útil.
Dado que los modelos imitan el comportamiento de los sistemas reales sólo aproximadamente debemos analizar cuidadosamente qué modelo es adecuado para el objetivo que perseguimos y hasta que punto los resultados son de suficiente calidad.

Enlazando con el asunto del test de Turing, que un modelo haga buenas predicciones o proporcione buenos resultados no significa que funcione igual que la realidad. Por eso, la frase de Pedro mencionada al principio “si no somos capaces de falsar la hipótesis de que el modelo reproduce el comportamiento real, nos quedamos con el modelo” yo la entiendo como “si no encontramos diferencias entre los resultados del modelo y los resultados reales, aceptamos el modelo como buen generador de resultados”. Pero no podemos ir más allá y suponer que los mecanismos que generan resultados en el modelo y en la realidad son los mismos. De hecho, por la propia definición de modelo, nunca lo son. No lo sería ni siquera si el ordenador fuera inteligente porque suponer que su inteligencia fuera humana es de un antropocentrismo insostenible. De ahí mi objeción de ET al test de Turing que propuse días atrás y que hasta el momento no ha sido criticada :-)

Nota: más cosas sobre este tema han sido tratadas hace poco en CPI y en Malaciencia donde Remo y Alf han presentado aspectos distintos del asunto con ejemplos que van desde sistemas planetarios hasta el cambio climático.

02 enero 2007

Cuando el software te la juega

Sobre la fragilidad de la cadena: donde todo se va al traste por un cambio de signo

Una noche de hace tres años me desperté con un amago de taquicardia. No era por problemas de salud sino porque, mientras dormía, alguna neurona seguía a lo suyo y me había avisado de que un trabajo que llevábamos meses haciendo podía estar mal. Trabajábamos elaborando cientos de simulaciones de dispersión sobre campos de vientos donde los datos eran miles de vectores medidos por el satélite QuikSCAT durante varios años. Cada vector venía definido por su módulo (velocidad del viento) y su acimut (dirección respecto al Norte geográfico). Y en mi nada pacífico sueño la neurona en vigilia me había preguntado sobre si estaba seguro de que los datos de acimut representaban hacia dónde soplaba el viento y no de dónde. Yo había asumido la primera opción en su momento en su momento y nos habíamos lanzado a una vorágine de cálculos con nuestros flamantes nuevos ordenadores multiprocesador.
En esa noche recordaba vagamente que había leido lo del sentido de los datos en uno de los informes técnicos. Pero si había metido la pata llevábamos meses trabajando sobre datos erróneos y nuestros resultados eran, por tanto, sólo basura (elegante y digital, eso sí). Con sudores fríos busqué el informe y al cabo de un rato pude dar con el párrafo que me confirmaba, menos mal, que había interpretado bien el significado de los valores.
Mi susto de medianoche acabó bien pero otros que no tuvieron tanta suerte. Según leo en el número de Science de antes de Navidad, Geoffrey Chang tenía una trayectoria profesional envidiable. Especializado en cristalografía de proteínas (¿se acuerdan del desentrañamiento de la estructura del ADN?), a los 28 años encontró empleo en un instituto de investigación de gran prestigio (Scripps Research Institute en La Jolla, California), al año siguiente recibió una medalla en la Casa Blanca que supone el máximo reconocimiento para jóvenes investigadores. Su laboratorio en el Departamento de Biología Molecular generó una serie espectacular de publicaciones sobre la estructura de proteínas de las membranas celulares…

Y de repente la pasó lo que tanto temían los galos de Asterix. Un grupo suizo publicó en Nature un artículo donde ponían en duda las estructuras de Chang y colaboradores. Estos revisaron su trabajo y acabaron descubriendo un "pequeño" problema: en uno de sus programas informáticos había un error que invertía dos columnas de datos cambiando parámetros que influían directamente en los resultados finales. Este programa había sido utilizado en varios trabajos más con lo que la catástrofe adquiría enormes dimensiones.
El escrito donde se retractan lo explica:

An in-house data reduction program introduced a change in sign for anomalous differences. This program, which was not part of a conventional data processing package, converted the anomalous pairs (I+ and I-) to (F- and F+), thereby introducing a sign change.
La expresión de Chang también fue expresiva. “I’ve been devastated”. Sus artículos siguen en las páginas de Science pero encabezados por un rótulo en rojo: This article has been retracted.
La comunidad científica ha aceptado que se trata de un error y no de un fraude pero la credibilidad del Chang Lab queda en entredicho por falta de cuidado, suficiente para quitar el sueño durante mucho tiempo y una muestra de que hay que controlar mejor las cosas.

Claro que se trataba de un programa no comercial, hecho por ellos mismos. Pero no, no crean que estamos libres de problemas con los programas comerciales. Por ejemplo, todos usamos hojas de cálculo y algunas funciones estadísticas de Excel tuvieron problemas por el diseño de los algoritmos. Microsoft informó en su momento de había “mejorado” algunos algoritmos en el tránsito de Excel 2002 a 2003 pero tal vez no resolvieron demasiado bien las cosas. Les envío a una crítica sobre el generador de números aleatorios. Yo no he sido capaz de reproducir el problema por lo que supongo que esté resuelto pero, como la duda siempre queda, pueden echar un vistazo a algunas publicaciones del European Spreadsheet Risks Interest Group que ayudan a diseñar y tomar medidas preventivas. O si quieren preocuparse de verdad miren los enlaces al final de esta página empezando, por ejemplo, por este. ¿Alguien sabe si en Open Office hay estos problemas?
Algunos estarán pensando en otras aplicaciones como SPSS, Statistica o R. No se preocupen, seguro que funcionan bien. O no. Prueben siempre que puedan con un par de aplicaciones diferentes y confirmen que los resultados son similares, especialmente si trabajan con grandes matrices, grandes números o millones de datos, que es en los extremos donde los algoritmos se la juegan.

Una de las posibles conclusiones de esta historia es que los trabajos científicos se construyen y apoyan sobre un montón de aplicaciones que suponemos funcionan bien. Esta suposición abarca desde los aparatos de medida hasta el software de cálculo. Por ejemplo, en nuestro caso usamos datos tomados por un satélite. Eso significa asumir que te fías de los ingenieros que lo diseñaron, de los procesos de calibración, de que el software de pretratamiento está bien hecho y bien aplicado... Luego, nuestra cadena de tratamiento de los datos brutos consta de 11 pasos que se realizan con programas hechos por nosotros que, a su vez, usan rutinas programadas por otros. Cada paso arranca sobre los resultados del programa anterior con lo que si existen errores, estos van a propagarse a lo largo de la cadena de forma frecuentemente imprevisible e indetectable.

Lamentablemente, no es posible comprobar fehacientemente el buen funcionamiento de todas las piezas del rompecabezas pero sí es necesario invertir tiempo en hacer pruebas básicas y evitar los errores que en inglés llaman blunders, traducible por patochadas o, en castellano castizo, cagadas. Como Geoffrey Chang.
Para terminar de forma constructiva, voy a recomendarles una aplicación estadística que funciona en MS Excel y que es magnífica, gratuita e, incluso, probablemente bien hecha: Poptools.

Secuelas de MacGyver

Cuando no hay material, hay recursos.

Fotografiado en un pueblo de Zamora. Vista de detalle abajo, obsérvese el puntal contra el muro para evitar el cimbreo y la barroca construcción de la escalera de color claro.

[pulsar para ampliar la imagen]

31 diciembre 2006

Nature se tira a la piscina ¿sin agua?

Segunda parte del post Nature se tira a la piscina

Recordarán que hace unos meses en Nature iniciaron un ensayo de "revisión abierta" de trabajos científicos para explorar la posible sustitución del clásico método de "revisión por pares", donde dos o tres revisores anónimos analizan, critican y valoran el trabajo. Aquí se abría un blog donde cualquier usuario, previo registro, podía comentar el trabajo. La primera etapa del ensayo (tal vez la única) ha finalizado y con no muy buenas espectativas. Tal como comenta Alfonso Jiménez, ha habido poca participación por ambas partes: ni los autores están por la labor de exponer públicamente sus trabajos ni los potenciales revisores están dispuestos a ponerse a currar sobre los trabajos expuestos. En los comentarios al post Nature se tira a la piscina, Pedro Terán daba un buen número de razones por las que creía que la cosa no era ni siquiera una buena idea. Ahora el tiempo parece que le da la razón.
Nature publica un informe sobre el ensayo de donde extraigo sólo unos dos detalles, el primero de contexto y el segundo de resultados:
  • Nature recibe unos 10000 trabajos al año, de los cuales los editores rechazan directamente (sin otra revisión) un 60%. El 40% restante pasa a dos o tres árbitros externos que evalúan los trabajos y, finalmente, el editor decide. El resultado es que se publica aproximadamente el 7% de lo inicialmente enviado.
  • Durante el periodo de prueba se recibieron 1369 trabajos; sólo accedieron a la prueba los autores de 71 (el 5%). De estos, 33 no recibieron comentarios, y los 38 restantes recibieron 92 comentarios de los cuales 49 se refieren a 8 artículos. Apenas 4 comentarios fueron clasificados como técnicamente relevantes.
La conclusión, aunque un poco escondida, es la siguiente:
"Nature and its publishers will continue to explore participative uses of the web. But for now at least, we will not implement open peer review."
O sea: se acabó. Sobre toda esta efímera historia me gustaría hacer algunas consideraciones. Por ejemplo:
  • es aparentemente contradictorio el teórico apoyo a la idea y que, a la hora de la verdad, casi nadie se prestara a someter sus trabajos a la crítica pública y se prefiriera muy mayoritariamente el método tradicional. Tal vez, digo yo, se preguntó al colectivo equivocado (lectores) en vez de preguntar a los autores de los últimos 5 años, por ejemplo.
  • es chocante (y algo patético) que haya habido tan pocos comentarios y que sólo 4 de ellos hayan sido clasificados como realmente relevantes. Parecería que el colectivo de comentaristas no tenía demasiado nivel mientras que los otros, los que tal vez podrían haber aportado algo interesante, han decidido dedicar el tiempo, recurso escaso y valioso, a sus propios trabajos. Y es que ejercer revisor es ingrato, duro, no haces amigos y encima no te pagan (podrían, al menos, enviarte un ejemplar de la revista al final, pero ni eso).
  • es obvio que la crítica a los colegas sólo se hace cómodamente desde el anonimato y encuentro muy probable que mucha gente se abstuviera por ese motivo (no piensen mal, el anonimato en el método tradicional es sólo relativo ya que el editor sabe quien eres y te juegas tu dudoso prestigio si haces una crítica absurda).
  • los autores, si son mínimamente conscientes, han revisado cien veces su trabajo y lo han enviado a tres o cuatro colegas de confianza para que lo hagan a su vez. Es difícil convencer a nadie que otra revisión asamblearia vaya a aportar nada importante al texto. Tal vez por eso los comentarios han sido mayoritariamente superfluos.
Al final, por suerte o por desgracia, la popularización (que no democratización) de las revisiones en Nature se ha ido al traste. Era un ensayo conveniente, aunque sólo sea para acotar las espectativas de la llamada Ciencia 2.0. Ahora cada cual que saque sus conclusiones.

29 diciembre 2006

Una voz discordante

Leído en Ricardo Galli:
La tarea de la universidad no es ofrecer lo que la sociedad demanda, sino lo que la sociedad necesita. Las cosas que la sociedad demanda son, en general, bien conocidas, y para ello no necesitas una universidad, la universidad tiene que ofrecer lo que nadie más puede proveer. — E.W. Dijkstra

Edsger Wybe Dijkstra, foto tomada de EWD Archive, (c) 2002 Hamilton Richards

28 diciembre 2006

Libros, grutas y arqueólogos

Donde un arqueólogo consigue la biblioteca perdida

A la famosa biblia de Gutenberg le corresponde el honor de ser el primer libro impreso con el sistema de tipos móviles, mientras que anteriormente era necesario esculpir, generalmente en madera, las planchas que se usarían para imprimir en serie cada página. Pero eso fue en Europa. Como en todas estas cosas, en el continente asiático todo se había hecho antes. Parece que los tipos móviles habían sido inventados por un tal 畢昇 (pronúnciese ) allá a mediados del siglo XI y que eran de arcilla endurecida al fuego.
Pero hoy quería hablarles del libro impreso más antiguo que se conoce y de su peculiar aventura. Se trata, cómo no, de un libro chino y ha podido datarse con exactitud: año 868, hace 1138 años.
La historia comienza en un lugar perdido en medio del desierto del Gobi, a cuatro días de camello de Dunhuang, una población del Norte de China donde confluían los caminos norte y sur de la Ruta de la Seda (8000 km de nada para conectar todo el Sur del continente asiático). Ese lugar se ha llamado de varias formas; entre ellas las Grutas de los Diez Mil Budas o, con algo menos de espectáculo, las grutas de Mogao. Se trata de un gran complejo de santuarios excavados en un cortado rocoso de algo más de 1.5 km de longitud. Fue un lugar estratégico donde los viajeros invocaban protección ante el incierto futuro que suponía internarse en el desierto de Taklamakan o, para los que hacían la ruta de Oeste a Este, para agradecer el regalo de haber sobrevivido.
El origen de los santuarios se remonta a mediados del siglo IV, cuando al monje Lo-tsun se le aparecieron mil Budas simultáneamente convenciéndole, supongo que por abrumadora mayoría, de la oportunidad de decorar las grutas con imágenes y textos sagrados. Poco a poco las grutas existentes fueron decoradas hasta alcanzar más de mil, de las cuales quedan actualmente algo menos de la mitad.
Este lugar atesoró pinturas y esculturas durante más de un milenio, circunstancia desconocida para los europeos hasta primeros del siglo XX. Antes había estado allí algún aventurero y explorador como el ruso Nikolai Mikhaylovich Przhevalsky, o el húngaro Lajos Loczy, ambos pioneros en la exploración de las remotas regiones del Tibet e Himalayas (remotas para nosotros, claro).

Una pequeña parte de las grutas en una foto antigua
[pulse encima para ampliar]


El caso es que un 12 de marzo de 1907 apareció en Dunhuang un notable personaje llamado Marc Aurel Stein. Stein fue un explorador sobresaliente que acabó siendo nombrado Sir por el gobierno británico (aunque era húngaro de nacimiento) y doctor honoris causa por Oxford y Cambridge, además de obtener la medalla de oro de la Royal Geographic Society. Nada raro porque Stein abasteció durante décadas al Museo Británico con tesoros traidos de sus expediciones al Taklamakan, en viajes imposibles donde lo mismo atravesaba el Karakorum que excavaba en invierno con temperaturas glaciales.

Stein con su perro y su peculiar equipo arqueológico
[pulse encima para ampliar]


Stein quería ver las grutas poco menos que en plan turista porque acababa de descubrir en las profundidades del desierto de Lob lo que parecían ser restos del extremo occidental de la Gran Muralla (y que, por cierto, lo eran, con 2000 años de antigüedad y 500 km de longitud).
Allá le cotillearon que había un monje llamado Wang Yuanlu que ejercía de guardián de las grutas y que había encontrado una biblioteca en una cueva antes desconocida. Al oir la historia, a Stein se le pusieron las orejas como a un perro perdiguero y se acercó a las cuevas para encontrar que el monje estaba ausente y que la gruta en cuestión estaba cerrada a cal y canto con una sólida puerta.
Mientras esperaba al monje taoísta, le contaron que había miles de manuscritos y que la puerta había sido puesta por orden del gobernador de la provincia, al que había llegado la noticia.
Stein se dedicó en las semanas siguientes a engañar al monje. Primero le ofreció dinero (donaciones para restaurar el lugar), intentó halagarle fingiendo lo interesado que estaba en las restauraciones (parece que horribles) y finalmente logró interesarle hablandole de un santo que reverenciaba, Con esta última estrategia consiguió ganar su confianza hablándole de los lugares que había visitado en pos del santo (muy viajero al parecer). Wang acabó enseñándole algunas pinturas donde el santo salvaba libros sagrados sacándolos de India y llevándolos a China lo que sirvió para convencerle de que Stein había llegado en el momento justo de examinar los antiguos textos y sacarlos del olvido. El momento en el que Wang abre la cueva a Stein queda reflejado en su relato: “una apretada masa de manuscritos enrollados y apilados en estratos sin orden surgió bajo la luz de la pequeña lámpara del monje. Alcanzaban los tres metros de altura y llenaban ciento cincuenta metros cúbicos como pude medir posteriormente” (luego se supo que contenía unos 40000 documentos).
Wang no le dejó sacar los manuscritos aunque sí examinarlos uno a uno en una pequeña cueva vecina. A eso se dedicó Stein durante meses, encontrando que los rollos estaban en un perfecto estado de conservación. Seleccionaron cientos de ellos convenciendo a Wang de que los llevarían a un “templo del saber” en Inglaterra a cambio de una donación al santuario. Al cabo de un año y medio, una pequeña caravana con 24 cajas llenas de manuscritos y 5 más con pinturas sobre seda llegaron a la British Museum Library (luego British Library).
Entre estas riquezas estaba el Sutra del Diamante, el libro impreso más antiguo que se conoce. La datación se debe a que la fecha está escrita en el rollo de casi cuatro metros de largo: “décimotercer día del cuarto mes del noveno año de Xiantong” que, con la misma velocidad que yo, habrán identificado sin dificultad como el 11 de mayo del 868.
El rollo está impreso a partir de 7 bloques de madera. La técnica era, al parecer, pintar los caracteres sobre papel. Este se superponía a un bloque de madera con lo que se transfería la imagen especular de lo escrito. Sólo quedaba rebajar a mano la tabla para poder imprimir cientos o miles de copias. Actualmente, el Sutra del Diamante se expone en el Museo Británico muy cerca de la biblia de Gutenberg. Lógicamente, mientras Stein fue un arqueólogo heroico para Occidente, en China se le considera un vulgar saqueador.
Pero no se retiren aún. Rebuscando por internet encuentro un par de maravillas. La primera es el Digital Archive of Toyo Bunko Rare Books, donde encontramos el original escaneado y pasado por OCR de The Thousand Buddhas de Stein con magníficas imágenes. La otra es el Sutra del Diamante también escaneado y que podemos desenrollar a voluntad en Turning the pages de la British Library junto con otros 14 libros excepcionales. Finalmente, la Biblia de Gutenberg no ha sido menos y ha sido digitalizada por la Universidad de Texas.

Actualmente The International Dunhuang Project está en proceso de digitalización de miles de documentos dispersos por varios países. Piérdanse un rato por sus páginas y que tengan un buen año.

Grab this Widget ~ Blogger Accessories
 
º