Ejemplo n.º 1
0
def _save_img_list(img_list, save_path, config):
    #_show_img_list(img_list)
    metadata = dict(title='generator images', artist='Matplotlib', comment='Movie support!')
    writer = ImageMagickWriter(fps=1,metadata=metadata)
    ims = [np.transpose(i, (1, 2, 0)) for i in img_list]
    fig, ax = plt.subplots()
    with writer.saving(fig, "%s/img_list.gif" % save_path,500):
        for i in range(len(ims)):
            ax.imshow(ims[i])
            ax.set_title("step {}".format(i * config["save_every"]))
            writer.grab_frame()
Ejemplo n.º 2
0
class Visualization(object):
    """Helper class to visualize the progress of the GAN training procedure.
    """
    def __init__(self, file_name, model_name, fps=15):
        """Initialize the helper class.
        
        :param fps: The number of frames per second when saving the gif animation.
        """
        self.fps = fps
        self.figure, (self.ax2) = plt.subplots(1, 1, figsize=(5, 5))
        self.figure.suptitle("{}".format(model_name))
        sns.set(color_codes=True, style='white', palette='colorblind')
        sns.despine(self.figure)
        plt.show(block=False)
        self.real_data = Dataset()
        self.step = 0
        self.writer = ImageMagickWriter(fps=self.fps)
        self.writer.setup(self.figure, file_name, dpi=100)

    def plot_progress(self, gen_net):
        """Plot the progress of the training procedure. This can be called back from the GAN fit method.
        
        :param gan: The GAN we are fitting.
        :param session: The current session of the GAN.
        :param data: The data object from which we are sampling the input data.
        """

        real = self.real_data.next_batch(batch_size=10000)
        r1, r2 = self.ax2.get_xlim()
        x = np.linspace(r1, r2, 10000)[:, np.newaxis]
        g = gen_net(torch.FloatTensor(np.random.randn(10000, 1)))

        self.ax2.clear()
        self.ax2.set_ylim([0, 1])
        self.ax2.set_xlim([0, 8])
        sns.kdeplot(real.numpy().flatten(),
                    shade=True,
                    ax=self.ax2,
                    label='Real data')
        sns.kdeplot(g.detach().numpy().flatten(),
                    shade=True,
                    ax=self.ax2,
                    label='Generated data')
        self.ax2.set_title('Distributions')
        self.ax2.set_title('{} iterations'.format(self.step * 50))
        self.ax2.set_xlabel('Input domain')
        self.ax2.set_ylabel('Probability density')
        self.ax2.legend(loc='upper left', frameon=True)
        self.figure.canvas.draw()
        self.figure.canvas.flush_events()
        self.writer.grab_frame()
        self.step += 1
Ejemplo n.º 3
0
 def __init__(self, file_name, model_name, fps=15):
     """Initialize the helper class.
     
     :param fps: The number of frames per second when saving the gif animation.
     """
     self.fps = fps
     self.figure, (self.ax2) = plt.subplots(1, 1, figsize=(5, 5))
     self.figure.suptitle("{}".format(model_name))
     sns.set(color_codes=True, style='white', palette='colorblind')
     sns.despine(self.figure)
     plt.show(block=False)
     self.real_data = Dataset()
     self.step = 0
     self.writer = ImageMagickWriter(fps=self.fps)
     self.writer.setup(self.figure, file_name, dpi=100)
