Skip to content

Commit 16fe0f3

Browse files
committed
fixed fastx uppercase
1 parent 2539e7e commit 16fe0f3

File tree

7 files changed

+77
-5
lines changed

7 files changed

+77
-5
lines changed

docs/source/changelog.rst

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
Changelog
22
=========
33

4+
Version 1.0.1 (2023-03-28)
5+
--------------------------
6+
7+
- Fixed invalid uppercase when iterating fastx
8+
49
Version 1.0.0 (2023-03-24)
510
--------------------------
611

src/fastx.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ PyObject *pyfastx_fastx_fasta_comment(kseq_t* kseqs) {
1212
}
1313

1414
PyObject *pyfastx_fastx_fasta_upper(kseq_t* kseqs) {
15+
upper_string(kseqs->seq.s, kseqs->seq.l);
1516
return pyfastx_fastx_fasta(kseqs);
1617
}
1718

src/version.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
#define PYFASTX_VERSION "1.0.0"
1+
#define PYFASTX_VERSION "1.0.1"
22
#define ZRAN_VERSION "1.7.0"

tests/test_fasta.py

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -165,12 +165,25 @@ def test_iter_tuple(self):
165165
expect = str(self.faidx[name])
166166
self.assertEqual(expect, seq)
167167

168+
def test_iter_upper(self):
169+
fa = pyfastx.Fasta(flat_fasta, build_index=False, uppercase=True)
170+
171+
for name, seq in fa:
172+
self.assertEqual(seq, self.faidx[name.split()[0]][:].seq)
173+
168174
def test_iter_full_name(self):
169175
fa = pyfastx.Fasta(flat_fasta, build_index=False, full_name=True)
170176

171177
for name, _ in fa:
172178
self.assertTrue(name, self.fastx[name.split()[0]].description)
173179

180+
def test_iter_upper_full_name(self):
181+
fa = pyfastx.Fasta(flat_fasta, build_index=False, uppercase=True, full_name=True)
182+
183+
for name, seq in fa:
184+
self.assertEqual(name, self.fastx[name.split()[0]].description)
185+
self.assertEqual(seq, self.fastx[name.split()[0]].seq)
186+
174187
def test_key_func(self):
175188
del self.fastx
176189

@@ -301,10 +314,13 @@ def test_exception(self):
301314
self.fastx.nl(101)
302315

303316
with self.assertRaises(RuntimeError):
304-
with open('non.fa', 'w') as fw:
317+
non_fa = 'non.fa'
318+
with open(non_fa, 'w') as fw:
305319
fw.write('abc')
306320

307-
pyfastx.Fasta('non.fa')
321+
pyfastx.Fasta(non_fa)
322+
323+
os.remove(non_fa)
308324

309325
if __name__ == '__main__':
310326
unittest.main()

tests/test_fastq.py

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,55 @@ def test_fastq(self):
102102
self.assertEqual(self.fastq.maxqual, 70)
103103
self.assertEqual(self.fastq.minqual, 35)
104104

105+
def test_platform(self):
106+
#test unknown
107+
fqfile = 'test.fq'
108+
with open(fqfile, 'w') as fw:
109+
fw.write("@read1\n")
110+
fw.write("AAAAAAAAAA\n")
111+
fw.write("+\n")
112+
fw.write(" \n")
113+
fq = pyfastx.Fastq(fqfile)
114+
self.assertEqual(fq.encoding_type, ['Unknown'])
115+
os.remove("{}.fxi".format(fqfile))
116+
117+
with open(fqfile, 'w') as fw:
118+
fw.write("@read1\n")
119+
qs = []
120+
for i in range(59, 105):
121+
qs.append(chr(i))
122+
fw.write("{}\n".format('A'*len(qs)))
123+
fw.write("+\n")
124+
fw.write("{}\n".format(''.join(qs)))
125+
fq = pyfastx.Fastq(fqfile)
126+
self.assertIn("Solexa Solexa+64", fq.encoding_type)
127+
os.remove("{}.fxi".format(fqfile))
128+
129+
with open(fqfile, 'w') as fw:
130+
fw.write("@read1\n")
131+
qs = []
132+
for i in range(64, 105):
133+
qs.append(chr(i))
134+
fw.write("{}\n".format('A'*len(qs)))
135+
fw.write("+\n")
136+
fw.write("{}\n".format(''.join(qs)))
137+
fq = pyfastx.Fastq(fqfile)
138+
self.assertIn("Illumina 1.3+ Phred+64", fq.encoding_type)
139+
os.remove("{}.fxi".format(fqfile))
140+
141+
with open(fqfile, 'w') as fw:
142+
fw.write("@read1\n")
143+
qs = []
144+
for i in range(66, 105):
145+
qs.append(chr(i))
146+
fw.write("{}\n".format('A'*len(qs)))
147+
fw.write("+\n")
148+
fw.write("{}\n".format(''.join(qs)))
149+
fq = pyfastx.Fastq(fqfile)
150+
self.assertIn("Illumina 1.5+ Phred+64", fq.encoding_type)
151+
os.remove("{}.fxi".format(fqfile))
152+
os.remove(fqfile)
153+
105154
def test_negative(self):
106155
read = self.fastq[-1]
107156
self.assertEqual(read.name, self.reads[len(self.reads)-1][0])

tests/test_fqkeys.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,4 +52,4 @@ def test_fastq_key(self):
5252

5353
def test_exception(self):
5454
with self.assertRaises(IndexError):
55-
_ = self.keys[self.count]
55+
_ = self.keys[self.count*2]

tests/test_sequence.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,8 +183,9 @@ def test_seq_repr(self):
183183
self.assertEqual(s.name, "{}:{}-{}".format(n, s.start, s.end))
184184

185185
def test_full_compo(self):
186+
idx = self.get_random_index()
186187
fas = pyfastx.Fasta(flat_fasta, full_index=True)
187-
self.assertEqual(self.fastx[0].composition, fas[0].composition)
188+
self.assertEqual(self.fastx[idx].composition, fas[idx].composition)
188189

189190
def test_seq_exception(self):
190191
with self.assertRaises(RuntimeError):

0 commit comments

Comments
 (0)