Nueva edición de Biologia molecular para programadores
Biología Molecular para programadores Clases en
auditorio.
Fundamentos y herramientas de Biología Molecular esenciales para trabajar en Bioinformática.
Objetivos: Incorporar los conocimientos básicos de biología molecular útiles para trabajar en bioinformática, desarrollar aplicaciones especializadas o dar soporte informático a biólogos moleculares, biotecnólogos, bioquímicos y médicos
Inicio: Se dictará lunes de 18.30 a 21.30 hs. desde el 28 de septiembre de 2009
Duración: 15 horas, en cinco clases de 3 hs cada una.
Costo: $180
Mas información en la página del
Club de programadores.
Etiquetas: biologia, biopython, python
Entre ayer y hoy estuvo la
PyCon 2009, la primera conferencia de Python en Argentina. Fue espectacularmente organizada por
PyAr. Mi intervención fue minima, di una mano siendo ayudante tecnico durante la mañana de hoy (4 charlas). También di una presentación y una lighting talk. La presentación fue "
Python en Ciencia", donde hice advocacy para usar Python en ciencias duras. Porque no tuve en cuenta que tambien se usa en psicologia, según una de las lighting talks. Si, una asistente mostró una aplicación para diseñar e implementar test psicologicos, ademas lo hace en Linux y usando Wine hace el instalador para Windows, ¿que tal?
Volviendo a mi presentación, fue un poco accidentada porque tuve un par de cortes de luz en el medio, asi que no pude mostrar todos los slides, asi que
aca pongo la presentación por si a alguno les interesa, aunque no dicen mucho, sino que son mas un apoyo para lo que digo.
UPDATE: Conseguí subrla a Slideshare.
Etiquetas: ciencia, geek, python
Charlas-BIO
Aca les dejo un folleto sobre una charla que voy a dar. Justo ese dia (4 de Setiembre 2009), pero al mediodia, doy tambien una charla en la
PyCon (Conferencia de Python). La primera vez que doy 2 charlas distintas en el mismo día. Tampoco serán tan distintas, puede que se solape alguna diapo :)

