metaseq
metaseq copied to clipboard
Example1 problem #2
Why do I get an AttributeError when I try to create an array in example 1?
import multiprocessing processes = multiprocessing.cpu_count()
if not os.path.exists('example.npz'): ... ip_array = ip_signal.array(
... tsses_1kb, ... bins=100, ... processes=processes) ... input_array = input_signal.array( ... tsses_1kb, ... bins=100, ... processes=processes) ... ip_array /= ip_signal.mapped_read_count() / 1e6 ... input_array /= input_signal.mapped_read_count() / 1e6 ... metaseq.persistence.save_features_and_arrays( ... features=tsses, ... arrays={'ip':ip_array, 'input':input_array}, ... prefix='example', ... link_features=True, ... overwrite=True) ... Traceback (most recent call last): File "", line 5, in File "/Users/nakadalab/miniconda/lib/python2.7/site-packages/metaseq/_genomic_signal.py", line 122, in array chunksize=chunksize, **kwargs) File "/Users/nakadalab/miniconda/lib/python2.7/site-packages/metaseq/array_helpers.py", line 383, in _array_parallel itertools.repeat(kwargs))) File "/Users/nakadalab/miniconda/lib/python2.7/multiprocessing/pool.py", line 251, in map return self.map_async(func, iterable, chunksize).get() File "/Users/nakadalab/miniconda/lib/python2.7/multiprocessing/pool.py", line 567, in get raise self._value AttributeError: 'NoneType' object has no attribute 'group'
Thanks!
Thanks for reporting. Unfortunately, I'm unable to reproduce the issue. For troubleshooting, can you please try setting processes = 1
and then re-run to get a more informative error message.
import multiprocessing processes = multiprocessing.cpu_count()
if not os.path.exists('example.npz'): ... ip_array = ip_signal.array(
... tsses_1kb, ... bins=100, ... processes=processes) ... input_array = input_signal.array( ... tsses_1kb, ... bins=100, ... processes=1) ... ip_array /= ip_signal.mapped_read_count() / 1e6 ... input_array /= input_signal.mapped_read_count() / 1e6 ... metaseq.persistence.save_features_and_arrays( ... features=tsses, ... arrays={'ip':ip_array, 'input':input_array}, ... prefix='example', ... link_features=True, ... overwrite=True) ... Traceback (most recent call last): File "", line 5, in File "/Users/nakadalab/miniconda/lib/python2.7/site-packages/metaseq/_genomic_signal.py", line 122, in array chunksize=chunksize, **kwargs) File "/Users/nakadalab/miniconda/lib/python2.7/site-packages/metaseq/array_helpers.py", line 383, in _array_parallel itertools.repeat(kwargs))) File "/Users/nakadalab/miniconda/lib/python2.7/multiprocessing/pool.py", line 251, in map return self.map_async(func, iterable, chunksize).get() File "/Users/nakadalab/miniconda/lib/python2.7/multiprocessing/pool.py", line 567, in get raise self._value AttributeError: 'NoneType' object has no attribute 'group'
It gives me the same error as before. I've also tried with processes = None
There are multiple calls in that chunk, and it looks like you only changed the second one.
How about just running this:
ip_array = ip_signal.array(
tsses_1kb,
bins=100,
processes=1)
Whoops! Good point. Same thing happens with just one though.
ip_array = ip_signal.array(
... tsses_1kb, ... bins=100, ... processes=1) Traceback (most recent call last): File "", line 4, in File "/Users/nakadalab/miniconda/lib/python2.7/site-packages/metaseq/_genomic_signal.py", line 122, in array chunksize=chunksize, **kwargs) File "/Users/nakadalab/miniconda/lib/python2.7/site-packages/metaseq/array_helpers.py", line 383, in _array_parallel itertools.repeat(kwargs))) File "/Users/nakadalab/miniconda/lib/python2.7/multiprocessing/pool.py", line 251, in map return self.map_async(func, iterable, chunksize).get() File "/Users/nakadalab/miniconda/lib/python2.7/multiprocessing/pool.py", line 567, in get raise self._value AttributeError: 'NoneType' object has no attribute 'group'
Can you try the same with processes=None
please?
if not os.path.exists('example.npz'): ... ip_array = ip_signal.array(
... tsses_1kb, ... bins=100, ... processes=None) ... Traceback (most recent call last): File "", line 5, in File "/Users/nakadalab/miniconda/lib/python2.7/site-packages/metaseq/_genomic_signal.py", line 124, in array arrays = _array(self.fn, self.class, features, **kwargs) File "/Users/nakadalab/miniconda/lib/python2.7/site-packages/metaseq/array_helpers.py", line 415, in _array reader, gene, **kwargs) File "/Users/nakadalab/miniconda/lib/python2.7/site-packages/metaseq/_genomic_signal.py", line 135, in local_coverage return _local_coverage(self.adapter, features, *args, **kwargs) File "/Users/nakadalab/miniconda/lib/python2.7/site-packages/metaseq/array_helpers.py", line 244, in _local_coverage window = helpers.tointerval(window) File "/Users/nakadalab/miniconda/lib/python2.7/site-packages/metaseq/helpers.py", line 99, in tointerval if m.group('strand'): AttributeError: 'NoneType' object has no attribute 'group'
Slightly different, but the same AttributeError.
Something strange is happening in tsses_1kb
. Can you try regenerating it and trying again? If it's still giving the same error, what are the results of:
type(tsses_1kb)
tsses_1kb.head()
or, from the terminal,
head tsses.gtf
Regenerating it seems to have worked! Thank you so much :) I'm still not entirely sure what went wrong the first time I made the tsses_1kb file though.