diff --git a/pyfstat/__init__.py b/pyfstat/__init__.py
index 779a2d503a831eedb8a5d7b1c2e05aa181ffdc6d..5c447084af048abdbb789435a6a48e65511cc713 100644
--- a/pyfstat/__init__.py
+++ b/pyfstat/__init__.py
@@ -3,4 +3,4 @@ from __future__ import division as _division
 from .core import BaseSearchClass, ComputeFstat, SemiCoherentSearch, SemiCoherentGlitchSearch
 from .make_sfts import Writer, GlitchWriter, FrequencyModulatedArtifactWriter, FrequencyAmplitudeModulatedArtifactWriter
 from .mcmc_based_searches import MCMCSearch, MCMCGlitchSearch, MCMCSemiCoherentSearch, MCMCFollowUpSearch, MCMCTransientSearch
-from .grid_based_searches import GridSearch, GridUniformPriorSearch, GridGlitchSearch, FrequencySlidingWindow, DMoff_NO_SPIN
+from .grid_based_searches import GridSearch, GridUniformPriorSearch, GridGlitchSearch, FrequencySlidingWindow, DMoff_NO_SPIN, SliceGridSearch
diff --git a/pyfstat/grid_based_searches.py b/pyfstat/grid_based_searches.py
index a8e2ea839fc74e95093557fb2d4f8cd19c1310e0..c82d79065706b495d7ebdc331d8e74b7990e8ed2 100644
--- a/pyfstat/grid_based_searches.py
+++ b/pyfstat/grid_based_searches.py
@@ -86,6 +86,7 @@ class GridSearch(BaseSearchClass):
             return np.array(x)
 
     def get_input_data_array(self):
+        logging.info("Generating input data array")
         arrays = []
         for tup in ([self.minStartTime], [self.maxStartTime], self.F0s, self.F1s, self.F2s,
                     self.Alphas, self.Deltas):
@@ -286,6 +287,80 @@ class GridSearch(BaseSearchClass):
                 self.outdir, self.label, dets, type(self).__name__)
 
 
+class SliceGridSearch(GridSearch):
+    """ Slice gridded search using ComputeFstat """
+    @helper_functions.initializer
+    def __init__(self, label, outdir, sftfilepattern, F0s=[0], F1s=[0], F2s=[0],
+                 Alphas=[0], Deltas=[0], tref=None, minStartTime=None,
+                 maxStartTime=None, nsegs=1, BSGL=False, minCoverFreq=None,
+                 maxCoverFreq=None, detectors=None, SSBprec=None,
+                 injectSources=None, input_arrays=False, assumeSqrtSX=None,
+                 Lambda0=None):
+        """
+        Parameters
+        ----------
+        label, outdir: str
+            A label and directory to read/write data from/to
+        sftfilepattern: str
+            Pattern to match SFTs using wildcards (*?) and ranges [0-9];
+            mutiple patterns can be given separated by colons.
+        F0s, F1s, F2s, delta_F0s, delta_F1s, tglitchs, Alphas, Deltas: tuple
+            Length 3 tuple describing the grid for each parameter, e.g
+            [F0min, F0max, dF0], for a fixed value simply give [F0]. Unless
+            input_arrays == True, then these are the values to search at.
+        tref, minStartTime, maxStartTime: int
+            GPS seconds of the reference time, start time and end time
+        input_arrays: bool
+            if true, use the F0s, F1s, etc as is
+
+        For all other parameters, see `pyfstat.ComputeFStat` for details
+        """
+
+        if os.path.isdir(outdir) is False:
+            os.mkdir(outdir)
+        self.set_out_file()
+        self.keys = ['_', '_', 'F0', 'F1', 'F2', 'Alpha', 'Delta']
+
+        self.Lambda0 = np.array(Lambda0)
+        if len(self.Lambda0) != len(self.keys):
+            raise ValueError(
+                'Lambda0 must be of length {}'.format(len(self.keys)))
+
+    def run(self, return_data=False):
+        self.get_input_data_array()
+
+        self.Lambda0s_grid = []
+        for j in range(self.input_data.shape[1]):
+            i = np.argmin(np.abs(self.Lambda0[j]-self.input_data[:, j]))
+            self.Lambda0s_grid.append(self.input_data[:, j][i])
+
+        old_data = self.check_old_data_is_okay_to_use()
+        if old_data is not False:
+            self.data = old_data
+            return
+
+        self.inititate_search_object()
+
+        logging.info('Total number of grid points is {}'.format(
+            len(self.input_data)))
+
+        data = []
+        for vals in tqdm(self.input_data):
+            if np.sum(vals != self.Lambda0s_grid) < 3:
+                FS = self.search.get_det_stat(*vals)
+                data.append(list(vals) + [FS])
+            else:
+                data.append(list(vals) + [0])
+
+        data = np.array(data, dtype=np.float)
+        if return_data:
+            return data
+        else:
+            logging.info('Saving data to {}'.format(self.out_file))
+            np.savetxt(self.out_file, data, delimiter=' ')
+            self.data = data
+
+
 class GridUniformPriorSearch():
     @helper_functions.initializer
     def __init__(self, theta_prior, NF0, NF1, label, outdir, sftfilepattern,