lunes, 12 de julio de 2010

Función en python que degenera DNA

Es una función sencilla en python, que recoge como parámetro una secuencia de nucleótidos, y devuelve un array con todas las posibles degeneraciones.

 def regenerate(oligo):  
     inp =  'ACGTRYSWKMBDVHN' # len(inp) = 15  
     deg = ['A','C','G','T','AG','CT','CG','AT','GT','AC','CGT','AGT','ACG','ACT','ACGT']   
       
     grow = ['']  
       
     for a in oligo:  
         # If that nucleotide exists  
         if inp.find(a) != -1:  
             degen = deg[inp.find(a)]  
             # Adds the new nucleotides from degen to every seq in grow  
             grow = [x+y for x in grow for y in degen]  
               
     return grow  

sábado, 10 de julio de 2010

Usar WIndows XP SP2 de un PC en otro

Introducción 
(sáltate esto si quieres ir directo al grano)

A veces los sistemas operativos nos lo dan todo mascado. Pero sin embargo, acciones que a priori podrían parecer triviales resulta que no se pueden realizar así como así. Yo, en mi desconocimiento de cómo funciona realmente Windows y su relación con el hardware, pensaba que podría fácilmente coger el disco duro de un PC y ponerlo en otro para, voilá, estar utilizando su instalación en un momento.

Todo esto viene motivado porque me quedé sin lector de DVD/CD. Mi portátil, un Asus M6726NEUH, venía con un lector fabricado por Toshiba, que como suele pasar con este tipo de dispositivos, acabó por morir lentamente tras unos años de uso. Primero dejó de grabar, luego dejó de leer. Tan sólo hace ahora unos ruiditos y aparece como un dispositivo más en Mi PC, y no quito la unidad porque queda un hueco muy feo por donde puede entrar suciedad.

Así que, tras un tiempo quería formatear y volver a instalar Windows XP SP2, además de añadirle alguna distribución de linux. En primer lugar intenté utilizar un lector de DVD externo, por USB, pero pronto me di cuenta de que no quería arrancar por esa vía. Por tanto descarté también la utilización de una memoria USB. ¿Qué me quedaba? Pues o bien comprar un nuevo lector, el cual no pude encontrar en páginas de partes para mi modelo, o sacar el disco duro, meterlo en otro PC, realizar la instalación con el CD de Windows y pasar el disco duro de nuevo al primer PC.

Como he dicho, primero pensé que podría hacerlo sin problemas, sin más. Así que desatornillé la tapita inferior del portátil, empujé un poco el disco hacia detrás para desconectarlo, lo saqué e hice lo mismo en el otro PC para colocarle el primero. Tras instalar Windows XP SP2, volví a cambiar el disco de sitio e inicié, pero para mi sorpresa no arrancó... se quedó con una línea horizontal en blanco sobre fondo negro como el betún.

Así que pregunté por ahí, y me dieron algunas pistas. Por un lado decían que se podía iniciar la instalación, y cuando pidiera reiniciar, tras haber copiado los archivos de instalación al disco, apagar y cambiar el disco para que continuara la instalación en el PC objetivo. Por otro lado, había indicaciones de que lo mejor era instalar el sistema y luego ejecutar un programa, Sysprep, para que el sistema operativo reseteara las dependencias de hardware. Los que abogaban por este último método decían que el primero era una chapuza.

Bien, chapuza o no, a mi me pareció más simple la primera opción. Así que lo intenté, pero nada, de nuevo pantalla negra y rayita blanca.

Así que sólo me quedaba la opción de Sysprep. Encontré la siguiente guía en Vernalex que al principio me pareció infumable. Pero realmente está muy bien y pude comprender qué es lo que estaba haciendo y cómo, aunque pensaba que con todos los cabos sueltos que sabía si tenía que atar o no, algo fallaría. Pero no ocurrió, y así tengo ahora de nuevo el Asus M6726NEUH con sistema operativo recién instalado, limpito.

Nomenclatura

- HD: disco duro.
- SO: sistema operativo.
- XP: Windows XP SP2
- PC2: PC destino, donde quiero tener instalado XP pero no puedo hacerlo con un CD o un USB.
- PC1: PC origen, donde voy a realizar la instalación y las operaciones con Sysprep.
- Sysprep: programa incluido en el CD de XP y que sirve para preparar el sistema para poder migrarlo a otro hardware o realizar copias de seguridad no dependientes del sistema (y otras utilidades que desconozco).

Especificaciones

SO: Windows XP SP2
PC2: Asus M6726NEUH
PC1: Acer Aspire 3003LMi

Sobre los pasos a realizar y software necesario

