28
28
class Simulation :
29
29
"""Class that represents a neuron simulation."""
30
30
31
- def __init__ (self , parallel_context = None ) -> None :
31
+ def __init__ (self , parallel_context = None , custom_progress_function = None ) -> None :
32
32
self .cells : list [bluecellulab .Cell ] = []
33
33
self .fih_progress = None
34
34
self .progress = None
35
35
self .progress_closed = None
36
36
self .progress_dt : Optional [float ] = None
37
37
self .pc = parallel_context
38
+ self .custom_progress_function = custom_progress_function
38
39
39
40
def add_cell (self , new_cell : bluecellulab .Cell ) -> None :
40
41
"""Add a cell to a simulation."""
@@ -50,26 +51,29 @@ def init_progress_callback(self):
50
51
51
52
def progress_callback (self ):
52
53
"""Callback function for the progress bar."""
53
- if self .progress > 0 :
54
- sys .stdout .write ("\x1b [3F" )
55
-
56
- self .progress += 1
57
- self .progress_closed = not self .progress_closed
58
- if self .progress_closed :
59
- sys .stdout .write (" %s%s%s \n " % (" " * (
60
- self .progress - 1 ), " " , " " * (100 - self .progress )))
61
- sys .stdout .write ("[%s%s%s]\n " % ("#" * (
62
- self .progress - 1 ), "-" , "." * (100 - self .progress )))
63
- sys .stdout .write (" %s%s%s \n " % (" " * (
64
- self .progress - 1 ), " " , " " * (100 - self .progress )))
54
+ if self .custom_progress_function is None :
55
+ if self .progress > 0 :
56
+ sys .stdout .write ("\x1b [3F" )
57
+
58
+ self .progress += 1
59
+ self .progress_closed = not self .progress_closed
60
+ if self .progress_closed :
61
+ sys .stdout .write (" %s%s%s \n " % (" " * (
62
+ self .progress - 1 ), " " , " " * (100 - self .progress )))
63
+ sys .stdout .write ("[%s%s%s]\n " % ("#" * (
64
+ self .progress - 1 ), "-" , "." * (100 - self .progress )))
65
+ sys .stdout .write (" %s%s%s \n " % (" " * (
66
+ self .progress - 1 ), " " , " " * (100 - self .progress )))
67
+ else :
68
+ sys .stdout .write (" %s%s%s \n " % (" " * (
69
+ self .progress - 1 ), "/" , " " * (100 - self .progress )))
70
+ sys .stdout .write ("[%s%s%s]\n " % ("#" * (
71
+ self .progress - 1 ), ">" , "." * (100 - self .progress )))
72
+ sys .stdout .write (" %s%s%s \n " % (" " * (
73
+ self .progress - 1 ), "\\ " , " " * (100 - self .progress )))
74
+ sys .stdout .flush ()
65
75
else :
66
- sys .stdout .write (" %s%s%s \n " % (" " * (
67
- self .progress - 1 ), "/" , " " * (100 - self .progress )))
68
- sys .stdout .write ("[%s%s%s]\n " % ("#" * (
69
- self .progress - 1 ), ">" , "." * (100 - self .progress )))
70
- sys .stdout .write (" %s%s%s \n " % (" " * (
71
- self .progress - 1 ), "\\ " , " " * (100 - self .progress )))
72
- sys .stdout .flush ()
76
+ self .custom_progress_function ()
73
77
74
78
neuron .h .cvode .event (
75
79
neuron .h .t + self .progress_dt , self .progress_callback )
0 commit comments