In [3]:
!rm -f SRR003265_1.filt.fastq.gz 2>/dev/null
!rm -f SRR003265_2.filt.fastq.gz 2>/dev/null
!wget ftp://ftp.1000genomes.ebi.ac.uk/vol1/ftp/phase3/data/NA18489/sequence_read/SRR003265_1.filt.fastq.gz
!wget ftp://ftp.1000genomes.ebi.ac.uk/vol1/ftp/phase3/data/NA18489/sequence_read/SRR003265_2.filt.fastq.gz
In [1]:
from __future__ import division, print_function
In [2]:
import gzip
from Bio import SeqIO
In [3]:
import sys
if sys.version_info[0] == 2:
import itertools
my_zip = itertools.izip
else:
my_zip = zip
f1 = gzip.open('SRR003265_1.filt.fastq.gz', 'rt')
f2 = gzip.open('SRR003265_2.filt.fastq.gz', 'rt')
recs1 = SeqIO.parse(f1, 'fastq')
recs2 = SeqIO.parse(f2, 'fastq')
cnt = 0
for rec1, rec2 in my_zip(recs1, recs2):
cnt +=1
print('Number of pairs: %d' % cnt)
In [4]:
print(type(range(100000)))
print(type(xrange(100000)))
%timeit range(100000)
%timeit xrange(100000)
%timeit xrange(100000)[5000]
In [5]:
%timeit range(100000)[10]
%timeit xrange(100000)[10]
%timeit range(100000)[50000]
%timeit xrange(100000)[50000]
%timeit range(100000)[-1]
%timeit xrange(100000)[-1]
In [6]:
print(type(range(10)))
print(type(zip([10])))
print(type(filter(lambda x: x > 10, [10, 11])))
print(type(map(lambda x: x + 1, [10])))
In [7]:
big_10 = filter(lambda x: x > 10, [9, 10, 11, 23])
big_10_list = list(big_10)
print(big_10_list[1])
In [8]:
import numpy as np
from Bio import SeqUtils
from Bio.Alphabet import IUPAC
f = gzip.open('SRR003265_2.filt.fastq.gz', 'rt')
recs = SeqIO.parse(f, 'fastq', alphabet=IUPAC.unambiguous_dna)
i = 0
sum_skews = 0
for rec in recs:
if np.median(rec.letter_annotations['phred_quality']) < 40:
continue
skew = SeqUtils.GC_skew(rec.seq)[0]
sum_skews += skew
if i == 1000:
break
i += 1
print (sum_skews / (i + 1))
In [9]:
def get_gcs(recs):
for rec in recs:
yield SeqUtils.GC_skew(rec.seq)[0]
def filter_quality(recs):
for rec in recs:
if np.median(rec.letter_annotations['phred_quality']) >= 40:
yield rec
f = gzip.open('SRR003265_2.filt.fastq.gz', 'rt')
recs = SeqIO.parse(f, 'fastq', alphabet=IUPAC.unambiguous_dna)
sum_skews = 0
for i, skew in enumerate(get_gcs(filter_quality(recs))):
sum_skews += skew
if i == 1000:
break
print (sum_skews / (i + 1))
In [ ]: