def cfg_dir(self, pyemma_cfg_dir): """ Sets PyEMMAs configuration directory. Also creates it with some default files, if does not exists. """ if not os.path.exists(pyemma_cfg_dir): try: mkdir_p(pyemma_cfg_dir) except EnvironmentError: raise ConfigDirectoryException( "could not create configuration directory '%s'" % pyemma_cfg_dir) except NotADirectoryError: # on Python 3 raise ConfigDirectoryException( "pyemma cfg dir (%s) is not a directory" % pyemma_cfg_dir) if not os.path.isdir(pyemma_cfg_dir): raise ConfigDirectoryException("%s is no valid directory" % pyemma_cfg_dir) if not os.access(pyemma_cfg_dir, os.W_OK): raise ConfigDirectoryException("%s is not writeable" % pyemma_cfg_dir) # give user the default cfg file, if its not there self.__copy_default_files_to_cfg_dir(pyemma_cfg_dir) self._cfg_dir = pyemma_cfg_dir if self.show_config_notification: stars = '*' * 80 print( stars, '\n', 'Changed PyEMMAs config directory to "{dir}".\n' 'To make this change permanent, export the environment variable' ' "PYEMMA_CFG_DIR" \nto point to this location. Eg. edit your .bashrc file!' .format(dir=pyemma_cfg_dir), '\n', stars, sep='')
def save_dtrajs(self, trajfiles=None, prefix='', output_dir='.', output_format='ascii', extension='.dtraj'): """saves calculated discrete trajectories. Filenames are taken from given reader. If data comes from memory dtrajs are written to a default filename. Parameters ---------- trajfiles : list of str (optional) names of input trajectory files, will be used generate output files. prefix : str prepend prefix to filenames. output_dir : str save files to this directory. output_format : str if format is 'ascii' dtrajs will be written as csv files, otherwise they will be written as NumPy .npy files. extension : str file extension to append (eg. '.itraj') """ if extension[0] != '.': extension = '.' + extension # obtain filenames from input (if possible, reader is a featurereader) if output_format == 'ascii': from msmtools.dtraj import write_discrete_trajectory as write_dtraj else: from msmtools.dtraj import save_discrete_trajectory as write_dtraj import os.path as path output_files = [] if trajfiles is not None: # have filenames available? for f in trajfiles: p, n = path.split(f) # path and file basename, _ = path.splitext(n) if prefix != '': name = "%s_%s%s" % (prefix, basename, extension) else: name = "%s%s" % (basename, extension) # name = path.join(p, name) output_files.append(name) else: for i in range(len(self.dtrajs)): if prefix is not '': name = "%s_%i%s" % (prefix, i, extension) else: name = str(i) + extension output_files.append(name) assert len(self.dtrajs) == len(output_files) if not os.path.exists(output_dir): mkdir_p(output_dir) for filename, dtraj in zip(output_files, self.dtrajs): dest = path.join(output_dir, filename) self._logger.debug('writing dtraj to "%s"' % dest) try: if path.exists(dest) and not self.overwrite_dtrajs: raise EnvironmentError( 'Attempted to write dtraj "%s" which already existed. To automatically' ' overwrite existing files, set source.overwrite_dtrajs=True.' % dest) write_dtraj(dest, dtraj) except IOError: self._logger.exception( 'Exception during writing dtraj to "%s"' % dest)