diff options
author | Blaise Thompson <blaise@untzag.com> | 2018-02-27 23:58:32 -0600 |
---|---|---|
committer | Blaise Thompson <blaise@untzag.com> | 2018-02-27 23:58:32 -0600 |
commit | 9d89c09dfe49aba4c68b6911600715add419babd (patch) | |
tree | 4dcf0698ef2a83eef96e6fc0f098c41485d0ef0d /software/PyCMDS | |
parent | cd162fef9d9f3145c1e29c63439759636ba62c41 (diff) |
2018-02-27 23:58
Diffstat (limited to 'software/PyCMDS')
-rw-r--r-- | software/PyCMDS/ideal axis positions/delay steps.pdf | bin | 351037 -> 0 bytes | |||
-rw-r--r-- | software/PyCMDS/ideal axis positions/delay steps.tex | 99 | ||||
-rw-r--r-- | software/PyCMDS/ideal axis positions/exponential.png | bin | 210936 -> 0 bytes | |||
-rw-r--r-- | software/PyCMDS/ideal axis positions/steps.py | 83 |
4 files changed, 0 insertions, 182 deletions
diff --git a/software/PyCMDS/ideal axis positions/delay steps.pdf b/software/PyCMDS/ideal axis positions/delay steps.pdf Binary files differdeleted file mode 100644 index 1472e0c..0000000 --- a/software/PyCMDS/ideal axis positions/delay steps.pdf +++ /dev/null diff --git a/software/PyCMDS/ideal axis positions/delay steps.tex b/software/PyCMDS/ideal axis positions/delay steps.tex deleted file mode 100644 index 88029ea..0000000 --- a/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/software/PyCMDS/ideal axis positions/exponential.png b/software/PyCMDS/ideal axis positions/exponential.png Binary files differdeleted file mode 100644 index 7ad27f3..0000000 --- a/software/PyCMDS/ideal axis positions/exponential.png +++ /dev/null diff --git a/software/PyCMDS/ideal axis positions/steps.py b/software/PyCMDS/ideal axis positions/steps.py deleted file mode 100644 index 13419c3..0000000 --- a/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')
|