コード例 #1
0
    def verify_socket_directory(self, user, hosts):
        """Verify the domain socket directory is present and owned by this user.

        Args:
            user (str): user to verify has ownership of the directory
            hosts (list): list of hosts on which to verify the directory exists

        Raises:
            CommandFailure: if the socket directory does not exist or is not
                owned by the user and could not be created

        """
        if isinstance(self.yaml, YamlParameters):
            directory = self.get_user_file()
            self.log.info("Verifying %s socket directory: %s", self.command,
                          directory)
            status, nodes = check_file_exists(hosts, directory, user)
            if not status:
                self.log.info(
                    "%s: creating socket directory %s for user %s on %s",
                    self.command, directory, user, nodes)
                try:
                    create_directory(nodes, directory, sudo=True)
                    change_file_owner(nodes, directory, user, user, sudo=True)
                except DaosTestError as error:
                    raise CommandFailure(
                        "{}: error setting up missing socket directory {} for "
                        "user {} on {}:\n{}".format(self.command, directory,
                                                    user, nodes, error))
コード例 #2
0
    def copy_certificates(self, source, hosts):
        """Copy certificates files from the source to the destination hosts.

        Args:
            source (str): source of the certificate files.
            hosts (list): list of the destination hosts.
        """
        names = set()
        yaml = self.yaml
        while yaml is not None and hasattr(yaml, "other_params"):
            if hasattr(yaml, "get_certificate_data"):
                self.log.debug("Copying certificates for %s:", self._command)
                data = yaml.get_certificate_data(
                    yaml.get_attribute_names(LogParameter))
                for name in data:
                    create_directory(hosts,
                                     name,
                                     verbose=False,
                                     raise_exception=False)
                    for file_name in data[name]:
                        src_file = os.path.join(source, file_name)
                        dst_file = os.path.join(name, file_name)
                        self.log.debug("  %s -> %s", src_file, dst_file)
                        result = distribute_files(hosts,
                                                  src_file,
                                                  dst_file,
                                                  mkdir=False,
                                                  verbose=False,
                                                  raise_exception=False,
                                                  sudo=True,
                                                  owner=self.certificate_owner)
                        if result.exit_status != 0:
                            self.log.info(
                                "    WARNING: %s copy failed on %s:\n%s",
                                dst_file, hosts, result)
                    names.add(name)
            yaml = yaml.other_params

        # debug to list copy of cert files
        if names:
            self.log.debug("Copied certificates for %s (in %s):",
                           self._command, ", ".join(names))
            for line in get_file_listing(hosts,
                                         names).stdout_text.splitlines():
                self.log.debug("  %s", line)
