1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- #!/usr/bin/env python3
- # -*- coding: utf-8 -*-
- """
- Created on Fri Oct 12 08:56:46 2018
- @author: galizia
- """
- import numpy as np
- #import FID_names as FID_names
- from time import time
- from datetime import timedelta
- #import datetime
- #import numpy as np
- #import pandas as pd
- #import os
- #from ggplot import *
- # import struct
- import matplotlib.pyplot as plt
- #from matplotlib.backends.backend_pdf import PdfPages
- from moviepy.editor import VideoClip
- from moviepy.video.io.bindings import mplfig_to_npimage
- def calc_timetrace(imaging_Data, mask):
- ##section to flatten array with mask
- xpixels, ypixels, frames = imaging_Data.shape
- timetrace = np.zeros(frames)
- mask_sum = mask.sum()
- for i in range(frames): #I'm sure there is an inbuild way to get the time trace, I'll search for it later
- # np.mean(array, axis=(1,2))
- # temp = mask * imaging_Data[:,:,i]
- temp = np.multiply(mask,imaging_Data[:,:,i]) #is this multiplication better?
- timetrace[i] = temp.sum()/mask_sum
- return timetrace
- #end calc_timetrace
- def secondsToStr(t):
- return str(timedelta(seconds=t))
- def log(s='start counting', elapsed=None):
- start = time()
- line = "="*42
- print(line)
- print(secondsToStr(time()), '-', s)
- if elapsed:
- print("Elapsed time:", elapsed)
- print(line)
- print()
- return start
- def endlog(start, s="End Program"):
- end = time()
- elapsed = end-start
- log(s, secondsToStr(elapsed))
- def now():
- return secondsToStr(time())
- def save_movie_file_xyt(dataMtrx, fps=24, bitrate="256k", movie_filename=''):
- #Oct18: procedure adapted from FID_out
- # dataMtrx has shape x,y,t
- # lcl_flags needed for filename, if filename is given, ignore lcl_flags
- start = log("save_movie_file_test2")
- if movie_filename == '':
- movie_filename = 'dummyMovie.mp4'
- zlen = dataMtrx.shape[2]
- # scale matrix to min, max
- scaleMin = dataMtrx.min()
- scaleMax = dataMtrx.max()
- duration = (zlen-1)/fps #frames/fps
- fig = plt.figure()
- ax = fig.add_subplot(111)
- fig.tight_layout(pad=1.0)
- def make_frame(t):
- #gives frame at time t
- ax.clear() #without this, it is very slow
- ax.axis('off')
- #ax.set_title("Frame " + str(int(zlen/duration*t)) + "/" + str(zlen))
- ax.imshow(dataMtrx[:,:,int(zlen/duration*t)], clim=(scaleMin, scaleMax))
- #fig.colorbar()
- return mplfig_to_npimage(fig)
- animation = VideoClip(make_frame, duration=duration)
- # export as a video file
- # animation.write_gif(movie_filename+'.gif', fps=fps) #gif is larger
- animation.write_videofile(movie_filename, fps=fps, bitrate=bitrate)
- plt.close()
- endlog(start, "save_movie_file_xyt")
|