Ejemplo n.º 4
0
 def save_animation(self):
     if self.last_result is not None:
         filename, format_str = self.file_dialog.getSaveFileName(self, self.tr("Save the animation of this SSU result"), None, self.tr("MPEG-4 Video File (*.mp4);;Graphics Interchange Format (*.gif)"))
         if filename is None or filename == "":
             return
         progress = QProgressDialog(self)
         progress.setRange(0, 100)
         progress.setLabelText(self.tr("Saving Animation [{0} Frames]").format(self.last_result.n_iterations))
         canceled = False
         def save_callback(i, n):
             if progress.wasCanceled():
                 nonlocal canceled
                 canceled = True
                 raise StopIteration()
             progress.setValue((i+1)/n*100)
             QCoreApplication.processEvents()
         self.show_result(self.last_result)
         # plt.rcParams["savefig.dpi"] = 120.0
         if "*.gif" in format_str:
             if not ImageMagickWriter.isAvailable():
                 self.normal_msg.setWindowTitle(self.tr("Error"))
                 self.normal_msg.setText(self.tr("ImageMagick is not installed, please download and install it from its offical website (https://imagemagick.org/index.php)."))
                 self.normal_msg.exec_()
             else:
                 self.animation.save(filename, writer="imagemagick", fps=30, progress_callback=save_callback)
         elif "*.mp4" in format_str:
             if not FFMpegWriter.isAvailable():
                 self.normal_msg.setWindowTitle(self.tr("Error"))
                 self.normal_msg.setText(self.tr("FFMpeg is not installed, please download and install it from its offical website (https://ffmpeg.org/)."))
                 self.normal_msg.exec_()
             else:
                 self.animation.save(filename, writer="ffmpeg", fps=30, progress_callback=save_callback)
         # plt.rcParams["savefig.dpi"] = 300.0
         if not canceled:
             progress.setValue(100)
Ejemplo n.º 5
0
    def __init__(self, save_animation=False, fps=30):
        """Initialize the helper class.

        :param save_animation: Whether the animation should be saved as a gif. Requires the ImageMagick library.
        :param fps: The number of frames per second when saving the gif animation.
        """
        self.save_animation = save_animation
        self.fps = fps
        self.figure, (self.ax1, self.ax2) = plt.subplots(1, 2, figsize=(8, 4))
        self.figure.suptitle("1D GAAN")
        sns.set(color_codes=True, style='white', palette='colorblind')
        sns.despine(self.figure)
        plt.show(block=False)

        if self.save_animation:
            self.writer = ImageMagickWriter(fps=self.fps)
            self.writer.setup(self.figure, 'Toy_1D_GAAN.gif', dpi=100)
Ejemplo n.º 6
0
    def save_animation(self, filename: str = None):
        if self._animation is None:
            return
        self._animation.pause()
        if filename is None:
            filename, format_str = QtWidgets.QFileDialog.getSaveFileName(
                self,
                self.
                tr("Choose a filename to save the animation of this SSU result"
                   ), ".",
                "MPEG-4 Video File (*.mp4);;Html Animation (*.html);;Graphics Interchange Format (*.gif)"
            )
        if filename is None or filename == "":
            return
        progress_dialog = QtWidgets.QProgressDialog(
            self.tr("Saving Animation Frames..."), self.tr("Cancel"), 0, 100,
            self)
        progress_dialog.setWindowTitle("QGrain")
        progress_dialog.setWindowModality(QtCore.Qt.WindowModal)

        def callback(frame_number, total_frames):
            if progress_dialog.wasCanceled():
                raise StopIteration()
            progress_dialog.setValue(int(frame_number / total_frames * 100))
            QtCore.QCoreApplication.processEvents()

        try:
            if filename[-5:] == ".html":
                if not FFMpegWriter.isAvailable():
                    self.show_error(self.tr("FFMpeg is not installed."))
                else:
                    self.show_info(
                        self.
                        tr("Rendering the animation to a html5 video, it will take several minutes."
                           ))
                    html = self._animation.to_html5_video()
                    with open(filename, "w") as f:
                        f.write(html)
            elif filename[-4:] == ".gif":
                if not ImageMagickWriter.isAvailable():
                    self.show_error(self.tr("ImageMagick is not installed."))
                else:
                    self._animation.save(filename,
                                         writer="imagemagick",
                                         fps=10,
                                         progress_callback=callback)
            elif filename[-4:] == ".mp4":
                if not FFMpegWriter.isAvailable():
                    self.show_error(self.tr("FFMpeg is not installed."))
                else:
                    self._animation.save(filename,
                                         writer="ffmpeg",
                                         fps=10,
                                         progress_callback=callback)
        except StopIteration:
            self.logger.info("The saving task was canceled.")
        finally:
            progress_dialog.close()
