-
Notifications
You must be signed in to change notification settings - Fork 0
/
Read.py
35 lines (32 loc) · 979 Bytes
/
Read.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# -*- encoding: utf-8 -*-
from __future__ import division
import sys
class Read( object ):
def __init__( self, name, trim_by=5, min_length=20 ):
self.name = name
self.bases = None
self.name_ = None
self.quals = None
self.trim_by = trim_by
self.min_length = min_length
def remove_polyA( self, automatic=True ):
if automatic:
no_A = 0
rev_seq = self.bases[::-1]
i = 0
is_A = True
while is_A and i <= self.trim_by:
l = rev_seq[i]
if l != 'A':
is_A = False
i += 1
if i > 3:
self.bases = self.bases[:( len( self.bases ) - i + 1)]
self.quals = self.quals[:( len( self.quals ) - i + 1)]
else:
if self.bases[-self.trim_by:] == "A"*self.trim_by:
self.bases = self.bases[:( len( self.bases ) - self.trim_by )]
self.quals = self.quals[:( len( self.quals ) - self.trim_by )]
def __repr__( self ):
if len( self.bases ) >= self.min_length:
return "\n".join([ self.name, self.bases, self.name_, self.quals ])