# [Tutor] Code optmisation

yogi byogi at yahoo.com
Sat Apr 5 07:05:05 CEST 2008

```Hi ,
Here is my first usable Python code.
The code works.
Here is what I'm trying to do.
I have two huge text files. After some processing, One is 12M  (file A) and the other 1M (file B) .
The files have columns which are of interest to me.

I 'm trying to match entries of column [0] on file A and B
If it is true proceed to find entries (Rows in file A)  in range provided  by columns  [1]  [2] and  [3]  [4] in file B.
Column [1] and [3] define the lower bounds of the range
Column [3] and [4] define the  upper bounds of the range
I also have put a variation of value  so  that  I can  lookup  +/-  var.

#/bin/python
import sys, os, csv, re
x =  0                                  #Define Zero for now
var = 1000000                           #Taking the variation
# This programme finds the SNPs from the range passed
# csv splits columns and this file is tab spaced
fis = csv.reader(open("divs.map", "rb"), delimiter='\t', quoting=csv.QUOTE_NONE)
for row in fis:
# csv splits columns and this file is ","  spaced
gvalues = csv.reader(open("genvalues", "rb"), delimiter=',', quoting=csv.QUOTE_NONE)
for gvalue in gvalues:
# To see  Columns (chr) Match
if row[0] == gvalue[0]:
# If  Column 3  (range) is Zero  print row
if int(gvalue[3]) ==  x:
a = int(gvalue[1]) - var
b = int(gvalue[2]) + var + 1
if int(a <= int(row[3]) <= b):
print   row
# If  Column 3  (range) is not zero find matches and print row
else:
a = int(gvalue[1]) - var
b = int(gvalue[2]) + var + 1
if int(a <= int(row[3]) <= b):
print row
c = int(gvalue[3]) - var
d = int(gvalue[4]) + var + 1
if int(c <= int(row[3]) <= d):
print   row

-----------------------------------------------------

Question1 : Is there a better way ?
Question2 : For now I'm using shells time  call  for calculating time required. Does Python provide a more fine grained check.
Question 2: If I have convert this code into a function.
Should I ?

def parse():
...
...
...
...

parse ()

____________________________________________________________________________________
You rock. That's why Blockbuster's offering you one month of Blockbuster Total Access, No Cost.
http://tc.deals.yahoo.com/tc/blockbuster/text5.com

```