Ejemplo n.º 7
0
    def save_animation(self, fps=5, time=5, *, filename="robot_animation.gif"):
        original_position = self.theta
        number_of_frames = self.path.shape[1]

        frames_to_animate = fps * time
        if number_of_frames < frames_to_animate:
            step = 1
            fps = max(1, time // number_of_frames)
        else:
            step = number_of_frames // frames_to_animate

        fig = plt.figure()
        robot_animation = ImageMagickWriter(fps=fps)

        with robot_animation.saving(fig, filename, dpi=150):
            for column in np.arange(start=0, stop=number_of_frames, step=step):
                self.theta = np.array(self.path[:, column])
                self.plot(show=False)
                robot_animation.grab_frame()
                fig.clear()
                self._set_plot_options()

        self.theta = original_position  # ??
        plt.close()
Ejemplo n.º 8
0
    def __init__(self, save_animation=False, fps=30):
        """Initialize the helper class.

        :param save_animation: Whether the animation should be saved as a gif. Requires the ImageMagick library.
        :param fps: The number of frames per second when saving the gif animation.
        """
        self.save_animation = save_animation
        self.fps = fps
        self.figure, (self.ax1, self.ax2) = plt.subplots(1, 2, figsize=(8, 4))
        self.figure.suptitle("1D GAAN")
        sns.set(color_codes=True, style='white', palette='colorblind')
        sns.despine(self.figure)
        plt.show(block=False)

        if self.save_animation:
            self.writer = ImageMagickWriter(fps=self.fps)
            self.writer.setup(self.figure, 'Toy_1D_GAAN.gif', dpi=100)
Ejemplo n.º 9
0
def _anim_rst(anim, image_path, gallery_conf):
    from matplotlib.animation import ImageMagickWriter
    # output the thumbnail as the image, as it will just be copied
    # if it's the file thumbnail
    fig = anim._fig
    image_path = image_path.replace('.png', '.gif')
    fig_size = fig.get_size_inches()
    thumb_size = gallery_conf['thumbnail_size']
    use_dpi = round(min(t_s / f_s for t_s, f_s in zip(thumb_size, fig_size)))
    # FFmpeg is buggy for GIFs
    if ImageMagickWriter.isAvailable():
        writer = 'imagemagick'
    else:
        writer = None
    anim.save(image_path, writer=writer, dpi=use_dpi)
    html = anim._repr_html_()
    if html is None:  # plt.rcParams['animation.html'] == 'none'
        html = anim.to_jshtml()
    html = indent(html, '         ')
    return _ANIMATION_RST.format(html)
Ejemplo n.º 10
0
def display_frames_as_gif(dst_path, frames):
    """
    Displays a list of frames as a gif, with controls
    """
    plt.figure(figsize=(frames[0].shape[1] // 100, frames[0].shape[0] // 100))
    patch = plt.imshow(frames[0])
    plt.axis('off')

    def animate(i):
        patch.set_data(frames[i])

    dst_path = Path(dst_path)
    ext = dst_path.suffix[1:]
    dst_path.parent.mkdir(parents=True, exist_ok=True)

    if ext == 'gif':
        writer = ImageMagickWriter()
    elif ext == 'mp4':
        writer = FFMpegWriter()
    else:
        raise ValueError

    anim = FuncAnimation(plt.gcf(), animate, frames=len(frames), interval=50)
    anim.save(str(dst_path), writer=writer)
Ejemplo n.º 11
0
class Visualization(object):
    """Helper class to visualize the progress of the GAN training procedure.
    """
    def __init__(self, save_animation=False, fps=30):
        """Initialize the helper class.

        :param save_animation: Whether the animation should be saved as a gif. Requires the ImageMagick library.
        :param fps: The number of frames per second when saving the gif animation.
        """
        self.save_animation = save_animation
        self.fps = fps
        self.figure, (self.ax1, self.ax2) = plt.subplots(1, 2, figsize=(8, 4))
        self.figure.suptitle("1D GAAN")
        sns.set(color_codes=True, style='white', palette='colorblind')
        sns.despine(self.figure)
        plt.show(block=False)

        if self.save_animation:
            self.writer = ImageMagickWriter(fps=self.fps)
            self.writer.setup(self.figure, 'Toy_1D_GAAN.gif', dpi=100)

    def plot_progress(self, gan, session, data):
        """Plot the progress of the training procedure. This can be called back from the GAN fit method.

        :param gan: The GAN we are fitting.
        :param session: The current session of the GAN.
        :param data: The data object from which we are sampling the input data.
        """

        # Plot the training curve.
        steps = gan.log_interval * np.arange(len(gan.loss_d_curve))
        self.ax1.clear()
        self.ax1.plot(steps, gan.loss_d_curve, label='D loss')
        self.ax1.plot(steps, gan.loss_g_curve, label='G loss')

        self.ax1.set_title('Learning curve')
        self.ax1.set_xlabel('Iteration')

        if gan.model == 'gan' or gan.model == 'rgan' or gan.model == 'mdgan' or gan.model == 'vaegan' or gan.model == 'gaan':
            title = 'Loss'
        elif gan.model == 'wgangp':
            title = 'Negative critic loss'
        self.ax1.set_ylabel(title)

        # Plot the generated and the input data distributions.
        g = gan.sample(session)
        r1, r2 = self.ax2.get_xlim()
        x = np.linspace(r1, r2, gan.n_sample)[:, np.newaxis]

        critic = gan.dreal(session, x)

        if gan.model == 'wgangp':
            # Normalize the critic to be in [0, 1] to make visualization easier.
            critic = (critic - critic.min()) / (critic.max() - critic.min())
        d, _ = data.next_batch(gan.n_sample)
        if gan.model == 'gaan' or gan.model == 'rgan' or gan.model == 'mdgan':
            r = gan.reconstruct(session, d)
            e = gan.encode(session, d)

        self.ax2.clear()
        self.ax2.set_ylim([0, 1])
        self.ax2.set_xlim([-8, 8])
        if gan.model == 'gan' or gan.model == 'rgan' or gan.model == 'mdgan' or gan.model == 'gaan' or gan.model == 'vaegan':
            self.ax2.plot(x, critic, label='Decision boundary')
        elif gan.model == 'wgangp':
            self.ax2.plot(x, critic, label='Critic (normalized)')
        sns.kdeplot(d.flatten(), shade=True, ax=self.ax2, label='Real data')

        sns.kdeplot(g.flatten(),
                    shade=True,
                    ax=self.ax2,
                    label='Generated data')
        self.ax2.set_title('Distributions')
        self.ax2.set_xlabel('Input domain')
        self.ax2.set_ylabel('Probability density')
        self.ax2.legend(loc='upper left', frameon=True)

        if len(steps) - 1 == gan.n_step // gan.log_interval:
            if self.save_animation:
                wait_seconds = 3
                [
                    self.writer.grab_frame()
                    for _ in range(wait_seconds * self.fps)
                ]
                self.writer.finish()
            plt.show()
        else:
            self.figure.canvas.draw()
            self.figure.canvas.flush_events()
            if self.save_animation:
                self.writer.grab_frame()
Ejemplo n.º 12
0
train_y = np.array(b)
ax.scatter(train_x[:, 0],
           train_x[:, 1],
           train_x[:, 2],
           s=5,
           c=create_color_list(train_y))
scat = ax.scatter(weights[:, 0],
                  weights[:, 1],
                  weights[:, 2],
                  c='k',
                  marker='^')

max_iterations = 100
learning_rate = 0.005
old_weights = np.zeros(weights.shape)
writer = ImageMagickWriter(fps=4)
file_name = "kohonens.gif"
try:
    with writer.saving(fig, file_name, dpi=100):
        for k in range(max_iterations):
            neuron_class = 4 * np.ones(weight_size)
            print(k)
            random.shuffle(train_set)
            for x, y in train_set:
                d = np.zeros(weight_size)
                for i in range(weight_size):
                    d[i] = np.linalg.norm(x - weights[i, :])
                winner_index = np.argmin(d)
                neuron_class[winner_index] = y
                h = neighbor(k, winner_index)
                for j in range(weight_size):
Ejemplo n.º 13
0
def generate_rotating_pose(out_file, pose, joint_set, initial_func=None):
    """
    Creates a gif that rotates the camera around `pose`. You might want to call ``plt.ioff()`` before
    using this function.

    Parameters:
        out_file: output file name
        pose: ndarray(nJoints,3), coordinates are in x, y, z order. Y grows downwards.
        joint_set: joint order of `pose`
        initial_func: if not None, a function that generates the initial plot that is going to be rotated. If provided, pose and
                        joint_set must be NaN
    """
    if initial_func is not None:
        assert pose is None, "if initial_func i set, pose must be None"
        assert joint_set is None, "if initial_func i set, joint_set must be None"

    start_azim = -190
    end_azim = -0
    azim_steps = 30

    start_elev = 5
    end_elev = 70
    elev_steps = 15

    total_steps = azim_steps * 2 + elev_steps * 2

    def update(i):
        middle_azim = (start_azim + end_azim) / 2
        middle_elev = (start_elev + end_elev) / 2

        if i < azim_steps / 2:
            ax.view_init(azim=middle_azim + (start_azim - middle_azim) * i / azim_steps * 2, elev=middle_elev)
        if azim_steps / 2 <= i < azim_steps * 1.5:
            ax.view_init(azim=start_azim + (end_azim - start_azim) * (i - azim_steps / 2) / azim_steps, elev=middle_elev)
        elif azim_steps * 1.5 <= i < azim_steps * 2:
            ax.view_init(azim=end_azim + (middle_azim - end_azim) * (i - azim_steps * 1.5) / azim_steps * 2, elev=middle_elev)

        elif azim_steps * 2 <= i < azim_steps * 2 + elev_steps / 2:
            ax.view_init(azim=middle_azim, elev=middle_elev + (start_elev - middle_elev) * (i - azim_steps * 2) / elev_steps * 2)
        elif azim_steps * 2 + elev_steps / 2 <= i < azim_steps * 2 + elev_steps * 1.5:
            ax.view_init(azim=middle_azim, elev=start_elev + (end_elev - start_elev) *
                                                (i - azim_steps * 2 - elev_steps / 2) / elev_steps)
        elif azim_steps * 2 + elev_steps * 1.5 <= i:
            ax.view_init(azim=middle_azim, elev=end_elev + (middle_elev - end_elev) *
                                                (i - azim_steps * 2 - elev_steps * 1.5) / elev_steps * 2)

    def first_frame():
        show3Dpose(pose, joint_set, ax, invert_vertical=True, linewidth=1, set_axis=False, hide_panes=False)
        RADIUS = 900
        xroot, yroot, zroot = np.mean(pose[:, joint_set.index_of('hip'), :], axis=0)
        ax.set_xlim3d([-RADIUS + xroot, RADIUS + xroot])
        ax.set_ylim3d([-RADIUS + zroot, RADIUS + zroot])
        ax.set_zlim3d([-RADIUS + yroot, RADIUS + yroot])
        ax.invert_zaxis()
        ax.set_aspect('equal')

    if initial_func is None:
        initial_func = first_frame

    ax = get_3d_axes()
    plt.tight_layout()
    fps = 10
    anim = FuncAnimation(plt.gcf(), update, frames=total_steps,
                         interval=1000 / fps, init_func=initial_func, repeat=False)

    writer = ImageMagickWriter(fps=fps)
    anim.save(out_file, writer=writer)
Ejemplo n.º 14
0
def animate(graphics,
            fig,
            n_steps=None,
            export_path='./',
            export_name='animation',
            overwrite=False,
            format='gif',
            fps=5,
            writer=None):
    """Animation helper function.

    Call this function with a configured :py:class:`Graphics` instance and the respective figure.
    This function will export an animation with the results from the :py:class:`do_mpc.data.Data` object.

    Either specify ``format`` and ``fps`` or supply a configured writer (e.g. ``ImageMagickWriter`` for gifs).


    :param graphics: Configured :py:class:`Graphics` instance.
    :type graphics: :py:class:`Graphics`
    :param fig: Matplotlib Figure.
    :type fig: Matplotlib Figure.
    :param n_steps: (Optional) number of time steps for the animation.
    :type n_steps: int
    :param export_path: (Optional) Path where to export the animation. Directory will be created if it doesn't exist.
    :type export_path: str
    :param export_name: (Optional) Name of the resulting animation (gif/mp4) file.
    :type export_name: str
    :param overwrite: (Optional) Check if export_name already exists in the supplied directory and overwrite or alter export_name.
    :type overwrite: bool
    :param format: (Optional) Choose between gif or mp4.
    :type format: str
    :param fps: (Optional) Frames per second for the resulting animation.
    :type fps: int
    :param writer: (Optional) If supplied, the ``fps`` and ``format`` argument are discarded. Use this to configure your own writer.
    :type writer: writer class

    :return: None
    """

    if n_steps == None:
        n_steps = graphics.data['_time'].shape[0]

    def update(t_ind):
        print('Writing frame: {} of {}.'.format(t_ind, n_steps))
        graphics.plot_results(t_ind=t_ind)
        graphics.plot_predictions(t_ind=t_ind)
        graphics.reset_axes()
        lines = graphics.result_lines.full + graphics.pred_lines.full
        return lines

    anim = FuncAnimation(fig, update, frames=n_steps, blit=True)

    if writer == None:
        if 'mp4' in format:
            writer = FFMpegWriter(fps=fps, extra_args=['-vcodec', 'libx264'])
            extension = 'mp4'

        elif 'gif' in format:
            writer = ImageMagickWriter(fps=fps)
            extension = 'gif'
        else:
            raise Exception(
                'Invalid output format {}. Please choose mp4 or gif.'.format(
                    format))
    else:
        extension = ''

    if not os.path.exists(export_path):
        os.makedirs(export_path)
    # Dynamically generate new result name if name is already taken in result_path.
    if overwrite == False:
        ind = 1
        ext_export_name = export_name
        while os.path.isfile(export_path + ext_export_name + '.pkl'):
            ext_export_name = '{ind:03d}_{name}'.format(ind=ind,
                                                        name=export_name)
            ind += 1
        export_name = ext_export_name

    anim.save('{}{}.{}'.format(export_path, export_name, extension),
              writer=writer)
Ejemplo n.º 15
0
class Visualization(object):
    """Helper class to visualize the progress of the GAN training procedure.
    """
    def __init__(self, save_animation=False, fps=30):
        """Initialize the helper class.

        :param save_animation: Whether the animation should be saved as a gif. Requires the ImageMagick library.
        :param fps: The number of frames per second when saving the gif animation.
        """
        self.save_animation = save_animation
        self.fps = fps
        self.figure, (self.ax1, self.ax2) = plt.subplots(1, 2, figsize=(8, 4))
        self.figure.suptitle("1D GAAN")
        sns.set(color_codes=True, style='white', palette='colorblind')
        sns.despine(self.figure)
        plt.show(block=False)

        if self.save_animation:
            self.writer = ImageMagickWriter(fps=self.fps)
            self.writer.setup(self.figure, 'Toy_1D_GAAN.gif', dpi=100)

    def plot_progress(self, gan, session, data):
        """Plot the progress of the training procedure. This can be called back from the GAN fit method.

        :param gan: The GAN we are fitting.
        :param session: The current session of the GAN.
        :param data: The data object from which we are sampling the input data.
        """

        # Plot the training curve.
        steps = gan.log_interval * np.arange(len(gan.loss_d_curve))
        self.ax1.clear()
        self.ax1.plot(steps, gan.loss_d_curve, label='D loss')
        self.ax1.plot(steps, gan.loss_g_curve, label='G loss')
        
        self.ax1.set_title('Learning curve')
        self.ax1.set_xlabel('Iteration')

        if gan.model == 'gan' or gan.model == 'rgan' or gan.model == 'mdgan' or gan.model == 'vaegan' or gan.model == 'gaan':
            title = 'Loss'
        elif gan.model == 'wgangp':
            title = 'Negative critic loss'
        self.ax1.set_ylabel(title)

        # Plot the generated and the input data distributions.
        g = gan.sample(session)
        r1,r2 = self.ax2.get_xlim()
        x = np.linspace(r1, r2, gan.n_sample)[:, np.newaxis]

        critic = gan.dreal(session, x)

        if gan.model == 'wgangp':
            # Normalize the critic to be in [0, 1] to make visualization easier.
            critic = (critic - critic.min()) / (critic.max() - critic.min())
        d, _ = data.next_batch(gan.n_sample)
        if gan.model == 'gaan' or gan.model == 'rgan' or gan.model == 'mdgan':
            r    = gan.reconstruct(session, d)
            e    = gan.encode(session, d)
            
        self.ax2.clear()
        self.ax2.set_ylim([0, 1])
        self.ax2.set_xlim([-8, 8])
        if gan.model == 'gan' or gan.model == 'rgan' or gan.model == 'mdgan' or gan.model == 'gaan' or gan.model == 'vaegan':
            self.ax2.plot(x, critic, label='Decision boundary')
        elif gan.model == 'wgangp':
            self.ax2.plot(x, critic, label='Critic (normalized)')
        sns.kdeplot(d.flatten(), shade=True, ax=self.ax2, label='Real data')
       
        sns.kdeplot(g.flatten(), shade=True, ax=self.ax2, label='Generated data')
        self.ax2.set_title('Distributions')
        self.ax2.set_xlabel('Input domain')
        self.ax2.set_ylabel('Probability density')
        self.ax2.legend(loc='upper left', frameon=True)

        if len(steps) - 1 == gan.n_step // gan.log_interval:
            if self.save_animation:
                wait_seconds = 3
                [self.writer.grab_frame() for _ in range(wait_seconds * self.fps)]
                self.writer.finish()
            plt.show()
        else:
            self.figure.canvas.draw()
            self.figure.canvas.flush_events()
            if self.save_animation:
                self.writer.grab_frame()
Ejemplo n.º 16
0
ax.annotate(
    'Source:Johns Hopkins School of Public Health\nCode:https://github.com/kriskirimi/Covid2019EA',
    fontsize=7.5,
    color='#6b6a6a',
    style='italic',
    xy=(0, 0),
    xycoords=('axes fraction'),
    textcoords=('offset points'),
    xytext=((00, -52)))


def animate(i):
    line1.set_data(x[:i], y1[:i])
    line2.set_data(x[:i], y2[:i])
    line3.set_data(x[:i], y3[:i])
    line4.set_data(x[:i], y4[:i])
    line5.set_data(x[:i], y5[:i])
    line6.set_data(x[:i], y6[:i])
    line7.set_data(x[:i], y7[:i])
    line8.set_data(x[:i], y8[:i])
    return [line1, line2, line3, line4, line5, line6, line7, line8]


ani = FuncAnimation(fig, animate, frames=len(x), interval=400)
writer = ImageMagickWriter(fps=20)
ani.save(
    r'C:\Users\KIRIMI\Documents\GitHub\Covid2019EA\EA Covid19 Confirmed Cases.gif',
    writer='imagemagick')
plt.show()
# plt.claose()
Ejemplo n.º 17
0
ax.set_yticks([])
im = ax.imshow(get_mode(modes, 0), animated=True)

def update(frame):
    img = get_mode(modes, frame)
    vmin, vmax = get_data_range(img)

    im.set_clim(vmin, vmax)
    im.set_array(img)
    ax.collections = []
    ax.contour(img, np.arange(-.01, .01, .0025), colors='black', linewidths=1)
    ax.add_artist(plt.Circle((49, 99), 25, color='black', zorder=10))
    return im,

ani = FuncAnimation(fig, update, modes.shape[1], blit=True)
ani.save(OUTPUT_DIR + 'dmd_cylinder_modes.gif', ImageMagickWriter())

# %% Benchmarks PEViD
NUM_WARMUPS = 3
NUM_RUNS = 3
NUM_STEPS = 3
resolutions = [(3840, 2160), (2560, 1440), (1920, 1080), (1280, 720), (960, 540), (640, 360)]
widths = [120, 100, 80, 60, 40, 20]
res_fixed = (1920, 1080)
width_fixed = 80

fns = [lib.svd, lib.dmd, lib.bgs]
fns_update = [lib.svd_update, lib.dmd_update, lib.bgs_update]
idx = pd.MultiIndex.from_product([['svd', 'dmd', 'bgs'], ['cpu', 'gpu'], ['stat', 'strm'], range(NUM_RUNS + 1)])

def run_benchmark(x, times):
Ejemplo n.º 18
0
ax[1].legend(label_lines, ['T_R', 'T_K'])

fig.align_ylabels()
fig.tight_layout()

output_format = 'gif'


def update(t_ind):
    print('Writing frame: {}.'.format(t_ind))
    mpc_graphics.plot_results(t_ind=t_ind)
    mpc_graphics.plot_predictions(t_ind=t_ind)
    mpc_graphics.reset_axes()
    lines = mpc_graphics.result_lines.full
    return lines


n_steps = results['mpc']['_time'].shape[0]

anim = FuncAnimation(fig, update, frames=n_steps, blit=True)

if 'mp4' in output_format:
    FFWriter = FFMpegWriter(fps=5, extra_args=['-vcodec', 'libx264'])
    anim.save('anim.mp4', writer=FFWriter)
elif 'gif' in output_format:
    gif_writer = ImageMagickWriter(fps=5,
                                   extra_args=['-MAGICK_MEMORY_LIMIT 4GiB'])
    anim.save('anim.gif', writer=gif_writer)
else:
    plt.show()
Ejemplo n.º 19
0
    line_i.set_linewidth(5)

# Add labels
label_lines = mpc_graphics.result_lines[
    '_x', 'C_a'] + mpc_graphics.result_lines['_x', 'C_b']
ax[0].legend(label_lines, ['C_a', 'C_b'])
label_lines = mpc_graphics.result_lines[
    '_x', 'T_R'] + mpc_graphics.result_lines['_x', 'T_K']
ax[1].legend(label_lines, ['T_R', 'T_K'])

fig.align_ylabels()

from matplotlib.animation import FuncAnimation, ImageMagickWriter


def update(t_ind):
    print('Writing frame: {}.'.format(t_ind), end='\r')
    mpc_graphics.plot_results(t_ind=t_ind)
    mpc_graphics.plot_predictions(t_ind=t_ind)
    mpc_graphics.reset_axes()
    lines = mpc_graphics.result_lines.full
    return lines


n_steps = mpc.data['_time'].shape[0]

anim = FuncAnimation(fig, update, frames=n_steps, blit=False)

gif_writer = ImageMagickWriter(fps=5)
anim.save('anim_CSTR.gif', writer="imagemagick")
Ejemplo n.º 20
0

# Load the model and an example
model = LevelSetMachineLearning.load('./LSML-model.pkl')
example = model.testing_data[13]


# Set up plotting for the movie frames
fig, ax = plt.subplots(1, 1, figsize=(2, 2))
ax.axis('off')
ax.imshow(example.img, cmap=plt.cm.gray, interpolation='bilinear')
lines = []


# Set up the movie writer and grab the frame at initialization
writer = ImageMagickWriter(fps=5)
writer.setup(fig, 'evolution.gif', 100)
writer.grab_frame()


# Define the callback function to be used during segmentation evolution
def update_movie(i, u):

    if i % 10 != 0:
        return

    for line in lines:
        line.remove()
    lines.clear()

    lines.extend(