diff --git a/CDTools/__init__.py b/CDTools/__init__.py index ae7ca77..df67147 100644 --- a/CDTools/__init__.py +++ b/CDTools/__init__.py @@ -1,5 +1,3 @@ -from __future__ import division, print_function, absolute_import - from CDTools import tools from CDTools import datasets from CDTools import models diff --git a/CDTools/datasets/__init__.py b/CDTools/datasets/__init__.py index 40f267f..e3aa23c 100644 --- a/CDTools/datasets/__init__.py +++ b/CDTools/datasets/__init__.py @@ -25,8 +25,6 @@ dataset before attempting to do so """ -from __future__ import division, print_function, absolute_import - # I don't believe that __all__ really needed, but it's nice to define it # to be explicit that import * is safe __all__ = ['CDataset','Ptycho2DDataset','PolarizedPtycho2DDataset'] diff --git a/CDTools/datasets/base.py b/CDTools/datasets/base.py index ef253ba..bcc6b1f 100644 --- a/CDTools/datasets/base.py +++ b/CDTools/datasets/base.py @@ -13,29 +13,15 @@ of the following functions: """ -from __future__ import division, print_function, absolute_import - -import numpy as np import torch as t from copy import copy import h5py import pathlib from CDTools.tools import data as cdtdata -from CDTools.tools import plotting from torch.utils import data as torchdata -from matplotlib import pyplot as plt -from matplotlib.widgets import Slider -from matplotlib import ticker - __all__ = ['CDataset'] -# -# This loads and stores all the kinds of metadata that are common to -# All different kinds of diffraction experiments -# Other datasets can subclass this and not worry about loading and -# saving that metadata. -# class CDataset(torchdata.Dataset): """ The base dataset class which all other datasets subclass @@ -47,7 +33,7 @@ class CDataset(torchdata.Dataset): storage of the metadata portions of .cxi files, as well as the tools needed to allow for easy mixing of data on the CPU and GPU. """ - + def __init__(self, entry_info=None, sample_info=None, wavelength=None, detector_geometry=None, mask=None, @@ -55,9 +41,9 @@ class CDataset(torchdata.Dataset): """The __init__ function allows construction from python objects. - The detector_geometry dictionary is defined to have the + The detector_geometry dictionary is defined to have the entries defined by the outputs of data.get_detector_geometry. - + Parameters ---------- @@ -71,13 +57,13 @@ class CDataset(torchdata.Dataset): A dictionary containing the various detector geometry parameters mask : array - A mask for the detector, defined as 1 for live pixels, 0 + A mask for the detector, defined as 1 for live pixels, 0 for dead background : array - An initial guess for the not-previously-subtracted + An initial guess for the not-previously-subtracted detector background """ - + # Force pass-by-value-like behavior to stop strangeness self.entry_info = copy(entry_info) self.sample_info = copy(sample_info) @@ -91,38 +77,38 @@ class CDataset(torchdata.Dataset): self.background = t.tensor(background, dtype=t.float32) else: self.background = None - + self.get_as(device='cpu') - - def to(self,*args,**kwargs): + + def to(self, *args, **kwargs): """Sends the relevant data to the given device and dtype This function sends the stored mask and background to the specified device and dtype - + Accepts the same parameters as torch.Tensor.to """ # The mask should always stay a uint8, but it should switch devices mask_kwargs = copy(kwargs) try: mask_kwargs.pop('dtype') - except KeyError as r: + except KeyError: pass - + if self.mask is not None: - self.mask = self.mask.to(*args,**mask_kwargs) + self.mask = self.mask.to(*args,**mask_kwargs) if self.background is not None: - self.background = self.background.to(*args,**kwargs) - + self.background = self.background.to(*args,**kwargs) + def get_as(self, *args, **kwargs): """Sets the dataset to return data on the given device and dtype - + Oftentimes there isn't room to store an entire dataset on a GPU, but it is still worth running the calculation on the GPU even with the overhead incurred by transferring data back and forth. In that - case, get_as can be used instead of to, to declare a set of + case, get_as can be used instead of to, to declare a set of device and dtype that the data should be returned as, whenever it is accessed through the __getitem__ function (as it would be in any reconstructions). diff --git a/CDTools/datasets/polarized_ptycho_2d_dataset.py b/CDTools/datasets/polarized_ptycho_2d_dataset.py index 01d21d2..1063afc 100644 --- a/CDTools/datasets/polarized_ptycho_2d_dataset.py +++ b/CDTools/datasets/polarized_ptycho_2d_dataset.py @@ -1,16 +1,10 @@ -from __future__ import division, print_function, absolute_import import numpy as np import torch as t -from copy import copy import h5py import pathlib -from CDTools.datasets import CDataset, Ptycho2DDataset +from CDTools.datasets import Ptycho2DDataset from CDTools.tools import data as cdtdata from CDTools.tools import plotting -from torch.utils import data as torchdata -from matplotlib import pyplot as plt -from matplotlib.widgets import Slider -from matplotlib import ticker __all__ = ['PolarizedPtycho2DDataset'] @@ -18,7 +12,7 @@ __all__ = ['PolarizedPtycho2DDataset'] class PolarizedPtycho2DDataset(Ptycho2DDataset): """The standard dataset for a 2D ptychography scan - Subclasses datasets.CDataset + Subclasses datasets.Ptycho2DDataset This class loads and saves 2D ptychography scan data from .cxi files. It should save and load files compatible with most reconstruction @@ -122,7 +116,7 @@ class PolarizedPtycho2DDataset(Ptycho2DDataset): # perhaps there is a way but I couldn't figure it out. @classmethod def from_cxi(cls, cxi_file): - """Generates a new CDataset from a .cxi file directly + """Generates a new PolarizedPtycho2DDataset from a .cxi file directly This generates a new PolarizedPtycho2DDataset from a .cxi file storing a 2D ptychography scan. diff --git a/CDTools/datasets/ptycho_2d_dataset.py b/CDTools/datasets/ptycho_2d_dataset.py index 0902602..f2c1c76 100644 --- a/CDTools/datasets/ptycho_2d_dataset.py +++ b/CDTools/datasets/ptycho_2d_dataset.py @@ -1,17 +1,11 @@ -from __future__ import division, print_function, absolute_import import numpy as np import torch as t from copy import copy import h5py import pathlib - from CDTools.datasets import CDataset from CDTools.tools import data as cdtdata from CDTools.tools import plotting -from torch.utils import data as torchdata -from matplotlib import pyplot as plt -from matplotlib.widgets import Slider -from matplotlib import ticker __all__ = ['Ptycho2DDataset'] @@ -125,7 +119,7 @@ class Ptycho2DDataset(CDataset): # perhaps there is a way but I couldn't figure it out. @classmethod def from_cxi(cls, cxi_file): - """Generates a new CDataset from a .cxi file directly + """Generates a new Ptycho2DDataset from a .cxi file directly This generates a new Ptycho2DDataset from a .cxi file storing a 2D ptychography scan. diff --git a/CDTools/models/__init__.py b/CDTools/models/__init__.py index 37ad0e9..49dcca2 100644 --- a/CDTools/models/__init__.py +++ b/CDTools/models/__init__.py @@ -22,7 +22,7 @@ defining a new ptychography model before attempting to do so. # I don't believe that __all__ really needed, but it's nice to define it # to be explicit that import * is safe -#__all__ = ['CDIModel', 'SimplePtycho', 'FancyPtycho', 'Bragg2DPtycho', 'SMatrixPtycho', 'RPI'] +__all__ = ['CDIModel', 'SimplePtycho', 'FancyPtycho', 'PolarizedFancyPtycho', 'Bragg2DPtycho', 'Multislice2DPtycho', 'RPI'] from CDTools.models.base import CDIModel from CDTools.models.simple_ptycho import SimplePtycho @@ -31,5 +31,7 @@ from CDTools.models.polarized_fancy_ptycho import PolarizedFancyPtycho from CDTools.models.bragg_2d_ptycho import Bragg2DPtycho from CDTools.models.multislice_2d_ptycho import Multislice2DPtycho from CDTools.models.rpi import RPI + +# Still needs to be updated for the new complex numbers #from CDTools.models.s_matrix_ptycho import SMatrixPtycho diff --git a/CDTools/models/base.py b/CDTools/models/base.py index 3c26947..a908638 100644 --- a/CDTools/models/base.py +++ b/CDTools/models/base.py @@ -28,8 +28,6 @@ loss """ -from __future__ import division, print_function, absolute_import - import torch as t from torch.utils import data as torchdata from matplotlib import pyplot as plt @@ -39,11 +37,8 @@ import numpy as np import threading import queue import time -#import pytorch_warmup from .complex_adam import MyAdam from .complex_lbfgs import MyLBFGS -from matplotlib.backends.backend_pdf import PdfPages - __all__ = ['CDIModel'] diff --git a/CDTools/models/bragg_2d_ptycho.py b/CDTools/models/bragg_2d_ptycho.py index 650b5ab..43ce500 100644 --- a/CDTools/models/bragg_2d_ptycho.py +++ b/CDTools/models/bragg_2d_ptycho.py @@ -1,5 +1,3 @@ -from __future__ import division, print_function, absolute_import - import torch as t from CDTools.models import CDIModel from CDTools.datasets import Ptycho2DDataset diff --git a/CDTools/models/fancy_ptycho.py b/CDTools/models/fancy_ptycho.py index 3ef8a51..a0c9a95 100644 --- a/CDTools/models/fancy_ptycho.py +++ b/CDTools/models/fancy_ptycho.py @@ -1,5 +1,3 @@ -from __future__ import division, print_function, absolute_import - import torch as t from CDTools.models import CDIModel from CDTools.datasets import Ptycho2DDataset diff --git a/CDTools/models/rpi.py b/CDTools/models/rpi.py index 3bd9e20..60ed3b4 100644 --- a/CDTools/models/rpi.py +++ b/CDTools/models/rpi.py @@ -1,14 +1,9 @@ -from __future__ import division, print_function, absolute_import - import torch as t from CDTools.models import CDIModel -from CDTools.datasets import Ptycho2DDataset from CDTools import tools from CDTools.tools import plotting as p from CDTools.tools.interactions import RPI_interaction from CDTools.tools import initializers -from matplotlib import pyplot as plt -from datetime import datetime import numpy as np from copy import copy diff --git a/CDTools/models/s_matrix_ptycho.py b/CDTools/models/s_matrix_ptycho.py index b3ba1bd..efe58b0 100644 --- a/CDTools/models/s_matrix_ptycho.py +++ b/CDTools/models/s_matrix_ptycho.py @@ -1,5 +1,3 @@ -from __future__ import division, print_function, absolute_import - import torch as t from CDTools.models import CDIModel from CDTools.datasets import Ptycho2DDataset diff --git a/CDTools/models/simple_ptycho.py b/CDTools/models/simple_ptycho.py index a178d78..f306068 100644 --- a/CDTools/models/simple_ptycho.py +++ b/CDTools/models/simple_ptycho.py @@ -1,5 +1,3 @@ -from __future__ import division, print_function, absolute_import - import torch as t from CDTools.models import CDIModel from CDTools.datasets import Ptycho2DDataset @@ -7,10 +5,8 @@ from CDTools import tools from CDTools.tools import plotting as p from copy import copy from torch.utils import data as torchdata -from matplotlib import pyplot as plt from datetime import datetime import numpy as np -from .complex_adam import MyAdam __all__ = ['SimplePtycho'] diff --git a/CDTools/scripts/__init__.py b/CDTools/scripts/__init__.py deleted file mode 100644 index d675d93..0000000 --- a/CDTools/scripts/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from __future__ import division, print_function, absolute_import diff --git a/CDTools/scripts/synthesize.py b/CDTools/scripts/synthesize.py deleted file mode 100644 index 8693aa6..0000000 --- a/CDTools/scripts/synthesize.py +++ /dev/null @@ -1,97 +0,0 @@ -from __future__ import division, print_function, absolute_import -import numpy as np -import torch as t -from matplotlib import pyplot as plt -import pickle -import argparse - -from CDTools.tools import cmath, plotting -from CDTools.tools.analysis import * - - -def make_argparser(): - parser = argparse.ArgumentParser(description=__doc__) - - parser.add_argument('file', help='The reconstruction file to calculate metrics for') - parser.add_argument('--use-probe', '-up', action='store_true', help='Use the probe instead of the object to align the reconstructions') - return parser - - - -if __name__ == '__main__': - - args = make_argparser().parse_args() - - with open(args.file, 'rb') as f: - dataset = pickle.load(f) - - # This converts from a list of dictionaries to a dictionary of lists - # It's safe to assume that all elements have the same set of keys - if type(dataset) == type([]): - dataset = {key: [element[key] for element in dataset] - for key in dataset[0]} - calc_prtf = True - else: - # If it's a length-one reconstruction - dataset = {key: [dataset[key]] for key in dataset} - calc_prtf = False - - # Orthogonalize the probes - dataset['probe'] = [orthogonalize_probes(p) for p in dataset['probe']] - - print('hi') - - synth_probe, synth_obj, aligned_objs = synthesize_reconstructions( - dataset['probe'], dataset['obj'], args.use_probe) - print('hey') - if calc_prtf: - freqs, prtf = calc_consistency_prtf(synth_obj, aligned_objs, dataset['basis'][0], nbins=200) - - # Either plot the only probe, or plot the dominant probe - if len(synth_probe.shape) == 2: - plotting.plot_phase(synth_probe,basis=dataset['basis'][0]) - plotting.plot_amplitude(synth_probe,basis=dataset['basis'][0]) - plotting.plot_colorized(synth_probe,basis=dataset['basis'][0]) - else: - # Plot as many probes as exist - try: - for i in range(0,50): - plotting.plot_phase(synth_probe[i],basis=dataset['basis'][0]) - plt.title('Probe ' + str(i+1) + 'Phase') - plotting.plot_amplitude(synth_probe[i],basis=dataset['basis'][0]) - plt.title('Probe ' + str(i+1) + ' Amplitude') - plotting.plot_colorized(synth_probe[i],basis=dataset['basis'][0]) - plt.title('Probe ' + str(i+1) + ' Colorized') - except IndexError: - pass - - plotting.plot_amplitude(aligned_objs[0][300:-300,300:-300],basis=dataset['basis'][0]) - plotting.plot_colorized(aligned_objs[0][300:-300,300:-300],basis=dataset['basis'][0]) - plotting.plot_phase(aligned_objs[0][300:-300,300:-300],basis=dataset['basis'][0]) - - plotting.plot_amplitude(synth_obj[300:-300,300:-300],basis=dataset['basis'][0]) - plotting.plot_colorized(synth_obj[300:-300,300:-300],basis=dataset['basis'][0]) - plotting.plot_phase(synth_obj[300:-300,300:-300],basis=dataset['basis'][0]) - - - try: - real_translations = dataset['translation'][0] - real_translations -= np.min(real_translations,axis=0)[None,:] - real_translations = real_translations - plotting.plot_translations(real_translations) - - plotting.plot_nanomap(real_translations,dataset['weights'][0]) - except: - pass - - plt.figure() - plt.imshow(np.sqrt(dataset['background'][0])) - - if calc_prtf: - plt.figure() - plt.plot(freqs*1e-6, prtf) - plt.xlabel('Spatial Frequency (cycles/um)') - plt.ylabel('Consistency Based PRTF') - plt.grid() - - plt.show() diff --git a/CDTools/scripts/view_cxi.py b/CDTools/scripts/view_cxi.py deleted file mode 100644 index 5f7a9c4..0000000 --- a/CDTools/scripts/view_cxi.py +++ /dev/null @@ -1,96 +0,0 @@ -from __future__ import division, print_function, absolute_import -import h5py -import numpy as np -import os -from PyQt5 import QtWidgets -from matplotlib import pyplot as plt -import signal -import sys -import argparse - -# -# The plotting was broken by the move to CDTools, at some point this should -# be fixed -# - -def view_cxi(filename): - """Opens a popup window displaying the contents of ``filename``. - relevant attributes.""" - signal.signal(signal.SIGINT, signal.SIG_DFL) - - class Viewer(QtWidgets.QMainWindow): - def __init__(self, datafile): - self.datafile = datafile - QtWidgets.QMainWindow.__init__(self) - self.tree = QtWidgets.QTreeWidget(self) - self.tree.setColumnWidth(0, 200) - self.setCentralWidget(self.tree) - self.buildTree() - self.tree.itemClicked.connect(self.handleClick) - - def handleClick(self,item,column): - if(item.text(column) == 'Click to print to console'): - data = self.data_full[str(item.text(2))] - print(np.asarray(data)) - if(item.text(column) == 'Click to display'): - data = self.datasets[str(item.text(2))] - plt.plot(data) - plt.title(item.text(0).capitalize()) - plt.show() - - def closeWindow(self): - pass - - def buildTree(self): - self.datasets = {} - self.data_full = {} - self.tree.setColumnCount(2) - self.f = h5py.File(self.datafile, 'r') - item = QtWidgets.QTreeWidgetItem(['/']) - self.tree.addTopLevelItem(item) - self.buildBranch(self.f,item) - - def buildBranch(self,group,item): - for g in group.keys(): - lst = [g] - self.data_full[group[g].name] = group[g] - if(isinstance(group[g],h5py.Group)): - child = QtWidgets.QTreeWidgetItem(lst) - self.buildBranch(group[g],child) - item.addChild(child) - else: - if len(group[g].shape)>2: - lst.append('Click to print to console') - lst.append(group[g].name) - self.datasets[group[g].name] = group[g] - item.addChild(QtWidgets.QTreeWidgetItem(lst)) - if len(group[g].shape)==2 or len(group[g].shape)==1: - lst.append('Click to display') - lst.append(group[g].name) - self.datasets[group[g].name] = group[g] - item.addChild(QtWidgets.QTreeWidgetItem(lst)) - else: - lst.append('Click to print to console') - lst.append(group[g].name) - self.datasets[group[g].name] = group[g] - item.addChild(QtWidgets.QTreeWidgetItem(lst)) - - filename = os.path.expanduser(filename) - app = QtWidgets.QApplication(sys.argv) - viewer = Viewer(filename) - viewer.setFixedSize(500, 500) - viewer.show() - app.exec_() - - -def make_argparser(): - parser = argparse.ArgumentParser(description=__doc__) - - parser.add_argument('file', help='The cxi file to view') - return parser - - -if __name__ == '__main__': - args = make_argparser().parse_args() - - view_cxi(args.file) diff --git a/CDTools/tools/analysis/__init__.py b/CDTools/tools/analysis/__init__.py index 5366b02..7c41267 100644 --- a/CDTools/tools/analysis/__init__.py +++ b/CDTools/tools/analysis/__init__.py @@ -1,3 +1 @@ -from __future__ import division, print_function, absolute_import - from CDTools.tools.analysis.analysis import * diff --git a/CDTools/tools/atoms/__init__.py b/CDTools/tools/atoms/__init__.py index f5e7d52..bb26fd0 100644 --- a/CDTools/tools/atoms/__init__.py +++ b/CDTools/tools/atoms/__init__.py @@ -1,3 +1 @@ -from __future__ import division, print_function, absolute_import - from CDTools.tools.atoms.atoms import * diff --git a/CDTools/tools/data/__init__.py b/CDTools/tools/data/__init__.py index 5e91e48..c000a57 100644 --- a/CDTools/tools/data/__init__.py +++ b/CDTools/tools/data/__init__.py @@ -1,3 +1 @@ -from __future__ import division, print_function, absolute_import - from CDTools.tools.data.data import * diff --git a/CDTools/tools/initializers/__init__.py b/CDTools/tools/initializers/__init__.py index 04928b4..4b2ebc2 100644 --- a/CDTools/tools/initializers/__init__.py +++ b/CDTools/tools/initializers/__init__.py @@ -1,3 +1 @@ -from __future__ import division, print_function, absolute_import - from CDTools.tools.initializers.initializers import * diff --git a/CDTools/tools/interactions/__init__.py b/CDTools/tools/interactions/__init__.py index eef5f9b..42b3b51 100644 --- a/CDTools/tools/interactions/__init__.py +++ b/CDTools/tools/interactions/__init__.py @@ -1,3 +1 @@ -from __future__ import division, print_function, absolute_import - from CDTools.tools.interactions.interactions import * diff --git a/CDTools/tools/losses/__init__.py b/CDTools/tools/losses/__init__.py index 8114811..eddbf30 100644 --- a/CDTools/tools/losses/__init__.py +++ b/CDTools/tools/losses/__init__.py @@ -1,3 +1 @@ -from __future__ import division, print_function, absolute_import - from CDTools.tools.losses.losses import * diff --git a/CDTools/tools/measurements/__init__.py b/CDTools/tools/measurements/__init__.py index 544a9e7..1a1484a 100644 --- a/CDTools/tools/measurements/__init__.py +++ b/CDTools/tools/measurements/__init__.py @@ -1,3 +1 @@ -from __future__ import division, print_function, absolute_import - from CDTools.tools.measurements.measurements import * diff --git a/CDTools/tools/plotting/__init__.py b/CDTools/tools/plotting/__init__.py index 4cc7e0b..dd4e060 100644 --- a/CDTools/tools/plotting/__init__.py +++ b/CDTools/tools/plotting/__init__.py @@ -1,3 +1 @@ -from __future__ import division, print_function, absolute_import - from CDTools.tools.plotting.plotting import * diff --git a/CDTools/tools/propagators/__init__.py b/CDTools/tools/propagators/__init__.py index 91285c0..f45f14c 100644 --- a/CDTools/tools/propagators/__init__.py +++ b/CDTools/tools/propagators/__init__.py @@ -1,3 +1 @@ -from __future__ import division, print_function, absolute_import - from CDTools.tools.propagators.propagators import * diff --git a/tests/test_datasets.py b/tests/test_datasets.py index 02c9e99..17f00ea 100644 --- a/tests/test_datasets.py +++ b/tests/test_datasets.py @@ -1,11 +1,8 @@ -from __future__ import division, print_function, absolute_import - from CDTools.datasets import * from CDTools.tools import data as cdtdata import numpy as np import torch as t import h5py -import pytest import datetime diff --git a/tests/tools/test_analysis.py b/tests/tools/test_analysis.py index e7857c4..b27bca5 100644 --- a/tests/tools/test_analysis.py +++ b/tests/tools/test_analysis.py @@ -1,6 +1,3 @@ -from __future__ import division, print_function, absolute_import - -import pytest import numpy as np from scipy import fftpack as ffts import torch as t diff --git a/tests/tools/test_image_processing.py b/tests/tools/test_image_processing.py index 2c2402a..083ee2a 100644 --- a/tests/tools/test_image_processing.py +++ b/tests/tools/test_image_processing.py @@ -1,13 +1,8 @@ -from __future__ import division, print_function, absolute_import - - -import pytest import numpy as np import torch as t -from CDTools.tools import image_processing, initializers, interactions +from CDTools.tools import image_processing, interactions from scipy import ndimage -from scipy.signal import fftconvolve def test_centroid(): # Test single im diff --git a/tests/tools/test_initializers.py b/tests/tools/test_initializers.py index 4b81475..2c70fbe 100644 --- a/tests/tools/test_initializers.py +++ b/tests/tools/test_initializers.py @@ -1,5 +1,3 @@ -from __future__ import division, print_function, absolute_import - from CDTools.tools import initializers from CDTools.datasets import Ptycho2DDataset import numpy as np diff --git a/tests/tools/test_interactions.py b/tests/tools/test_interactions.py index b0c10f8..922cd67 100644 --- a/tests/tools/test_interactions.py +++ b/tests/tools/test_interactions.py @@ -1,5 +1,3 @@ -from __future__ import division, print_function, absolute_import - from CDTools.tools import interactions import numpy as np import torch as t diff --git a/tests/tools/test_losses.py b/tests/tools/test_losses.py index e8934ca..7739184 100644 --- a/tests/tools/test_losses.py +++ b/tests/tools/test_losses.py @@ -1,5 +1,3 @@ -from __future__ import division, print_function, absolute_import - from CDTools.tools import losses import numpy as np import torch as t diff --git a/tests/tools/test_measurements.py b/tests/tools/test_measurements.py index 7407b97..4591fdd 100644 --- a/tests/tools/test_measurements.py +++ b/tests/tools/test_measurements.py @@ -1,9 +1,6 @@ -from __future__ import division, print_function, absolute_import - from CDTools.tools import measurements import torch as t import numpy as np -import pytest def test_intensity(): diff --git a/tests/tools/test_plotting.py b/tests/tools/test_plotting.py index 009457a..6282f9a 100644 --- a/tests/tools/test_plotting.py +++ b/tests/tools/test_plotting.py @@ -1,9 +1,6 @@ -from __future__ import division, print_function, absolute_import - from CDTools.tools import plotting from CDTools.tools import initializers import numpy as np -import pytest import torch as t import scipy.misc import matplotlib.pyplot as plt diff --git a/tests/tools/test_propagators.py b/tests/tools/test_propagators.py index a575ff8..6977dc2 100644 --- a/tests/tools/test_propagators.py +++ b/tests/tools/test_propagators.py @@ -1,5 +1,3 @@ -from __future__ import division, print_function, absolute_import - from CDTools.tools import initializers from CDTools.tools import propagators from CDTools.tools import image_processing @@ -8,7 +6,6 @@ import numpy as np import torch as t import pytest import scipy.misc -from scipy.fftpack import fftshift, ifftshift from scipy import stats from matplotlib import pyplot as plt