Skip to content

Commit

Permalink
Making sure that session creates unique session names
Browse files Browse the repository at this point in the history
  • Loading branch information
sharif1093 committed Jun 3, 2019
1 parent 1778a5c commit 90e7d74
Showing 1 changed file with 26 additions and 14 deletions.
40 changes: 26 additions & 14 deletions digideep/pipeline/session.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
from digideep.utility.json_encoder import JsonDecoder
from digideep.utility.monitoring import monitor
from digideep.utility.profiling import profiler
from digideep.utility.name_generator import get_random_name

import pickle, torch
from copy import deepcopy
Expand All @@ -16,6 +17,17 @@ def generateTimestamp():
timestamp = '{:%Y%m%d%H%M%S}'.format(now)
return timestamp

def make_unique_path_session(path_base_session, prefix="session_"):
session_name = prefix + generateTimestamp() + "_" + get_random_name()
path_session = os.path.join(path_base_session, session_name)
try:
os.makedirs(path_session)
return path_session
except FileExistsError as e:
return make_unique_path_session(path_base_session=path_base_session, prefix=prefix)



class Session(object):
"""
This class provides the utilities for storing results of a session.
Expand Down Expand Up @@ -95,7 +107,16 @@ def __init__(self, root_path):
checkpoint_path = os.path.split(self.args["load_checkpoint"])[0]
self.state['path_base_sessions'] = os.path.join(os.path.split(checkpoint_path)[0], "evaluations")

self.state['path_session'] = os.path.join(self.state['path_base_sessions'], 'session_' + generateTimestamp())
# 1. Creating 'path_base_sessions', i.e. '/tmp/digideep_sessions':
if not os.path.exists(self.state['path_base_sessions']):
os.makedirs(self.state['path_base_sessions'])
# Create an empty __init__.py in it!
with open(os.path.join(self.state['path_base_sessions'], '__init__.py'), 'w') as f:
print("", file=f)

# 2. Create a unique 'path_session':
self.state['path_session'] = make_unique_path_session(self.state['path_base_sessions'], prefix="session_")

self.state['path_checkpoints'] = os.path.join(self.state['path_session'], 'checkpoints')
self.state['path_monitor'] = os.path.join(self.state['path_session'], 'monitor')
self.state['path_videos'] = os.path.join(self.state['path_session'], 'videos')
Expand All @@ -106,20 +127,11 @@ def __init__(self, root_path):
self.state['file_visdom'] = os.path.join(self.state['path_session'], 'visdom.log')
self.state['file_varlog'] = os.path.join(self.state['path_session'], 'varlog.json')
self.state['file_prolog'] = os.path.join(self.state['path_session'], 'prolog.json')

if not os.path.exists(self.state['path_base_sessions']):
os.makedirs(self.state['path_base_sessions'])
# Create an empty __init__.py in it!
with open(os.path.join(self.state['path_base_sessions'], '__init__.py'), 'w') as f:
print("", file=f)

if not os.path.exists(self.state['path_session']):
os.makedirs(self.state['path_session'])
if not self.is_playing:
os.makedirs(self.state['path_checkpoints'])
os.makedirs(self.state['path_monitor'])
else:
raise BaseException("Session path already exists, cannot proceed.")
# 3. Creating the rest of paths:
if not self.is_playing:
os.makedirs(self.state['path_checkpoints'])
os.makedirs(self.state['path_monitor'])


self.set_device()
Expand Down

0 comments on commit 90e7d74

Please sign in to comment.