Etiquetas: geek, python
Anuncio del libro "Python for Bioinformatics"
Aca está el anuncio de mi libro Python for Bioinformatics
"Python for Bioinformatics"
ISBN 1584889292
Amazon:
http://www.tinyurl.com/biopythonPublisher:
http://www.crcpress.com/product/isbn/9781584889298This book introduces programming concepts to life science researchers, bioinformaticians, support staff, students, and everyone who is interested in applying programming to solve biologically-related problems. Python is the chosen programming language for this task because it is both powerful and easy-to-use.
It begins with the basic aspects of the language (like data types and control structures) up to essential skills on today's bioinformatics tasks like building web applications, using relational database management systems, XML and version control. There is a chapter devoted to Biopython (
www.biopython.org) since it can be used for most of the tasks related to bioinformatics data processing.
There is a section with applications with source code, featuring sequence manipulation, filtering vector contamination, calculating DNA melting temperature, parsing a genbank file, inferring splicing sites, and more.
There are questions at the end of every chapter and odd numbered questiona are answered in an appendix making this text suitable for classroom use.
This book can be used also as a reference material as it includes Richard Gruet's Python Quick Reference, and the Python Style Guide.
DVD: The included DVD features a virtual machine with a special edition of DNALinux, with all the programs and complementary files required to run the scripts commented in the book. All scripts can be tweaked to fit a particular configuration. By using a pre-configured virtual machine the reader has access to the same development environment than the author, so he can focus on learning Python. All code is also available at the
http://py3.us/## where ## is the code number, for example:
http://py3.us/57I've been working on this book for more than two years testing the examples under different setups and working to make the code compatible for most versions of Python, Biopython and operating systems. Where there is code that only works with a particular dependency, this is clearly noted.
Finally, I want to highlight that non-bioinformaticians out there can use this book as an introduction to bioinformatics by starting with the included "Diving into the Gene Pool with BioPython" (by Zachary Voase and published originally in
Python Magazine).
Etiquetas: python
Code sample: Haciendo una base sqlite
Para una página que muestra como va progresando la secuenciación del genoma de la mitocondria del tomate, le puse una base SQLite, total es solo select y la consulta solo el grupo de trabajo (como mucho 5 personas), asi que es un ambiente donde SQLite se la tiene que bancar bien.
Al principo este codigo eran 5 codigos que fui haciendo a medida que iba creando tablas, pero como esto lo tendré que rehacer cada vez que tenga nuevos datos, lo junté en un solo script:
#!/usr/bin/env python
import sqlite3
import csv
import cPickle
from Bio import SeqIO
from Bio.Sequencing import Ace
anal = "AN"
dbfn = '/tmp/example6-%s'%anal
commondir = '/home/sb/ensambleAN/'
clnfn = commondir+'allseqs14junNNWD.fasta.cln'
oriseqsfn = commondir+'allseqs14junNNWD.fasta'
cleanseqsfn = commondir+'allseqs14junNNWDcln'
dictfn = commondir+'dict14jun.dmp'
ctgsfn = commondir+'allseqs14junNNWDcln.cap.contigs'
coordsfn = commondir+'allseqs14jun.coords'
acefn = commondir+'allseqs14junNNWDcln.cap.ace'
# create emptyDB
conn = sqlite3.connect(dbfn)
c = conn.cursor()
# CREATE TABLES
c.execute("CREATE TABLE cleanreport(newID TEXT, perc TEXT, inicoord INTEGER, endcoord INTEGER, ilen INTEGER, trash TEXT, comments TEXT)")
c.execute("CREATE TABLE cleanseqs(newID TEXT, cleanseq TEXT)")
c.execute("CREATE TABLE ctgs(ctgID TEXT, read TEXT)")
c.execute("CREATE TABLE ctgsseq(ctgID TEXT, seqs TEXT, anchtobacco BOOLEAN)")
c.execute("CREATE TABLE oriseqs(newID TEXT, oldID TEXT, rawseq TEXT)")
conn.commit()
# POPULATE cleanreport
fh = open(clnfn)
lines = csv.reader(fh,delimiter='\t')
for line in lines:
name = line[0]
perc = line[1].strip()
i = int(line[2].strip())
f = int(line[3].strip())
ilen = int(line[4].strip())
trash = line[5].strip()
comm = line[6].strip()
t = (name,perc,i,f,ilen,trash,comm)
c.execute("insert into cleanreport values (?,?,?,?,?,?,?)", t)
# POPULATE oriseqs
# LOAD DICTIONARY
fh = open(dictfn)
old2newnames = cPickle.load(fh)
fh.close()
new2oldnames = {}
for x in old2newnames:
new2oldnames[old2newnames[x]] = x
fh = open(oriseqsfn)
for rec in SeqIO.parse(fh,'fasta'):
t = (rec.id,new2oldnames[rec.id],str(rec.seq))
c.execute("insert into oriseqs values (?,?,?)",t)
fh.close()
conn.commit()
# POPULATE cleanseqs
fh = open(cleanseqsfn)
for rec in SeqIO.parse(fh,'fasta'):
t = (rec.id,str(rec.seq))
c.execute("insert into cleanseqs values (?,?)",t)
fh.close()
# FOR POPULATE ctgsseq
anclados = set()
# lista de cuales anclan y cuales no!!.
fh = open(coordsfn,'U')
for line in fh:
if '\t' in line and 'Contig' in line[86:]:
ctgn = line.split('\t')[1].replace('\n','')
anclados.add(ctgn)
fh.close()
ctgdict = {}
fh = open(ctgsfn)
for rec in SeqIO.parse(fh,'fasta'):
ctgn = rec.id
entra = 1 if ctgn in anclados else 0
if len(ctgn)==9:
ctgn = 'Contig'+anal+ctgn[-3:]
elif len(ctgn)==8:
ctgn = 'Contig'+anal+'0'+ctgn[-2:]
elif len(ctgn)==7:
ctgn = 'Contig'+anal+'00'+ctgn[-1]
#print ctgn,str(rec.seq),entra
t = (ctgn,str(rec.seq),entra)
c.execute("insert into ctgsseq values (?,?,?)",t)
fh.close()
# POPULATE ctgs
acefilerecord = Ace.read(open(acefn))
for ctg in acefilerecord.contigs:
ctgn = ctg.name
allr_s = set()
for read in ctg.reads:
if read.rd.name not in allr_s:
#print ctgname,read.rd.name
if len(ctgn)==9:
ctgn = 'Contig'+anal+ctgn[-3:]
elif len(ctgn)==8:
ctgn = 'Contig'+anal+'0'+ctgn[-2:]
elif len(ctgn)==7:
ctgn = 'Contig'+anal+'00'+ctgn[-1]
t = (ctgn,read.rd.name)
c.execute("insert into ctgs values (?,?)",t)
allr_s.add(read.rd.name)
conn.commit()
c.close()
conn.close()
Etiquetas: geek, programacion, python
4 en 1
No es el juego, sino que tenia estas 4 lineas de código Python:
fh = open('datos.txt','w')
for x in h_set:
fh.write('%s\n'%x)
fh.close()
Y las converti en una sola:
open('datos.txt','w').write(('%s\n'%x for x in h_set))h_set es un
set, pero puede ser un iterable cualquiera para el caso.
¿Que tal?
Etiquetas: geek, python
Otra prueba de código
Este post es solo para hacer una prueba. No lo lean.
Es un codigo que me gusta mucho, uno de los motivos por lo que me admiro :)
#!/usr/bin/env python
import cgi
import cgitb
import subprocess
import sys
import os
from tempfile import mkstemp
# Uncomment the following line when debugging
#cgitb.enable()
def badrequest(bad):
""" Display an error menssage """
print("<h1>Bad Request</h1>\n")
print("Use the options provided in the form: %s"%bad)
print("</body></html>")
# Get out of here:
return sys.exit()
print("Content-Type: text/html\n")
form = cgi.FieldStorage()
iterat = form.getvalue("iterat","4")
output = form.getvalue("output","html")
outorder = form.getvalue("outorder","group")
# Get sequence data from text area
seqs = form.getvalue("seq")
if not seqs:
# Since the textarea is empty, check the uploaded file
seqs = form.getvalue("upfile")
# Verify that the user entered valid information.
if iterat not in set(('1','4','8','10','12','14','16')):
badrequest(iterat)
valid_output = set(('html','fasta','msf','clw','clwstrict'))
if output not in valid_output:
badrequest(output)
if outorder not in set(('group', 'stable')):
badrequest(outorder)
print "<html><head><title>A CGI script</title></head><body>"
# Make a random filename for user entered data
fi_name = mkstemp('.txt','userdata_',"/var/www/muscleweb/")[1]
# Open this random filename
fi_fh = open(fi_name,'w')
# Write the user entered sequences into this temporary file
fi_fh.write(seqs)
fi_fh.close()
# Make a random filename for user entered data
fo_name = mkstemp('.txt','outfile_',"/var/www/muscleweb/")[1]
erfh = open('err.log','w')
cmd = ['./muscle', '-in', fi_name, '-out', fo_name,
'-quiet', '-maxiters', iterat, '-%s'%output,
'-%s'%outorder]
# Uncomment to check the generated command
#print ' '.join(cmd)
# Run the program with user provided parameters
p = subprocess.Popen(cmd, stderr=erfh, cwd='/var/www/muscleweb')
# Wait until finishing
p.communicate() # Same result as os.waitpid(p.pid,0)
erfh.close()
# Remove the input file since the it is not needed anymore.
os.remove(fi_name)
fout_fh = open(fo_name)
if output=='html':
print(fout_fh.read())
else:
print('<pre>%s</pre>'%fout_fh.read())
fout_fh.close()
# Remove the output file
os.remove(fo_name)
print("</body></html>")
Etiquetas: python
Siempre me gustaron los gráficos científicos, me refiero a los que salen en revistas como Nature, Science, PNAS, etc. Por lo general usan SigmaPlot, MathCad y esas cosas, aunque a veces se puede ser un Excel (y suele quedar horrible). En este caso me tocó hacer un gráfico "a mano", esto es, sin usar ningún programa de terceros, sino lo hice yo. La idea era representar uno de estos eventos una alineamiento de 2 secuencias nucleotidicas: Mutacion, Inserción y Deleción. Las mutaciones (cambio de un nucleotido a otro) se tiene que representar por una barra de un color segun el nucleotido. Las inserciones y deleciones son barras grises con un tamaño y orientación en función de la magntud del evento.
Los datos los tenia que sacar de planillas, como por ejemplo esta:
Planilla 36Muestro esa porque el siguiente gráfico tiene (entre otras) a la barra generada en base a esa planilla:

