(*args, **kwargs)¶ Parameters: - linestyle ({':','--','.','etc.'}) – the style of the line
- plottype ({'semilogy','semilogx','loglog'}) – Select a logarithmic plotting style.
- nosemilog (True) – Typically, if you supply a log-spaced axis, a semilogx plot will be automatically selected. This overrides that behavior. Defaults to False.
-
pop_marker
()¶
-
push_marker
()¶
-
setprops
(**kwargs)¶
-
show
(*args, **kwargs)¶
-
show_prep
()¶
-
text
(mytext)¶
-
twinx
(autopad=False, orig=False, color=None)¶
-
use_autolegend
(value=None)¶ No argument sets to true if it’s not already set
-
-
pyspecdata.
figlist_var
¶ alias of
pyspecdata.core.figlist
-
pyspecdata.
figlistini
(first_figure)¶ processes a figure list argument: typically, you want to have a figure_list keyword argument for every function, which is by default set to None, then call this on the argument – it always returns a figure list, creating a new one if required similarly, somewhere I have another guy that processes the output, so that if it’s set to None, it will by default dump and show the figure list, and not return a figure list in the output
-
pyspecdata.
figlistini_old
(first_figure)¶
-
pyspecdata.
figlistret
(first_figure, figure_list, *args, **kwargs)¶
-
pyspecdata.
find_file
(searchstring, exp_type=None, postproc=None, print_result=True, verbose=False, prefilter=None, expno=None, dimname='', return_acq=False, add_sizes=[], add_dims=[], use_sweep=None, indirect_dimlabels=None, **kwargs)¶ Find the file given by the regular expression searchstring inside the directory identified by exp_type, load the nddata object, and postprocess with the function postproc.
It looks at the top level of the directory first, and if that fails, starts to look recursively. Whenever it finds a file in the current directory, it will not return data from files in the directories underneath.
Note that all loaded files will be logged in the data_files.log file in the directory that you run your python scripts from (so that you can make sure they are properly synced to the cloud, etc.).
It calls
load_indiv_file()
, which finds the specific routine from inside one of the modules (sub-packages) associated with a particular file-type.Parameters: - searchstring (str) – Most commonly, this is just a fragment of the file name,
with any literal
*
,.
, or?
characters preceded by a backslash. More generally, it is a regular expression, where.*searchstring.*
matches a filename inside the directory appropriate for exp_type. - expno (int) – For Bruker NMR and Prospa files, where the files are stored in numbered subdirectories, give the number of the subdirectory that you want. Currently, this parameter is needed to load Bruker and Kea files. If it finds multiple files that match the regular expression, it will try to load this experiment number from all the directories.
- exp_type (str) – Since the function assumes that you have different types of
experiments sorted into different directories, this argument
specifies the type of experiment see
getDATADIR()
for more info. - postproc (function, str, or None) –
This function is fed the nddata data and the remaining keyword arguments (kwargs) as arguments. It’s assumed that each module for each different file type provides a dictionary called postproc_lookup. If postproc is a string, it looks up the string inside the postproc_lookup dictionary that’s appropriate for the file type. If postproc is None, it checks to see if the any of the loading functions that were called set the postproc_type property – i.e. it checks the value of
data.get_prop('postproc_type')
– if this is set, it uses this as a key to pull the corresponding value from postproc_lookup.For instance, when the acert module loads an ACERT HDF5 file, it sets postproc_type to the value of
(h5 root).experiment.description['class']
. This, in turn, is used to choose the type of post-processing.dimname: passed to load_indiv_file()
return_acq: passed to load_indiv_file()
add_sizes: passed to load_indiv_file()
add_dims: passed to load_indiv_file()
use_sweep: passed to load_indiv_file()
indirect_dimlabels: passed to load_indiv_file()
- searchstring (str) – Most commonly, this is just a fragment of the file name,
with any literal
-
class
pyspecdata.
fitdata
(*args, **kwargs)¶ Bases:
pyspecdata.core.nddata
-
add_inactive_p
(p)¶
-
analytical_covariance
()¶
-
bootstrap
(points, swap_out=None, seedval=10347, minbounds={}, maxbounds={})¶
-
copy
()¶ Return a full copy of this instance.
Because methods typically change the data in place, you might want to use this frequently.
Parameters: data (boolean) – Default to True. False doesn’t copy the data – this is for internal use, e.g. when you want to copy all the metadata and perform a calculation on the data.
The code for this also provides the definitive list of the nddata metadata.
-
covar
(*names)¶ give the covariance for the different symbols
-
covarmat
(*names)¶
-
errfunc
(p, x, y, sigma)¶ just the error function
-
eval
(taxis, set=None, set_to=None)¶ after we have fit, evaluate the fit function along the axis taxis set and set_to allow you to forcibly set a specific symbol to a specific value –> however, this does not affect the class, but only the return value
-
fit
(set=None, set_to=None, force_analytical=False, silent=False)¶ actually run the fit
-
fitfunc
(p, x)¶ this wraps fitfunc_raw (which gives the actual form of the fit function) to take care of forced variables
-
gen_indices
(this_set, set_to)¶ pass this this_set and this_set_to parameters, and it will return: indices,values,mask indices –> gives the indices that are forced values –> the values they are forced to mask –> p[mask] are actually active in the fit
-
gen_symbolic
(function_name)¶ generates the symbolic representations the function
-
guess
(super_verbose=False)¶ provide the guess for our parameters; by default, based on pseudoinverse
-
latex
()¶ show the latex string for the function, with all the symbols substituted by their values
-
linear
(*args, **kwargs)¶ return the linear-form function, either smoothly along the fit function, or on the raw data, depending on whether or not the taxis argument is given can take optional arguments and pass them on to eval
-
makereal
()¶
-
output
(*name)¶ give the fit value of a particular symbol
-
parameter_derivatives
(xvals, set=None, set_to=None)¶ return a matrix containing derivatives of the parameters, can set dict set, or keys set, vals set_to
-
parameter_gradient
(p, x, y, sigma)¶ this gives the specific format wanted by leastsq
-
pinv
(*args, **kwargs)¶
-
remove_inactive_p
(p)¶
-
rename
(previous, new)¶
-
settoguess
()¶ a debugging function, to easily plot the initial guess
-
-
pyspecdata.
format_listofexps
(args)¶ Phased out: leaving documentation so we can interpret and update old code
This is an auxiliary function that’s used to decode the experiment list.
Parameters: args (list or tuple) – can be in one of two formats :
(dirname,[i,j,k,...N])
: typically used, e.g. forBruker NMR experiments.i,j,...N
are integer numbers referring to individual experiments that are stored in subdirectories of dirname (a string).([exp_name1,...,exp_nameN])
:just return this list of experiments given by the strings exp_name1…`exp_nameN`. ([exp_name1,...,exp_nameN],[])
:identical to previous ([exp_name1,...,exp_nameN],[])
:identical to previous (exp_name1,...,exp_nameN)
:identical to previous (exp_name)
or(exp_name,[])
:works for a single experiment
-
class
pyspecdata.
function
(code, globals[, name[, argdefs[, closure]]])¶ Bases:
object
Create a function object from a code object and a dictionary. The optional name string overrides the name from the code object. The optional argdefs tuple specifies the default argument values. The optional closure tuple supplies the bindings for free variables.
-
func_closure
¶
-
func_code
¶
-
func_defaults
¶
-
func_dict
¶
-
func_doc
¶
-
func_globals
¶
-
func_name
¶
-
-
pyspecdata.
gensearch
(labelname, format='%0.3f', value=None, precision=None)¶ obsolete – use h5gensearch
-
pyspecdata.
getDATADIR
(*args, **kwargs)¶ Returns the base directory where you put all your data. If arguments are passed, it returns the directory underneath the data directory, ending in a trailing (back)slash
It is determined by a call to MyConfig.get_setting with the setting name data_directory and the environment variable set to
PYTHON_DATA_DIR
.Parameters: exp_type (str) – A string identifying the experiment type. It searches for exp_type in this order:
- Look in the
ExpTypes
section of the config file. - Note that by using this, you can store data in locations other
- than your main data directory.
For example, consider the following section of the
~/.pyspecdata
config file:` [ExpTypes] alternate_base = /opt/other_data alternate_type_one = %(alternate_base)s/type_one `
which would find data with exp_typealternate_type_one
in/opt/other_data/type_one
.
- Look in the
- use os.walk to search for a directory with this name
- inside the directory identified by experimental_data. excluding things that start with ‘.’, ‘_’ or containing ‘.hfssresults’, always choosing the thing that’s highest up in the tree. If it doesn’t find a directory inside experimental_data, it will search inside all the directories already listed in ExpTypes. Currently, in both attempts, it will only walk 2 levels deep (since NMR directories can be rather complex, and otherwise it would take forever).
-
pyspecdata.
getargspec
(func)¶ Get the names and default values of a function’s arguments.
A tuple of four things is returned: (args, varargs, varkw, defaults). ‘args’ is a list of the argument names (it may contain nested lists). ‘varargs’ and ‘varkw’ are the names of the * and ** arguments or None. ‘defaults’ is an n-tuple of the default values of the last n arguments.
-
pyspecdata.
gridandtick
(ax, rotation=(0, 0), precision=(2, 2), labelstring=('', ''), gridcolor=None, formatonly=False, fixed_y_locator=None, logarithmic=False, use_grid=True, spines=None, y=True)¶
-
pyspecdata.
gridon
(gridcolor=None)¶
-
pyspecdata.
h5addrow
(bottomnode, tablename, *args, **kwargs)¶ add a row to a table, creating it if necessary, but don’t add if the data matches the search condition indicated by match_row match_row can be either text or a dictionary – in the latter case it’s passed to h5searchstring
-
pyspecdata.
h5attachattributes
(node, listofattributes, myvalues)¶
-
pyspecdata.
h5child
(thisnode, childname, clear=False, create=None)¶ grab the child, optionally clearing it and/or (by default) creating it
-
pyspecdata.
h5inlist
(columnname, mylist)¶ returns rows where the column named columnname is in the value of mylist
-
pyspecdata.
h5join
(firsttuple, secondtuple, additional_search='', select_fields=None, pop_fields=None)¶
-
pyspecdata.
h5loaddict
(thisnode)¶
-
pyspecdata.
h5nodebypath
(h5path, force=False, only_lowest=False, check_only=False, directory='.')¶ return the node based on an absolute path, including the filename
-
pyspecdata.
h5remrows
(bottomnode, tablename, searchstring)¶
-
pyspecdata.
h5searchstring
(*args, **kwargs)¶ generate robust search strings :parameter fieldname,value: search AROUND a certain value (overcomes some type conversion issues) optional arguments are the format specifier and the fractional precision: OR :parameter field_and_value_dictionary: generate a search string that matches one or more criteria
-
pyspecdata.
h5table
(bottomnode, tablename, tabledata)¶ create the table, or if tabledata is None, just check if it exists
-
pyspecdata.
image
(A, x=[], y=[], **kwargs)¶ Please don’t call image directly anymore – use the image method of figurelist
-
pyspecdata.
init_logging
(level=20, filename='pyspecdata.log')¶ Initialize logging on pyspecdata.log – do NOT log if run from within a notebook (it’s fair to assume that you will run first before embedding)
-
pyspecdata.
inside_sphinx
()¶
-
class
pyspecdata.
interp1d
(x, y, kind='linear', axis=-1, copy=True, bounds_error=None, fill_value=nan, assume_sorted=False)¶ Bases:
scipy.interpolate.polyint._Interpolator1D
Interpolate a 1-D function.
x and y are arrays of values used to approximate some function f:
y = f(x)
. This class returns a function whose call method uses interpolation to find the value of new points.Note that calling interp1d with NaNs present in input values results in undefined behaviour.
Parameters: - x ((N,) array_like) – A 1-D array of real values.
- y ((..,N,..) array_like) – A N-D array of real values. The length of y along the interpolation axis must be equal to the length of x.
- kind (str or int, optional) – Specifies the kind of interpolation as a string (‘linear’, ‘nearest’, ‘zero’, ‘slinear’, ‘quadratic’, ‘cubic’, ‘previous’, ‘next’, where ‘zero’, ‘slinear’, ‘quadratic’ and ‘cubic’ refer to a spline interpolation of zeroth, first, second or third order; ‘previous’ and ‘next’ simply return the previous or next value of the point) or as an integer specifying the order of the spline interpolator to use. Default is ‘linear’.
- axis (int, optional) – Specifies the axis of y along which to interpolate. Interpolation defaults to the last axis of y.
- copy (bool, optional) – If True, the class makes internal copies of x and y. If False, references to x and y are used. The default is to copy.
- bounds_error (bool, optional) – If True, a ValueError is raised any time interpolation is attempted on a value outside of the range of x (where extrapolation is necessary). If False, out of bounds values are assigned fill_value. By default, an error is raised unless fill_value=”extrapolate”.
- fill_value (array-like or (array-like, array_like) or "extrapolate", optional) –
- if a ndarray (or float), this value will be used to fill in for requested points outside of the data range. If not provided, then the default is NaN. The array-like must broadcast properly to the dimensions of the non-interpolation axes.
- If a two-element tuple, then the first element is used as a
fill value for
x_new < x[0]
and the second element is used forx_new > x[-1]
. Anything that is not a 2-element tuple (e.g., list or ndarray, regardless of shape) is taken to be a single array-like argument meant to be used for both bounds asbelow, above = fill_value, fill_value
.New in version 0.17.0.
- If “extrapolate”, then points outside the data range will be
extrapolated.
New in version 0.17.0.
- assume_sorted (bool, optional) – If False, values of x can be in any order and they are sorted first. If True, x has to be an array of monotonically increasing values.
-
__call__
()¶
See also
splrep
,splev
UnivariateSpline
- An object-oriented wrapper of the FITPACK routines.
interp2d
- 2-D interpolation
Examples
>>> import matplotlib.pyplot as plt >>> from scipy import interpolate >>> x = np.arange(0, 10) >>> y = np.exp(-x/3.0) >>> f = interpolate.interp1d(x, y)
>>> xnew = np.arange(0, 9, 0.1) >>> ynew = f(xnew) # use interpolation function returned by `interp1d` >>> plt.plot(x, y, 'o', xnew, ynew, '-') >>> plt.show()
-
fill_value
¶
-
pyspecdata.
ismethod
(object)¶ Return true if the object is an instance method.
- Instance method objects provide these attributes:
- __doc__ documentation string __name__ name with which this method was defined im_class class object in which this method belongs im_func function object containing implementation of method im_self instance to which this method is bound, or None
-
pyspecdata.
issympy
(x)¶ tests if something is sympy (based on the module name)
-
pyspecdata.
join_rec
()¶
-
pyspecdata.
lambda_rec
(myarray, myname, myfunction, *varargs)¶ make a new field “myname” which consists of “myfunction” evaluated with the fields given by “myargs” as arguments the new field is always placed after the last argument name if myname is in myargs, the original row is popped
-
pyspecdata.
leastsq
(func, x0, args=(), Dfun=None, full_output=0, col_deriv=0, ftol=1.49012e-08, xtol=1.49012e-08, gtol=0.0, maxfev=0, epsfcn=None, factor=100, diag=None)¶ Minimize the sum of squares of a set of equations.
x = arg min(sum(func(y)**2,axis=0)) y
Parameters: - func (callable) – should take at least one (possibly length N vector) argument and returns M floating point numbers. It must not return NaNs or fitting might fail.
- x0 (ndarray) – The starting estimate for the minimization.
- args (tuple, optional) – Any extra arguments to func are placed in this tuple.
- Dfun (callable, optional) – A function or method to compute the Jacobian of func with derivatives across the rows. If this is None, the Jacobian will be estimated.
- full_output (bool, optional) – non-zero to return all optional outputs.
- col_deriv (bool, optional) – non-zero to specify that the Jacobian function computes derivatives down the columns (faster, because there is no transpose operation).
- ftol (float, optional) – Relative error desired in the sum of squares.
- xtol (float, optional) – Relative error desired in the approximate solution.
- gtol (float, optional) – Orthogonality desired between the function vector and the columns of the Jacobian.
- maxfev (int, optional) – The maximum number of calls to the function. If Dfun is provided then the default maxfev is 100*(N+1) where N is the number of elements in x0, otherwise the default maxfev is 200*(N+1).
- epsfcn (float, optional) – A variable used in determining a suitable step length for the forward- difference approximation of the Jacobian (for Dfun=None). Normally the actual step length will be sqrt(epsfcn)*x If epsfcn is less than the machine precision, it is assumed that the relative errors are of the order of the machine precision.
- factor (float, optional) – A parameter determining the initial step bound
(
factor * || diag * x||
). Should be in interval(0.1, 100)
. - diag (sequence, optional) – N positive entries that serve as a scale factors for the variables.
Returns: x (ndarray) – The solution (or the result of the last iteration for an unsuccessful call).
cov_x (ndarray) – Uses the fjac and ipvt optional outputs to construct an estimate of the jacobian around the solution. None if a singular matrix encountered (indicates very flat curvature in some direction). This matrix must be multiplied by the residual variance to get the covariance of the parameter estimates – see curve_fit.
infodict (dict) – a dictionary of optional outputs with the key s:
nfev
The number of function calls
fvec
The function evaluated at the output
fjac
A permutation of the R matrix of a QR factorization of the final approximate Jacobian matrix, stored column wise. Together with ipvt, the covariance of the estimate can be approximated.
ipvt
An integer array of length N which defines a permutation matrix, p, such that fjac*p = q*r, where r is upper triangular with diagonal elements of nonincreasing magnitude. Column j of p is column ipvt(j) of the identity matrix.
qtf
The vector (transpose(q) * fvec).
mesg (str) – A string message giving information about the cause of failure.
ier (int) – An integer flag. If it is equal to 1, 2, 3 or 4, the solution was found. Otherwise, the solution was not found. In either case, the optional output variable ‘mesg’ gives more information.
Notes
“leastsq” is a wrapper around MINPACK’s lmdif and lmder algorithms.
cov_x is a Jacobian approximation to the Hessian of the least squares objective function. This approximation assumes that the objective function is based on the difference between some observed target data (ydata) and a (non-linear) function of the parameters f(xdata, params)
func(params) = ydata - f(xdata, params)
so that the objective function is
min sum((ydata - f(xdata, params))**2, axis=0) params
The solution, x, is always a 1D array, regardless of the shape of x0, or whether x0 is a scalar.
-
pyspecdata.
listdir
(path) → list_of_strings¶ Return a list containing the names of the entries in the directory.
path: path of directory to listThe list is in arbitrary order. It does not include the special entries ‘.’ and ‘..’ even if they are present in the directory.
-
pyspecdata.
load_indiv_file
(filename, dimname='', return_acq=False, add_sizes=[], add_dims=[], use_sweep=None, indirect_dimlabels=None, expno=None)¶ Open the file given by filename, use file signature magic and/or filename extension(s) to identify the file type, and call the appropriate function to open it.
Parameters: - dimname (str) – When there is a single indirect dimension composed of several scans, call the indirect dimension dimname.
- return_acq (DEPRECATED) –
- add_sizes (list) – the sizes associated with the dimensions in add_dims
- add_dims (list) – Can only be used with dimname.
Break the dimension dimname into several dimensions,
with the names given by the list add_dims and sizes given by add_sizes.
If the product of the sizes is not the same as the original dimension
given by dimname,
retain it as the “outermost” (leftmost) dimension.
pyspecdata.core.chunkoff()
is used to do this, like so:data.chunkoff(dimname,add_dims,add_sizes)
- indirect_dimlabels (str or None) – passed through to acert.load_pulse (names an indirect dimension when dimlabels isn’t provided)
Returns: the nddata containing the data, or else, None, indicating that this is part of a pair of files that should be skipped
Return type: nddata or None
-
pyspecdata.
load_t1_axis
(file)¶
-
pyspecdata.
log_fname
(logname, fname, dirname)¶
-
pyspecdata.
lookup_rec
(A, B, indexpair)¶ look up information about A in table B (i.e. chemical by index, etc) indexpair is either the name of the index or – if it’s differently named – the pair of indices given in (A,B) respectively
This will just drop any fields in B that are also in A, and the output uses the first indexname
note that it it seems like the join_rec function above may be more efficient!!
-
pyspecdata.
lrecordarray
(*x, **kwargs)¶
-
pyspecdata.
lsafe
(*string, **kwargs)¶ replacement for normal lsafe – no escaping
-
pyspecdata.
lsafen
(*string, **kwargs)¶ see lsafe, but with an added double newline
-
pyspecdata.
make_bar_graph_indices
(mystructarray, list_of_text_fields, recursion_depth=0, spacing=0.1)¶ This is a recursive function that is used as part of textlabel_bargraph; it does NOT work without the sorting given at the beginning of that function
-
pyspecdata.
make_ndarray
(array_to_conv, name_forprint='unknown')¶
-
pyspecdata.
make_rec
(*args, **kwargs)¶ input,names or a single argument, which is a dictionarynstrlen = 100 gives length of the strings (which need to be specified in record arrays)nyou can also specify (especially useful with the dictionary format) the list order = [str1,str2,…] which orders the output records with the field containing str1 first, then the field containing str2, then any remaining fields
-
pyspecdata.
maprep
(*mylist)¶
-
pyspecdata.
meanstd_rec
(myarray, mylist, standard_error=False)¶ this is something like applyto_rec, except that it applies the mean and creates new rows for the “error,” where it puts the standard deviation
-
pyspecdata.
mybasicfunction
(first_figure=None)¶ this gives the format for doing the image thing note also nextfigure(fl,’name’) and nextfigure({‘lplotproperty’:value})
-
pyspecdata.
mydiff
(data, axis=-1)¶ this will replace diff with a version that has the same number of indices, with the last being the copy of the first
-
pyspecdata.
myfilter
(x, center=250000.0, sigma=100000.0)¶
-
pyspecdata.
myplotfunc
(*args, **kwargs)¶
-
class
pyspecdata.
nddata
(*args, **kwargs)¶ Bases:
object
This is the detailed API reference. For an introduction on how to use ND-Data, see the Main ND-Data Documentation.
-
C
¶ shortcut for copy
- ..todo::
- We should offer “N”, which generates something like a copy,
but which is sets the equivalent of “nopop”.
For example, currently, you need to do something like
d.C.argmax('t2')
, which is very inefficient, since it copies the whole array. So, instead, we should dod.N.argmax('t2')
, which tells argmax and all other functions not to overwrite “self” but to return a new object. This would cause things like “run_nopop” to become obsolete.
-
add_noise
(intensity)¶ Add Gaussian (box-muller) noise to the data.
Parameters: intensity (double OR function) – If a double, gives the standard deviation of the noise. If a function, used to calculate the standard deviation of the noise from the data: e.g. lambda x: max(abs(x))/10.
-
aligndata
(arg)¶ This is a fundamental method used by all of the arithmetic operations. It uses the dimension labels of self (the current instance) and arg (an nddata passed to this method) to generate two corresponding output nddatas that I refer to here, respectively, as A and B. A and B have dimensions that are “aligned” – that is, they are identical except for singleton dimensions (note that numpy automatically tiles singleton dimensions). Regardless of how the dimensions of self.data and arg.data (the underlying numpy data) were ordered, A.data and B.data are now ordered identically, where dimensions with the same label (.dimlabel) correspond to the same numpy index. This allows you do do math.
Note that, currently, both A and B are given a full set of axis labels, even for singleton dimensions. This is because we’re assuming you’re going to do math with them, and that the singleton dimensions will be expanded.
Parameters: arg (nddata or ndarray) – The nddata that you want to align to self. If arg is an ndarray, it will try to match dimensions to self based on the length of the dimension. Note: currently there is an issue where this will only really work for 1D data, since it first makes an nddata instance based on arg, which apparently collapses multi-D data to 1D data. Returns: - A (nddata) – realigned version of self
- B (nddata) – realigned version of arg (the argument)
-
angle
¶ Return the angle component of the data
-
argmax
(*args, **kwargs)¶ find the max along a particular axis, and get rid of that axis, replacing it with the index number of the max value
Parameters: raw_index (bool) – return the raw (ndarray) numerical index, rather than the corresponding axis value Note that the result returned is still, however, an nddata (rather than numpy ndarray) object.
-
argmin
(*axes, **kwargs)¶ If argmin(‘axisname’) find the min along a particular axis, and get rid of that axis, replacing it with the index number of the max value. If argmin(): return a dictionary giving the coordinates of the overall minimum point.
Parameters: raw_index (bool) – Return the raw (ndarray) numerical index, rather than the corresponding axis value. Note that the result returned is still, however, an nddata (rather than numpy ndarray) object.
-
axis
(axisname)¶ returns a 1-D axis for further manipulation
-
axlen
(axis)¶ return the size (length) of an axis, by name
Parameters: axis (str) – name of the axis whos length you are interested in
-
axn
(axis)¶ Return the index number for the axis with the name “axis”
This is used by many other methods. As a simple example, self.:func:axlen`(axis) (the axis length) returns ``shape(self.data)[self.axn(axis)]`
Parameters: axis (str) – name of the axis
-
cdf
(normalized=True, max_bins=500)¶ calculate the Cumulative Distribution Function for the data along axis_name
only for 1D data right now
Returns: Return type: A new nddata object with an axis labeled values, and data corresponding to the CDF.
-
check_axis_coords_errors
()¶
-
chunk
(axisin, *otherargs)¶ - “Chunking” is defined here to be the opposite of taking a direct product, increasing the number of dimensions by the inverse of the process by which taking a direct product decreases the number of dimensions. This function chunks axisin into multiple new axes arguments.:
- axesout – gives the names of the output axes shapesout – optional – if not given, it assumes equal length – if given, one of the values can be -1, which is assumed length
When there are axes, it assumes that the axes of the new dimensions are nested – e.g., it will chunk a dimension with axis: [1,2,3,4,5,6,7,8,9,10] into dimensions with axes: [0,1,2,3,4], [1,6]
- ..todo::
- Deal with this efficiently when we move to new-style axes
-
chunk_auto
(axis_name, which_field, dimname=None)¶ assuming that axis “axis_name” is currently labeled with a structured array, choose one field (“which_field”) of that structured array to generate a new dimension Note that for now, by definition, no error is allowed on the axes. However, once I upgrade to using structured arrays to handle axis and data errors, I will want to deal with that appropriately here.
-
circshift
(axis, amount)¶
-
contiguous
(lambdafunc, axis=None)¶ Return contiguous blocks that satisfy the condition given by lambdafunc
this function returns the start and stop positions along the axis for the contiguous blocks for which lambdafunc returns true Currently only supported for 1D data
Note
adapted from stackexchange post http://stackoverflow.com/questions/4494404/find-large-number-of-consecutive-values-fulfilling-condition-in-a-numpy-array
Parameters: - lambdafunc (types.FunctionType) – If only one argument (lambdafunc) is given, then lambdafunc is a function that accepts a copy of the current nddata object (self) as the argument. If two arguments are given, the second is axis, and lambdafunc has two arguments, self and the value of axis.
- axis ({None,str}) – the name of the axis along which you want to find contiguous blocks
Returns: retval – An \(N\times 2\) matrix, where the \(N\) rows correspond to pairs of axis label that give ranges over which lambdafunc evaluates to True. These are ordered according to descending range width.
Return type: ndarray
Examples
> #{{{ debugging block > sum_for_contiguous = abs(forplot).mean(‘t1’) > fl.next(“test contiguous”) > forplot = sum_for_contiguous.copy().set_error(None) > fl.plot(forplot,alpha = 0.25,linewidth = 3) > print “this is what the max looks like”,0.5*sum_for_contiguous.set_error(None).runcopy(max,’t2’) > print sum_for_contiguous > 0.5*sum_for_contiguous.runcopy(max,’t2’) > retval = sum_for_contiguous.contiguous(quarter_of_max,’t2’) > print “contiguous range / 1e6:”,retval/1e6 > for j in range(retval.shape[0]): > a,b = retval[j,:] > fl.plot(forplot[‘t2’:(a,b)]) > fl.show() > exit() > #}}}
-
contour
(labels=True, **kwargs)¶ Contour plot – kwargs are passed to the matplotlib contour function.
See docstring of figlist_var.image() for an example
-
labels
¶ Whether or not the levels should be labeled. Defaults to True
Type: boolean
-
-
convolve
(axisname, filterwidth, convfunc=<function <lambda>>)¶ Perform a convolution.
Parameters: - axisname (str) – apply the convolution along axisname
- filterwidth (double) – width of the convolution function.
- convfunc (function) – A function that takes two arguments – the first are the axis coordinates and the second is filterwidth.
Default is a normalized Gaussian of width (\(\sigma\))
filterwidth
\(\frac{1}{2 \sigma^2}\exp\left( - \frac{x^2}{2 \sigma^2} \right)\)
For example if you want a complex lorentzian with filterwidth controlled by the rate $R$,
i.e.
\(\frac{-1}{-i 2 \pi f - R}\)
then
convfunc = lambda f,R: -1./(-1j*2*pi*f-R)
-
copy
(data=True)¶ Return a full copy of this instance.
Because methods typically change the data in place, you might want to use this frequently.
Parameters: data (boolean) – Default to True. False doesn’t copy the data – this is for internal use, e.g. when you want to copy all the metadata and perform a calculation on the data.
The code for this also provides the definitive list of the nddata metadata.
-
copy_props
(other)¶ Copy all properties (see
get_prop()
) from another nddata object – note that these include properties pertaining the the FT status of various dimensions.
-
copyaxes
(other)¶
-
cropped_log
(subplot_axes=None, magnitude=4)¶ For the purposes of plotting, this generates a copy where I take the log, spanning “magnitude” orders of magnitude This is designed to be called as abs(instance).cropped_log(), so it doesn’t make a copy
-
diff
(thisaxis, backwards=False)¶
-
dot
(arg)¶ Tensor dot of self with arg – dot all matching dimension labels. This can be used to do matrix multiplication, but note that the order of doesn’t matter, since the dimensions that are contracted are determined by matching the dimension names, not the order of the dimension.
>>> a = nddata(r_[0:9],[3,3],['a','b']) >>> b = nddata(r_[0:3],'b') >>> print a.C.dot(b) >>> print a.data.dot(b.data)
>>> a = nddata(r_[0:27],[3,3,3],['a','b','c']) >>> b = nddata(r_[0:9],[3,3],['a','b']) >>> print a.C.dot(b) >>> print tensordot(a.data,b.data,axes=((0,1),(0,1)))
>>> a = nddata(r_[0:27],[3,3,3],['a','b','c']) >>> b = nddata(r_[0:9],[3,3],['a','d']) >>> print a.C.dot(b) >>> print tensordot(a.data,b.data,axes=((0),(0)))
-
extend
(axis, extent, fill_with=0, tolerance=1e-05)¶ If axis is uniformly ascending with spacing \(dx\), then extend by adding a point every \(dx\) until the axis includes the point extent. Fill the newly created datapoints with fill_with.
Parameters: - axis (str) – name of the axis to extend
- extent (double) – extend the axis axis out to this point
- fill_with (double) – fill the new data points with this value (defaults to 0)
- tolerance (double) – when checking for ascending axis labels, etc., values/differences must match to within tolerance (assumed to represent the actual precision, given various errors, etc.)
-
extend_for_shear
(altered_axis, propto_axis, skew_amount, verbose=False)¶ this is propto_axis helper function for .fourier.shear
-
fld
(dict_in, noscalar=False)¶ flatten dictionary – return list
-
fourier_shear
(altered_axis, propto_axis, by_amount, zero_fill=False, start_in_conj=False)¶ the fourier shear method – see .shear() documentation
-
fromaxis
(*args, **kwargs)¶ Generate an nddata object from one of the axis labels.
Can be used in one of several ways:
self.fromaxis('axisname')
: Returns an nddata where retval.data consists of the given axis values.self.fromaxis('axisname',inputfunc)
: use axisname as the input for inputfunc, and load the result into retval.dataself.fromaxis(inputsymbolic)
: Evaluate inputsymbolic and load the result into retval.data
Parameters: - axisname (str | list) – The axis (or list of axes) to that is used as the argument of inputfunc or the function represented by inputsymbolic. If this is the only argument, it cannot be a list.
- inputsymbolic (sympy.Expr) – A sympy expression whose only symbols are the names of axes. It is preferred, though not required, that this is passed without an axisname argument – the axis names are then inferred from the symbolic expression.
- inputfunc (function) – A function (typically a lambda function) that taxes the values of the axis given by axisname as input.
- overwrite (bool) – Defaults to False. If set to True, it overwrites self with retval.
- as_array (bool) – Defaults to False. If set to True, retval is a properly dimensioned numpy ndarray rather than an nddata.
Returns: retval – An expression calculated from the axis(es) given by axisname or inferred from inputsymbolic.
Return type: nddata | ndarray
-
ft
(axes, tolerance=1e-05, cosine=False, verbose=False, **kwargs)¶ This performs a Fourier transform along the axes identified by the string or list of strings axes.
- It adjusts normalization and units so that the result conforms to
- \(\tilde{s}(f)=\int_{x_min}^{x_max} s(t) e^{-i 2 \pi f t} dt\)
Note that, as noted in the
ift()
documentation, the inverse transform doesn’t correspond to the equivalent expression for the IFT.pre-FT, we use the axis to cyclically permute \(t=0\) to the first index
post-FT, we assume that the data has previously been IFT’d If this is the case, passing
shift=True
will cause an error If this is not the case, passingshift=True
generates a standard fftshiftshift=None
will choose True, if and only if this is not the caseParameters: - pad (int or boolean) – pad specifies a zero-filling. If it’s a number, then it gives the length of the zero-filled dimension. If it is just True, then the size of the dimension is determined by rounding the dimension size up to the nearest integral power of 2.
- automix (double) – automix can be set to the approximate frequency value. This is useful for the specific case where the data has been captured on a sampling scope, and it’s severely aliased over.
- cosine (boolean) – yields a sum of the fft and ifft, for a cosine transform
-
ft_clear_startpoints
(axis, t=None, f=None, nearest=None)¶ Clears memory of where the origins in the time and frequency domain are. This is useful, e.g. when you want to ift and center about time=0. By setting shift=True you can also manually set the points.
Parameters: - t (float, 'current', 'reset', or None) – keyword arguments t and f can be set by (1) manually setting the start point (2) using the string ‘current’ to leave the current setting a lone (3) ‘reset’, which clears the startpoint and (4) None, which will be changed to ‘current’ when the other is set to a number or ‘rest’ if both are set to None.
- t – see t
- nearest (bool) –
Shifting the startpoint can only be done by an integral number of datapoints (i.e. an integral number of dwell times, dt, in the time domain or integral number of df in the frequency domain). While it is possible to shift by a non-integral number of datapoints, this is done by applying a phase-dependent shift in the inverse domain. Applying such a axis-dependent shift can have vary unexpected effects if the data in the inverse domain is aliased, and is therefore heavily discouraged. (For example, consider what happens if we attempt to apply a frequency-dependent phase shift to data where a peak at 110 Hz is aliased and appears at the 10 Hz position.)
Setting nearest to True will choose a startpoint at the closest integral datapoint to what you have specified.
Setting nearest to False will explicitly override the safeties – essentially telling the code that you know the data is not aliased in the inverse domain and/or are willing to deal with the consequences.
-
ft_state_to_str
(*axes)¶ Return a string that lists the FT domain for the given axes.
\(u\) refers to the original domain (typically time) and \(v\) refers to the FT’d domain (typically frequency) If no axes are passed as arguments, it does this for all axes.
-
ftshift
(axis, value)¶ FT-based shift. Currently only works in time domain.
This was previously made obsolete, but is now a demo of how to use the ft properties. It is not the most efficient way to do this.
-
get_covariance
()¶ this returns the covariance matrix of the data
-
get_error
(*args)¶ get a copy of the errors either set_error(‘axisname’,error_for_axis) or set_error(error_for_data)
-
get_ft_prop
(axis, propname=None)¶ Gets the FT property given by propname. For both setting and getting, None is equivalent to an unset value if no propname is given, this just sets the FT property, which tells if a dimension is frequency or time domain
-
get_plot_color
()¶
-
get_prop
(propname=None)¶ return arbitrary ND-data properties (typically acquisition parameters etc.) by name (propname)
In order to allow ND-data to store acquisition parameters and other info that accompanies the data, but might not be structured in a gridded format, nddata instances always have a other_info dictionary attribute, which stores these properties by name.
If the property doesn’t exist, this returns None.
Parameters: propname (str) – Name of the property that you’re want returned. If this is left out or set to “None” (not given), the names of the available properties are returned. If no exact match is found, and propname contains a . or * or [, it’s assumed to be a regular expression. If several such matches are found, the error message is informative.
Todo
have it recursively search dictionaries (e.g. bruker acq)
Returns: Return type: The value of the property (can by any type) or None if the property doesn’t exist.
-
get_units
(*args)¶
-
getaxis
(axisname)¶
-
getaxisshape
(axisname)¶
-
gnuplot_save
(filename)¶
-
hdf5_write
(h5path, directory='.')¶ Write the nddata to an HDF5 file.
h5path is the name of the file followed by the node path where you want to put it – it does not include the directory where the file lives. The directory can be passed to the directory argument.
Parameters: - h5path (str) – The name of the file followed by the node path where you want to put it – it does not include the directory where the file lives. (Because HDF5 files contain an internal directory-like group structure.)
- directory (str) – the directory where the HDF5 file lives.
-
histogram
(**kwargs)¶
-
human_units
()¶
-
ift
(axes, n=False, tolerance=1e-05, verbose=False, **kwargs)¶ This performs a Fourier transform along the axes identified by the string or list of strings axes.
- It adjusts normalization and units so that the result conforms to
- \(s(t)=t_{dw} \int_{x_min}^{x_max} \tilde{s}(t) e^{i 2 \pi f t} df\)
Where \(t_{dw}=\frac{1}{\Delta f}\), is the dwell time (with \(\Delta f\) the spectral width).
Why do we do this? Note that while the analytical integral this corresponds to is normalized, performing
ft()
followed byift()
on a discrete sequence is NOT completely invertible (due to integration of the implied comb function??), and would require division by a factor of $Delta f$ (the spectral width) in order to retrieve the original functionpre-IFT, we use the axis to cyclically permute $f=0$ to the first index
post-IFT, we assume that the data has previously been FT’d If this is the case, passing
shift=True
will cause an error If this is not the case, passingshift=True
generates a standard ifftshiftshift=None
will choose True, if and only if this is not the caseParameters: pad (int or boolean) – pad specifies a zero-filling. If it’s a number, then it gives the length of the zero-filled dimension. If it is just True, then the size of the dimension is determined by rounding the dimension size up to the nearest integral power of 2. It uses the start_time ft property to determine the start of the axis. To do this, it assumes that it is a stationary signal (convolved with infinite comb function). The value of start_time can differ from by a non-integral multiple of \(\Delta t\), though the routine will check whether or not it is safe to do this.
- ..note ::
- In the code, this is controlled by p2_post (the integral \(\Delta t\) and p2_post_discrepancy – the non-integral.
-
imag
¶ Return the imag component of the data
-
indices
(axis_name, values)¶ Return a string of indeces that most closely match the axis labels corresponding to values. Filter them to make sure they are unique.
-
inhomog_coords
(direct_dim, indirect_dim, tolerance=1e-05, method='linear', plot_name=None, fl=None, debug_kwargs={})¶ Apply the “inhomogeneity transform,” which rotates the data by \(45^{\circ}\), and then mirrors the portion with \(t_2<0\) in order to transform from a \((t_1,t_2)\) coordinate system to a \((t_{inh},t_{homog})\) coordinate system.
Parameters: - direct_dim (str) – Label of the direct dimension (typically \(t_2\))
- indirect_dim (str) – Label of the indirect dimension (typically \(t_1\))
- method ('linear', 'fourier') – The interpolation method used to rotate the data and to mirror the data. Note currently, both use a fourier-based mirroring method.
- plot_name (str) – the base name for the plots that are generated
- fl (figlist_var) –
- debug_kwargs (dict) –
with keys:
correct_overlap: if False, doesn’t correct for the overlap error that occurs during mirroring
-
integrate
(thisaxis, backwards=False, cumulative=False)¶ this performs an integration – which is similar to a sum, except that it takes the axis into account, i.e., it performs: $int f(x) dx$ rather than $sum_i f(x_i)$
Gaussian quadrature, etc, is planned for a future version.
-
interp
(axis, axisvalues, past_bounds=None, return_func=False, **kwargs)¶ interpolate data values given axis values
Parameters: return_func (boolean) – defaults to False. If True, it returns a function that accepts axis values and returns a data value.
-
invinterp
(axis, values, **kwargs)¶ interpolate axis values given data values
-
item
()¶ like numpy item – returns a number when zero-dimensional
-
labels
(*args) label the dimensions, given in listofstrings with the axis labels given in listofaxes – listofaxes must be a numpy array; you can pass either a dictionary or a axis name (string)/axis label (numpy array) pair
-
like
(value)¶ provide “zeros_like” and “ones_like” functionality
Parameters: value (float) – 1 is “ones_like” 0 is “zeros_like”, etc.
-
linear_shear
(along_axis, propto_axis, shear_amnt, zero_fill=True)¶ the linear shear – see self.shear for documentation
-
matchdims
(other)¶ add any dimensions to self that are not present in other
-
matrices_3d
(also1d=False, invert=False, max_dimsize=1024, downsample_self=False)¶ returns X,Y,Z,x_axis,y_axis matrices X,Y,Z, are suitable for a variety of mesh plotting, etc, routines x_axis and y_axis are the x and y axes
-
mayavi_surf
()¶ use the mayavi surf function, assuming that we’ve already loaded mlab during initialization
-
mean
(*args, **kwargs)¶ Take the mean and set the error to the standard deviation
Parameters: return_error (bool) – whether or note to return the standard deviation as an error
-
mean_all_but
(listofdims)¶ take the mean over all dimensions not in the list
-
mean_nopop
(axis)¶
-
mean_weighted
(axisname)¶ perform the weighted mean along axisname (use $sigma$ from $sigma = $self.get_error() do generate $1/sigma$ weights) for now, it clears the error of self, though it would be easy to calculate the new error, since everything is linear
unlike other functions, this creates working objects that are themselves nddata objects this strategy is easier than coding out the raw numpy math, but probably less efficient
-
meshplot
(stride=None, alpha=1.0, onlycolor=False, light=None, rotation=None, cmap=<matplotlib.colors.LinearSegmentedColormap object>, ax=None, invert=False, **kwargs)¶ takes both rotation and light as elevation, azimuth only use the light kwarg to generate a black and white shading display
-
mkd
(*arg, **kwargs)¶ make dictionary format
-
multimin
(minfunc, axisname, filterwidth, numberofmins)¶
-
name
(*arg)¶ args: .name(newname) –> Name the object (for storage, etc) .name() –> Return the name
-
nnls
(dimname, newaxis_dict, kernel_func, l=0)¶ Perform regularized non-negative least-squares “fit” on self.
Capable of solving for solution in 1 or 2 dimensions.
We seek to minimize \(Q = \| Ax - b \|_2 + \|\lambda x\|_2\) in order to obtain solution vector \(x\) subject to non-negativity constraint given input matrix \(A\), the kernel, and input vector \(b\), the data.
The first term assesses agreement between the fit \(Ax\) and the data \(b\), and the second term accounts for noise with the regularization parameter \(\lambda\) according to Tikhonov regularization.
To perform regularized minimization in 2 dimensions, set l to :str:`BRD` and provide a tuple of parameters :str:`dimname`, :nddata:`newaxis_dict`, and :function:`kernel_func`. Algorithm described in Venkataramanan et al. 2002 is performed which determines optimal \(\lambda\) for the data (DOI:10.1109/78.995059).
See: Wikipedia page on NNLS, Wikipedia page on Tikhonov regularization
Parameters: - dimname (str) – Name of the “data” dimension that is to be replaced by a distribution (the “fit” dimension); e.g. if you are regularizing a set of functions \(\exp(-\tau*R_1)\), then this is \(\tau\)
- newaxis_dict (dict or nddata) – a dictionary whose key is the name of the “fit” dimension (\(R_1\) in the example above) and whose value is an array with the new axis labels. OR this can be a 1D nddata – if it has an axis, the axis will be used to create the fit axis; if it has no axis, the data will be used
- kernel_func (function) – a function giving the kernel for the regularization.
The first argument is the “data” variable
and the second argument is the “fit” variable
(in the example above, this would be something like
lambda x,y: exp(-x*y)
) - l (double (default 0) or str) – the regularization parameter \(lambda\) – if this is set to 0, the algorithm reverts to standard nnls. If this is set to :str:`BRD`, then algorithm expects tuple of each parameter described above in order to perform a 2-dimensional fit.
Returns: The regularized result. For future use, both the kernel (as an nddata, in a property called “nnls_kernel”) and the residual (as an nddata, in a property called “nnls_residual”) are stored as properties of the nddata. The regularized dimension is always last (innermost). If :str:`BRD` is specified, then the individual, uncompressed kernels \(K_{1}\) and \(K_{2}\) are returned as properties of the nddata “K1” and “K2” respectively. The number of singular values used to compressed each kernel is returned in properties of the nddata called, respectively, “s1” and “s2”.
Return type: self
-
normalize
(axis, first_figure=None)¶
-
oldtimey
(alpha=0.5, ax=None, linewidth=None, sclinewidth=20.0, light=True, rotation=None, invert=False, **kwargs)¶
-
plot_labels
(labels, fmt=None, **kwargs_passed)¶ this only works for one axis now
-
polyfit
(axis, order=1, force_y_intercept=None)¶ polynomial fitting routine – return the coefficients and the fit ..note:
later, should probably branch this off as a new type of fit class- ..warning:
- for some reason, this version doesn’t use orthogonal polynomials, as the numpy routine does – we had diagnosed and determined that that creates noticeably different results, so fix that here.
Parameters: - axis (str) – name of the axis that you want to fit along (not sure if this is currently tested for multi-dimensional data, but the idea should be that multiple fits would be returned.)
- order (int) – the order of the polynomial to be fit
- force_y_intercept (double or None) – force the y intercept to a particular value (e.g. 0)
Returns: - c (ndarray) – a standard numpy array containing the coefficients (in ascending polynomial order)
- formult (nddata) – an nddata containing the result of the fit
-
popdim
(dimname)¶
-
random_mask
(axisname, threshold=None, inversion=False)¶ generate a random mask with about ‘threshold’ of the points thrown out
-
real
¶ Return the real component of the data
-
register_axis
(arg)¶ Interpolate the data so that the given axes are in register with a set of specified values. Does not change the spacing of the axis labels.
It finds the axis label position that is closest to the values given in arg, then interpolates (Fourier/sinc method) the data onto a new, slightly shifted, axis that passes exactly through the value given. To do this, it uses
.ft_clear_startpoints()
and uses.set_ft_prop()
to override the “not aliased” flag.Parameters: arg (dict (key,value = str,double)) – A list of the dimensions that you want to place in register, and the values you want them registered to.
-
rename
(previous, new)¶
-
reorder
(*axes, **kwargs)¶ Reorder the dimensions the first arguments are a list of dimensions
Parameters: - *axes (str) – Accept any number of arguments that gives the dimensions, in the order that you want thee.
- first (bool) – (default True) Put this list of dimensions first, while False puts them last (where they then come in the order given).
-
replicate_units
(other)¶
-
repwlabels
(axis)¶
-
retaxis
(axisname)¶
-
run
(*args)¶ run a standard numpy function on the nddata:
d.run(func,'axisname')
will run function func (e.g. a lambda function) along axis named ‘axisname’d.run(func)
will run function func on the datain general: if the result of func reduces a dimension size to 1, the ‘axisname’ dimension will be “popped” (it will not exist in the result) – if this is not what you want, use
run_nopop
-
run_avg
(thisaxisname, decimation=20, centered=False)¶ a simple running average
-
run_nopop
(func, axis)¶
-
runcopy
(*args)¶
-
secsy_transform
(direct_dim, indirect_dim, has_indirect=True, method='fourier', truncate=True)¶ Shift the time-domain data backwards by the echo time.
As opposed to
secsy_transform_manual
, this calls on onskew
, rather than directly manipulating the phase of the function, which can lead to aliasing.Parameters: - has_indirect (bool) –
(This option is largely specific to data loaded by
acert_hdf5
)Does the data actually have an indirect dimension? If not, assume that there is a constant echo time, that can be retrieved with
.get_prop('te')
. - truncate (bool) – If this is set, register_axis <pyspecdata.axis_manipulation.register_axis> to \(t_{direct}=0\), and then throw out the data for which \(t_{direct}<0\).
- method (str) – The shear method (linear or fourier).
- has_indirect (bool) –
-
secsy_transform_manual
(direct_dim, indirect_dim, has_indirect=True, truncate=False)¶ Shift the time-domain data backwards by the echo time. As opposed to
secsy_transform
, this directlly manipulates the phase of the function, rather than calling onskew
.Parameters: - has_indirect (bool) –
(This option is largely specific to data loaded by
acert_hdf5
)Does the data actually have an indirect dimension? If not, assume that there is a constant echo time, that can be retrieved with
.get_prop('te')
. - truncate (bool) – If this is set, register_axis <pyspecdata.axis_manipulation.register_axis> to \(t_{direct}=0\), and then throw out the data for which \(t_{direct}<0\).
- has_indirect (bool) –
-
set_error
(*args)¶ set the errors: either
set_error(‘axisname’,error_for_axis) or set_error(error_for_data)
error_for_data can be a scalar, in which case, all the data errors are set to error_for_data
-
set_ft_prop
(axis, propname=None, value=True)¶ Sets the FT property given by propname. For both setting and getting, None is equivalent to an unset value if propname is a boolean, and value is True (the default), it’s assumed that propname is actually None, and that value is set to the propname argument (this allows us to set the FT property more easily)
-
set_plot_color
(thiscolor)¶
-
set_prop
(*args)¶ set a ‘property’ of the nddata This is where you can put all unstructured information (e.g. experimental parameters, etc)
-
set_to
(otherinst)¶ Set data inside the current instance to that of the other instance.
Goes through the list of attributes specified in copy, and assigns them to the element of the current instance.
This is to be used:
- for constructing classes that inherit nddata with additional methods.
- for overwriting the current data with the result of a slicing operation
-
set_units
(*args)¶
-
setaxis
(*args)¶ set or alter the value of the coordinate axis
Can be used in one of several ways:
self.setaxis('axisname', values)
: just sets the valuesself.fromaxis('axisname',inputfunc)
: take the existing function, apply inputfunc, and replaceself.fromaxis(inputsymbolic)
: Evaluate inputsymbolic and load the result into the axes, appropriately
-
shear
(along_axis, propto_axis, shear_amnt, zero_fill=True, start_in_conj=False, method='linear')¶ Shear the data \(s\):
\(s(x',y,z) = s(x+ay,y,z)\)
where \(x\) is the altered_axis and \(y\) is the propto_axis. (Actually typically 2D, but \(z\) included just to illustrate other dimensions that aren’t involved)
Parameters: - method ({'fourier','linear'}) –
- fourier
- Use the Fourier shift theorem (i.e., sinc interpolation). A
shear is equivalent to the following in the conjugate domain:
..math: tilde{s}(f_x,f’_y,z) = tilde{s}(f_x,f_y-af_x,f_z)
Because of this, the algorithm also automatically extend`s the data in `f_y axis. Equivalently, it increases the resolution (decreases the interval between points) in the propto_axis dimension. This prevents aliasing in the conjugate domain, which will corrupt the data w.r.t. successive transformations. It does this whether or not zero_fill is set (zero_fill only controls filling in the “current” dimension)
- linear
- Use simple linear interpolation.
- altered_axis (str) – The coordinate for which data is altered, i.e. ..math: x such that ..math: f(x+ay,y).
- by_amount (double) – The amount of the shear (..math: a in the previous)
- propto_axis (str) – The shift along the altered_axis dimension is proportional to the shift along propto_axis. The position of data relative to the propto_axis is not changed. Note that by the shift theorem, in the frequency domain, an equivalent magnitude, opposite sign, shear is applied with the propto_axis and altered_axis dimensions flipped.
- start_in_conj ({False, True}, optional) –
Defaults to False
For efficiency, one can replace a double (I)FT call followed by a shear call with a single shear call where start_in_conj is set.
self before the call is given in the conjugate domain (i.e., \(f\) vs. \(t\)) along both dimensions from the one that’s desired. This means: (1) self after the function call transformed into the conjugate domain from that before the call and (2) by_amount, altered_axis, and propto_axis all refer to the shear in the conjugate domain that the data is in at the end of the function call.
- method ({'fourier','linear'}) –
-
smoosh
(dimstocollapse, dimname=0, noaxis=False)¶ Collapse (smoosh) multiple dimensions into one dimension.
Parameters: - dimstocollapse (list of strings) – the dimensions you want to collapse to one result dimension
- dimname (None, string, integer (default 0)) –
if dimname is:
- None: create a new (direct product) name,
- a number: an index to the
dimstocollapse
list. The resulting smooshed dimension will be nameddimstocollapse[dimname]
. Because the default is the number 0, the new dimname will be the first dimname given in the list. - a string: the name of the resulting smooshed dimension (can be part of the
dimstocollapse
list or not)
- noaxis (bool) – if set, then just skip calculating the axis for the new dimension, which otherwise is typically a complicated record array
Returns: - self (nddata) – the dimensions dimstocollapse are smooshed into a single dimension, whose name is determined by dimname. The axis for the resulting, smooshed dimension is a structured array consisting of two fields that give the labels along the original axes.
- ..todo:: – when we transition to axes that are stored using a slice/linspace-like format, allow for smooshing to determine a new axes that is standard (not a structured array) and that increases linearly.
-
sort
(axisname, reverse=False)¶
-
sort_and_xy
()¶
-
squeeze
(return_dropped=False)¶ squeeze singleton dimensions
Parameters: return_dropped (bool (default False)) – return a list of the dimensions that were dropped as a second argument Returns: - self
- return_dropped (list) – (optional, only if return_dropped is True)
-
sum
(axes)¶
-
sum_nopop
(axes)¶
-
to_ppm
()¶ Function that converts from Hz to ppm using Bruker parameters
Todo
Figure out what the units of PHC1 in Topspin are (degrees per what??), and apply those as well.
make this part of an inherited bruker class
-
unitify_axis
(axis_name, is_axis=True)¶ this just generates an axis label with appropriate units
-
units_texsafe
(*args)¶
-
unset_prop
(arg)¶ remove a ‘property’
-
want_to_prospa_decim_correct
= False¶
-
waterfall
(alpha=0.3, ax=None, rotation=None, color='b', edgecolor='k')¶
-
-
class
pyspecdata.
nddata_hdf5
(pathstring, directory='.')¶ Bases:
pyspecdata.core.nddata
-
pyspecdata.
ndgrid
(*input)¶
-
class
pyspecdata.
ndshape
(*args)¶ Bases:
pyspecdata.ndshape.ndshape_base
The ndshape class, including the allocation method
-
alloc
(dtype='complex128', labels=False, format=0)¶ Use the shape object to allocate an empty nddata object.
Parameters: - labels – Needs documentation
- format (0, 1, or None) – What goes in the allocated array. None uses numpy empty.
-
-
class
pyspecdata.
ndshape_base
(*args)¶ The base ndshape class, which doesn’t include an allocation method.
-
axn
(axis)¶ return the number for the axis with the name “axis”
-
copy
()¶
-
matchdims
(arg)¶ returns shape with [not in self, len 1] + [overlapping dims between arg + self] + [not in arg] –> this is better accomplished by using sets as I do in the matchdims below
-
pop
(label)¶ remove a dimension
-
rename
(before, after)¶ rename a dimension
-
-
pyspecdata.
newcol_rec
(A, new_dtypes)¶ add new, empty (i.e. random numbers) fields to A, as given by new_dtypes –> note that there are deeply nested numpy functions to do this, but the options are confusing, and I think the way these work is efficient
-
pyspecdata.
nextfigure
(figurelist, name)¶ obsolete – now use class
-
pyspecdata.
nnls_regularized
(A, b, l=0, maxiter=None)¶ Solve math:argmin_x || Ax - b ||_2^2 + lambda^2 ||x||_2^2 for
x>=0
. This is a wrapper for a FORTRAN non-negative least squares solver, with regularization (added by stacking $A$ on top an identity matrix times $lambda$ and $b$ on top of a matching array of zero.Parameters: - A (ndarray) – Matrix
A
as shown above. - b (ndarray) – Right-hand side vector.
- l (double (default 0)) – \(lambda\) – if this is set to 0, the algorithm reverts to standard nnls (rather than stacking on top of two zero matrices for no reason)
- maxiter (int, optional) – Maximum number of iterations, optional.
Default is
3 * A.shape[1]
.
Returns: - x (ndarray) – Solution vector.
- rnorm (float) – The residual,
|| Ax-b ||_2
.
Notes
The FORTRAN code was published in the book below. The algorithm is an active set method. It solves the KKT (Karush-Kuhn-Tucker) conditions for the non-negative least squares problem.
This was adapted from the source distributed with scipy – see scipy for relevant licensing.
References
Lawson C., Hanson R.J., (1987) Solving Least Squares Problems, SIAM
- A (ndarray) – Matrix
-
pyspecdata.
normal_attrs
(obj)¶
-
pyspecdata.
obs
(*x)¶
-
pyspecdata.
obsn
(*x)¶
-
pyspecdata.
othergridandtick
(ax, rotation=(0, 0), precision=(2, 2), labelstring=('', ''), gridcolor=None, y=True, x=True, spines=None)¶
-
pyspecdata.
pinvr
(C, alpha)¶
-
pyspecdata.
plot
(*args, **kwargs)¶ The base plotting function that wraps around matplotlib to do a couple convenient things.
Parameters: - label_format_string (str) – If supplied, it formats the values of the other dimension to turn them into a label string.
- human_units (bool) –
-
pyspecdata.
plot_color_counter
(*args, **kwargs)¶ Try not to use this function any more – the version-to-version support for capturing and setting color cycles in matplotlib is very very bad. (And, the cycler object in newer versions of matplolib is confusing.) So, just import cycle from itertools, and use it to build a cycle that you directly call to set your properties.
Note
previous description:
if passed an argument: make it so that the next line will have the properties given by the argument
if not passed an argument: just return the current plot properties,so that I can cycle back to it
-
pyspecdata.
plot_label_points
(x, y, labels, **kwargs_passed)¶
-
pyspecdata.
plot_updown
(data, axis, color1, color2, symbol='', **kwargs)¶
-
pyspecdata.
process_kwargs
(listoftuples, kwargs, pass_through=False, as_attr=False)¶ This function allows dynamically processed (i.e. function definitions with **kwargs) kwargs (keyword arguments) to be dealt with in a fashion more like standard kwargs. The defaults set in listoftuples are used to process kwargs, which are then returned as a set of values (that are set to defaults as needed).
Note that having kwargs as an explicit argument avoids errors where the user forgets to pass the kwargs.
Parameters: - kwargs (**dictionary) – The keyword arguments that you want to process.
- listoftuples (list of tuple pairs) – Tuple pairs, consisting of
('param_name',param_value)
, that give the default values for the various parameters. - pass_through (bool) – Defaults to False. If it’s true, then it’s OK not to process all the kwargs here. In that case, the used kwargs are popped out of the dictionary, and you are expected to pass the unprocessed values (in the dictionary after the call) on to subsequent processing. Importantly, you should always end with a pass_through`=`False call of this function, or by passing **kwargs to a standard function in the standard way. Otherwise it’s possible for the user to pass kwargs that are never processed!
- as_attr (bool, object) – Defaults to False. If not False, it must be an object whose attributes are set to the value of the respective kwargs.
- return (tuple) – It’s expected that the output is assigned to variables with the exact same names as the string in the first half of the tuples, in the exact same order. These parameters will then be set to the appropriate values.
-
pyspecdata.
prospa_t1_info
(file)¶
-
pyspecdata.
rc
(*args, **kwargs)¶
-
class
pyspecdata.
rclass
¶ Bases:
object
-
pyspecdata.
redim_C_to_F
(a)¶ see redim_F_to_C
-
pyspecdata.
redim_F_to_C
(a)¶ the following creates a C array, reversing the apparent order of dimensions, while preserving the order in memory
-
pyspecdata.
reformat_exp
(arg)¶ reformat scientific notation in a nice latex format – used in both pdf and jupyter notebooks
-
pyspecdata.
rename_fields
(base, namemapper)¶ Rename the fields from a flexible-datatype ndarray or recarray.
Nested fields are supported.
Parameters: - base (ndarray) – Input array whose fields must be modified.
- namemapper (dictionary) – Dictionary mapping old field names to their new version.
Examples
>>> from numpy.lib import recfunctions as rfn >>> a = np.array([(1, (2, [3.0, 30.])), (4, (5, [6.0, 60.]))], ... dtype=[('a', int),('b', [('ba', float), ('bb', (float, 2))])]) >>> rfn.rename_fields(a, {'a':'A', 'bb':'BB'}) array([(1, (2.0, [3.0, 30.0])), (4, (5.0, [6.0, 60.0]))], dtype=[('A', '<i4'), ('b', [('ba', '<f8'), ('BB', '<f8', 2)])])
-
pyspecdata.
render_matrix
(arg, format_code='%.4g')¶ return latex string representing 2D matrix
-
pyspecdata.
reorder_rec
(myarray, listofnames, first=True)¶
-
pyspecdata.
scipy_griddata
(points, values, xi, method='linear', fill_value=nan, rescale=False)¶ Interpolate unstructured D-dimensional data.
Parameters: - points (ndarray of floats, shape (n, D)) – Data point coordinates. Can either be an array of shape (n, D), or a tuple of ndim arrays.
- values (ndarray of float or complex, shape (n,)) – Data values.
- xi (2-D ndarray of float or tuple of 1-D array, shape (M, D)) – Points at which to interpolate data.
- method ({'linear', 'nearest', 'cubic'}, optional) –
Method of interpolation. One of
nearest
- return the value at the data point closest to the point of interpolation. See NearestNDInterpolator for more details.
linear
- tessellate the input point set to n-dimensional simplices, and interpolate linearly on each simplex. See LinearNDInterpolator for more details.
cubic
(1-D)- return the value determined from a cubic spline.
cubic
(2-D)- return the value determined from a piecewise cubic, continuously differentiable (C1), and approximately curvature-minimizing polynomial surface. See CloughTocher2DInterpolator for more details.
- fill_value (float, optional) – Value used to fill in for requested points outside of the
convex hull of the input points. If not provided, then the
default is
nan
. This option has no effect for the ‘nearest’ method. - rescale (bool, optional) –
Rescale points to unit cube before performing interpolation. This is useful if some of the input dimensions have incommensurable units and differ by many orders of magnitude.
New in version 0.14.0.
Returns: Array of interpolated values.
Return type: ndarray
Notes
New in version 0.9.
Examples
Suppose we want to interpolate the 2-D function
>>> def func(x, y): ... return x*(1-x)*np.cos(4*np.pi*x) * np.sin(4*np.pi*y**2)**2
on a grid in [0, 1]x[0, 1]
>>> grid_x, grid_y = np.mgrid[0:1:100j, 0:1:200j]
but we only know its values at 1000 data points:
>>> points = np.random.rand(1000, 2) >>> values = func(points[:,0], points[:,1])
This can be done with griddata – below we try out all of the interpolation methods:
>>> from scipy.interpolate import griddata >>> grid_z0 = griddata(points, values, (grid_x, grid_y), method='nearest') >>> grid_z1 = griddata(points, values, (grid_x, grid_y), method='linear') >>> grid_z2 = griddata(points, values, (grid_x, grid_y), method='cubic')
One can see that the exact result is reproduced by all of the methods to some degree, but for this smooth function the piecewise cubic interpolant gives the best results:
>>> import matplotlib.pyplot as plt >>> plt.subplot(221) >>> plt.imshow(func(grid_x, grid_y).T, extent=(0,1,0,1), origin='lower') >>> plt.plot(points[:,0], points[:,1], 'k.', ms=1) >>> plt.title('Original') >>> plt.subplot(222) >>> plt.imshow(grid_z0.T, extent=(0,1,0,1), origin='lower') >>> plt.title('Nearest') >>> plt.subplot(223) >>> plt.imshow(grid_z1.T, extent=(0,1,0,1), origin='lower') >>> plt.title('Linear') >>> plt.subplot(224) >>> plt.imshow(grid_z2.T, extent=(0,1,0,1), origin='lower') >>> plt.title('Cubic') >>> plt.gcf().set_size_inches(6, 6) >>> plt.show()
-
pyspecdata.
search_filename
(searchstring, exp_type, print_result=True)¶ Use regular expression searchstring to find a file inside the directory indicated by exp_type
Parameters: - searchstring (str) – Most commonly, this is just a fragment of the file name,
with any literal
*
,.
, or?
characters preceded by a backslash. More generally, it is a regular expression, where.*searchstring.*
matches a filename inside the directory appropriate for exp_type. - exp_type (str) – Since the function assumes that you have different types of
experiments sorted into different directories, this argument
specifies the type of experiment see
getDATADIR()
for more info.
- searchstring (str) – Most commonly, this is just a fragment of the file name,
with any literal
-
pyspecdata.
sech
(x)¶
-
pyspecdata.
showtype
(x)¶
-
pyspecdata.
spectrogram
(waveform, f_start, f_stop, npoints_fdom=40, tdom_div=2)¶
-
pyspecdata.
sqrt
(arg)¶
-
pyspecdata.
strm
(*args)¶
-
class
pyspecdata.
testclass
¶
-
pyspecdata.
text_on_plot
(x, y, thistext, coord='axes', **kwargs)¶
-
pyspecdata.
textlabel_bargraph
(mystructarray, othersort=None, spacing=0.1, ax=None, tickfontsize=8)¶
-
pyspecdata.
unmake_ndarray
(array_to_conv, name_forprint='unknown')¶ Convert this item to an ndarray
-
pyspecdata.
whereblocks
(a)¶ returns contiguous chunks where the condition is true but, see the “contiguous” method, which is more OO


EditorialMag Pro
There are two methods to install EditorialMag Pro theme. You may either upload the zipped theme file using the WordPress theme installer (Recommended), or you can upload the unzipped theme folder via FTP (Advanced).
Method 1 ( Recommended) : Install Using the WordPress Theme Installer
- Buy EditorialMag Pro Theme and Download the theme in your computer.
- EditorialMag Pro comes with two different file one main theme zip file and another is bundled with theme zip file, documentation zip file.
So unzip/extract the download file.
Note : If you only download main theme zip file then you don't need to unxip/extract file directy you can install theme below step.
- Log in to the WordPress Administration Panel.
- Go to Appearance >> Themes >> Add New
- Click on Upload Theme button at the top and browse the editorialmag-pro.zip file from the extracted/unzipped zip in your computer.
- Click on Install button
- Go to Appearance >> Themes and activate to install the Theme
- Click on Appearance >> Widget or Appearance >> Customizer in the Appearance Menu in the Dashboard for further setup.
Method 2: Install Using File Transfer Protocol (FTP)
- Buy EditorialMag Pro Pro and Download the theme in your computer.
- EditorialMag Pro comes with two different file one main theme zip file and another is bundled with theme zip file, documentation zip file.
- Unzip the downloaded file, After you unzip the file you will see addition folders and ziped file, Now unzip the editorialmag-pro.zip.
- Upload the unzipped editorialmag-pro in to /wp-content/themes/
- Activate the theme by going to Appearance >> Themes and activate to install the Theme
- Click on Appearance >> Widget or Appearance >> Customizer in the Appearance Menu in the Dashboard for further setup.
Install Update Theme
- Buy EditorialMag Pro Pro and Download the theme in your computer.
- EditorialMag Pro comes with two different file one main theme zip file and another is bundled with theme zip file, documentation zip file.
- Unzip the downloaded file, After you unzip the file you will see addition folders and ziped file, Now unzip the editorialmag-pro.zip.
- Upload the unzipped editorialmag-pro in to /wp-content/themes/
- Activate the theme by going to Appearance >> Themes and activate to install the Theme
- Click on Appearance >> Widget or Appearance >> Customizer in the Appearance Menu in the Dashboard for further setup.
Activate the theme
-
Log in to the WordPress Administration Panel.
-
Go to Appearance > Themes in the WordPress menu
-
Hover over the theme thumbnail and click the Activate button.
To install a plugin in your WordPress admin panel and follow the following steps.
Plugin Installing Method
- Log into your WordPress site and opens the Administration Panel.
- Click Navigate to Plugins > Add New in the WordPress Dashboard.
- Search for the name of the plugin you wish to install which will return a list of potential plugins.
- Click Details to read more about a plugin.
- Click “Install Now” if you wish to install the plugin.
- It may ask if you are sure, and you may proceed. The installation will commence once you confirm to proceed.
- After the plugin is downloaded. Go to Plugins>Installed Plugins. Click “Activate Plugin” to make it available for use.
Recommended Plugins : We recommend you to download the following plugins when necessary:
- Share Buttons by AddThis by The AddThis Team, Share Buttons by AddThis
- Social Media Share Buttons | MashShare by René Hermenau, Social Media Share Buttons | MashShare
- Jetpack by WordPress.com, by: Automattic (The plugin provides a variety of complementary features for your Theme.)
- Regenerate Thumnails by Alex Mills (Viper007Bond) (If you have existing content, this will help you update your image thumbnails sizes.)
- WooCommerce by woocommerce.com, by: Automattic (The most customizable eCommerce platform for building your online siness. Get started today for free.)
One Click To Install Demo Data
- Go to Appearance > Customize
- Click On > Import Data Demo Section
- Open Import Data Demo & Click on 'Import Demo' button
- When Your Demo Data have Import Sucessfully then you have to get one Popup Message(Demo Data Sucessfully Imported).
Note :- It might take few minutes for importing the demo contents so please have patience. Importing demo will override all the existing customizer themes options, widget value/settings which is irreversible so please proceed with caution. .
Web Page Layout Options
- Go to Appearance > Customize > Boxed/Fullwidth Settings
- Open Boxed/Fullwidth Settings > WebPage Layout
- Select the WebSite Layout Options (Boxed Layout, FullWidth Layout) per as you want
- Click Save & Publish.
Logo/Site Title/Favicon (To set up Site Identity)
- Go to Appearance> Customize > General Settings > Site Identity
- Click Select logo by clicking Select Logo.
- Upload and select the desired image.
- Enter the Site Title and Tagline
- Check Display Header Text for the Site title and Tagline to appear on your homepage.
- Click Select Image under Site Icon
- Upload and select the desired image. (The Site Icon/ favicon is used as a browser and app icon for your site. The recommended Site Icon size is 512*512 pixels.)
- Click Save & Publish.
Background Image
- Go to Appearance > Customize > General Settings > Background Image
- Click Select Image.
- Upload and Select a Background Image & Manage the image position & other settings
- Click Save & Publish.
To set the Header Image
- Go to Appearance > Customize > General Settings > Header Image
- Upload the header image from the Add new image button. After selecting the header image, it will ask you to crop. If you like to crop it, then, you can crop else leave it as you want for your site to best suit it.
- Click Save & Publish.
Configer Main Header Settings
- Log into your WordPress site and opens the Administration Panel.
- Go to Dashboard > Appearance > Customize
- Open > Main Header Settings
- Manage all settings main header options with "Header Type Options" per as you want.
- Click Save & Publish.
EditorialMag Pro Provides a "Home Page" template for your home page. Please follows these steps to configure your home page with "Editorial - FrontPage" template.
HomePage Setting
-
Log into your WordPress site and opens the Administration Panel.
-
Go to Dashboard > Pages > Add New
-
Enter the Page Title for the Page. You do not require to enter anything in the content section for creating a home page.
-
Select the Home Page Template from the Page Attributes section.
-
Click Publish
Configuring the front Page display setting
-
Log into your WordPress site and opens the Administration Panel.
-
Go to Appearance > Customize > Static Front Page.
-
Select A static page under Front Page displays.
-
Click Save & Publish.
Note : Remember that EditorialMag Pro News/Magazine themes fully base on Widget so first configer home page using widget.
EMag : Slider With Normal Posts
Configure EMag : Slider With Normal Posts
- Log into your WordPress site and opens the Administration Panel.
- Go to Dashboard > Appearance > Widgets
- Open > Widgets > Home 1, Home 2, Home 2 or any sidebar or footer widget area.
- Drag & Drop "EMag : Slider With Normal Posts" & Manage All EMag : Slider With Normal Posts Widget Options Per as You Want
- Click Save > Publish.
EMag : Slider Posts
Configure EMag : Slider Posts
- Log into your WordPress site and opens the Administration Panel.
- Go to Dashboard > Appearance > Widgets
- Open > Widgets > Home 1, Home 2, Home 2 or any sidebar or footer widget area.
- Drag & Drop "EMag : Slider Posts" & Manage All EMag : Slider Posts Widget Options Per as You Want
- Click Save > Publish.
EMag : Carousel Slider Posts
Configure EMag : Carousel Slider Posts
- Log into your WordPress site and opens the Administration Panel.
- Go to Dashboard > Appearance > Widgets
- Open > Widgets > Home 1, Home 2, Home 2 or any sidebar or footer widget area.
- Drag & Drop "EMag : Carousel Slider Posts" & Manage All EMag : Carousel Slider Posts Widget Options Per as You Want
- Click Save > Publish.
EMag : Large With Grid Posts
Configure EMag : Large With Grid Posts
- Log into your WordPress site and opens the Administration Panel.
- Go to Dashboard > Appearance > Widgets
- Open > Widgets > Home 1, Home 2, Home 2 or any sidebar or footer widget area.
- Drag & Drop "EMag : Large With Grid Posts" & Manage All EMag : Large With Grid Posts Widget Options Per as You Want
- Click Save > Publish.
EMag : Grid Posts
Configure EMag : Grid Posts
- Log into your WordPress site and opens the Administration Panel.
- Go to Dashboard > Appearance > Widgets
- Open > Widgets > Home 1, Home 2, Home 2 or any sidebar or footer widget area.
- Drag & Drop "EMag : Grid Posts" & Manage All EMag : Grid Posts Widget Options Per as You Want
- Click Save > Publish.
EMag : 3/1 Column Category Posts
Configure EMag : 3/1 Column Category Posts
- Log into your WordPress site and opens the Administration Panel.
- Go to Dashboard > Appearance > Widgets
- Open > Widgets > Home 1, Home 2, Home 2 or any sidebar or footer widget area.
- Drag & Drop "EMag : 3/1 Column Category Posts" & Manage All EMag : 3/1 Column Category Posts Widget Options Per as You Want
- Click Save > Publish.
EMag : Alternative Posts
Configure EMag : Alternative Posts
- Log into your WordPress site and opens the Administration Panel.
- Go to Dashboard > Appearance > Widgets
- Open > Widgets > Home 1, Home 2, Home 2 or any sidebar or footer widget area.
- Drag & Drop "EMag : Alternative Posts" & Manage All EMag : Alternative Posts Widget Options Per as You Want
- Click Save > Publish.
EMag : Category Tabs Posts
Configure EMag : Category Tabs Posts
- Log into your WordPress site and opens the Administration Panel.
- Go to Dashboard > Appearance > Widgets
- Open > Widgets > Home 1, Home 2, Home 2 or any sidebar or footer widget area.
- Drag & Drop "EMag : Category Tabs Posts" & Manage All EMag : Category Tabs Posts Widget Options Per as You Want
- Click Save > Publish.
EMag : Large Single & Small Posts
Configure EMag : Large Single & Small Posts
- Log into your WordPress site and opens the Administration Panel.
- Go to Dashboard > Appearance > Widgets
- Open > Widgets > Home 1, Home 2, Home 2 or any sidebar or footer widget area.
- Drag & Drop "EMag : Large Single & Small Posts" & Manage All EMag : Large Single & Small Posts Widget Options Per as You Want
- Click Save > Publish.
EMag : Large With Small Posts
Configure EMag : Large With Small Posts
- Log into your WordPress site and opens the Administration Panel.
- Go to Dashboard > Appearance > Widgets
- Open > Widgets > Home 1, Home 2, Home 2 or any sidebar or footer widget area.
- Drag & Drop "EMag : Large With Small Posts" & Manage All EMag : Large With Small Posts Widget Options Per as You Want
- Click Save > Publish.
EMag : Video Posts Formats
Configure EMag : Video Posts Formats
- Log into your WordPress site and opens the Administration Panel.
- Go to Dashboard > Appearance > Widgets
- Open > Widgets > Home 1, Home 2, Home 2 or any sidebar or footer widget area.
- Drag & Drop "EMag : Video Posts Formats" & Manage All EMag : Video Posts Formats Widget Options Per as You Want
- Click Save > Publish.
Note :- Video Post Formats Widget Area Only Display Post Format Video Posts
EMag : Sidebar Category Tabs Posts
Configure EMag : Sidebar Category Tabs Posts
- Log into your WordPress site and opens the Administration Panel.
- Go to Dashboard > Appearance > Widgets
- Open > Widgets > Sidebar or Footer widget area.
- Drag & Drop "EMag : Sidebar Category Tabs Posts" & Manage All EMag : Sidebar Category Tabs Posts Widget Options Per as You Want
- Click Save > Publish.
EMag : Recent & Random Posts
Configure EMag : Recent & Random Posts
- Log into your WordPress site and opens the Administration Panel.
- Go to Dashboard > Appearance > Widgets
- Open > Widgets > Sidebar or Footer widget area.
- Drag & Drop "EMag : Recent & Random Posts" & Manage All EMag : Recent & Random Posts Widget Options Per as You Want
- Click Save > Publish.
EMag : Popular / Tags / Comments
Configure EMag : Popular / Tags / Comments
- Log into your WordPress site and opens the Administration Panel.
- Go to Dashboard > Appearance > Widgets
- Open > Widgets > Sidebar or Footer widget area.
- Drag & Drop "EMag : Popular / Tags / Comments" & Manage All EMag : Popular / Tags / Comments Widget Options Per as You Want
- Click Save > Publish.
EMag : Personal Info
Configure EMag : Personal Info
- Log into your WordPress site and opens the Administration Panel.
- Go to Dashboard > Appearance > Widgets
- Open > Widgets > Sidebar or Footer widget area.
- Drag & Drop "EMag : Personal Info" & Manage All EMag : Personal Info Widget Options Per as You Want
- Click Save > Publish.
EMag : Timeline Posts
Configure EMag : Timeline Posts
- Log into your WordPress site and opens the Administration Panel.
- Go to Dashboard > Appearance > Widgets
- Open > Widgets > Sidebar or Footer widget area.
- Drag & Drop "EMag : Timeline Posts" & Manage All EMag : Timeline Posts Widget Options Per as You Want
- Click Save > Publish.
Configer Theme Colors Settings
- Go to Dashboard > Appearance > Appearance > Customize > Theme Colors Settings
- Open > Customize > Theme Colors Settings > Colors
- Manage Primary Color, Header title colro & Background Colors Options per as you choice
- Click on Button (Save & Publish)
Configer Category Color Settings
- Go to Dashboard > Appearance > Appearance > Customize > Theme Colors Settings
- Open > Customize > Theme Colors Settings > Category Color Settings
- Manage category color options per as you want
- Click on Button (Save & Publish)
Configure Breaking News Settings
- Log into your WordPress site and opens the Administration Panel.
- Go to Dashboard > Appearance > Customize
- Open > Customizer > Breaking News Settings
- Manage all breaking news settings options per as you want.
- Click Save > Publish.
Configer Category / Archive Page Settings
- Log into your WordPress site and opens the Administration Panel.
- Go to Dashboard > Appearance > Customize
- Open > Design Layout Settings > Category / Archive Page Settings
- Category Page Advanve Settings > Manage all options & category page design layout options per as you want.
- Click Save & Publish.
Configer Post Single Page Settings
- Log into your WordPress site and opens the Administration Panel.
- Go to Dashboard > Appearance > Customize
- Open > Design Layout Settings > Post Single Page Settings
- Post Single Page > Manage all options & single post advance settings options(Author Box, Related Posts) per as you want.
- Click Save & Publish.
In this theme, we have included Metabox fields under Theme Layout for each page/post. They are:
Page/Post Layout Settings
-
This option allow to choose the page/post layout. This makes your specific page/post different from other pages/posts.
- Left Sidebar
- Right Sidebar
- Fulll Width
This theme supports the Custom CSS, which overwrites the CSS of the main stylesheet file, so that you can apply some CSS to change the look of the site as you desire. Also, this changes will still remain even if you update the theme.
Additional CSS
- Go to Appearance > Customize > Additional CSS
- Open > Additional CSS > Add Custom CSS per as you want
- Click Save & Publish.


It’s been a few weeks of job hunting and I haven’t once had to make a decision that my post on interviewing would’ve helped resolve. The fact is, you get a feel almost immediately for a place, and the reasons you say “yes” or “no” have more to do with who you’ll be working with than the number of monitors you get. Usually, a place that’s using ancient COTS products has put up red flags far earlier in the process. And the jobs I get excited about have nothing to do with their use of Git.
Some lowlights:
- Left waiting for so long, I had to walk out of the interview in order to meet an appointment. The receptionist explained “Well, they have a lot of work to get done!” Good luck with getting it done.
- A guy giving a tech interview (for a J2EE position) couldn’t understand how a Swing front-end to an EJB/JPA backend could possibly be called J2EE.
- Being asked a logic question and, as soon as I used the right word while thinking out loud (in this case “tree”), was cut off and we moved to the next question. After 10 minutes of this, he walked out without telling me anything about the company or job.
- Being offered a job after having No technical questions asked of me. Gee, who else is working there?
- Interviewing in a place where every single aspect of the work environment was crappier than the crappiest house I’ve ever lived. If I can afford a fresh coat of paint every few years, shouldn’t some “global enterprise solution consulting firm” be able to swing it?
- A Java development shop using….Visual Source Safe. I think cp Foo.java Foo.java.bak might be better
- Being asked some challenging questions about concurrency and data structures. You may not ever have to implement a linked-list, but anyone should know it and when I’m asked, it’s a definite plus that the people on the other end know what they are doing
- Being asked to write code. So far, exactly two positions have asked me write code in the interview. Thank god for them, or my faith would be shaken; seriously. I’m always very nervous when I’m applying for a job where I have to write code and no one seems to need any proof that I can do it. It makes me wonder who else is working there
- Solid explanations of the business or project. I used to think this was a no-brainer, but more often than not, I come away from a second interview with NO IDEA what I’d be doing if I took the job.
Criteria is only useful when you have to narrow down a lot of choices. I’d love to have so many great opportunities that I could just pick the one where I can develop on a Mac, or the one with the nicest office (all other things being equal). Sadly, that is not the case around here. It seems very few of my colleagues are being too particular, and I can’t help wondering what effect it might have on, well, the world if clueless developers were not as employable as it seems they are.


Hint: open javascript console for more information (Ctrl + Shift + I)...
Viper IP:
Connect
Disabled
Stop


Safe and Healthy Repair Program
We are excited our year round program for homeowners who need assistance with small carpentry, plumbing and electrical issues
National Rebuild Day
Mark your calendars! April 28th is our next National Rebuild Day
Project Photos
Thank you to the photographers that volunteer their time to document the work our volunteers complete throughout the year.
Homeowners
Click here for more information about eligibility
Non-Profits
Free facility repairs available for non-profits. CLick here for more information
House Captains
Information for potential house captains and project leads


Florida: Essays and Poems
by FCIT
St. Augustine
by Harriet Beecher Stowe
Additional Information
- Year Published: 1872
- Language: English
- Country of Origin: United States of America
- Source: Stowe, H.B. (1872). Palmetto Leaves.
-
Readability:
- Flesch–Kincaid Level: 8.3
- Word Count: 558
- Genre: Essay
- Keywords: florida
- ✎ Cite This
Downloads
As the only seaport city of any size in Florida, St. Augustine has many attractions. Those who must choose a Southern home, and who are so situated that they must remain through the whole summer in the home of their choice, could not do better than to choose St. Augustine. It is comparatively free from malarial fevers; and the sea-air tempers the oppressive heats of summer, so that they are quite endurable. Sea-bathing can be practised in suitable bathing-houses; but the sharks make open sea-bathing dangerous.
If one comes expecting a fine view of the open ocean, however, one will be disappointed; for Anastasia Island–a long, low sand-bar–stretches its barren line across the whole view, giving only so much sea-prospect as can be afforded by the arm of the sea–about two miles wide–which washes the town. Little as this may seem of the ocean, the town lies so flat and low, that, in stormy weather, the waves used to be driven up into it, so as to threaten its destruction. A sea-wall of solid granite masonry was deemed necessary to secure its safety, and has been erected by the United-States Government. This wall affords a favorite promenade to the inhabitants, who there enjoy good footing and sea-breezes.
We were visiting in a house which is a model for a hot climate. A wide, cool hall runs through the centre; and wide verandas, both above and below, go around the whole four sides. From these we could look down at our leisure into the foliage of a row of Magnolia grandiflora, now in blossom. Ivy, honey-suckles, manrundia, and a host of other climbing-plants, make a bower of these outside corridors of the house. The calla-lilies blossom almost daily in shaded spots; and beds of fragrant blue violets are never without flowers.
The secret of gardening well here is to get things that love the sun. Plants that come originally from hot regions, and that rejoice the hotter it grows, are those to be sought for. The date-palm has many beautiful specimens in the gardens of St. Augustine. A date-palm, at near view, is as quaint and peculiar a specimen of Nature as one can imagine. Its trunk seems built up of great scales, in which ferns and vines root themselves, and twine and ramble, and hang in festoons. Above, the leaves, thirty feet long, fall in a feathery arch, and in the centre, like the waters of a fountain, shoot up bright, yellow, drooping branches that look like coral. These are the flower-stalks. The fruit, in this climate, does not ripen so as to be good for any thing.
One very pretty feature of the houses here struck me agreeably. There is oftentimes a sort of shaded walk under half the house, opening upon the garden. You go up a dusty street, and stand at a door, which you expect will open into a hall.  The surprise is delightful. In one garden that we visited we saw a century-plant in bud. The stalk was nineteen feet high; and the blossoms seemed to promise to be similar to those of the yucca. The leaves are like the aloe, only longer, and twisted and contorted in a strange, weird fashion.


This subscription status is displayed in case a suspend request is created and approved. Thereafter, it is possible to create a resume request and reactivate suspended subscription by approving the resume request. Note that suspend and resume requests are available in case the Administrative Hold capability is enabled. Refer to the Connect community portal to learn more about capability attributes.
A subscription in the Active state.
Once a resume request is created, a suspended subscription returns to the Active state.


{% extends 'base.html' %} {% import 'bootstrap/wtf.html' as wtf%} {% block content %}
Click the button below to login as a rider