コード例 #3
0
ファイル: proBait.py プロジェクト: rfm-targa/proBait
def main(input_files, output_directory, mode, minimum_sequence_length, refs,
         bait_size, bait_offset, bait_identity, bait_coverage, minimum_region,
         minimum_exact_match, cluster_probes, cluster_identity,
         cluster_coverage, exclude_regions, exclude_pident, exclude_coverage,
         threads, report, report_identities, report_coverages, fixed_xaxis,
         fixed_yaxis, tsv_output):

    # create output directory if it does not exist
    exists = gu.create_directory(output_directory)

    # get absolute paths for all input files
    genomes = gu.absolute_paths(input_files)

    # read file with references basenames
    with open(refs, 'r') as infile:
        ref_set = [g[0] for g in list(csv.reader(infile, delimiter='\t'))]
        ref_set = [os.path.join(input_files, g) for g in ref_set]

    # reorder genome list
    genomes = ref_set + [g for g in genomes if g not in ref_set]

    # attribute shorter and unique identifiers to each input
    short_samples = gu.common_suffixes(genomes)
    inv_short = {v: k for k, v in short_samples.items()}

    ref_set = [short_samples[g] for g in ref_set]

    # determine number of sequences and total length per input file
    nr_contigs = {
        short_samples[f]: gu.count_contigs(f, minimum_sequence_length)
        for f in genomes
    }

    # shred refs to get initial set of baits
    # not generating kmers that cover the end of the sequences!
    baits_file = os.path.join(output_directory, 'baits.fasta')
    for g in ref_set:
        nr_baits = gu.generate_baits(inv_short[g], baits_file, bait_size,
                                     bait_offset, minimum_sequence_length)

    print('\nCreated initial set of {0} probes based on {1} '
          'inputs.'.format(nr_baits, len(ref_set)))

    # identify unique baits
    unique_baits = os.path.join(output_directory, 'unique_baits.fasta')
    total, unique_seqids = gu.determine_distinct(baits_file, unique_baits)
    print('Removed {0} repeated probes.\n'.format(total))

    # start mapping baits against remaining genomes
    # mapping against ref_set to cover missing regions
    bait_creation_dir = os.path.join(output_directory,
                                     'incremental_bait_creation')
    exists = gu.create_directory(bait_creation_dir)

    total = 0
    coverage_info = {}
    discarded_baits_files = []
    missing_files = []
    processed = 0
    for g in genomes:
        generated = incremental_bait_generator(g,
                                               unique_baits,
                                               bait_creation_dir,
                                               bait_size,
                                               bait_coverage,
                                               bait_identity,
                                               bait_offset,
                                               minimum_region,
                                               nr_contigs,
                                               short_samples,
                                               minimum_exact_match,
                                               generate=True,
                                               depth=False)
        coverage_info[short_samples[g]] = generated[0]
        discarded_baits_files.append(generated[2])
        missing_files.append(generated[3])
        total += generated[1]
        processed += 1
        print('\r',
              'Generated baits for {0}/{1} '
              'inputs.'.format(processed, len(genomes)),
              end='')

    print('\nAdded {0} probes to cover {1} assemblies.\nTotal '
          'of {2} probes.'.format(total, len(genomes), nr_baits + total))

    if cluster_probes is True:
        clustering_dir = os.path.join(output_directory, 'clustering')
        exists = gu.create_directory(clustering_dir)
        unique_baits, removed = exclude_similar_probes(unique_baits,
                                                       clustering_dir,
                                                       cluster_identity,
                                                       cluster_coverage,
                                                       bait_size, threads)
        total -= len(removed)

    # need to copy the Fasta file without the excluded baits to the main output directory!
    exclude_stats = 'None'
    if exclude_regions is not None:
        exclude_dir = os.path.join(output_directory, 'exclude')
        exists = gu.create_directory(exclude_dir)
        unique_baits, removed = exclude_contaminant(unique_baits,
                                                    exclude_regions,
                                                    exclude_pident,
                                                    exclude_coverage,
                                                    bait_size, exclude_dir)
        # determine number of exclude regions and total bps
        exclude_stats = [
            len(rec) for rec in SeqIO.parse(exclude_regions, 'fasta')
        ]
        exclude_stats = len(exclude_stats)
        total -= len(removed)

    # create TSV output with bait identifier and bait sequence columns
    if tsv_output is True:
        tsv_output_file = os.path.join(output_directory, 'unique_baits.tsv')
        tsv_baits = write_tsv_output(unique_baits, tsv_output_file)
        print('Wrote {0} baits to {1}'.format(tsv_baits, tsv_output_file))

    if report is True:
        # create report directory
        report_dir = os.path.join(output_directory, 'report_data')
        exists = gu.create_directory(report_dir)

        # determine contig order from longest to shortest
        ordered_contigs = gu.order_contigs(genomes, short_samples)

        # create dict with config values
        configs = {
            'Number of inputs': len(genomes),
            'Minimum sequence length': minimum_sequence_length,
            'Number of references': len(ref_set),
            'Bait size': bait_size,
            'Bait offset': bait_offset,
            'Bait identity': bait_identity,
            'Bait coverage': bait_coverage,
            'Minimum exact match': minimum_exact_match
        }

        configs['Cluster probes'] = str(cluster_probes)
        if cluster_probes is True:
            configs['Cluster identity'] = cluster_identity
            configs['Cluster coverage'] = cluster_coverage

        configs['Sequences to exclude'] = '{0}'.format(exclude_stats)
        if exclude_stats != 'None':
            configs['Exclusion identity'] = exclude_pident
            configs['Exclusion coverage'] = exclude_coverage

        # get baits positions
        baits_pos = gu.get_baits_pos(unique_baits, short_samples)

        # create a report for each bait identity and coverage pair
        for i, v in enumerate(report_identities):
            configs['Report bait identity'] = v
            configs['Report bait coverage'] = report_coverages[i]
            # determine breadth of coverage for all assemblies
            # and depth of coverage for each base
            final_coverage_dir = os.path.join(output_directory,
                                              'final_coverage_{0}'.format(i))
            exists = gu.create_directory(final_coverage_dir)

            final_info = {}
            discarded_baits_files = []
            #missing_files = []
            processed = 0
            for g in genomes:
                generated = incremental_bait_generator(g,
                                                       unique_baits,
                                                       final_coverage_dir,
                                                       bait_size,
                                                       report_coverages[i],
                                                       v,
                                                       bait_offset,
                                                       minimum_region,
                                                       nr_contigs,
                                                       short_samples,
                                                       0,
                                                       generate=False,
                                                       depth=True)
                final_info[short_samples[g]] = generated[0]
                discarded_baits_files.append(generated[2])
                #missing_files.append(generated[3])
                processed += 1
                print('\r',
                      'Evaluated coverage for {0}/{1} '
                      'inputs with bait_identity={2} and '
                      'bait_coverage={3}.'.format(processed, len(genomes), v,
                                                  report_coverages[i]),
                      end='')

            # save depth values
            depth_files_dir = os.path.join(
                output_directory, 'depth_files_idnt{0}_cov{1}'.format(
                    str(v).replace('.', ''),
                    str(report_coverages[i]).replace('.', '')))
            exists = gu.create_directory(depth_files_dir)
            depth_files = [
                mu.write_depth(k, v[3], depth_files_dir)
                for k, v in final_info.items()
            ]

            test_fig = create_report(coverage_info, final_info, report_dir,
                                     short_samples, ordered_contigs,
                                     fixed_xaxis, fixed_yaxis, ref_set,
                                     nr_contigs, configs, baits_pos,
                                     nr_baits + total, nr_baits, total,
                                     missing_files)

            print('\nCoverage report for bait_identity={0} and '
                  'bait_coverage={1} available in {2}'.format(
                      v, report_coverages[i], report_dir))