Aqui está el código, es el que produjo esto, pero no es final porque aun quedan hacer algunas modificaciones con respecto al orden de las figuras, pero no con los graficos en si.
#!/home/user/MMC-SD/partition1/py252/bin/python
import xlrd
import glob
#f_inXLS = '/home/sbassi/bioinfo/INTA/ejemploSNPs.xls'
#outfile = '/tmp/out.svg'
outfile = '/mnt/hda2/all.svg'
f_inXLS = 'ejemplo SNPs.xls'
outfh = open(outfile,'w')
svgini = '''<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="4000" height="1000" version="1.1"
xmlns="http://www.w3.org/2000/svg">'''
svgend = '</svg>'
def grafica(xlsfin,outfh,j,tdetodos):
book = xlrd.open_workbook(xlsfin)
sh = book.sheet_by_index(0)
datos = []
largototal = sh.nrows
for rx in range(1,largototal):
n_orden = int(sh.row(rx)[0].value)
color = ''
signo = '+'
valor = 1
if sh.row(rx)[1].value == 1:
color = 'red'
elif sh.row(rx)[2].value == 1:
color = 'green'
elif sh.row(rx)[3].value == 1:
color = 'blue'
elif sh.row(rx)[4].value == 1:
color = 'black'
if sh.row(rx)[5].value != 0:
valor = abs(int(sh.row(rx)[5].value))
signo = '+' if sh.row(rx)[5].value>0 else '-'
color = 'grey'
elif sh.row(rx)[6].value != 0:
valor = abs(int(sh.row(rx)[6].value))
signo = '+' if sh.row(rx)[6].value>0 else '-'
color = 'grey'
elif sh.row(rx)[7].value != 0:
valor = abs(int(sh.row(rx)[7].value))
signo = '+' if sh.row(rx)[7].value>0 else '-'
color = 'grey'
elif sh.row(rx)[8].value != 0:
valor = abs(int(sh.row(rx)[8].value))
signo = '+' if sh.row(rx)[8].value>0 else '-'
color = 'grey'
if not color:
color = 'white'
datos.append((n_orden, color, valor, signo))
print 'largototal',largototal
print 'tdetodos',tdetodos
outfh.write('<g transform="translate(%s,%s)">\n'%
(((tdetodos)),j*50))
tdetodos += largototal+20
outfh.write('<text style="font-size:12;font-weight:bold;\
font-family:Consolas;fill:black" x="100" \
y="175" >%s</text>'%(xlsfin))
outfh.write('<line x1="100" y1="150" x2="%s" y2="150" \
style="stroke:black;stroke-width:1"/>\n'%
(100+largototal))
#out += htmlini
multiplic_alto = 5
for dato in datos:
#print dato
x = 100+dato[0]
#h = 10
if dato[3]=='+':
y = 150-(dato[2]*multiplic_alto)
h = 150-y
else:
y = 150
h = multiplic_alto*dato[2]
if dato[1]!='white':
outfh.write('<rect x="%s" y="%s" width="1" \
height="%s" style="fill:%s;stroke-width:0"/>\n'
% (x,y,h,dato[1]))
outfh.write('</g>\n')
return outfh,tdetodos
outfh.write(svgini)
i = 0
j = 0
tdetodos = 0
for fn in glob.glob('*.xls'):
if 'ejemplo' not in str(fn) and 'my' not in str(fn):
#print ' a'
print fn
outfh, tdetodos = grafica(fn,outfh,j,tdetodos)
i+=1
if i==5:
i=0
tdetodos = 0
j+=1
outfh.write(svgend)
outfh.close()
Etiquetas: biologia, python
Prueba, no molestar!
Probando meter codigo, si funciona pondré algo coherente (o al menos lo intentaré).
from __future__ import with_statement
from Bio import SeqIO, SeqRecord, Seq
#para planillas html de Laura
ain='/mnt/hda2/bio/cln.txt'
cln=set()
with open(ain) as f:
for line in f:
cln.add(line[:-1])
#print line,
#sco esas del fasta y las pongo en otro fasta.
#recorro el fasta
i = 0
fasta69 = []
for record in SeqIO.parse(open('/mnt/hda2/bio/bacs.v247.seq'), "fasta") :
if record.id in cln:
fasta69.append(record)
with open('/mnt/hda2/bio/fasta69.txt','w') as outf:
SeqIO.write(fasta69,outf,"fasta")
Etiquetas: python, test
Como parte del evento
Ciclo de charlas UNLUX 2008 : "Integrando Disciplinas", daré una charla llamada "Aplicaciones de Python en la Biología Molecular".
La idea es mostrarle a los biologos, biotecnologos y otros profesionales del ramo, que es Python y como puede aplicarse para resolver problemas biologicos. Tambien puede ir cualquier que tengo curiosidad por el tema, aunque los biologos podrán sacarle mas provecho a la charla. Cuando la tenga terminada pondré la presentación aca.
Por lo pronto este es el programa (para mas info
vean la página de UNLUX):
Cronograma de charlas
| Aula A | Aula 202 | Aula 203 | Auditorio | Aula de PC |
|
| 10:00:00 |
|
|
|
|
|
|
| 10:30:00 |
|
| "Entendiendo UNICODE" Facundo Batista | Primeros pasos "¿Qué es el software libre?" Maria Elena Casañas |
|
|
| 11:00:00 |
| "Arte, animación y diseño con Software Libre" Franco Iacomella |
|
|
| 11:30:00 |
|
|
|
|
|
| 12:00:00 | "Amenazas y oportunidades que la ciencia y la tecnología nos deparan para el futuro" Javier Blanque | "Diseño web con herramientas libres" Diego Accorinti |
| "Introducción al Lenguaje Python" Facundo Batista | Taller de OpenOffice: "Introducción a herramientas ofimáticas libres" Ariel Condo |
|
| 12:30:00 |
|
|
| 13:00:00 | INTERVALO DE ALMUERZO |
|
| 13:30:00 |
|
| 14:00:00 |
| "Firefox y el Software Libre" Santiago Hollmann |
| Primeros pasos "Cómo migrar" Maria Elena Casañas | Seguridad Informática: "Estrategia, ataque y defensa" Facundo M. de la Cruz |
|
| 14:30:00 | Aplicaciones de Python en la Biología Molecular Sebastian Bassi |
|
|
| 15:00:00 | "Moodle: Administrador de Contenidos educativos (LMS)" Carlos Javier Di Salvo |
|
|
|
| 15:30:00 |
|
| "Herramientas de Software Libre para enseñar matemática" Pablo De Napoli |
|
| 16:00:00 | "8000000000000u$s en desarrollo, 350 millones de líneas de código y 70.000 años/hombre: Debian" Dererk |
|
|
|
|
| 16:30:00 |
|
|
|
|
|
| 17:00:00 | Debate: "Trabajo Independiente / Freelance vs. Trabajo en relación de dependencia" |
|
|
| 17:30:00 |
|
|
| 18:00:00 |
|
|
|
|
|
|
| 18:30:00 |
|
|
|
|
|
|
Etiquetas: biologia, biopython, biotec, python
Ciclo de cine gratis de Monty Python
Hoy vi unos carteles en el centro de Bernal (Quilmes) anunciando un ciclo de cine gratis. No tenga nada que ver con esto, solo vi el cartel (y me lleve uno) para poner el aviso aca
Centro Cultural Pampero - Ciclo de cine - Entrada gratuita. Viernes de Octubre 20:30.
Viernes 3: "La vida de Brian"
Viernes 10: (No se ve el nombre porque la fotocopia es muy clara), pero es de Monty Python, pero si veo la descripción: "Las etapas de la vida del hombre y la sociedad tratadas de una forma irreverente y desopilante". Presumo que sera "El significado de la vida".
Viernes 17: Brazil
Viernes 24: (tampoco se ve el titulo), descripción que veo: "Acida y trochante critica de los estereotipos de la vida moderna ... inglaterra del medioveo". Debe ser del "Santo Grial".
Viernes 31: Monty Python en Hollywood.
Lugar: Vieytes y Otamendi - Bernal (a 1 cuadra de Lamadrid y San Martin).
culturapampero@yahoo.com.ar
Información sobre
Monty Python en wikipedia.
NO ME PREGUNTEN NADA DEL TEMA, SOLO REPRODUZCO EL CARTEL. Si a alguien le importa, probablemente vaya.
Actualización:
1) Saco el poster porque estaba hotlinkeado y salia un cartel (podría haber sido peor, podrian haberme puesto un
goatse).
2) Este lugar (centro Pampero) ahora lo recuerdo, nunca fui, pero queda cerca de casa y lo vi desde afuera. Luce como el típico "antro casa tomada por anarco que se la dan de artistas". Creo que igual voy a ir.
Etiquetas: geek, python
Knol de Python 3
Estoy preparando un
knol de Python 3.
Están invitados a verlo :)
Etiquetas: python
Python 3beta en la Asus eeePC