No controlo mucho de XP ni de Sysprep, y alguna cosa podría ser superflua o incluso incorrecta, pero el resultado es que todo funciona perfectamente. Son 18 pasos, pero es, digamos, granulometría fina: cada paso es en realidad una pequeña cosa que hacer y así queda todo más simplificado.

En cuanto a software, no se necesita más que el CD de instalación de XP.

Al tema

1 - Desatornillar la tapa inferior de los 2 PCs y extraer los HDs.

nota: dejar el HD del PC1 apartado porque no se va a utilizar y así se evitan confusiones que puedan acabar en tragedia (= formateado del HD del PC1)
nota2: las tapas donde están los HDs en los portátiles suelen venir indicadas con el tipo símbolo de HD en forma de cilindro que se usa para todos los dispositivos de almacenamiento.
nota3: extraer el HD es más fácil de lo que parece. Tan sólo hay que empujarlo un poco en dirección contraria a donde está conectado y sale sin problemas.

2 - Colocar el HD del PC2 en el PC1.

nota: el disco del Asus tiene alguna dificultad para entrar en el hueco del Acer, debido a unas pestañitas metálicas laterales, pero con un poco de maña se puede conseguir.

3 - Iniciar el PC1 con el CD de instalación de XP e instalar el SO.

- A partir de ahora estamos ya en XP en el PC1 - 

4 - Ir al administrador de dispositivos, desplegar la línea de equipo y veremos un controlador que hay que cambiar para que sea "Advanced configuration and power interface (ACPI)PC". Para ello hay que entrar en las propiedades del controlador, darle a cambiar el controlador y decirle que lo vamos a elegir manualmente. Nos saldrá una lista y elegimos el que he indicado.

5 - Reiniciar (puede que esto lo hiciera automáticamente, no me acuerdo)

6 - Crear una carpeta c:\sysprep

nota: por lo que dice en la guía, esto es importante y hay que asegurarse de que la carpeta se llama exactamente así.

7 - Buscar en el equipo el archivo "deploy.cab"

8 - Abrir el archivo y copiar su contenido en c:\sysprep

nota: lo que se está haciendo es descomprimir el contenido del archivo cab.

9 - Crear una carpeta "drivers" dentro de c:\sysprep

nota: esto es importante porque el sysprep va a incluir ahí archivos que necesita para manejar los controladores una vez que pongamos el HD en el PC1.

10 - Ejecutar setupmgr.exe, el cual está en c:\sysprep ya que lo hemos movido ahí desde el deploy.cab

nota: en este programa hay que seleccionar la opción de Instalar sysprep y que genere un sysprep.inf, que es un fichero que usará sysprep para su setup.
nota2: en mi caso, aunque ponía que había acabado con éxito, el setupmgr.exe se quedó con los botones inactivos, así que tuve que cerrarlo con la X de la esquina de la ventana, e hizo un pitido leve que me dejó un poco frío, pero parece que no era nada malo porque todo ha funcionado, y de hecho había generado bien el sysprep.inf.

11 - Abrir sysprep.inf con el Wordpad y añadirle al final las siguientes líneas, para que el programa incluya luego una sección necesaria para controladores de los HD.

[Sysprep]
BuildMassStorageSection=yes

[SysprepMassStorage]

nota: no olvidarse de guardar el archivo, lógicamente! xD

12 - Ya podemos ejecutar sysprep.exe. En primer lugar aparece una ventana de advertencia que, como siempre que aparecen, nos la pasamos por el...

13 - En el menú de sysprep, marcar la opción de instalación mínima y asegurarse de que el apagado está en la opción Shutdown, para que no se reinicie solo el equipo y vuelva a configurarse en el mismo PC.

14 - Darle al botón de Reseal.

15 - Quedará el sysprep varios minutos con el relojito de arena y luego se apagará el equipo.

nota: ahora es cuando haríamos una imagen del sistema, con programas que podrás encontrar fácilmente en la web y que yo desconozco, ya que no lo he hecho nunca.

- Pasamos al PC2 - 

16 - Llevar el HD al PC2 e iniciar.

17 - Ahora XP pedirá algunos datos típicos de la instalación: nombre de equipo, grupo de trabajo o dominio

18 - Y listo!!! funciona a las mil maravillas. Ahora sólo queda que dejes el PC1 como estaba y que cierres la tapa del HD del PC2.

Para acabar

Decir que con el sysprep.inf se pueden configurar muchas cosas del comportamiento del programa y el proceso de setup, y que mucha gente, empresas, etc. usa el sysprep para crear imágenes de los HD y así tener copias de seguridad del sistema o pasar XP a otros equipos con la configuración deseada.


Por supuesto, esto se puede aplicar a un XP que tengas en un ordenador y quieras usar en otro, sin necesidad de hacer el formateo ni nada, sólo los pasos del sysprep.