-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathmolseq_class.py
More file actions
71 lines (60 loc) · 2.17 KB
/
molseq_class.py
File metadata and controls
71 lines (60 loc) · 2.17 KB
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
class MolSeq(object):
"""
for molecular sequences
:parameter:
seq_label: a string representing the sequence.
Input seq_label could be an integer, which needs to be converted to a str.
seq: a string representing the molecular sequence
"""
def __init__(self, label, seq):
self.__label = str(label).strip()
self.__seq = str(seq).strip()
def __str__(self):
return self.to_fasta(60)
def __len__(self):
return self.get_length()
def to_fasta(self, chars_per_line=60):
"""
:param chars_per_line: an optional argument to limit numbers of chars per line.
False: no limit on chars_per_line
:return: a string of fasta formatted sequence
"""
if chars_per_line == False:
return f">{self.__label}\n{self.__seq}"
else:
self.__fasta_line = ''
for i in range(self.get_length()):
if (i + 1) % chars_per_line == 0:
self.__fasta_line += self.__seq[i] + '\n'
else:
self.__fasta_line += self.__seq[i]
return f">{self.__label}\n{self.__fasta_line}"
def get_label(self):
return self.__label
def set_label(self, new_label):
self.__label = new_label
def get_seq(self):
return self.__seq
def get_length(self):
return len(self.__seq)
if __name__ == '__main__':
seq1 = MolSeq(111,
'abbddddcccabbddddcccabbddddcccabbddddcccabbddddcccabbddddcccabbddddcccabbddddcccabbddddcccabbddddcccabbddddcccabbddddcccabbddddcccabbddddcccabbddddcccabbddddccc')
print('\nchars_per_line=default')
print(seq1.to_fasta())
print('\nchars_per_line=False')
print(seq1.to_fasta(False))
print('\nchars_per_line=30')
print(seq1.to_fasta(30))
print('\nprint method')
print(seq1)
print(seq1.get_length())
print(len(seq1))
print('current label:')
print(seq1.get_label(y='x'))
print('resetting label to new_label')
seq1.set_label('new_label')
print('new label:')
print(seq1.get_label())
print('get seq:')
print(seq1.get_seq())