Pude meter el Python 3.0b1 en la Asus eeePC. Es cuestion de instalarlo en una carpeta en otra PC, usando "config --prefix=/directorio/alternativo", luego make y make install. Es mas fácil hacerlo en otra máquina porque no trae el compilador. si bien supongo que podria instalarlo, no quiero ocupar el muy poco espacio que tengo en algo que no uso nunca. La máquina tiene 2Gb de los cuales mas de 1 es ocupado por el SO y la particion de restauración (cosa importante teniendo en cuenta que no tiene lectora de CD, la otra opcion es usar un disco USB pero no tengo Windows y el programa para crear el disco de arranque USB con el SO de Asus y sus drivers, es con Windows que no tengo.). Al directorio con los ejecutables, hay que copiarlo a un MMC-SD, luego poner ese MMC-SD en la Asus eeePC. El problema es que el archivo que hay que ejecutar no está marcado como ejecutable y para colmo el sistema no nos deja cambiar ese atributo. Es que por defecto la tarjeta está en FAT, si estuviese en ext2/3, ya con esto es suficiente. En el caso de que esté en FAT, hay que seguir los pasos que están aca:
http://wiki.eeeuser.com/execute_apps_off_sd.
En resumen:
Editar (como root) el archivo /sbin/probedevice. En las lineas 43 y 44 cambiar noexec por exec y en fmask, 111 por 0. Grabar y rebootear (se puede evitar el rebooteo remontando todo, pero no recuerdo como se hace asi que rebootie total es rápido en ese bicho).
Ahora con la posibilidad de que los archivos sean ejecutables, es cuestion de correr el python3.0. Lo mismo deberia funcionar para 2.5.2 (la versión que trae Xandros de Python es la 2.4). Todas las capturas son del "modo avanzado", que es donde tenes acceso al KDE, ya que el modo "fácil" es un sistema lockeado con pocas posibilidades de customización. Aca en este wiki se explica como
instalar el modo avanzado (KDE) en la asus eeePC.
(click en la captura para ver en grande)




