def plot_average_frequency_heatmaps(inputfile, outputfolder, group='Group', cutoff=None, logscale=False, id_col='TrackID'): """ Plot the Fourier frequencies of spectral components of different groups as a heatmap. Parameters ---------- inputfile : str Path to the file with spectral data. outputfolder : str Directory to save the plotted heat maps. group : str, optional Column in the input data sheet to use for grouping. Default is 'Group'. cutoff : int, optional The number of degrees to display. If None, all degrees will be displayed. logscale : bool, optional If True, the natural logarithm of the value will be displayed. Default is False. id_col : str Column in the input data sheet to group connected time points. Default is 'TrackID' """ filelib.make_folders([os.path.dirname(outputfolder)]) stat = pd.read_csv(inputfile, sep='\t', index_col=0) stat.loc[:, 'Time'] = np.int_(np.round_(stat['Time'] / 10.)) * 10 if cutoff is not None: stat = stat[stat['degree'] <= cutoff] frequency_stat = pd.DataFrame() for gr in stat[group].unique(): substat = stat[stat[group] == gr] for id in substat[id_col].unique(): subsubstat = substat[substat[id_col] == id] time_spectrum = TimeSpectrum() for t in subsubstat['Time'].unique(): sp = Spectrum() sp.harmonics_csv = subsubstat[subsubstat['Time'] == t] time_spectrum.add_spectrum(sp, timepoint=t) time_spectrum.fourier_analysis(value='amplitude') time_spectrum.frequencies['Group'] = gr frequency_stat = pd.concat([frequency_stat, time_spectrum.frequencies], ignore_index=True) frequency_stat = frequency_stat.groupby(['Group', 'frequency', 'harmonic']).mean().reset_index() for gr in stat[group].unique(): time_spectrum = TimeSpectrum() time_spectrum.frequencies = frequency_stat[frequency_stat['Group'] == gr] pl = time_spectrum.frequency_heatmap(value='amplitude', logscale=logscale) if pl is not None: pl.savefig(outputfolder + gr + '.png')
def test_fourier(self): sp = Spectrum() sp.from_surface(surface=np.ones([10, 10])) sp.convert_to_csv() tsp = TimeSpectrum() for i in range(10): tsp.add_spectrum(sp) tsp.fourier_analysis() tsp.save_frequencies_to_csv('data/test_data/time_spectrum_freq.csv') self.assertEqual(os.path.exists('data/test_data/time_spectrum_freq.csv'), True) pl = tsp.frequency_heatmap() pl.savefig('data/test_data/frequency_heatmap.png') self.assertEqual(os.path.exists('data/test_data/frequency_heatmap.png'), True) shutil.rmtree('data/test_data/')