Source code for viscid.extools

#!/usr/bin/env python
"""Call out to external tools like ffmpeg and meshlab"""

from __future__ import print_function
import os
import subprocess as sub


__all__ = ['make_animation', 'meshlab_convert']


[docs]def make_animation(movie_fname, prefix, framerate=5, qscale=2, keep=False, args=None, frame_idx_fmt="_%06d", program="ffmpeg", yes=False): """ make animation by calling program (only ffmpeg works for now) using args, which is a namespace filled by the argparse options from add_animate_arguments. Plots are expected to be named ${args.prefix}_000001.png where the number is in order from 1 up """ if args is not None: prefix = args.prefix framerate = args.framerate qscale = args.qscale movie_fname = args.animate keep = args.keep if movie_fname: cmd = "yes | {0}".format(program) if yes else program if program == "ffmpeg": sub.Popen("{0} -r {1} -i {3}{4}.png -pix_fmt yuv420p " "-qscale {2} {5}".format(cmd, framerate, qscale, prefix, frame_idx_fmt, movie_fname), shell=True).communicate() if movie_fname is None and prefix is not None: keep = True if not keep: sub.Popen("rm -f {0}_*.png".format(prefix), shell=True).communicate() return None
[docs]def meshlab_convert(fname, fmt="dae", quiet=True): """Run meshlabserver to convert 3D mesh files Uses `MeshLab <http://meshlab.sourceforge.net/>`_, which is a great little program for playing with 3D meshes. The best part is that OS X's Preview can open the COLLADA (`*.dae`) format. How cool is that? Args: fname (str): file to convert fmt (str): extension of result, defaults to COLLADA format quiet (bool): redirect output to :py:attr:`os.devnull` Returns: None """ iname = fname oname = '.'.join(iname.split('.')[:-1]) + "." + fmt.strip() redirect = "&> {0}".format(os.devnull) if quiet else "" cmd = ("meshlabserver -i {0} -o {1} -m vc vn fc fn {2}" "".format(iname, oname, redirect)) sub.Popen(cmd, shell=True, stdout=None, stderr=None)
## ## EOF ##