Source code for pymatgen.util.sequence
# coding: utf-8
# Copyright (c) Pymatgen Development Team.
# Distributed under the terms of the MIT License.
"""
This module provides utilities to chunk large sequences and display progress
bars during processing.
"""
import math
[docs]def get_chunks(sequence, size=1):
"""
Args:
sequence ():
size ():
Returns:
"""
chunks = int(math.ceil(len(sequence) / float(size)))
return [sequence[i * size:(i + 1) * size]
for i in range(chunks)]
[docs]class PBarSafe:
"""
Progress bar.
"""
def __init__(self, total):
"""
Args:
total (): Total value.
"""
self.total = total
self.done = 0
self.report()
[docs] def update(self, amount):
"""
Update progress bar by amount.
Args:
amount (float):
"""
self.done += amount
self.report()
[docs] def report(self):
"""
Print progress.
"""
print("{} of {} done {:.1%}".format(
self.done, self.total, self.done / self.total))
try:
# noinspection PyUnresolvedReferences
if get_ipython().__class__.__name__ == 'ZMQInteractiveShell': # type: ignore
from tqdm import tqdm_notebook as PBar
else: # likely 'TerminalInteractiveShell'
from tqdm import tqdm as PBar
except NameError:
try:
from tqdm import tqdm as PBar
except ImportError:
PBar = PBarSafe
except ImportError:
PBar = PBarSafe