コード例 #4
0
args = parser.parse_args()
logger = get_logger("heuristic_covariance_w_tpreg_flow")

if args.today is None:
    args.today = datetime.date.today().strftime("%Y-%m-%d")

logger.info(f"Using experiment date: {args.today}")

# Experiment Name
exp_name = f"cov_tpreg_ninit_{args.n_init}_ntrain_{args.n_train}_{args.today}"
logger.info(f"Experiment name: {exp_name}")

# create directories for plots, models & evaluation
plots_dir = f"{args.base_plots_dir}/{exp_name}"
logger.info(f"For plotting using dir: {plots_dir}")
plots_dir = create_directory(plots_dir, delete_if_exists=True)

save_dir = f"{args.base_models_dir}/{exp_name}"
logger.info(f"For model saving using dir: {save_dir}")
save_dir = create_directory(save_dir, delete_if_exists=True)

export_dir = f"{args.base_evaluation_dir}/{exp_name}"
logger.info(f"For exporting final evaluation using dir: {export_dir}")
export_dir = create_directory(export_dir, delete_if_exists=True)

# Connect to server & start experiment
ccexp = crayon_create_experiment(exp_name, CrayonClient())

# seed
logger.info(f"Using seed: {args.numpy_seed}")
np.random.seed(args.numpy_seed)
コード例 #5
0
def main(_):
    random.seed(0)
    np.random.seed(123456789)
    tf.set_random_seed(123456789)

    global config, actions, checkpoint_dir, output_dir, train_set, test_set, x_test, y_test, dec_in_test

    config = training_config.train_Config(FLAGS.dataset, FLAGS.datatype, FLAGS.action)

    if FLAGS.longterm == True:
        config.filename = 'walking'
        config.output_window_size = 100

    # Define checkpoint & output directory
    checkpoint_dir, output_dir = create_directory(config)

    # Train model
    if FLAGS.training:
        train_set, test_set, x_test, y_test, dec_in_test, config = read_data(config, True)
        actions = list(x_test.keys())
        train()

    # Predict on test set with trained model
    try: x_test
    except NameError: x_test = None
    if config.test_output_window > config.output_window_size or x_test is None:
        train_set, test_set, x_test, y_test, dec_in_test, config = read_data(config, False)
        actions = list(x_test.keys())

    if FLAGS.longterm is True:
        x_test = {}
        y_test = {}
        dec_in_test = {}
        test_set = test_set[list(test_set.keys())[0]]
        x_test[FLAGS.action] = np.reshape(test_set[:config.input_window_size-1,:], [1, -1, config.input_size])
        y_test[FLAGS.action] = np.reshape(test_set[config.input_window_size:, :], [1, -1, config.input_size])
        dec_in_test[FLAGS.action] = np.reshape(test_set[config.input_window_size-1:-1, :], [1, -1, config.input_size])
        config.test_output_window = y_test[FLAGS.action].shape[1]
        config.batch_size = 1
        actions = [FLAGS.action]
        test_actions = [FLAGS.action]
    else:
        test_actions = actions

    y_predict = predict()

    if not (os.path.exists(output_dir)):
        os.makedirs(output_dir)
    print("Outputs saved to: " + output_dir)

    for action in test_actions:

        if config.datatype == 'lie':
            y_predict[action] = restore(y_predict[action])
            y_test[action] = restore(y_test[action])
            mean_error, _ = data_utils.mean_euler_error(config, action, y_predict[action], y_test[action])
            sio.savemat(output_dir + 'error_' + action + '.mat', dict([('error', mean_error)]))

            for i in range(y_predict[action].shape[0]):
                y_p = y_predict[action][i]
                y_t = y_test[action][i]

                sio.savemat(output_dir + 'prediction_lie_' + action + '_' + str(i) + '.mat', dict([('prediction', y_p)]))
                sio.savemat(output_dir + 'gt_lie_' + action + '_' + str(i) + '.mat', dict([('gt', y_t)]))

                # Forward Kinematics to obtain 3D xyz locations
                y_p[:,0:6] = y_t[:,0:6]
                y_p_xyz = data_utils.fk(y_p, config)
                y_t_xyz = data_utils.fk(y_t, config)

                sio.savemat(output_dir + 'prediction_xyz_' + action + '_' + str(i) + '.mat', dict([('prediction', y_p_xyz)]))
                sio.savemat(output_dir + 'gt_xyz_' + action + '_' + str(i) + '.mat', dict([('gt', y_t_xyz)]))

                filename = action + '_' + str(i)
                if FLAGS.visualize:
                    # Visualize prediction
                    predict_plot = plot_animation(y_p_xyz, y_t_xyz, config, filename)
                    predict_plot.plot()

        else:
            for i in range(y_predict[action].shape[0]):
                y_p = y_predict[action][i]
                y_t = y_test[action][i]

                y_p_xyz = np.reshape(y_p, [y_p.shape[0], -1, 3])
                y_t_xyz = np.reshape(y_t, [y_t.shape[0], -1, 3])

                sio.savemat(output_dir + 'prediction_xyz_' + action + '_' + str(i) + '.mat', dict([('prediction', y_p)]))
                sio.savemat(output_dir + 'gt_xyz_' + action + '_' + str(i) + '.mat', dict([('gt', y_t)]))

                # Inverse Kinematics to obtain lie parameters
                y_p_lie = data_utils.inverse_kinematics(y_p, config)
                y_t_lie = data_utils.inverse_kinematics(y_t, config)

                sio.savemat(output_dir + 'prediction_lie_' + action + str(i) + '.mat', dict([('prediction', y_p_lie)]))
                sio.savemat(output_dir + 'gt_lie_' + action + str(i) + '.mat', dict([('gt', y_t_lie)]))

                filename = action + '_' + str(i)
                if FLAGS.visualize:
                    # Visualize prediction
                    predict_plot = plot_animation(y_p_xyz, y_t_xyz, config, filename)
                    predict_plot.plot()
