Open writing projects/Sage and cython a brief introduction

From OpenWetWare

(Difference between revisions)
Jump to: navigation, search
Line 12: Line 12:
(TODO: notebook interface screenshots, different computers, good 2-d graphics)
(TODO: notebook interface screenshots, different computers, good 2-d graphics)
 +
 +
<syntax type="python">
 +
def PStoRE(PrositePattern):
 +
    """
 +
    Converts a PROSITE regular expression to a python r.e.
 +
    """
 +
    rePattern = PrositePattern
 +
    rePattern = rePattern.replace('-','')
 +
    rePattern = rePattern.replace(' ','')
 +
    rePattern = rePattern.replace('x','.')
 +
    rePattern = rePattern.replace('{','[^')
 +
    rePattern = rePattern.replace('}',']')
 +
    rePattern = rePattern.replace('(','{')
 +
    rePattern = rePattern.replace(')','}')
 +
    return rePattern
 +
from Bio import Fasta
 +
import re
 +
import urllib2 as U
 +
@interact
 +
def re_scan(fasta_file_url = 'http://www.d.umn.edu/~mhampton/PlasProtsRef.fa', pat = input_box('G - x - P - [AG] - x(2) - [LIVM] - x - [IV] ', type = str, width = 60)):
 +
    re_pat = re.compile(PStoRE(pat))
 +
    parser = Fasta.RecordParser()
 +
    prot_file = U.urlopen(fasta_file_url)
 +
    fasta_iterator = Fasta.Iterator(prot_file, parser = parser)
 +
    for record in fasta_iterator:
 +
        matches = re_pat.findall(record.sequence)
 +
        if len(matches) != 0:
 +
            html(record.title)
 +
            html(matches)
 +
            print ''
 +
</syntax>
== Cython ==
== Cython ==

Revision as of 14:59, 1 May 2008

Contents

Work in progress

Please check back later for the final version...

Abstract

This is a quick introduction to [Sage], a powerful new computational platform that builds on the strengths of Python. This article was directly inspired by Julius B. Lucks' ["Python: All A Scientist Needs"]; I recommend reading it first as it explains some of the attractions of Python and biopython.

Sage () is a free and open-source project for computation of all sorts that uses Python as its primary language and "glue". One of the goals of Sage is to provide a viable free and open-source alternative to Matlab, Maple, and Mathematica. Sage unifies a great deal of open-source mathematical and statistical software; it includes biopython as an optional package and the statistics language R by default.

Sage notebook interface

(TODO: notebook interface screenshots, different computers, good 2-d graphics)

<syntax type="python"> def PStoRE(PrositePattern):

   """
   Converts a PROSITE regular expression to a python r.e.
   """
   rePattern = PrositePattern
   rePattern = rePattern.replace('-',)
   rePattern = rePattern.replace(' ',)
   rePattern = rePattern.replace('x','.')
   rePattern = rePattern.replace('{','[^')
   rePattern = rePattern.replace('}',']')
   rePattern = rePattern.replace('(','{')
   rePattern = rePattern.replace(')','}')
   return rePattern

from Bio import Fasta import re import urllib2 as U @interact def re_scan(fasta_file_url = 'http://www.d.umn.edu/~mhampton/PlasProtsRef.fa', pat = input_box('G - x - P - [AG] - x(2) - [LIVM] - x - [IV] ', type = str, width = 60)):

   re_pat = re.compile(PStoRE(pat))
   parser = Fasta.RecordParser()
   prot_file = U.urlopen(fasta_file_url)
   fasta_iterator = Fasta.Iterator(prot_file, parser = parser)
   for record in fasta_iterator:
       matches = re_pat.findall(record.sequence)
       if len(matches) != 0:
           html(record.title)
           html(matches)
           print 

</syntax>

Cython

Sage initially used an alternative to SWIG (described in Julius's article) called Pyrex to compile Python code to C when performance concerns demanded it. Because they needed to extend Pyrex in various ways, they created a friendly fork of Pyrex called "Cython". I believe it is fair to say that Cython is the easiest way to create C code in Python.

(TODO: example of Cython usage)

Personal tools