3
3
Fasta file -> Faidx -> Fasta -> FastaRecord -> Sequence
4
4
"""
5
5
6
- from __future__ import division
7
-
8
6
import datetime
9
7
import os
10
8
import re
13
11
import shutil
14
12
import warnings
15
13
from collections import namedtuple
16
- from itertools import islice
14
+ from itertools import islice , zip_longest
17
15
from math import ceil
18
16
from os .path import getmtime
19
17
from tempfile import TemporaryFile
24
22
except ImportError : #python < 3.8
25
23
from importlib_metadata import version
26
24
27
- from six import PY2 , PY3 , integer_types , string_types
28
- from six .moves import zip_longest
29
-
30
- try :
31
- from collections import OrderedDict
32
- except ImportError : #python 2.6
33
- from ordereddict import OrderedDict
25
+ from collections import OrderedDict
34
26
35
27
try :
36
28
import fsspec
39
31
40
32
__version__ = version ("pyfaidx" )
41
33
42
- if sys .version_info > (3 , ):
43
- buffer = memoryview
44
-
45
34
dna_bases = re .compile (r'([ACTGNactgnYRWSKMDVHBXyrwskmdvhbx]+)' )
46
35
47
36
class KeyFunctionError (ValueError ):
@@ -99,8 +88,8 @@ def __init__(self, name='', seq='', start=None, end=None, comp=False):
99
88
self .start = start
100
89
self .end = end
101
90
self .comp = comp
102
- assert isinstance (name , string_types )
103
- assert isinstance (seq , string_types )
91
+ assert isinstance (name , str )
92
+ assert isinstance (seq , str )
104
93
105
94
def __getitem__ (self , n ):
106
95
""" Returns a sliced version of Sequence
@@ -180,7 +169,7 @@ def __getitem__(self, n):
180
169
end = self_start + slice_stop + correction_factor
181
170
return self .__class__ (self .name , self .seq [n ], start , end ,
182
171
self .comp )
183
- elif isinstance (n , integer_types ):
172
+ elif isinstance (n , int ):
184
173
if n < 0 :
185
174
n = len (self ) + n
186
175
if self .start :
@@ -455,7 +444,7 @@ def __init__(self,
455
444
try :
456
445
key_fn_test = self .key_function (
457
446
"TestingReturnType of_key_function" )
458
- if not isinstance (key_fn_test , string_types ):
447
+ if not isinstance (key_fn_test , str ):
459
448
raise KeyFunctionError (
460
449
"key_function argument should return a string, not {0}" .
461
450
format (type (key_fn_test )))
@@ -482,9 +471,9 @@ def __init__(self,
482
471
self .lock = Lock ()
483
472
self .buffer = dict ((('seq' , None ), ('name' , None ), ('start' , None ),
484
473
('end' , None )))
485
- if not read_ahead or isinstance (read_ahead , integer_types ):
474
+ if not read_ahead or isinstance (read_ahead , int ):
486
475
self .read_ahead = read_ahead
487
- elif not isinstance (read_ahead , integer_types ):
476
+ elif not isinstance (read_ahead , int ):
488
477
raise ValueError ("read_ahead value must be int, not {0}" .format (
489
478
type (read_ahead )))
490
479
@@ -923,7 +912,7 @@ def __getitem__(self, n):
923
912
start = len (self ) + start
924
913
return self ._fa .get_seq (self .name , start + 1 , stop )[::step ]
925
914
926
- elif isinstance (n , integer_types ):
915
+ elif isinstance (n , int ):
927
916
if n < 0 :
928
917
n = len (self ) + n
929
918
return self ._fa .get_seq (self .name , n + 1 , n + 1 )
@@ -1034,7 +1023,7 @@ def __array_interface__(self):
1034
1023
'shape' : (len (self ), ),
1035
1024
'typestr' : '|S1' ,
1036
1025
'version' : 3 ,
1037
- 'data' : buffer (str (self ).encode ('ascii' ))
1026
+ 'data' : memoryview (str (self ).encode ('ascii' ))
1038
1027
}
1039
1028
1040
1029
@@ -1065,7 +1054,7 @@ def __setitem__(self, n, value):
1065
1054
start = len (self ) + start
1066
1055
self ._fa .faidx .to_file (self .name , start + 1 , stop , value )
1067
1056
1068
- elif isinstance (n , integer_types ):
1057
+ elif isinstance (n , int ):
1069
1058
if n < 0 :
1070
1059
n = len (self ) + n
1071
1060
return self ._fa .faidx .to_file (self .name , n + 1 , n + 1 , value )
@@ -1126,7 +1115,7 @@ def __contains__(self, rname):
1126
1115
1127
1116
def __getitem__ (self , rname ):
1128
1117
"""Return a chromosome by its name, or its numerical index."""
1129
- if isinstance (rname , integer_types ):
1118
+ if isinstance (rname , int ):
1130
1119
rname = next (islice (self .records .keys (), rname , None ))
1131
1120
try :
1132
1121
return self .records [rname ]
@@ -1353,13 +1342,9 @@ def getmtime_fsspec(path, fs):
1353
1342
chr (x ) for x in range (256 ) if chr (x ) not in complement_map [0 ])
1354
1343
invalid_characters_string = '' .join (invalid_characters_set )
1355
1344
1356
- if PY3 :
1357
- complement_table = str .maketrans (complement_map [0 ], complement_map [1 ],
1358
- invalid_characters_string )
1359
- translate_arguments = (complement_table , )
1360
- elif PY2 :
1361
- complement_table = string .maketrans (complement_map [0 ], complement_map [1 ])
1362
- translate_arguments = (complement_table , invalid_characters_string )
1345
+ complement_table = str .maketrans (complement_map [0 ], complement_map [1 ],
1346
+ invalid_characters_string )
1347
+ translate_arguments = (complement_table , )
1363
1348
1364
1349
1365
1350
def complement (seq ):
0 commit comments