コード例 #6
0
def main(_):

    tf.set_random_seed(112858)

    global config, actions, checkpoint_dir, output_dir, train_set, test_set, x_test, y_test, dec_in_test

    config = training_config.train_Config(FLAGS.dataset, FLAGS.datatype,
                                          FLAGS.action)

    if FLAGS.longterm == True:
        config.output_window_size = 100
        if FLAGS.action not in ['walking', 'eating', 'smoking']:
            raise Exception(
                "Invalid action! For long-term prediction, action can only be 'walking', 'smoking' or 'eating'."
            )

    # Define checkpoint & output directory
    checkpoint_dir, output_dir = create_directory(config)

    # Train model
    if FLAGS.training:
        train_set, test_set, x_test, y_test, dec_in_test, config = read_data(
            config, True)
        actions = list(x_test.keys())
        train()

    # Predict on test set with trained model
    try:
        x_test
    except NameError:
        x_test = None
    if config.test_output_window > config.output_window_size or x_test is None:
        train_set, test_set, x_test, y_test, dec_in_test, config = read_data(
            config, False)
        actions = list(x_test.keys())

    if FLAGS.longterm is True:
        x_test = {}
        y_test = {}
        dec_in_test = {}
        test_set = test_set[list(test_set.keys())[0]]
        x_test[FLAGS.action] = np.reshape(
            test_set[:config.input_window_size - 1, :],
            [1, -1, config.input_size])
        y_test[FLAGS.action] = np.reshape(
            test_set[config.input_window_size:, :], [1, -1, config.input_size])
        dec_in_test[FLAGS.action] = np.reshape(
            test_set[config.input_window_size - 1:-1, :],
            [1, -1, config.input_size])
        config.test_output_window = y_test[FLAGS.action].shape[1]
        config.batch_size = 1
        actions = [FLAGS.action]
        test_actions = [FLAGS.action]
    else:
        test_actions = actions

    y_predict = predict()

    if not (os.path.exists(output_dir)):
        os.makedirs(output_dir)
    print("Outputs saved to: " + output_dir)

    for action in test_actions:

        if config.datatype == 'lie':
            mean_error, _ = data_utils.mean_euler_error(
                config, action, y_predict[action], y_test[action])
            sio.savemat(output_dir + 'error_' + action + '.mat',
                        dict([('error', mean_error)]))

            for i in range(y_predict[action].shape[0]):
                if config.dataset == 'Human':
                    y_p = data_utils.unNormalizeData(y_predict[action][i],
                                                     config.data_mean,
                                                     config.data_std,
                                                     config.dim_to_ignore)
                    y_t = data_utils.unNormalizeData(y_test[action][i],
                                                     config.data_mean,
                                                     config.data_std,
                                                     config.dim_to_ignore)
                    expmap_all = data_utils.revert_coordinate_space(
                        np.vstack((y_t, y_p)), np.eye(3), np.zeros(3))
                    y_p = expmap_all[config.test_output_window:]
                    y_t = expmap_all[:config.test_output_window]
                else:
                    y_p = y_predict[action][i]
                    y_t = y_test[action][i]

                sio.savemat(
                    output_dir + 'prediction_lie_' + action + '_' + str(i) +
                    '.mat', dict([('prediction', y_p)]))
                sio.savemat(
                    output_dir + 'gt_lie_' + action + '_' + str(i) + '.mat',
                    dict([('gt', y_t)]))

                # Forward Kinematics to obtain 3D xyz locations
                # y_p[:,0:6] = y_t[:,0:6]
                y_p_xyz = data_utils.fk(y_p, config)
                y_t_xyz = data_utils.fk(y_t, config)

                sio.savemat(
                    output_dir + 'prediction_xyz_' + action + '_' + str(i) +
                    '.mat', dict([('prediction', y_p_xyz)]))
                sio.savemat(
                    output_dir + 'gt_xyz_' + action + '_' + str(i) + '.mat',
                    dict([('gt', y_t_xyz)]))

                filename = action + '_' + str(i)
                if FLAGS.visualize:
                    # Visualize prediction
                    predict_plot = plot_animation(y_p_xyz, y_t_xyz, config,
                                                  filename)
                    predict_plot.plot()

        else:
            for i in range(y_predict[action].shape[0]):
                y_p = y_predict[action][i]
                y_t = y_test[action][i]

                y_p_xyz = np.reshape(y_p, [y_p.shape[0], -1, 3])
                y_t_xyz = np.reshape(y_t, [y_t.shape[0], -1, 3])

                sio.savemat(
                    output_dir + 'prediction_xyz_' + action + '_' + str(i) +
                    '.mat', dict([('prediction', y_p)]))
                sio.savemat(
                    output_dir + 'gt_xyz_' + action + '_' + str(i) + '.mat',
                    dict([('gt', y_t)]))

                # Inverse Kinematics to obtain lie parameters
                y_p_lie = data_utils.inverse_kinematics(y_p, config)
                y_t_lie = data_utils.inverse_kinematics(y_t, config)

                sio.savemat(
                    output_dir + 'prediction_lie_' + action + str(i) + '.mat',
                    dict([('prediction', y_p_lie)]))
                sio.savemat(output_dir + 'gt_lie_' + action + str(i) + '.mat',
                            dict([('gt', y_t_lie)]))

                filename = action + '_' + str(i)
                if FLAGS.visualize:
                    # Visualize prediction
                    predict_plot = plot_animation(y_p_xyz, y_t_xyz, config,
                                                  filename)
                    predict_plot.plot()