From 1b66cf20d0f40741d89d39b901716341beeabeca Mon Sep 17 00:00:00 2001 From: Blaise Thompson Date: Mon, 16 Oct 2017 21:05:20 -0500 Subject: structure --- .../PyCMDS/ideal axis positions/delay steps.pdf | Bin 351037 -> 0 bytes .../PyCMDS/ideal axis positions/delay steps.tex | 99 --------------------- .../PyCMDS/ideal axis positions/exponential.png | Bin 210936 -> 0 bytes .../software/PyCMDS/ideal axis positions/steps.py | 83 ----------------- 4 files changed, 182 deletions(-) delete mode 100644 figures/software/PyCMDS/ideal axis positions/delay steps.pdf delete mode 100644 figures/software/PyCMDS/ideal axis positions/delay steps.tex delete mode 100644 figures/software/PyCMDS/ideal axis positions/exponential.png delete mode 100644 figures/software/PyCMDS/ideal axis positions/steps.py (limited to 'figures/software/PyCMDS/ideal axis positions') diff --git a/figures/software/PyCMDS/ideal axis positions/delay steps.pdf b/figures/software/PyCMDS/ideal axis positions/delay steps.pdf deleted file mode 100644 index 1472e0c..0000000 Binary files a/figures/software/PyCMDS/ideal axis positions/delay steps.pdf and /dev/null differ diff --git a/figures/software/PyCMDS/ideal axis positions/delay steps.tex b/figures/software/PyCMDS/ideal axis positions/delay steps.tex deleted file mode 100644 index 88029ea..0000000 --- a/figures/software/PyCMDS/ideal axis positions/delay steps.tex +++ /dev/null @@ -1,99 +0,0 @@ -% document -\documentclass[11 pt]{report} -\usepackage[letterpaper, margin=0.75in]{geometry} % 1 inch margins required -\usepackage{setspace} -\usepackage{afterpage} -\usepackage{color} -\usepackage{soul} -\usepackage{array} - -% text -\usepackage[utf8]{inputenc} -\setlength\parindent{0pt} -\setlength{\parskip}{1em} -\usepackage{enumitem} -\renewcommand{\familydefault}{\sfdefault} -\newcommand{\RomanNumeral}[1]{\textrm{\uppercase\expandafter{\romannumeral #1\relax}}} -\usepackage{etoolbox} -\AtBeginEnvironment{verse}{\singlespacing} -\AtBeginEnvironment{tabular}{\singlespacing} - -% graphics -\usepackage{graphics} -\usepackage{graphicx} -\usepackage{epsfig} -\usepackage{epstopdf} -\usepackage{etoc} -\usepackage{tikz} - -% math -\usepackage{amssymb} -\usepackage{amsmath} -\usepackage[cm]{sfmath} -\DeclareMathOperator{\me}{e} - -% hyperref -\usepackage[colorlinks=true, linkcolor=black, urlcolor=blue, citecolor=black, anchorcolor=black]{hyperref} -\usepackage[all]{hypcap} % helps hyperref work properly - -% date (http://tex.stackexchange.com/a/237251) -\def\twodigits#1{\ifnum#1<10 0\fi\the#1} -\def\mydate{\leavevmode\hbox{\the\year-\twodigits\month-\twodigits\day}} - -\begin{document} - -{\Huge{delay space stepping strategy}} - -Blaise Thompson \hfill last modified \mydate - -\dotfill - -Linear stepping is more expensive than it needs to be. - -Want to capture the dynamic range of the data as quickly as possible. - -Typically have exponential decay dynamics (perhaps multi-exponential)\dots we can capitalize on this. We want to take high resolution data at early delays and low resolution data at late delays. - -Of course, we don't want to throw away any information we would otherwise be entitled to. - -Conceptually we want to 'linearize' the data, so that each subsequent delay step accounts for the same change in signal. - -Signal goes exponentially... - -\begin{eqnarray} -S &=& \me^{-\frac{t}{\tau}} \\ -\log{(S)} &=& -\frac{t}{\tau} \\ -t &=& -\tau\log{(S)} -\end{eqnarray} - -So to step linearly in $t$, my step size has to go as $-\tau\log{(S)}$. - -We want to go linearly in signal, meaning that we want to divide $S$ into even sections. If $S$ goes from 0 to 1 and we choose to acquire $N$ points, - -\begin{eqnarray} -t_n &=& -\tau\log{\left(\frac{n}{N}\right)}. -\end{eqnarray} - -Note that $t_n$ starts at long times and approaches zero delay. So the first $t_1$ is the smallest signal and $t_N$ is the largest. - -Now we can start to consider realistic cases, like where $\tau$ is not quite known and where some other longer dynamics persist (manifested as a static offset). Since these values are not separable in a general system, I'll keep $S$ normalized between 0 and 1. - -\begin{eqnarray} -S &=& (1-c)\me^{-\frac{t}{\tau_{\mathrm{actual}}}} + c \\ -S_n &=& (1-c)\me^{-\frac{-\tau_{\mathrm{step}}\log{\left(\frac{n}{N}\right)}}{\tau_{\mathrm{actual}}}} + c \\ -S_n &=& (1-c)\me^{-\frac{\tau_{\mathrm{step}}}{\tau_{\mathrm{actual}}} \log{\left(\frac{N}{n}\right)}} + c \\ -S_n &=& (1-c)\left(\frac{N}{n}\right)^{-\frac{\tau_{\mathrm{step}}}{\tau_{\mathrm{actual}}}} + c \\ -S_n &=& (1-c)\left(\frac{n}{N}\right)^{\frac{\tau_{\mathrm{step}}}{\tau_{\mathrm{actual}}}} + c -\end{eqnarray} - - - -\begin{figure}[!htb] - \centering - \includegraphics[scale=0.5]{"out"} - \caption{} -\end{figure} - - - -\end{document} \ No newline at end of file diff --git a/figures/software/PyCMDS/ideal axis positions/exponential.png b/figures/software/PyCMDS/ideal axis positions/exponential.png deleted file mode 100644 index 7ad27f3..0000000 Binary files a/figures/software/PyCMDS/ideal axis positions/exponential.png and /dev/null differ diff --git a/figures/software/PyCMDS/ideal axis positions/steps.py b/figures/software/PyCMDS/ideal axis positions/steps.py deleted file mode 100644 index 13419c3..0000000 --- a/figures/software/PyCMDS/ideal axis positions/steps.py +++ /dev/null @@ -1,83 +0,0 @@ -### import #################################################################### - - -import matplotlib.pyplot as plt -plt.close('all') - -import numpy as np - -import WrightTools as wt - - -### define #################################################################### - - -def get_signal(d, tau, pulsewidth=10, offset=0): - # pulse - pulse = np.exp((-d**2)/(pulsewidth**2)) - # signal - sig = np.zeros(d.shape) - sig[d<=0] = np.exp(d[d<=0]/tau) - sig[d<=0] += offset - sig /= sig.max() - # finish - #sig = np.convolve(sig, pulse, mode='same') - return sig - - -def logarithmic_stepping(p_tau, p_npts, n_tau, n_npts): - # positive - p_xi = np.arange(0, p_npts) - p_delays = p_tau * np.log((p_xi.size+1)/(p_xi+1)) - # negative - n_xi = np.arange(0, n_npts) - n_delays = -n_tau * np.log((n_xi.size+1)/(n_xi+1)) - return np.hstack((n_delays, [0], p_delays)) - - -tau = 200 - - -d = logarithmic_stepping(50, 3, 200, 15) - - -### workspace ################################################################# - - -if True: - fig, gs = wt.artists.create_figure(width=13, cols=[1, 1], nrows=1) - # delay space - ax = plt.subplot(gs[0, 0]) - ds = np.linspace(-1500, 1500, 1000) - sig = get_signal(ds, tau) - plt.plot(ds, sig, c='b', lw=2, alpha=0.5) - sig = get_signal(ds, tau, offset=0.5) - plt.plot(ds, sig, c='r', lw=2, alpha=0.5) - sig = get_signal(ds, tau*2, offset=0) - plt.plot(ds, sig, c='g', lw=2, alpha=0.5) - plt.xlim(-1250, 100) - plt.ylim(-0.1, 1.1) - for x in d: - plt.axvline(x, c='k', zorder=0) - plt.axvline(0, lw=3, c='k') - ax.set_xlabel('delay', fontsize=18) - ax.set_ylabel('signal', fontsize=18) - plt.grid(ls=':') - # index space - ax = plt.subplot(gs[0, 1]) - d = logarithmic_stepping(50, 3, 200, 15) - sig = get_signal(d, tau) - plt.scatter(np.arange(sig.size), sig, c='b', edgecolor='none', s=50, alpha=0.5) - sig = get_signal(d, tau, offset=0.5) - plt.scatter(np.arange(sig.size), sig, c='r', edgecolor='none', s=50, alpha=0.5) - sig = get_signal(d, tau*2, offset=0) - plt.scatter(np.arange(sig.size), sig, c='g', edgecolor='none', s=50, alpha=0.5) - i = np.argmin(np.abs(d)) - plt.axvline(i, lw=3, c='k') - plt.grid(ls=':') - plt.ylim(-0.1, 1.1) - plt.setp(ax.get_yticklabels(), visible=False) - ax.set_xlim(0-1, sig.size) - ax.set_xlabel('index', fontsize=18) - # finish - wt.artists.savefig('exponential.png') -- cgit v1.2.3