Etiquetas: eeepc, geek, python
Set para buscar la diferencia entre set y frozenset
Se me ocurrió usar set para ver las diferencias entre set y frozenset en Python:
>>> set(dir(set())).difference(dir(frozenset()))
{'__isub__', 'difference_update', 'symmetric_difference_update', 'update', 'pop', 'remove', '__iand__', 'clear', 'intersection_update', '__ior__', 'add', 'discard', '__ixor__'}
Aunque para verlo ordenado no encuentro manera mas corta que esta:
>>> a=list(set(dir(set())).difference(dir(frozenset())))
>>> a.sort()
>>> a
['__iand__', '__ior__', '__isub__', '__ixor__', 'add', 'clear', 'difference_update', 'discard', 'intersection_update', 'pop', 'remove', 'symmetric_difference_update', 'update']
UPDATE: Encontré justo una función que me permite hacer el sort sin tener una lista y lo mas importante: Devuelve la lista ordenada, en lugar de hacer el sort sobre la lista.
>>> sorted(set(dir(set())).difference(dir(frozenset())))
['__iand__', '__ior__', '__isub__', '__ixor__', 'add', 'clear', 'difference_update', 'discard', 'intersection_update', 'pop', 'remove', 'symmetric_difference_update', 'update']
Etiquetas: python
Por fin publicaron mi paper:
A Primer on Python for Life Science Researchers
Se trata de una introducción al lenguaje Python, orientada a investigadores de biologia, pero creo que puede ser útil a cualquiera que se interese por el lenguaje.
Versión online (ahi están los links a las versiones PDF)
Etiquetas: biologia, molecular, plos, python
Ya terminé el cápitulo de
Manejo de errores en Python. Espero que les guste. Si hay un error en el texto, escriban a sbassi ARROBA clubdelarazon.org
Ver Manejo de errores en Python.
Etiquetas: python
Ya está la alfa de Pytnon 3000. La final se espera que esté en Agosto del 2008.
Este es el anuncio:
Python 3000 (a.k.a. "Py3k", and released as Python 3.0) is a new
version of the language that is incompatible with the 2.x line of
releases. The language is mostly the same, but many details,
especially how built-in objects like dictionaries and strings work,
have changed considerably, and a lot of deprecated features have
finally been removed.
This is an ongoing project; the cleanup isn't expected to be complete
until 2008. In particular there are plans to reorganize the standard
library namespace.
The release plan is to have a series of alpha releases in 2007, beta
releases in 2008, and a final release in August 2008. The alpha
releases are primarily aimed at developers who want a sneak peek at
the new langauge, especially those folks who plan to port their code
to Python 3000. The hope is that by the time of the final release,
many 3rd party packages will already be available in a 3.0-compatible
form.
More links:
* Online docs:
http://docs.python.org/dev/3.0/* What's new:
http://docs.python.org/dev/3.0/whatsnew/3.0.html* Source tar ball:
http://python.org/ftp/python/3.0/Python-3.0a1.tgz* Windows MSI installer:
http://python.org/ftp/python/3.0/python-3.0a1.msi* PEP 3000:
http://python.org/dev/peps/pep-3000/* Issue tracker:
http://bugs.python.org/* Py3k dev list:
http://mail.python.org/mailman/listinfo/python-3000/* Conversion tool for Python 2.x code:
http://svn.python.org/view/sandbox/trunk/2to3/Etiquetas: python