Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
merge_json_union(config, args.merge, args.soft)
logger.info(SEP + "\nNew configuration:\n" + SEP)
show(config, colored=not args.no_color)
else:
logger.error("No configuration parameters given (see --help).")
elif args.subcommand == "generate":
if other_args:
logger.info(
"{0}\nParsed by argparse:\n{1}\n"
"{0}\nWARNING:\nMake sure you use the 'long-style' -- options "
"(e.g. --plot) if possible\nand no combined short '-' flags, "
"(e.g. -vp)\n{0}".format(SEP, other_args))
data = generate(other_args)
log_info_dict_json(data, colored=not args.no_color)
if args.out and user.check_and_confirm_overwrite(args.out):
with open(args.out, 'w') as out:
out.write(json.dumps(data, indent=4, sort_keys=True))
elif not args.out:
logger.warning("\n(-o | --out) not specified - saving nothing")
else:
logger.error("No command line arguments given (see --help)")
elif args.subcommand == "reset":
if not os.access(config, os.W_OK):
logger.error("No permission to modify" + config)
sys.exit()
if args.y or user.confirm(
"Reset the package settings to the default settings? (y/n)"):
settings.reset()
logger.info("{0}\nPackage settings after reset:\n{0}".format(SEP))
show(settings.DEFAULT_PATH, colored=not args.no_color)
def write_kitti_poses_file(file_path, traj, confirm_overwrite=False):
"""
:param file_path: desired text file for trajectory (string or handle)
:param traj: trajectory.PosePath3D or trajectory.PoseTrajectory3D
:param confirm_overwrite: whether to require user interaction
to overwrite existing files
"""
if isinstance(file_path, str) and confirm_overwrite:
if not user.check_and_confirm_overwrite(file_path):
return
# first 3 rows of SE(3) matrix flattened
poses_flat = [p.flatten()[:-4] for p in traj.poses_se3]
np.savetxt(file_path, poses_flat, delimiter=' ')
if isinstance(file_path, str):
logger.info("Poses saved to: " + file_path)
def save_res_file(zip_path, result_obj, confirm_overwrite=False):
"""
save results to a zip file that can be deserialized with load_res_file()
:param zip_path: path to zip file (or file handle)
:param result_obj: evo.core.result.Result instance
:param confirm_overwrite: whether to require user interaction
to overwrite existing files
"""
if isinstance(zip_path, str):
logger.debug("Saving results to " + zip_path + "...")
if confirm_overwrite and not user.check_and_confirm_overwrite(zip_path):
return
with zipfile.ZipFile(zip_path, 'w') as archive:
archive.writestr("info.json", json.dumps(result_obj.info))
archive.writestr("stats.json", json.dumps(result_obj.stats))
for name, array in result_obj.np_arrays.items():
buffer = io.BytesIO()
np.save(buffer, array)
buffer.seek(0)
archive.writestr("{}.npz".format(name), buffer.read())
buffer.close()
for name, traj in result_obj.trajectories.items():
buffer = io.StringIO()
if type(traj) is PosePath3D:
fmt_suffix = ".kitti"
write_kitti_poses_file(buffer, traj)
elif type(traj) is PoseTrajectory3D:
def serialize(self, dest, confirm_overwrite=True):
logger.debug("Serializing PlotCollection to " + dest + "...")
if confirm_overwrite and not user.check_and_confirm_overwrite(dest):
return
else:
pickle.dump(self.figures, open(dest, 'wb'))
def write_tum_trajectory_file(file_path, traj, confirm_overwrite=False):
"""
:param file_path: desired text file for trajectory (string or handle)
:param traj: trajectory.PoseTrajectory3D
:param confirm_overwrite: whether to require user interaction
to overwrite existing files
"""
if isinstance(file_path, str) and confirm_overwrite:
if not user.check_and_confirm_overwrite(file_path):
return
if not isinstance(traj, PoseTrajectory3D):
raise FileInterfaceException(
"trajectory must be a PoseTrajectory3D object")
stamps = traj.timestamps
xyz = traj.positions_xyz
# shift -1 column -> w in back column
quat = np.roll(traj.orientations_quat_wxyz, -1, axis=1)
mat = np.column_stack((stamps, xyz, quat))
np.savetxt(file_path, mat, delimiter=" ")
if isinstance(file_path, str):
logger.info("Trajectory saved to: " + file_path)
def save_df_as_table(df, path,
format_str=SETTINGS.table_export_format,
transpose=SETTINGS.table_export_transpose,
confirm_overwrite=False):
if confirm_overwrite and not user.check_and_confirm_overwrite(path):
return
if transpose:
df = df.T
if format_str == "excel":
# requires xlwt and/or openpyxl to be installed
with pd.ExcelWriter(path) as writer:
df.to_excel(writer)
else:
getattr(df, "to_" + format_str)(path)
logger.debug("{} table saved to: {}".format(
format_str, path))
def export(self, file_path, confirm_overwrite=True):
fmt = SETTINGS.plot_export_format.lower()
if fmt == "pdf" and not SETTINGS.plot_split:
if confirm_overwrite and not user.check_and_confirm_overwrite(
file_path):
return
import matplotlib.backends.backend_pdf
pdf = matplotlib.backends.backend_pdf.PdfPages(file_path)
for name, fig in self.figures.items():
# fig.tight_layout() # TODO
pdf.savefig(fig)
pdf.close()
logger.info("Plots saved to " + file_path)
else:
for name, fig in self.figures.items():
base, ext = os.path.splitext(file_path)
dest = base + '_' + name + ext
if confirm_overwrite and not user.check_and_confirm_overwrite(
dest):
return