@@ -68,13 +68,7 @@ def __init__(self, sequence_token: str, name: str, index_seq: str | None):
68
68
self .name : str = name
69
69
self .index_seq : str | None = index_seq
70
70
71
- # Type declaration of attributes to be assigned
72
- self .len_before_index : int | None
73
- self .len_after_index : int | None
74
- self .len_umi_before_index : int | None
75
- self .len_umi_after_index : int | None
76
-
77
- # Index
71
+ # Index bool and len
78
72
if has_match (INDEX_TOKEN , self .sequence_token ):
79
73
split_by_index = re .split (INDEX_TOKEN , self .sequence_token )
80
74
@@ -85,7 +79,7 @@ def __init__(self, sequence_token: str, name: str, index_seq: str | None):
85
79
self .has_index = False
86
80
self .len_index = 0
87
81
88
- # UMI
82
+ # UMI bool and len
89
83
umi_tokens = re .findall (UMI_TOKEN , self .sequence_token )
90
84
if len (umi_tokens ) > 1 :
91
85
raise UserWarning (
@@ -100,6 +94,14 @@ def __init__(self, sequence_token: str, name: str, index_seq: str | None):
100
94
self .has_umi = False
101
95
self .len_umi = 0
102
96
97
+ # Type declaration of attributes to be assigned
98
+ self .len_before_index : int | None
99
+ self .len_after_index : int | None
100
+ self .len_umi_before_index : int | None
101
+ self .len_umi_after_index : int | None
102
+ self .len_total : int | None
103
+ self .len_constant : int
104
+
103
105
# Lengths
104
106
if self .has_index and self .has_umi :
105
107
# Index and UMI
@@ -147,6 +149,9 @@ def __init__(self, sequence_token: str, name: str, index_seq: str | None):
147
149
self .len_before_index = None
148
150
self .len_after_index = None
149
151
152
+ self .len_total = len (self .get_mask (insert_Ns = True )) if self .index_seq else None
153
+ self .len_constant = len (self .get_mask (insert_Ns = False ))
154
+
150
155
def get_mask (self , insert_Ns : bool = True ) -> str :
151
156
"""Get the mask of the adaptor part.
152
157
@@ -172,7 +177,9 @@ def get_mask(self, insert_Ns: bool = True) -> str:
172
177
and self .index_seq is None
173
178
and insert_Ns
174
179
):
175
- raise UserWarning ("Adaptor has i5 but no sequence was specified" )
180
+ raise UserWarning (
181
+ f"Can't create mask for adaptor '{ self .name } ' with unspecified index."
182
+ )
176
183
177
184
if self .index_seq is not None or not insert_Ns :
178
185
mask = re .sub (INDEX_TOKEN , "N" * index_mask_length , self .sequence_token )
0 commit comments