Skip to content

Commit

Permalink
Merge pull request #412 from ufo-kit/enable-writer-offset
Browse files Browse the repository at this point in the history
storage: add start index to image writing
  • Loading branch information
matze committed Jun 6, 2018
2 parents ff776d1 + 6023087 commit 8bcb269
Showing 1 changed file with 13 additions and 8 deletions.
21 changes: 13 additions & 8 deletions concert/storage.py
Original file line number Diff line number Diff line change
Expand Up @@ -75,13 +75,15 @@ def create_directory(directory, rights=0o0750):


@coroutine
def write_images(writer=TiffWriter, prefix="image_{:>05}.tif", bytes_per_file=0):
def write_images(writer=TiffWriter, prefix="image_{:>05}.tif", start_index=0, bytes_per_file=0):
"""
write_images(writer=TiffWriter, prefix="image_{:>05}.tif", bytes_per_file=0)
write_images(writer=TiffWriter, prefix="image_{:>05}.tif", start_index=0, bytes_per_file=0)
Write images on disk with specified *writer* and file name *prefix*. Write to one file until the
*bytes_per_file* bytes has been written. If it is 0, then one file per image is created.
*writer* is a subclass of :class:`.writers.ImageWriter`.
*writer* is a subclass of :class:`.writers.ImageWriter`. *start_index* specifies the number in
the first file name, e.g. for the default *prefix* and *start_index* 100, the first file name
will be image_00100.tif.
"""
im_writer = None
file_index = 0
Expand All @@ -97,7 +99,7 @@ def write_images(writer=TiffWriter, prefix="image_{:>05}.tif", bytes_per_file=0)
if not im_writer or written + image.nbytes > bytes_per_file:
if im_writer:
im_writer.close()
im_writer = writer(prefix.format(file_index), bytes_per_file)
im_writer = writer(prefix.format(start_index + file_index), bytes_per_file)
file_index += 1
written = 0
im_writer.write(image)
Expand Down Expand Up @@ -221,11 +223,12 @@ class DirectoryWalker(Walker):
specific filename template.
"""

def __init__(self, writer=TiffWriter, dsetname='frame_{:>06}.tif', bytes_per_file=0,
root=None, log=None, log_name='experiment.log'):
def __init__(self, writer=TiffWriter, dsetname='frame_{:>06}.tif', start_index=0,
bytes_per_file=0, root=None, log=None, log_name='experiment.log'):
"""
Use *writer* to write data to files with filenames with a template
from *dsetname*.
Use *writer* to write data to files with filenames with a template from *dsetname*.
*start_index* specifies the number in the first file name, e.g. for the default *dsetname*
and *start_index* 100, the first file name will be frame_000100.tif.
"""
if not root:
root = os.getcwd()
Expand All @@ -242,6 +245,7 @@ def __init__(self, writer=TiffWriter, dsetname='frame_{:>06}.tif', bytes_per_fil
log=log, log_handler=log_handler)
self._writer = writer
self._bytes_per_file = bytes_per_file
self._start_index = start_index

def _descend(self, name):
self._current = os.path.join(self._current, name)
Expand All @@ -267,6 +271,7 @@ def _write_coroutine(self, dsetname=None):

prefix = os.path.join(self._current, dsetname)
return write_images(writer=self._writer, prefix=prefix,
start_index=self._start_index,
bytes_per_file=self._bytes_per_file)

def _dset_exists(self, dsetname):
Expand Down

0 comments on commit 8bcb269

Please sign in to comment.