text:
\section{Introduction}

Climate change is among the most pressing issues of our time, with many severe economic, environmental, and geopolitical consequences. Recently, the application of time series analytical methods to this topic -- and, more broadly, a ``climate econometrics" -- has emerged as a vibrant research literature, as highlighted, for example, in \cite{Hillebrandetal2020} and the references therein. One important issue that these methods can address is the loss of Arctic sea ice. The loss of Arctic sea ice is a vital focus point of climate study.  It is both an ongoing conspicuous \textit{effect} of climate change and a \textit{cause} of additional climate change via feedback loops.  In particular, reduced Arctic sea ice boosts solar energy absorption via decreased albedo due to darkening color (e.g., \cite{Stroeve2012}, \cite{PistoneEtAl2019},   \cite{DRice}) and increased methane release due to melting  permafrost  (e.g., \cite{VaksEtAl2020}).\footnote{For a broad and insightful overview of the evolution and causes of reduced Arctic sea ice cover,  see \cite{SeaIceBookCh4}.}

There are, however, several alternative measures of Arctic sea ice extent based on  different processing methodologies of the underlying satellite-based microwave measurement data, and the choice among these measures is not clear-cut (\cite{BunzelEtAl16}). In this paper, we study four such sea ice extent ($SIE$) measures, which we denote as Sea Ice Index ($SIE^S$), Goddard Bootstrap ($SIE^G$), JAXA ($SIE^J$), and Bremen ($SIE^B$). The top panel of Figure \ref{rawmonth1} provides time series plots of these four measures of Arctic $SIE$ for the satellite measurement era, which started in 1978. The four measures appear almost identical, because their scale is dominated by large seasonal swings. However, the effects of seasonality can be removed by plotting  each month separately for the four series, as done in the lower twelve panels of Figure \ref{rawmonth1}. Of course, the Arctic $SIE$ measures all trend down in every month, with steeper trends for the low-ice ``summer"  months (e.g., August, September, October). (Note the different axis scales for different months.) There are also systematic differences across indicators.   $SIE^G$, for example,  tends to be high, and  $SIE^J$ tends to be low, while $SIE^S$ and $SIE^B$ are intermediate.  But the deviations between various pairs of measures are not rigid; that is, they are not simply parallel translations of each other. Instead, there are sizable time-varying differences among the various measures.

All of this suggests treating the various measures as noisy indicators of latent true sea ice extent, which in turn suggests the possibility of blending them into a single combined indicator with less measurement error.  Indeed some prominent studies have used simple equally-weighted averages of competing indicators, with precisely that goal. For example, a recent   report on the state of the cryosphere (\cite{IPCC19}) uses a simple average of three indicators.\footnote{See the notes for their Figure 3.3, page 3-13.}  Simple averages, however,  are  often sub-optimal. Optimality generally requires use of  \textit{weighted} averages giving, for example, less weight to noisier indicators. Motivated by these considerations, in this paper, we propose and explore a dynamic factor state-space model that combines the various published indicators into an optimal measure of sea ice extent, which we extract using the Kalman smoother.

\begin{figure}[p]
	\caption{Four Sea Ice Extent Indicators}
	\begin{center}
		\includegraphics[scale=.3,trim={0 45mm 0 0},clip]{{Graphics/paper/fig1_SJBG_full}}
		\includegraphics[scale=.25, trim={0 20 0 5mm},clip]{{Graphics/paper/fig2_SJBG_full_by_month2}}
	\end{center}
	\label{rawmonth1}
Notes: We show the Sea Ice Index (SII), Japan Aerospace Exploration agency (JAXA), University of Bremen (Bremen), and Goddard Bootstrap (Goddard). Units are millions of square kilometers.
\end{figure}

We proceed as follows. In section \ref{four}, we describe the four leading Arctic sea ice extent indicators that we study, and the satellites, sensors, and algorithms used to produce them.  In section \ref{extraction}, we propose a basic dynamic-factor state-space model for sea ice extent  and use it to obtain optimal extractions of latent extent.    We conclude in section \ref{concl}.

\section{Four Arctic Sea Ice Extent Indicators}  \label{four}

Sea ice extent ($SIE$) indicators are constructed from satellite measurements of the earth's surface using passive microwave sensing, which is unaffected by cloud cover or a lack of sunlight. Several steps are necessary to convert raw reflectivity observations into final $SIE$ measurements. First, for a polar region divided into a grid of individual cells, various sensors record a brightness reading or ``brightness temperature" for each cell. An algorithm then transforms these brightness readings into fractional surface coverage estimates -- sea ice concentration ($SIC$) values -- for each grid cell. Finally, $SIE$ is calculated by summing the area of all cells with at least 15 percent ice surface coverage.\footnote{\cite{PARKINSONETAL2008} discuss reasons for using a 15 percent cutoff.} This up-rounding in $SIE$ is effectively a bias correction, as determining the edge between ice and water can be especially difficult in the summer, when, for example, melting pools on summer ice surfaces can be mistaken for ice-free open water (\cite{MeierAndStewart2019}).

Different algorithms for processing the raw measurements importantly shape the final $SIE$ estimates. In addition, the $SIE$ series are not based on identical raw data because they use somewhat different satellites and sensors (\cite{ComisoEtAl17}, \cite{NSIDC_Boot_Explained}). In this section, we review some aspects of the satellites, sensors, and algorithms that underlie the $SIE$ measures.

\subsection{Satellites and Sensors}

Table \ref{tab:Satellites} summarizes the operative dates of the various satellites and sensors relevant for Arctic sea ice measurement. The first multi-frequency sensor equipped on a satellite was the {Scanning Multichannel Microwave Radiometer} (SMMR)  launched in 1978 (\cite{NSIDC_Caval}). Starting in 1987, later sensors -- the Special Sensor Microwave Imager (SSM/I) and the {Special Sensor Microwave Imager/Sounder} (SSMIS) -- offered higher resolution images.\footnote{For detailed discussion of sensor characteristics see  \url{https://nsidc.org/ancillary-pages/smmr-ssmi-ssmis-sensors}.} In 2002 and 2012, respectively, the {Advanced Microwave Scanner Radiometer for EOS} (AMSR-E) and {Advanced Microwave Scanner Radiometer 2} (AMSR2) sensors were launched and provided further improvements in resolution (\cite{ComisoEtAl17}).\footnote{Early in the sample, operational problems prevented data delivery for several days during 1986 and between December 1987 and January 1988 (\cite{NSIDC_Boot}). For more recent technical difficulties, see \url{https://www.nrl.navy.mil/WindSat/Description.php}.}
Given the inclinations of the satellite orbits and the spherical shape of the earth, all of the satellites share an inability to observe the Arctic ``pole hole" -- a circular region at the very top of the world. The size of the pole hole varies across sensors, but historically, there is full confidence that the area covered by the pole hole fulfills the 15 percent  $SIC$ requirement (\cite{MeierAndStewart2019}).

Table \ref{tab:Satellites} also describes the underlying source data for our four
$SIE$ indicators. These measures use algorithms to transform the raw satellite brightness data into $SIC$ and $SIE$ values. We now turn to a more detailed discussion of these algorithms to illuminate the differences across $SIE$ indicators.

\begin{table} [tbp]
	\scriptsize
	\centering
	\caption{Satellites, Sensors, and Algorithms}\ \\
	\begin{threeparttable}
		\begin{tabularx}{\textwidth}{lYY|YY|YY|YY}
			\toprule
						\multicolumn{1}{c}{\textbf{Satellite / Sensor}} & \multicolumn{2}{c}{\textbf{NASA Team}}  & \multicolumn{2}{c}{\textbf{Goddard Bootstrap}} & \multicolumn{2}{c}{\textbf{JAXA Bootstrap}} & \multicolumn{2}{c}{\textbf{ASI}} \\
			& \multicolumn{1}{c}{Start} & \multicolumn{1}{c}{End} & \multicolumn{1}{c}{Start} & \multicolumn{1}{c}{End} & \multicolumn{1}{c}{Start} & \multicolumn{1}{c}{End} & \multicolumn{1}{c}{Start} & \multicolumn{1}{c}{End} \\
			\cmidrule(lr){2-2} \cmidrule(lr){3-3} \cmidrule(lr){4-4} \cmidrule(lr){5-5} \cmidrule(lr){6-6} \cmidrule(lr){7-7} \cmidrule(lr){8-8} \cmidrule(lr){9-9}
			Nimbus-7 \ SMMR & 10/26/1978 & 08/20/1987 & 11/01/1978 & 07/31/1987 & 11/1978 & 07/1987 & 1972 & ... \\
			DMSP-F8  \ SSM/I & 08/21/1987 & 12/18/1991 & 08/01/1987 & 12/17/1991 & 07/1987 & ... & ... & ...\\
			DMSP-F11  \ SSM/I & 12/19/1991 & 09/29/1995 & 12/18/1991 & 05/09/1995 & ... & ... & ... & ...\\
			DMSP-F13  \ SSM/I & 09/30/1995 & 12/31/2007 & 05/10/1995 & 12/31/2007 & ... & 06/2002 & ... & 12/2010\\
			DMSP-F17  \ SSMIS & 01/01/2008 & 12/31/2017 & 01/01/2008 & present & & & 10/2011 & 07/2012\\
			DMSP-F18  \ SSMIS & 01/01/2018 & present &  &  & & &  & \\
			EOS/Aqua  \ AMSR-E & & & & & 06/2002 & 10/2011 & 2003 & 10/2011 \\
			Coriolis  \ WindSat & & & & & 10/2011 & 07/2012 & &\\
			GCOM-W1  \ AMSR2 & & & & & 07/2012 & present & 07/2012 & present  \\
			\bottomrule
		\end{tabularx}%
\footnotesize
$~$\\
		Notes: NASA Team and Goddard Bootstrap dates from \cite{NSIDC_SII}. JAXA Bootstrap dates from \url{https://kuroshio.eorc.jaxa.jp/JASMES/climate/index.html}. ASI dates from \url{https://seaice.uni-bremen.de/sea-ice-concentration/time-series/}.
	\end{threeparttable}
	\label{tab:Satellites}%
\end{table}

\subsection{From Raw Measurement to $SIE$: Algorithmic Transformations}

Once brightness data have been recorded by satellite sensors, an algorithm converts the measurements into estimates of $SIC$. Here, we discuss the algorithms and other details of the various $SIE$ indicators.

\subsubsection{Sea Ice Index} \label{SII}

Updated on a daily basis and distributed by the {National Snow and Ice Data Center} (NSIDC), the Sea Ice Index (SII or $SIE^S$)
 combines two separate Sea Ice indicators: (1) the {Sea Ice Concentrations from Nimbus-7 SMMR and DMSP SSM/I-SSMIS Passive Microwave Data} (NASA Team) (\cite{NSIDC_Caval}) -- produced at the {Goddard Space Flight Center} -- and (2) the {Near-Real-Time DMSP SSMIS Daily Polar Gridded Sea Ice Concentrations} (NRTSI) (\cite{NSIDC_NearReal}) -- produced by the NSIDC itself.\footnote{See   \url{https://doi.org/10.7265/N5K072F8}.}  A time-lag of about one year between the $SIE$ estimates by NASA Team and its publication in the NSIDC database requires the NRTSI to complement the SII.

The NRTSI follows the NASA Team algorithm as closely as possible, but inconsistencies between the two series cannot be ruled out entirely (\cite{NSIDC_SII}).
In particular, the two sub-indicators use brightness temperatures from different providers.\footnote{\cite{NSIDC_NearReal} takes the data from the National Oceanic and Atmospheric Administration Comprehensive Large Array-data Stewardship System (NOAA CLASS); (\cite{NSIDC_Caval}) uses data processed at the NASA Goddard Space Flight Center.} These raw readings can be distorted by weather effects, making open water look like sea ice cover. Therefore, post-calculation quality checks apply land and ocean masks, to remove errorneous and implausible ice covers. However, NASA Team and NRTSI do not apply the exact same filters (\cite{NSIDC_SII}). The former algorithm additionally screens the data manually for falsely detected ice formation (\cite{NSIDC_Caval}), which can enhance accuracy but also reduce transparency of the final measurements.

As Table \ref{tab:Satellites} shows, the SII obtains the raw data from different generations of satellites and sensors.
To make the data comparable, a linear least-squares model on the brightness temperatures, as reported by the two distinct sensors for an overlapping period of operation, is intended to adjust the reference points of 100 percent sea ice and 100 percent open water. These \emph{tie points} then remain fixed over the lifetime of the new system (\cite{NSIDC_Caval_tie}).

\subsubsection{Goddard Bootstrap} \label{Bootstrap}

Another sea ice indicator, distributed by the NSIDC, relies on $SIC$ estimates from the Goddard Bootstrap algorithm ($SIE^G$).\footnote{For detailed algorithm description see \cite{ComisoEtAl17b}. For the data, see \url{https://doi.org/10.5067/7Q8HCCWS4I0R}.}  Despite the NASA Team and the Goddard Bootstrap algorithms having both been developed at the \emph{NASA Goddard Space Flight Center}, there are some differences between the two approaches.
These arise mostly from the calibration of tie points: While the NASA Team adjusts these reference points for 100 percent open water and 100 percent ice only when a new satellite or sensor becomes operational, the Goddard Bootstrap algorithm adjusts these reference points on a daily basis to account for varying weather conditions (\cite{ComisoEtAl17}).
Differing weather filters and sensitivities to varying physical temperature also lead to differences in the final measurements(\cite{ComisoEtAl97}). In contrast to the NASA Team, the strength of the Goddard Bootstrap algorithm is the identification of melting sea ice. Therefore, the Goddard Bootstrap algorithm provides more accurate estimates of the edge of the ice cover (\cite{goldsteinetal2018}).

Although differences between $SIE^S$ and $SIE^G$ are generally assessed to be small, they cannot necessarily be neglected (\cite{goldsteinetal2018}).\footnote{See also  \url{https://nsidc.org/support/faq/nasa-team-vs-bootstrap-algorithm}.} The differences between the NASA Team and Goddard Bootstrap algorithms occur especially during the melting season, when the former generally reports larger deviations from ship or radar observations. However, the relative accuracy of the two algorithms is not clear-cut, as the Goddard Bootstrap algorithm is highly sensitive to physical temperature and underestimates $SIC$ during winter times in the higher latitudes of the Arctic region.

\subsubsection{Japan Aerospace Exploration Agency}

As listed in Table \ref{tab:Satellites}, both $SIE^S$ and $SIE^G$ rely on the same set of instruments, which have been criticized for their low spatial resolution (\cite{goldsteinetal2018}). The Japan Aerospace Exploration Agency (JAXA) sea ice measure ($SIE^J$) uses an adapted version of the Goddard Bootstrap algorithm to derive $SIC$ measures from satellite readings with higher spatial resolution (\cite{ComisoEtAl17b}).\footnote{For description and data see \url{https://kuroshio.eorc.jaxa.jp/JASMES/climate/index.html}.} However, readings from these high resolution satellites are only available since 2000, so their data must merged with observations from older sensors to extend the data coverage to 1978 (\cite{ComisoEtAl17}). $SIE^J$ also distinguishes itself from $SIE^S$ and $SIE^G$ by using a 5-day moving average of observations to compensate for potentially missing data.

\subsubsection{University of Bremen}

Using observations delivered by the high-resolution AMSR-E sensor, a group of researchers at the University of Bremen developed the ARTIST Sea Ice (ASI) algorithm (\cite{SpreenEtAl08}) to estimate  daily $SIC$.\footnote{Monthly data  from  \url{https://seaice.uni-bremen.de/data/amsr2/today/extent_n_19720101-20181231_amsr2.txt}.} The time-series ($SIE^B$) uses different algorithms for different sensors. Until the launch of the AMSR-E sensor in 2003, $SIE^B$ used the NASA Team algorithm to transform brightness readings into $SIC$ values. From then on, the NASA Team algorithm is replaced by the ASI.\footnote{See  \url{https://seaice.uni-bremen.de/sea-ice-concentration-amsr-eamsr2/time-series/}.}

\section{Optimal Extraction of Latent Extent} \label{extraction}

The four sea ice indicators  discussed above differ in terms of the raw data sources and the algorithms used to process the raw  data.  They can be viewed as distinct indicators of an unobserved or latent ``true'' sea ice extent, $SIE^*$.  Blending such a set of noisy indicators can produce a single series with less measurement error.  Here we formalize this intuition in a state-space dynamic-factor model, from which we extract an optimal composite estimate of  $SIE^*$ from the four component indicators.\footnote{Dynamic factor analysis is closely related to principal components analysis, but the dynamic factor model provides a fully-specified probabilistic modeling framework, in which  estimation and factor extraction via the Kalman filter are statistically efficient.  Under conditions the two approaches coincide in large samples, but those conditions include a very large number of indicators.  Those conditions  are violated in our case as we have only four indicators, so dynamic factor analysis is preferable.  For a much more complete account, see \cite{SW2011}.}

\subsection{A Dynamic Factor Model} \label{combining}

We work in a state-space environment, modeling each of the four indicators ($SIE^S$, $SIE^J$, $SIE^B$, and $SIE^G$) as driven by latent true sea ice extent, $SIE^*$, with an additive measurement error.\footnote{The approach parallels \cite{ADNSS2016}, who extract latent ``true" U.S. GDP from noisy expenditure-side and income-side estimates.}
As discussed previously, some indicators present level shifts with respect to one another, most often resulting from how they respectively deal with tie points. It is thus preferable to constrain both the trend and dynamics to follow a common factor, while leaving level offsets unconstrained. The measurement equation is

\begin{equation} \label{meas99}
\begin{pmatrix}
SIE^S_{t} \\ SIE^J_{t} \\ SIE^B_{t}  \\ SIE^G_{t}
\end{pmatrix}
 =
 \begin{pmatrix}
	c_S \\ c_J \\ c_B \\ c_G
 \end{pmatrix}
 +
\begin{pmatrix}
\lambda_S \\ \lambda_J \\ \lambda_B \\ \lambda_G
\end{pmatrix}
SIE^*_t
+
\begin{pmatrix}
\varepsilon^S_{t} \\ \varepsilon^J_{t} \\ \varepsilon^B_{t} \\ \varepsilon^G_{t}
\end{pmatrix},
\end{equation}
where
\begin{equation} \label{stoc}
\varepsilon_t = (\varepsilon^S_{t},  \varepsilon^J_{t},  \varepsilon^B_{t},  \varepsilon^G_{t})'
~ \sim ~ iid   \left (0 , ~ \Sigma \right ),
\end{equation}
with
\begin{equation} \label{covmat}
 \Sigma =
\begin{pmatrix}
\sigma^2_{SS} & \cdot  &  \cdot & \cdot  \\
\sigma^2_{JS} &  \sigma^2_{JJ} & \cdot & \cdot  \\
\sigma^2_{BS} &  \sigma^2_{BJ} &  \sigma^2_{BB} & \cdot  \\
\sigma^2_{GS} &  \sigma^2_{GJ} &  \sigma^2_{GB} & \sigma^2_{GG}  \\
\end{pmatrix}.
\end{equation}
Moreover, $c_i = 0$ when we normalize $\lambda_i = 1$ for $i \in \{S, J, B, G\}$.

The transition equation is
\begin{equation} \label{trans}
	SIE^*_t  = \rho \, SIE^*_{t-1} + TREND_t +  SEASONAL_t +  \eta_t,
\end{equation}
where $\eta_t \sim iid (0, \sigma^2_{\eta \eta})$ is orthogonal to $\varepsilon_t$ at all leads and lags.  Various modeling approaches are distinguished by their treatment of $TREND_t$ and $SEASONAL_t$.   We follow \cite{DRice} and allow for 12 monthly deterministic seasonal effects, each of which is endowed with (possible) deterministic quadratic trend.\footnote{We emphasize that our  model is meant to be a simple benchmark, and that many potentially-important variations and extensions are possible.  For example,  one could alternatively  entertain stochastic as opposed to deterministic trend and  seasonality.  A simple approach would be separate month-by month modeling  so that there is no seasonality, whether with one unit root, as in (for month $m$) $	TREND_{m,t} = d_m + TREND_{m,t-1} + u_{m,t}$, or two unit roots, as in $TREND_{m,t} = d_{mt} + TREND_{m,t-1} + u_{m,t}$, where $d_{m,t} = d_{m,t-1} + v_{m,t}$.
}
  This results in a blended deterministic ``trend/seasonal" given by
\begin{equation}
	TREND_t +  SEASONAL_t = \sum_{i=1}^{12} a_i \, D_{it} + \sum_{j=1}^{12} b_j \,  D_{jt} {\cdot} TIME_t + \sum_{k=1}^{12} c_k \,  D_{kt} {\cdot} TIME_t^2,
\end{equation}
where  $D_i$ indicates month $i$ and $TIME$ indicates time. Hence the full transition equation is

\begin{equation} 	\label{full99}
	SIE^*_t = \rho SIE^*_{t-1} + \sum_{i=1}^{12} a_i  \, D_{it} + \sum_{j=1}^{12} b_j  \, D_{jt} {\cdot} TIME_t + \sum_{k=1}^{12} c_k  \, D_{kt} {\cdot} TIME_t^2  + \eta_t.
\end{equation}

The model is already in state-space form, and one pass of the Kalman filter, initialized with the unconditional state mean and covariance matrix,  provides the 1-step prediction errors necessary to construct the Gaussian pseudo-likelihood, which we maximize using the EM algorithm and calculate standard errors from the analytic Hessian matrix.\footnote{Note that we do not assume Gaussian shocks, and that it is not necessary to assume Gaussian shocks, as we can still maximize the Gaussian likelihood even if the shocks are not truly Gaussian, and the resulting (pseudo-)MLE still has the good properties of consistency,  asymptotic normality, etc.} Following estimation, we use the Kalman smoother to obtain the best linear unbiased extraction of $SIE^*$ from the estimated model. The smoother averages across indicators, but it desirably produces optimally weighted averages rather than simple averages.  The smoother also averages over time, using data both before and after time $t$ to estimate $SIE_t^*$, which is also necessary for optimal extraction, due to the serial correlation in $SIE^*$. For details see \cite{Harvey1989}.

One or more  restrictions are  necessary for identification.  The standard approach is to normalize a factor loading, which amounts to an unbiasedness assumption.  Normalizing   $\lambda_S {=} 1$, for example, amounts to an assumption that $SIE^S$ is unbiased for  $SIE^*$.  Whether there truly exists such an unbiased indicator (and if so, which) is of course an open question -- one can never know for sure.   $SIE^S$ and  $SIE^G$ are the most widely used indicators (\cite{MeierEtAl14},  \cite{PengEtAl13}), so it is natural to consider normalizing on  $\lambda_S$ or  $\lambda_G$.  We explore both.

\subsection{Estimated Measurement Equation}

The estimated  measurement equation (\ref{meas99}), normalized with $\lambda_S  {=}  1$, is

\begin{equation}  \label{222}
\begin{pmatrix}
	SIE^S_t \\ SIE^J_t \\ SIE^B_t  \\ SIE^G_t
\end{pmatrix}
=
\begin{pmatrix}
0\\ \underset{[0.025]}{0.225} \\ \underset{[0.020]}{0.043} \\ \underset{[0.034]}{1.040}
\end{pmatrix}
+
\begin{pmatrix}
	1 \\ \underset{[0.002]}{0.950} \\ \underset{[0.002]}{0.995} \\ \underset{[0.003]}{0.961}
\end{pmatrix}
SIE^*_t
+
\begin{pmatrix}
	\varepsilon^S_{t} \\ \varepsilon^J_{t} \\ \varepsilon^B_{t} \\ \varepsilon^G_{t}
\end{pmatrix} ,
\end{equation}
where standard errors appear beneath each estimated loading.   All indicators are estimated to load  heavily on $SIE^*$, with all $\hat{\lambda}'s$ very close to 1.   $SIE^J$ and $SIE^G$ load least heavily ($\hat{\lambda_J}  {=}  0.950$, $\hat{\lambda_G} {=}  0.961$)), in accord with their generally less abrupt trend in Figure \ref{rawmonth1}.  $SIE^B$ loads with an estimated coefficient marginally different from 1 but significant at the 5\% level. Of course, the $SIE^S$ loading is 1 by construction. While Bremen's level offset (with respect to $SII$) is arguably negligible, those of Jaxa and especially Goddard are sizable.  Hence, the estimation results accord with Figure \ref{rawmonth1}, with  $SIE^S$ and  $SIE^B$ more in the center of the range and  $SIE^J$ and  $SIE^G$ more extreme.

Alternatively, the estimated  measurement equation normalized with $\lambda_G  {=}  1$ is

 \begin{equation}   \label{222a}
 \begin{pmatrix}
 SIE^S_t \\ SIE^J_t \\ SIE^B_t  \\ SIE^G_t
 \end{pmatrix}
 =
 \begin{pmatrix}
\underset{[0.039]}{-1.081} \\ \underset{[0.038]}{-0.803} \\ \underset{[0.042]}{-1.033} \\ 0
 \end{pmatrix}
 +
 \begin{pmatrix}
	\underset{[0.003]}{1.040}\\ \underset{[0.003]}{0.988} \\ \underset{[0.003]}{1.034} \\ 1
 \end{pmatrix}
 SIE^*_t
 +
 \begin{pmatrix}
 \varepsilon^S_{t} \\ \varepsilon^J_{t} \\ \varepsilon^B_{t} \\ \varepsilon^G_{t}
 \end{pmatrix}.
 \end{equation}
 The estimated loadings in equations (\ref{222}) and (\ref{222a}), corresponding to $\lambda_S  {=}  1$ and $\lambda_G  {=}  1$ respectively, are effectively identical up to the normalization.

Now consider the associated measurement error covariance matrix (\ref{covmat}).  The estimate for the $\lambda_S  {=}  1$ normalization is

\begin{equation}
\hat{\Sigma} =
\begin{pmatrix}
\underset{[0.0042]}{0.0003} &  \cdot  &  \cdot  &  \cdot   \\
\underset{[0.0043]}{0.0010} & \underset{[0.0049]}{0.0236} &  \cdot  &   \cdot  \\
\underset{[0.0044]}{0.0004} & \underset{[0.0045]}{0.0025} & \underset{[0.0048]}{0.0146} & \cdot  \\
\underset{[0.0044]}{-0.0025} & \underset{[0.0048]}{0.0081} & \underset{[0.0046]}{0.0002} & \underset{[0.0056]}{0.0361}  \\
\end{pmatrix},
\end{equation}
with implied estimated correlation matrix
\begin{equation}
\hat{R} =
\begin{pmatrix}
1 & \cdot & \cdot  &  \cdot \\
0.366 & 1  & \cdot  &  \cdot \\
0.206 & 0.134  & 1 & \cdot \\
-0.747 & 0.276 & 0.008  & 1 \\
\end{pmatrix}.
\end{equation}
Note that $\hat{\sigma}^2_{GG}$ is much higher than any of $\hat{\sigma}^2_{SS}$, $\hat{\sigma}^2_{JJ}$, and $\hat{\sigma}^2_{BB}$, potentially due to different indicators using different methods to determine tie points, i.e., reference points of brightness for 100\% sea ice and 100\% open water. The choice is crucial for accurate measurement of $SIC$ within grid cells.  Tie points, moreover, need not be constant, as brightness readings are sensitive to weather effects and atmospheric forcings (\cite{Ivan15}). Dynamic tie-point calibration is potentially desirable because it can decrease the bias of $SIC$ measurements (\cite{ComisoEtAl17}). The latest version of the Goddard Bootstrap algorithm, in particular, calibrates  tie points daily. One would expect, however, that the bias reduction from dynamic tie-point calibration may come at the cost of potential discontinuities that increase measurement error variance. Our results confirm that conjecture.  Our estimate of $\hat{\sigma}^2_{GG}$ is about 13 times that of $\hat{\sigma}^2_{BB}$ (which uses constant tie points).

Alternatively, the estimated measurement error covariance matrix for the  $\lambda_G  {=}  1$ normalization is

\begin{equation}
\hat{\Sigma} =
\begin{pmatrix}
\underset{[0.0041]}{0.0003} &  \cdot  &  \cdot  &  \cdot   \\
\underset{[0.0041]}{0.0008} & \underset{[0.0048]}{0.0233} &  \cdot  &   \cdot  \\
\underset{[0.0042]}{0.0003} & \underset{[0.0044]}{0.0022} & \underset{[0.0047]}{0.0144} & \cdot  \\
\underset{[0.0042]}{-0.0025} & \underset{[0.0046]}{0.0079} & \underset{[0.0045]}{0.0001} & \underset{[0.0055]}{0.0361}  \\
\end{pmatrix},
\end{equation}
with implied estimated correlation matrix
\begin{equation}
\hat{R} =
\begin{pmatrix}
1 & \cdot & \cdot  &  \cdot \\
0.311 & 1 &\cdot  & \cdot  \\
0.161 & 0.121 & 1 & \cdot  \\
-0.782 & 0.272 & 0.002 & 1 \\
\end{pmatrix}.
\end{equation}

\subsection{Estimated Transition Equation}

\begin{table}[tbp]

	\begin{center}
		\caption{Trend/Seasonal Parameter Estimates}
		\label{tab:trans_eq}
		\begin{tabular}{c r r r r@{\hskip 0.4in} r r r}
			\toprule
			& \multicolumn{3}{c}{$\lambda_S  {=}  1$} & & \multicolumn{3}{c}{$\lambda_G  {=}  1$}\\
			\cline{2-8} \noalign{\smallskip}
			& \multicolumn{1}{c}{$a_i$ } & \multicolumn{1}{c}{$b_j$ } & \multicolumn{1}{c}{$c_k$ }   & & \multicolumn{1}{c}{$a_i$ } & \multicolumn{1}{c}{$b_j$ } & \multicolumn{1}{c}{$c_k$ } \\
			\midrule
			\vspace{2mm}
			Jan &  $\underset{[0.583]}{5.287}$ &  $\underset{[1.005]}{1.412}$ &  $-\underset{[2.025]}{4.736}$ & &
			$\underset{[0.602]}{5.245}$ &  $\underset{[0.953]}{0.876}$ &  $-\underset{[1.930]}{3.608}$ \\
			\vspace{2mm}
			Feb &  $\underset{[0.632]}{5.296}$ &  $-\underset{[0.995]}{0.31}$ &  $-\underset{[2.031]}{1.735}$ & &  $\underset{[0.653]}{5.171}$ &  $-\underset{[0.948]}{0.267}$ &  $-\underset{[1.936]}{1.616}$ \\
			\vspace{2mm}
			Mar &  $\underset{[0.666]}{4.858}$ &  $-\underset{[0.997]}{1.227}$ &  $\underset{[2.033]}{0.99}$ & &  $\underset{[0.686]}{4.738}$ &  $-\underset{[0.950]}{1.153}$ &  $\underset{[1.938]}{1.011}$ \\
			\vspace{2mm}
			Apr &  $\underset{[0.672]}{4.066}$ &  $-\underset{[1.003]}{1.719}$ &  $\underset{[2.027]}{2.187}$  & &  $\underset{[0.692]}{3.975}$ &  $-\underset{[0.956]}{1.62}$ &  $\underset{[1.932]}{2.133}$ \\
			\vspace{2mm}
			May &  $\underset{[0.644]}{2.977}$ &  $\underset{[1.012]}{0.367}$ &  $-\underset{[2.026]}{2.25}$ & &  $\underset{[0.665]}{2.939}$ &  $\underset{[0.965]}{0.398}$ &  $-\underset{[1.931]}{2.176}$ \\
			\vspace{2mm}
			Jun &  $\underset{[0.580]}{2.732}$ &  $-\underset{[1.011]}{1.307}$ &  $-\underset{[2.029]}{1.072}$ & &  $\underset{[0.603]}{2.725}$ &  $-\underset{[0.963]}{1.225}$ &  $-\underset{[1.934]}{1.021}$ \\
			\vspace{2mm}
			Jul &  $\underset{[0.525]}{1.657}$ &  $-\underset{[1.015]}{1.497}$ &  $-\underset{[2.031]}{3.053}$ & &  $\underset{[0.550]}{1.711}$ &  $-\underset{[0.967]}{1.411}$ &  $-\underset{[1.935]}{2.884}$ \\
			\vspace{2mm}
			Aug &  $\underset{[0.444]}{0.719}$ &  $\underset{[1.029]}{0.511}$ &  $-\underset{[2.041]}{5.634}$ & &  $\underset{[0.472]}{0.837}$ &  $\underset{[0.981]}{0.532}$ &  $-\underset{[1.945]}{5.338}$ \\
			\vspace{2mm}
			Sep &  $\underset{[0.350]}{1.715}$ &  $-\underset{[1.026]}{1.066}$ &  $-\underset{[2.064]}{2.894}$ & &  $\underset{[0.380]}{1.829}$ &  $-\underset{[0.978]}{0.993}$ &  $-\underset{[1.968]}{2.667}$ \\
			\vspace{2mm}
			Oct &  $\underset{[0.324]}{3.923}$ &  $\underset{[1.026]}{1.274}$ &  $-\underset{[2.061]}{5.929}$ & &  $\underset{[0.354]}{3.958}$ &  $\underset{[0.978]}{1.264}$ &  $-\underset{[1.965]}{5.583}$ \\
			\vspace{2mm}
			Nov &  $\underset{[0.393]}{4.976}$ &  $-\underset{[1.025]}{1.711}$ &  $\underset{[2.089]}{3.678}$ & &  $\underset{[0.421]}{4.947}$ &  $-\underset{[0.976]}{1.639}$ &  $\underset{[1.992]}{3.715}$ \\
			\vspace{2mm}
			Dec &  $\underset{[0.484]}{5.504}$ &  $-\underset{[1.032]}{0.791}$ &  $\underset{[2.036]}{0.056}$ & &  $\underset{[0.510]}{5.423}$ &  $-\underset{[0.984]}{0.738}$ &  $\underset{[1.941]}{0.133}$ \\
			\bottomrule
		\end{tabular}
	\end{center}

	\noindent Notes: The $b_j$ are $\times 10^{3}$ and the $c_k$ are $\times 10^{6}$.
\end{table}

Now let us move to the transition equation (\ref{full99}).  Using the $\lambda_S  {=}  1$ normalization we obtain $\hat{\rho} {=} 0.704 ~ [0.041]$ and  trend/seasonal parameter estimates ($\hat{a}_i$, $\hat{b}_j$, and $\hat{c}_k$) as reported in the $\lambda_S {=} 1$ columns of Table \ref{tab:trans_eq}. Trends for all months are highly significant and downward sloping.  The trends for summer months (August-November) display a notable negative, and generally statistically significant, {curvature}, whereas for non-summer months the quadratic trend terms are generally small and statistically  insignificant. For the $\lambda_G  {=}  1$ normalization we get $\hat{\rho} {=} 0.719~ [0.042]$ and  trend/seasonal parameter estimates ($\hat{a}_i$, $\hat{b}_j$, and $\hat{c}_k$) as reported in the  $\lambda_G {=} 1$ columns of Table \ref{tab:trans_eq}.  The $\lambda_S {=} 1$ and $\lambda_G {=} 1$  results are very similar.

\subsection{Extracted Latent Sea Ice Extent}

\begin{figure}[tbp]
	\caption{Extracted  Sea Ice Extent and Four Raw Indicators, by Month, $\lambda_S {=}  1$}
	\begin{center}
		\includegraphics[scale=.25]{{Graphics/paper/fig2_SJBG_iceplus_full_by_month_dts_S}}
	\end{center}
	\label{ice_dts_month}
	Notes: We show sea ice extent extracted assuming $\lambda_S {=} 1$, together with four raw indicators: Sea Ice Index (SII), Japan Aerospace Exploration agency (JAXA), University of Bremen (Bremen), and Goddard Bootstrap (Goddard). Units are millions of square kilometers.
\end{figure}

\begin{figure}[tbp]
	\caption{Extracted Latent Sea Ice Extents and Four Raw Indicators, by Month, $\lambda_G  {=}  1$}
	\begin{center}
		\includegraphics[scale=.25]{{Graphics/paper/fig2_SJBG_iceplus_full_by_month_dts_G}}
	\end{center}
	\label{ice_dts_month_seqnseq}
	Notes: We show sea ice extent extracted assuming $\lambda_G {=} 1$, together with four raw indicators:  Sea Ice Index (SII), Japan Aerospace Exploration agency (JAXA), University of Bremen (Bremen), and Goddard Bootstrap (Goddard). Units are millions of square kilometers.
\end{figure}

In Figures  \ref{ice_dts_month} ($\lambda_S  {=}  1$) and \ref{ice_dts_month_seqnseq} ($\lambda_G  {=}  1$) we show optimal latent sea ice extent extractions ($\widehat{SIE^*}$) in black, together with the four raw indicators in color, by month. First consider Figure  \ref{ice_dts_month}.  Of course $\widehat{SIE^*}(\lambda_S {=} 1)$ is centered on $SIE^S$ due to the $\lambda_S  {=}  1$ normalization.  Moreover,  $\widehat{SIE^*}(\lambda_S {=} 1)$ is always very close -- almost identical -- to $SIE^S$ (and close to $SIE^B$, because $SIE^B$ tends to be very close to $SIE^S$).\footnote{Indeed when making Figure  \ref{ice_dts_month} we added a tiny constant (0.1) to $SIE^S$ to make it easier to distinguish $SIE^S$ from $\widehat{SIE^*}(\lambda_S {=} 1)$.}

Now consider  Figure \ref{ice_dts_month_seqnseq} ($\lambda_G {=} 1$). Due to the different normalization, $\widehat{SIE^*}(\lambda_G {=} 1)$ is centered not on $SIE^S$ but rather on $SIE^G$, so  $\widehat{SIE^*}(\lambda_G {=} 1)$ is shifted upward relative to $\widehat{SIE^*}(\lambda_S {=} 1)$.  The location of  $\widehat{SIE^*}(\lambda_G {=} 1)$ relative to  $SIE^G$, moreover,  clearly varies by month.  In winter months, it tends to be greater than  $SIE^G$, whereas in summer months it tends to be less than  $SIE^G$.  Note in particular that  the variation of $\widehat{SIE^*}(\lambda_G {=} 1)$ around $SIE^G$ is noticeably greater than the variation of $\widehat{SIE^*}(\lambda_S {=} 1)$ around $SIE^S$.  Clearly  $\widehat{SIE^*}(\lambda_G {=} 1)$ is influenced more by movements in other indicators ($SIE^S$, $SIE^J$, and $SIE^B$) than is $\widehat{SIE^*}(\lambda_S {=} 1)$.

The fact that  $\widehat{SIE^*}(\lambda_S {=} 1)$ and $\widehat{SIE^*}(\lambda_G {=} 1)$ are  different, both in terms of  level  and variation around the level,  limits their usefulness for research focusing on level, as the level depends entirely on identifying assumptions.  However, and crucially, in an important sense  $\widehat{SIE^*}(\lambda_S {=} 1)$ and $\widehat{SIE^*}(\lambda_G {=} 1)$ are highly similar:  \textit{The model and identification scheme makes
 	$\widehat{SIE^*}(\lambda_S {=} 1)$ and $\widehat{SIE^*}(\lambda_G {=} 1)$ identical up to a linear transformation.}  This is clear in Figure \ref{ice_dts_month_SvsG99}, which plots the two competing extracted factors, month-by-month. Regressions of $\widehat{SIE^*}(\lambda_G {=} 1)$ on $\widehat{SIE^*}(\lambda_S {=} 1)$ yield highly-significant intercepts not far from zero,
highly-significant slopes near 1.0, and $R^2$ values above 0.999, for each month.

Because  $\widehat{SIE^*}(\lambda_S {=} 1)$ and $\widehat{SIE^*}(\lambda_G {=} 1)$ are identical up to a linear transformation, it makes no difference which $\widehat{SIE^*}$ we use  for research focused on linear \textit{relationships} between $SIE^*$ and other aspects of climate (e.g., various radiative forcings).  The obvious choice, then, is $\widehat{SIE^*}(\lambda_S {=} 1)$, which is just $SIE^S$ itself, dispensing with the need to estimate the factor model.

   \begin{figure}[tbp]
   	\caption{Extracted Sea Ice Extent, by Month}
   	\begin{center}
   		\includegraphics[scale=.25]{{Graphics/paper/fig2_iceplus_latent_full_by_month_SvsG}}
   	\end{center}
   	\label{ice_dts_month_SvsG99}
   	Notes: Units are millions of square kilometers.
   \end{figure}

\section{Summary and Conclusion}  \label{concl}

We propose a dynamic factor model for four leading Arctic sea ice extent indicators.  We estimate the model and use it in conjunction with the Kalman smoother  to produce a  statistically-optimal combination of the individual indicators, effectively ``averaging out" the individual measurement errors. We explore two identification strategies corresponding to two different factor loading normalizations. The corresponding two extracted combined measures (latent factors) are identical up to a linear transformation, so either one can be used to explore relationships of sea ice extent and other variables.  Interestingly, however, the extracted factor for one of the normalizations puts all weight on the Sea Ice Index.  Hence the Sea Ice Index alone is a statistically optimal ``combination" and one can simply use it alone with no loss, dispensing with the need to estimate the factor model.  That is,  there is no gain from combining the Sea Ice Index with other indicators, confirming and enhancing confidence in the Sea Ice Index and the NASA Team algorithm on which it is based, and similarly lending credibility -- in a competition against  very sophisticated opponents -- to the NSIDC's claim that the Sea Ice Index is the ``final authoritative SMMR, SSM/I, and SSMIS passive microwave sea ice concentration record" (\cite{NSIDC_SII}).

\clearpage

\bibliographystyle{Diebold}
\addcontentsline{toc}{section}{References}

redpajama_set_name: RedPajamaArXiv


text:
Birthweight, height can predict infants' future health: Study
One's future health can be predicted as early as they are born! A new study highlighted that an infant's birth weight and height together can help in telling doctors if the baby is born with a heightened risk of heart issues later in life. Birthweight, tells about the fetal growth, while height gives a more complete picture of both fetal growth and growth trajectory, said Dr Brian Stansfield, a neonatologist at the Medical College of Georgia. Measures called ponderal index, or PI, as well as the more widely used body mass index, or BMI, which both account for height and weight, are known to provide a more accurate indication of fetal growth and what's ahead for the child.
The findings of the study published in the journal 'Early Human Development' indicated that a low PI or low BMI at birth should be considered as a risk that needs attention and intervention.
"When you look at birthweight alone, you are looking at a measure at a single point in time, which is a big problem when it comes to projecting out," said Stansfield.
It's known that perinatal growth which is affected by numerous factors from genetics to environmental ones like the mother's health and habits like smoking, nutrition, and gestational diabetes, has important implications for heart development, and animal and human studies have associated low birthweight with heart problems and death. For this study, they looked at 379 healthy black and white adolescents aged bet-ween14-18. Parents provided their children's birth weight and length, which were used by investigators to calculate a BMI and PI.
The group showed that a low PI, where increases in height and weight are out of sync during development, was most associated with an increase in the size of the major pumping chamber of the heart, the left ventricle, which is considered a risk for future cardiovascular disease. Two-dimensional echocardiography was used to noninvasively look at the children's left ventricle for telltale indicators of hypertrophy like thickening of the walls and less blood being pumped out.
Then they studied the relationships between birth weight and birth BMI and PI and the structure and function of the left ventricle in the children. Stansfield noted that at the time of this study, about 25 per cent of the adolescents had obesity or were overweight and most were on an upward trajectory with their BMI, which is not good. Children with an upward trajectory had about a 30% likelihood they would become obese compared to those with a downward trajectory, who showed a 5% likelihood.
There was also about a 40 per cent increase in visceral adiposity, fat around the belly and the organs inside the abdominal cavity, which is considered particularly unhealthy in adolescents with the upward versus downward BMI trajectory.
This study found that a low PI had the highest association with risk factors for heart problems, but the more widely used BMI is also a good tool, researchers noted.
"We believe our findings are a call to paediatricians to be even more diligent in measuring and noting birthweight and length parameters," Stansfield pointed. This very early measure of height and weight can provide lifelong insight into an individual's risk of heart and other diseases, he added. (ANI)

redpajama_set_name: RedPajamaCommonCrawl


Set your alarm clock fifteen minutes early everyday to straighten your hair; get a straight perm if that is too much work; a regular curl perm works too; plan out your outfits ahead of time; fix your chipped nail polish so you don't look like the immature kid that you still are; wear pastel and neon colors in warm weather-dark, rich colors for colder weather; stop eating all that junk food; do not eat your feelings out; save yourself for the freshmen 15; what is the freshman 15?; stop worrying all the time; be positive; no, you are not going through depression; if you are looking up symptoms of depression chances are you are not suicidal or depressed; this is how you have a social life; this is how you have no life; this is how your life becomes synonymous with school; have you already pulled that all-nighter?; this is how you BS your homework; this is how you sleep in class without being noticed; this is how you don't make empty promises to yourself that it will never happen again; you'll probably pull the next all-nighter within a week; this is how to talk to guys; this is how to be friends with guys; this is how to keep your friendships with guys you think you like but don't really like; you know that underclassmen boy you've taken a liking to? Yeah, don't even think about it; why? this is how a guy will break your heart; this is how you will break his heart; this is how to reject a guy if he publicly asks you to the dance, this is how to reject him in private; this is how to behave around your friends; this is how to behave in front of adults so they don't see the immaturity that you fail to suppress; if you're feeling lazy, don't waste time doing nothing-what's the point in wasting time by being bored?; go on Youtube, pleatedjeans.com, hulu.com, or projectfreetv.com; watch New Girl, The Mindy Project, Modern Family; America's Next Top Model, Futurama, Family Guy; if all else fails, go on Facebook; this is how to add friends; this is how to take a profile picture; this is how to get likes; this is how to stalk people you hate; this is how to stalk people you like; this is how to properly use emoticons; this is how to not be annoying; this is how to block the annoying people; this is how you wave to your best friend in the hallway; this is how to wave to a classmate; this is how to not look stupid when they do not see your wave; this is how to be happy-or as close to happy as possible for an immature girl like you; this is how to fake being happy; this is how you can tell someone is faking; Are you feeling overwhelmed?; be sure to not get to that point; but since you won't listen, this is how to take a step back and appreciate life; this is how you screw yourself over by overreacting; this is how to not make any stupid decisions by acting in the moment; this is how to prevent pimples, this is how to get pimples; this is how to get rid of pimples; this is how to get pimple scars; this is how to get rid of pimple scars that you caused by picking at your pimples; this is how to ask your parents for money; this is how you ask your friends to borrow money; this is how you ask your friends to pay you back; this is how to survive Mother Nature's monthly 'gift'; this is how to dress during that time of month; this is how you endure the cramps; this is how you get past the cravings so you won't hate yourself later when you gain 10 pounds; this is what you eat if you don't care about gaining weight; this is what you eat when prom is coming up and you need to lose the 10 pounds; this is how to cook ramen; this is how to eat ramen raw if you are too lazy to boil water; this is how to go out and have fun with friends and live life; but my friends don't go out except for school projects; you mean to say that you cope with your hormonal, adolescent, end-of-the world struggles by surrounding yourself with friends who can barely cope with their own?


text:
Least Racist Person
Donald Trump likes to tell us he's the best or most something of all sorts of stuff. Usually, it means he doesn't know anything about the specific subject he's addressing at the time.
He tells us how successful he is, and is a great businessman. He knows more about deal-making than anyone else. What he's proven to be is a successful conman who's declared bankruptcy multiple times. He's been sued (and settled after saying he never settles) for conning millions from people's life savings with his fake university, a "school" that gave business advice that went out of business. He's displayed his deal-making abilities while agreeing on a "clean" bill with Democrats, only to have the Republican sitting next to him have to explain what a "clean" bill is.
He knows the most about NATO but would probably struggle to tell you what the acronym stands for. He knows the most about healthcare only to discover after he's elected that it's difficult. He knows the most about taxes which mean he's really good at hiring other people to do his taxes. And, remember how he was going to hire the best people?
He knows more about ISIS than the generals (to be fair, the only general he knew at the time of that statement was Michael Flynn). He's also told us he's a "stable genius."
Trying to kill the shithole controversy, Trump told a pool of reporters, "I am the least racist person you have ever interviewed, that I can tell you." "That I can tell you," is how you finish an untrue statement.
This "least racist person" nonsense is only a part of the dumbass defense Republicans are implementing over shitholegate.
Senators Tom Cotton and David Perdue, who were present for the comments, said they didn't recall the president making those comments. Two days later, their amnesia is cured. Hallelujah! They swear the president never made those comments. The dumbass part of this is you're supposed to believe two guys, who both want cabinet positions, who couldn't remember but now remember.
Another dumbass defense is that we can't trust Democratic Senator Dick Durbin because he's a Democrat and a liar. Durbin's story hasn't changed while those defending the president have changed their stories. Durbin was the lone Democrat in the meeting, and he set himself up for everyone else from that room to call him a liar. Instead, Republican Lindsey Graham has backed him up, told Republican Tim Scott what Trump said, and even stated that his memory hasn't "evolved" like his Republican colleagues. The biggest dumbass part of this is believing Donald Trump over anyone.
The next dumbass line of defense is the focus on the words. Republicans have even changed the word from "shithole" to "shithouse," as though they don't mean the same thing. They tell us it's not a big deal for the president to curse in a meeting. They're right. It's not a big deal for the president to curse. What is the big deal is the racist sentiment, not the language. If Trump had excluded "shit" from his statements and said, "hey, we need fewer immigrants from Haiti, El Salvador, and Africa and instead, have more from Norway," that would still be racist. Anyone using the defense over cursing isn't mentally competent enough to have a discussion on the subject.
Another dumbass defense I've seen used, but not as much, is that "shithole" is a military terminology. As in, people in the military refer to the location of their deployment as a "shithole." I don't have a problem with service members talking that way. I'm not going to tell them they should enjoy the paradise of Fallujah. But this isn't the issue any more than the cursing part of it. Trump has never been in the military. The meeting was not about military operations, nor was it a briefing with members of the military. It was on a domestic issue with politicians.
Then, there's the dumbass defense Trump's privacy was violated. This one is rich. Trump was aided in his presidential campaign by Russian agents leaking private emails. Trump asked Russia, publicly, to leak the emails. His son invited Russians into Trump Tower and was exchanging messages with Wikileaks. But Heaven forbid someone violates Trump's privacy, which doesn't exist in this situation. It was not a private meeting. It wasn't on classified information. It was in the White House with United States Senators. Also, it's a dumbass defense to say he didn't say that and how dare you to reveal he said that. Republicans are all about privacy unless you're hacking a Democrat's email.
There's another dumbass defense which shows the racism of the user. This is the defense that Trump can't be a racist because, while not wanting black and brown immigrants, he's cool with Asians. Also, "I like Asians" doesn't mean you're not racist toward them. For example: Forget her training, expertise, and field of study, "why isn't the pretty Korean lady negotiating with North Korea?" That's a dumbass/racism/sexism trifecta right there.
Another dumbass defense is to check how this is playing with the base while denying you said it. He never said that racist shit, but have you seen the glowing reviews from The Daily Stormer?
Finally, the grandest defense of dumbass defenses is that Trump is not a racist. Trump has stated many times he is the least racist person there is.
I know a lot of people who are not racist and I can't recall any of them ever stating that they weren't a racist. Maybe that's because people who aren't racist don't have to tell you they're not racist.
Also, out of all the non-racist people I know, I can't think of any of them who are birthers, who said Mexico was sending us rapists and murderers, who placed a full-page ad in The New York Times calling for the death penalty for black kids who were exonerated of rape charges, said a judge of Mexican descent wasn't qualified to preside over his lawsuit because of his race, called people "Pocahontas," or ever said there were "very fine people" in a group of Nazis chanting "blood and soil" and "Jews will not replace us."
I also doubt any of them have ever said all Haitian immigrants have AIDS or that African immigrants lived in grass huts. And, they're rarely ever on the same side of an issue as Richard Spencer, David Duke, The Daily Stormer, etc.
When someone says they're not a racist, they're probably a racist. It's kinda like when a sentence starts with "I don't want to sound racist but" always finishes with something racist. Or, how "I'm not a racist" often finishes with "I have a black friend." Combine that with the clue that someone is lying, which is "believe me" and " that I can tell you," and you have one racist liar.
Trump's defenders claim liberals always play the race card and accuse Republicans of being racist in every argument. That's not true. I believe Republicans like George W. Bush and Mitt Romney are out of touch with people who aren't billionaires and maybe even with people aren't white, but they're not racists. John McCain isn't a racist. I don't believe every Republican is a racist. You can even be an asshole without being a racist.
I do believe every racist votes Republican. I also believe that racism is a non-issue for Republican voters. Nearly 63 million voters ignored Donald Trump's blatant racism.
And, no. We don't call you a racist on every issue. We do call you a racist when you do racist acts and make racist comments. If you want people to stop calling you a racist, stop saying and defending racist shit. Then, you may not ever have to say "I'm not a racist" ever again."
Donald Trump is not our first racist president, but he's possibly our most racist. While he's not the least racist person we know, he can take comfort in being the "least" in a lot of other categories.
He is the least knowledgeable, the least qualified, the least informed, the least stable, the least competent, the least mature, the least likable, and the last guy you want your wife/sister/mother alone in an elevator with.
That, I can tell you.
Creative notes: Again, I'm drawing Klansmen. I felt self-conscious about it. I asked a colleague, who I respect, if he thought it was OK to use them so frequently. He's the kind of guy who won't tell me only what I want to hear. He's been critical before and has a knack for it being constructive. He thought if the idea is strong enough, and with Trump's constant racism, then I should go for it. I didn't tell him the idea, but you can see how it played out.
I was saddened by the news of the death of Delores O'Riordan of the Cranberries. She had an amazing voice and was a huge part of the early 90s sound. So, tonight's drawing music was the Cranberries…for a few minutes. Linger is a song that really gets to me. It's beautiful and you can really feel the emotion coming out of the music and vocals. But, I realized it's really the only Cranberries song I like. I know. Build my gallows high.
I want to thank everyone who has donated in the past. Your support helps me continue creating cartoons and columns with a little less stress in my life. Between competing syndicates with much larger resources, timid editors, and Trump supporters who attempt to intimidate the editors who do publish anything that criticizes their idol, it's a challenge to make a career out of this. So your support (if you can) is appreciated. Want to help me continue to create cartoons and keep doing what I'm doing (pissing off conservatives)? Look to the right of this page and make a donation through PayPal. Every $40 donation will receive a signed print (please specify which print you want or I won't mail one). All donations will receive my eternal gratitude
Posted in Uncategorized and tagged Cartoons, Clay Jones, claytoonz, Editorial cartoons, Least Racist Person, Political Cartoons, Racist Trump, RacistInChief, Shithole, Shithole President, Shithouse, Trump on January 16, 2018 by clayjonz. 10 Comments


Running a business from home certainly has its perks – the ability to do your work in your own home where you are comfortable, being able to wear what you want and most importantly the opportunity to save money on overhead expenses.
It should come as no surprise to you that according to that 69 Percent of U.S. entrepreneurs start their businesses at home (Source: 2012 Global Entrepreneurship Monitor Report).
Even with all the advantages, most home-based entrepreneurs have their share of challenges as well. That's why it's important to have all the right tools to make running your business from home as easy and seamless as possible.
Regardless of what type of business you own, Microsoft Office is pretty much an essential productivity application.
The two main programs that business owners tend to find the most useful are Word and Excel. Word allows the user to do basic word processing, and Excel is used to create spreadsheets and do a variety of more complex processes.
If you are running your business on a shoestring budget, you should try using OpenOffice.org. Open office also allows you to create documents, spreadsheets and presentations for FREE.
Cloud based phone systems are perfect for entrepreneurs running home based businesses. All that's needed for this service is an internet connection and a smart phone.
Cloud based phone systems like Ringcentral and Grasshopper are very inexpensive and will give your business a professional look without the expensive costs.
With these systems, you can download their smartphone apps to make and receive phone calls from your cell phone – yet the calls will show up to your callers as your small business phone number. How cool is that?
If your chair isn't comfortable, forget about getting any work done. You have to be able to sit for long periods at a time, so using a good chair is essential.
Make sure you have the fastest internet connection out there – if yours can be upgraded, do it right away. It will be worth the money.
Online invoicing apps such as Invoiceable or Freshbooks are excellent cloud-based accounting systems designed especially for small businesses. These apps allow you to do time-tracking, manage expenses, and send invoices.
A free cloud-based file sharing and content management service that allows you to collaborate and work with others over the web. With Box.com or dropbox you can send, store and manage files all from one online dashboard.
There is also a mobile version of this program available as an app that you can use on your smartphone.
While the landline is certainly useful, a smart phone is essential as they have so many varied and helpful functions.
You'll be able to access your email at all times, organize your day and all your appointments, plus do a multitude of other organizational tasks.
You may want to do the majority of your work on a desktop computer from your home office, but it's a smart idea to have a laptop in case you need to work while traveling.
Evernote allows you to do all different types of note-taking. These notes can be anything from excerpts from a webpage, or even a handwritten note.
Having these basic tools for your home-based business will help you stay organized and work comfortably so you can focus on the important tasks involved in keeping your business going. Cheers All!


text:
CLIF Bar Gives Back With Seasonal Flavors
USA Olympic Games Cycling Kits Unveiled
SoCalCycling.com July 12, 2012
SoCalCycling.com's Fun Ride & Gran Fondo Calendar is Heating Up
Invitation to attend the Rally Cycling Team Launch on January 30th
Chevron Manhattan Beach Grand Prix Celebrates 55 Years of Racing Sunday, August 7
San Dimas Stage Race Preview, Pro Teams & Riders Announced, Time Trial Start Times Posted
SoCalCycling.com March 19, 2013
Video: 2014 Dana Point Grand Prix – Pro Men's Criterium Sprint
SoCalCycling.com May 5, 2014
Amgen Tour of California: Van Garderen Climbs to the Lead on Stage 2
SoCalCycling.com May 13, 2019
Amgen Tour of CaliforniaNewsPro CyclingRacingRider Diaries & Race Reports
Report & Video: Amgen Tour of California – Rafal Majka Wins Mountainous Stage
BORA-Hansgrohe's Rafal Majka, the Tour de France's defending King of the Mountain, claimed his first victory since becoming Poland's National Road Race Champion on today's Amgen Tour of California Stage 2. A difficult day of climbing from Modesto to San Jose shattered the leader board with Amgen Race Leader Jersey wearer Marcel Kittel (GER) and several other sprinters dropped from the peloton as they tackled the steep terrain. When the final results were tabulated, ten riders were with one minute off the overall race lead.
[SlideDeck2 id=31498]
Photos © Darrell Parks
"I remember riding here in 2011, which was my first year as a pro, and now I'm so happy to win this stage, not only for me but also my teammates. We had a really nice group at the front with strong riders…. We went fast to the end," said Majka, who won bronze in the 2016 Olympic Games Road Race.
With about five miles and a final climb to go, a lead group containing Majka (POL), Team LottoNL-Jumbo's George Bennett (NZL), Team Sky's Ian Boswell (Bend, Oregon) and Team Dimension Data's Lachlan Morton (AUS) moved forward with two chase groups not far behind. The nearest of those, about 50 seconds back, included Bennett's teammate and 2012 Amgen Tour of California champion Robert Gesink (NED).
After attacking 50km from the finish, Bennett came across the line on Majka's wheel, with Boswell rolling in a seconds later, followed by Morton, who returns to a WorldTour team this year and earned today's TAG Heuer Best Young Rider Jersey. In addition to taking the overall race lead, Majka as also won the Stage's Visit California Sprint Jersey and sits two seconds ahead of Bennett as the overall race leader. Boswell trails the race leader by 14 seconds with Morton another two seconds back. Gesink pulled uphill to the front of his chase group to place fifth for the stage as well in the overall. Bennett's key uphill attack 50km from the finish also earned him the Breakaway from Cancer® / Breakaway from Heart DiseaseTM Most Courageous Rider Jersey.
Cannondale-Drapac Pro Cycling's Tom Skujiņš (LAT) demonstrated early in today's stage that he was out to repeat history, having won a similar stage in 2015. Skujiņš was part of a breakaway about a third of the way into the 89.8-mile race. He summited first on the biggest climb of the day, the 4.3-mile categorized climb up and over Mt. Hamilton, putting him in the lead of the King of the Mountain (KOM) competition, but a crash on the descent caused team management to end his race day shortly after briefly returning to his bike.
Cannondale-Drapac Pro Cycling issued the following statement earlier this evening: "Toms Skujiņš sustained a concussion, broken left collarbone and road rash in a crash during the Amgen Tour of California's second stage. Medical evaluation is ongoing. Skujiņš is now in our internal concussion protocol, meaning he will work closely with our medical staff while following a "return to play" program that puts his health above all else."
Competition in the mountains came from United Healthcare Pro Cycling Team's 26-year old Columbian rider Daniel Jaramillo, who in his second season with the team, rode in the breakaway to take maximum points on the first three of five KOM climbs today to earn the Lexus King of the Mountain Jersey.
Tomorrow's Stage 3 presented by TAG Heuer is a day for the sprinters, stretching 119.6 miles from Pismo Beach to Morro Bay, winding through the beautiful Central Coast and offering two Sprints in San Luis Obispo and Orcutt.
Stage 2 Podium
1. Rafal Majka (POL), BORA-hansgrohe (GER)
2. George Bennett (NZL), Team LottoNL-Jumbo (NED)
3. Ian Boswell (USA), Team Sky (GBR)
Stage 2 Jersey Winners
Amgen Race Leader Jersey – Rafal Majka (POL), BORA-hansgrohe (GER)
Men's Lexus King of the Mountain (KOM) Jersey – Daniel Jaramillo (COL), UnitedHealthcare Pro Cycling Team (USA)
Breakaway from Cancer® / Breakaway from Heart DiseaseTM Most Courageous Rider Jersey – George Bennett (NZL), Team LottoNL-Jumbo (NED)
Visit California Sprint Jersey – Rafal Majka (POL), BORA-hansgrohe (GER)
TAG Heuer Best Young Rider Jersey – Lachlan Morton (AUS), Team Dimension Data (RUS)
Amgen Tour of CaliforniafeaturedMay 2017Rafal Majka
American Neilson Powless to join EF Education First Pro Cycling
Amgen Tour of California Competitors Announced
Photos & Report: Beating the Odds at DTLA Historic CX
Gaimon Signs with Optum Pro Cycling pb Kelly Benefit Strategies for 2015
Looking for Cyclists to Join Cycling Miles for Smiles in September
SoCalCross PRESTIGE SERIES – Calimesa CX Classic this Sunday 10/21
Brad White Repeats at Glencoe Grand Prix, SoCal's Canevari finishes 3rd
Brandt-Sorenson Accepts Doping Sanction, Marcotte Now National Champion


Leicester see £18 million bid turned down by Europa League champions | The Transfer Tavern | News, breakdown and analysis on all things football!
Leicester fans in the Football Transfer Tavern are unsure on whether or not their club should continue pursuing this midfielder as they have had big offer rejected.
According to The Hinckley Times, the Foxes have had a huge £18 million bid rejected by Sevilla for midfielder Steven N'Zonzi.
The 27-year-old only moved to Spain last summer but he is already seeking a return to the Premier League but N'Zonzi is reportedly craving Champions League football which he will get at Sevilla, following their Europa League glory.
However, he fancies his chances a lot more at the King Power Stadium and may not be confident of Sevilla consistently competing in the Champions League as they continue to qualify via the Europa League.
N'Zonzi would bolster Claudio Ranieri's options in midfield but he would also be capable of stepping into N'Golo Kante's boots – should he make a big money move elsewhere.
Leicester fans. Do you think your club should continue to pursue Steven N'Zonzi? Let us know your thoughts below.


text:
Home » 50% OFF GPOverstock SALE » Military GPOverstock Sale
The Staff Ride
Display Foreign Price
Discusses how to plan a staff ride of a battlefield, such as a Civil War battlefield, as part of military training. This brochure demonstrates how a staff ride can be made available to military leaders throughout the Army, not just those in the formal education system.
NOTE: NO FURTHER DISCOUNTS FOR ALREADY REDUCED SALE ITEMS.
Other Related Items:
American Armies and Battlefields in Europe is available here: https://bookstore.gpo.gov/products/sku/008-029-00265-5
Other products produced by the U.S. Army, Center of Military History (CMH) can be found here: https://bookstore.gpo.gov/agency/1061
Members of the military, students, and others interested in how to plan a staff ride of a battlefield would be interested in this book.
Defense Dept., Army, Center of Military History
Robertson, William G.
To be a reprint of the 1987 title with a new barcode and ISBN.
Center of Military History Publication 70 21
Staff Rides
Army History
Battle of Ball's Bluff
Commanding Generals and Chiefs of Staff, 1775-2010: Portraits & Biographical Sketches of the United States Army's Senior Officer
United States Army GHQ Maneuvers of 1941 (Paperbound Edition)
U.S. Army Campaigns of the War of 1812: The Campaign of 1812
U.S. Army Campaigns of the Civil War: The Overland Campaign, May 4-June 15 1864
U.S. Army Campaigns of the Civil War: Campaigns in Mississippi and Tennessee, February-December 1864
U.S. Army Campaigns of the Civil War: Mississippi and Tennessee


text:
import numpy as np

import moldesign as mdt
from moldesign import data, utils
from moldesign import units as u
from . import toplevel, AtomContainer, AtomList, AtomArray, AtomCoordinate, Bond

class AtomDrawingMixin(object):
    """ Functions for creating atomic visualizations.

    Note:
        This is a mixin class designed only to be mixed into the :class:`Atom` class. Routines
        are separated are here for code organization only - they could be included in the main
        Atom class without changing any functionality
    """

    #@utils.args_from(mdt.molecule.Molecule.draw2d, allexcept=['highlight_atoms'])  # import order
    def draw2d(self, **kwargs):
        """ Draw a 2D viewer with this atom highlighted (Jupyter only).
        In biomolecules, only draws the atom's residue.

        Args:
            width (int): width of viewer in pixels
            height (int): height of viewer in pixels

        Returns:
            mdt.ChemicalGraphViewer: viewer object
        """
        if self.molecule:
            if self.molecule.is_small_molecule:
                return self.molecule.draw2d(highlight_atoms=[self], **kwargs)
            elif self.molecule.is_biomolecule:
                return self.residue.draw2d(highlight_atoms=[self], **kwargs)
            else:
                raise ValueError('No drawing routine specified')
        else:
            raise ValueError('No drawing routine specified')

    #@utils.args_from(mdt.molecule.Molecule.draw2d, allexcept=['highlight_atoms'])  # import order
    def draw3d(self, **kwargs):
        """ Draw a 3D viewer with this atom highlighted (Jupyter only).

        Args:
            width (int): width of viewer in pixels
            height (int): height of viewer in pixels

        Returns:
            mdt.GeometryViewer: viewer object
        """
        return self.molecule.draw3d(highlight_atoms=[self], **kwargs)

    def draw(self, width=300, height=300):
        """ Draw a 2D and 3D viewer with this atom highlighted (notebook only)

        Args:
            width (int): width of viewer in pixels
            height (int): height of viewer in pixels

        Returns:
            ipy.HBox: viewer object
        """
        import ipywidgets as ipy
        viz2d = self.draw2d(width=width, height=height, display=False)
        viz3d = self.draw3d(width=width, height=height, display=False)
        return ipy.HBox([viz2d, viz3d])

class AtomGeometryMixin(object):
    """ Functions measuring distances between atoms and other things.

    Note:
        This is a mixin class designed only to be mixed into the :class:`Atom` class. Routines
        are separated are here for code organization only - they could be included in the main
        Atom class without changing any functionality
    """
    @utils.args_from(AtomContainer.distance)
    def distance(self, *args, **kwargs):
        return self._container.distance(*args, **kwargs)

    @utils.args_from(AtomContainer.atoms_within)
    def atoms_within(self, *args, **kwargs):
        return self._container.atoms_within(*args, **kwargs)

    @utils.args_from(AtomContainer.residues_within)
    def residues_within(self, *args, **kwargs):
        return self._container.residues_within(*args, **kwargs)

    @utils.args_from(AtomContainer.calc_distance_array)
    def calc_distances(self, *args, **kwargs):
        array = self._container.calc_distance_array(*args, **kwargs)
        return array[0]

    @property
    def _container(self):
        """ AtomContainer: a container with just this atom in it.

        This is a convenience method for accessing to all of the :class:`AtomContainer`'s
        useful methods for dealing with geometry
        """
        return AtomList([self])

class AtomPropertyMixin(object):
    """ Functions accessing computed atomic properties.

    Note:
        This is a mixin class designed only to be mixed into the :class:`Atom` class. Routines
        are separated are here for code organization only - they could be included in the main
        Atom class without changing any functionality
    """
    @property
    def ff(self):
        """ moldesign.utils.DotDict: This atom's force field parameters, if available (``None``
        otherwise)
        """
        try:
            ff = self.molecule.energy_model.mdtforcefield
        except AttributeError:
            return None
        if ff is None: return None

        return utils.DotDict(partialcharge=ff.partial_charges[self],
                             lj=ff.lennard_jones[self])

    @property
    def basis_functions(self):
        """ List[mdt.orbitals.AtomicBasisFunction]: This atom's basis functions, if available
        (``None`` otherwise)
        """
        if self.molecule is None:
            return None
        try:
            wfn = self.molecule.wfn
        except mdt.exceptions.NotCalculatedError:
            return None

        return wfn.aobasis.on_atom.get(self, [])

    @property
    def properties(self):
        """ moldesign.utils.DotDict: Returns any calculated properties for this atom
        """
        props = utils.DotDict()
        for name, p in self.molecule.properties.iteritems():
            if hasattr(p, 'type') and p.type == 'atomic':
                props[name] = p[self]
        return props

class AtomReprMixin(object):
    """ Functions for printing out various strings related to the atom.

    Note:
        This is a mixin class designed only to be mixed into the :class:`Atom` class. Routines
        are separated are here for code organization only - they could be included in the main
        Atom class without changing any functionality
    """
    def __str__(self):
        desc = '%s %s (elem %s)' % (self.__class__.__name__, self.name, self.elem)
        molstring = ''
        if self.molecule:
            molstring = ', index %d' % self.index
            if self.molecule.is_biomolecule:
                molstring += ' (res %s chain %s)' % (self.residue.name, self.chain.name)
        return '%s%s' % (desc, molstring)

    def _shortstr(self):
        """ A shorter string representation for easier-to-read lists of atoms
        """
        fields = [self.name]
        if self.molecule:
            fields.append('#%d' % self.index)
            if self.molecule.is_biomolecule:
                fields.append('in %s.%s' % (self.chain.name, self.residue.name))
        return ' '.join(fields)

    def __repr__(self):
        try:
            if self.molecule:
                return '<%s in molecule %s>' % (self, self.molecule)
            else:
                return '<%s>' % self
        except:
            return '<%s at %s (exception in __repr__)>' % (self.__class__.__name__, id(self))

    def markdown_summary(self):
        """Return a markdown-formatted string describing this atom

        Returns:
            str: markdown-formatted string
        """
        if self.molecule is None:
            lines = ["
Atom %s
" % self.name]
        else:
            lines = ["
Atom %s (index %d)
" % (self.name, self.index)]

        lines.append('**Atomic number**: %d' % self.atnum)
        lines.append("**Mass**: %s" % self.mass)
        lines.append('**Formal charge**: %s' % self.formal_charge)

        if self.molecule is not None:
            lines.append('\n')
            if self.molecule.is_biomolecule:
                if self.pdbindex is not None:
                    lines.append('**PDB serial #**: %s'%self.pdbindex)
                lines.append("**Residue**: %s (index %d)" % (self.residue.name, self.residue.index))
                lines.append("**Chain**: %s" % self.chain.name)
            lines.append("**Molecule**: %s" % self.molecule.name)
            for ibond, (nbr, order) in enumerate(self.bond_graph.iteritems()):
                lines.append('**Bond %d** (order = %d): %s (index %s) in %s' % (
                    ibond + 1, order, nbr.name, nbr.index, nbr.residue.name))

        if self.basis_functions:
            lines.append('**Basis functions:**
' + '
'.join(map(str,self.basis_functions)))

        if self.ff:
            lines.append('**Forcefield partial charge**: %s' % self.ff.partialcharge)
            # TODO: deal with other LJ types, e.g., AB?
            lines.append(u'**Forcefield LJ params**: '
                         u'\u03C3=%s, \u03B5=%s' % (
                             self.ff.lj.sigma.defunits(),
                             self.ff.lj.epsilon.defunits()))

        # position and momentum
        table = utils.MarkdownTable('', 'x', 'y', 'z')

        table.add_line(['**position /** {}'.format(u.default.length)] +
                       ['%12.3f' % x.defunits_value() for x in self.position])
        table.add_line(['**momentum /** {}'.format(u.default.momentum)] +
                       ['%12.3e' % m.defunits_value() for m in self.momentum])
        try:
            self.force
        except:
            pass
        else:
            table.add_line(['**force /** {.units}'.format(self.force.defunits())] +
                           ['%12.3e' % m.defunits_value() for m in self.force])

        lines.append('\n\n' + table.markdown() + '\n\n')
        # All other assigned properties

        return '
'.join(lines)

    def _repr_markdown_(self):
        return self.markdown_summary()

@toplevel
class Atom(AtomDrawingMixin, AtomGeometryMixin, AtomPropertyMixin, AtomReprMixin):
    """ A data structure representing an atom.

    ``Atom`` objects store information about individual atoms within a larger molecular system,
    providing access to atom-specific geometric, biomolecular, topological and property
    information. Each :class:`Molecule<moldesign.Molecule>` is composed of a list of atoms.

    Atoms can be instantiated directly, but they will generally be created
    automatically as part of molecules.

    Args:
        name (str): The atom's name (if not passed, set to the element name + the atom's index)
        atnum (int): Atomic number (if not passed, determined from element if possible)
        mass (units.Scalar[mass]): The atomic mass (if not passed, set to the most abundant isotopic
            mass)
        chain (moldesign.Chain): biomolecular chain that this atom belongs to
        residue (moldesign.Residue): biomolecular residue that this atom belongs to
        pdbname (str): name from PDB entry, if applicable
        pdbindex (int): atom serial number in the PDB entry, if applicable
        element (str): Elemental symbol (if not passed, determined from atnum if possible)

    **Atom instance attributes:**

    Attributes:
        name (str): A descriptive name for this atom
        element (str): IUPAC elemental symbol ('C', 'H', 'Cl', etc.)
        index (int): the atom's current index in the molecule
            (``self is self.parent.atoms[ self.index]``)
        atnum (int): atomic number (synonyms: atomic_num)
        mass (u.Scalar[mass]): the atom's mass

        position (units.Vector[length]): atomic position vector. Once an atom is part of a molecule,
            this quantity will refer to ``self.molecule.positions[self.index]``.
        momentum (units.Vector[momentum]): atomic momentum vector. Once an atom is part of a
           molecule, this quantity will refer to ``self.molecule.momenta[self.index]``.

        x,y,z (u.Scalar[length]): x, y, and z components of ``atom.position``
        vx, vy, vz (u.Scalar[length/time]): x, y, of ``atom.velocity``
        px, py, pz (u.Scalar[momentum]): x, y, and z of ``atom.momentum``
        fx, fy, fz (u.Scalar[force]): x, y, and z ``atom.force``

        residue (moldesign.Residue): biomolecular residue that this atom belongs to
        chain (moldesign.Chain): biomolecular chain that this atom belongs to
        parent (moldesign.Molecule): molecule that this atom belongs to
        index (int): index in the parent molecule: ``atom is atom.parent.atoms[index]``

    **Atom methods and properties**

    See also methods offered by the mixin superclasses:

            - :class:`AtomDrawingMixin`
            - :class:`AtomGeometryMixin`
            - :class:`AtomPropertyMixin`
            - :class:`AtomReprMixin`
    """
    x, y, z = (AtomCoordinate('position', i) for i in xrange(3))
    vx, vy, vz = (AtomCoordinate('velocity', i) for i in xrange(3))
    px, py, pz = (AtomCoordinate('momentum', i) for i in xrange(3))
    fx, fy, fz = (AtomCoordinate('force', i) for i in xrange(3))
    position = AtomArray('_position', 'positions')
    momentum = AtomArray('_momentum', 'momenta')

    atomic_number = utils.Synonym('atnum')

    #################################################################
    # Methods for BUILDING the atom and indexing it in a molecule
    def __init__(self, name=None, atnum=None, mass=None, chain=None, residue=None,
                 formal_charge=None, pdbname=None, pdbindex=None, element=None):

        # Allow user to instantiate an atom as Atom(6) or Atom('C')
        if atnum is None and element is None:
            if isinstance(name, int):
                atnum = name
                name = None
            else: element = name

        if element: self.atnum = data.ATOMIC_NUMBERS[element]
        else: self.atnum = atnum

        self.name = utils.if_not_none(name, self.elem)
        self.pdbname = utils.if_not_none(pdbname, self.name)
        self.pdbindex = pdbindex

        if mass is None: self.mass = data.ATOMIC_MASSES[self.atnum]
        else: self.mass = mass

        self.formal_charge = utils.if_not_none(formal_charge, 0.0 * u.q_e)
        self.residue = residue
        self.chain = chain
        self.molecule = None
        self.index = None
        self._position = np.zeros(3) * u.default.length
        self._momentum = np.zeros(3) * (u.default.length*
                                       u.default.mass/u.default.time)
        self._bond_graph = {}

    @utils.args_from(AtomContainer.copy)
    def copy(self, *args, **kwargs):
        """ Copy an atom (delegate to AtomContainer)
        """
        return self._container.copy(*args, **kwargs)[0]

    def __getstate__(self):
        """Helper for pickling"""
        state = self.__dict__.copy()
        if self.molecule is not None:  # then these don't belong to the atom anymore
            state['_bond_graph'] = None
            state['_position'] = self.position
            state['_momentum'] = self.momentum
        return state

    def _set_molecule(self, molecule):
        """ Permanently make this atom part of a molecule (private)

        Args:
            parent (moldesign.Molecule): the molecule that this atom will become a part of
        """
        if self.molecule and (molecule is not self.molecule):
            raise ValueError('Atom is already part of a molecule')
        self.molecule = molecule

    def _index_into_molecule(self, array_name, moleculearray, index):
        """ Link the atom's positions and momenta to the parent molecule (private)

        Args:
            array_name (str): the private name of the array (assumes private name is '_'+array_name)
            moleculearray (u.Array): the molecule's master array
            index: the atom's index in the molecule

        Note:
            This will be called by the molecule's init method
        """
        oldarray = getattr(self, array_name)
        moleculearray[index, :] = oldarray
        setattr(self, '_' + array_name, None)  # remove the internally stored version

    def bond_to(self, other, order):
        """ Create or modify a bond with another atom

        Args:
            other (Atom): atom to bond to
            order (int): bond order

        Returns:
            moldesign.molecules.bonds.Bond: bond object
        """
        if self.molecule is other.molecule:
            self.bond_graph[other] = other.bond_graph[self] = order
        else:  # allow unassigned atoms to be bonded to anything for building purposes
            self.bond_graph[other] = order
        return Bond(self, other, order)

    @property
    def bond_graph(self):
        """ Mapping[Atom, int]: dictionary of this atoms bonded neighbors, of the form
        ``{bonded_atom1, bond_order1, ...}``
        """
        if self.molecule is None:
            return self._bond_graph
        else:
            self._bond_graph = None
            try:
                return self.molecule.bond_graph[self]
            except KeyError:
                self.molecule.bond_graph[self] = {}
                return self.molecule.bond_graph[self]

    @bond_graph.setter
    def bond_graph(self, value):
        if self.molecule is None:
            self._bond_graph = value
        else:
            self._bond_graph = None
            self.molecule.bond_graph[self] = value

    @property
    def bonds(self):
        """ List[Bond]: list of all bonds this atom is involved in
        """
        return [Bond(self, nbr, order) for nbr, order in self.bond_graph.iteritems()]

    @property
    def heavy_bonds(self):
        """ List[Bond]: list of all heavy atom bonds (where BOTH atoms are not hydrogen)

        Note:
            this returns an empty list if called on a hydrogen atom
        """
        if self.atnum == 1:
            return []
        else:
            return [Bond(self, nbr, order)
                    for nbr, order in self.bond_graph.iteritems()
                    if nbr.atnum > 1]

    @property
    def force(self):
        """ (units.Vector[force]): atomic force vector. This quantity must be calculated - it is
        equivalent to ``self.molecule.forces[self.index]``

        Raises:
            moldesign.NotCalculatedError: if molecular forces have not been calculated
        """
        f = self.molecule.forces
        return f[self.index]

    @property
    def velocity(self):
        """ u.Vector[length/time, 3]: velocity of this atom; equivalent to
        ``self.momentum/self.mass``
        """
        return (self.momentum / self.mass).defunits()

    @velocity.setter
    def velocity(self, value):
        self.momentum = value * self.mass

    @property
    def num_bonds(self):
        """ int: the number of other atoms this atom is bonded to
        """
        return len(self.bond_graph)
    nbonds = num_bonds

    @property
    def valence(self):
        """ int: the sum of this atom's bond orders
        """
        return sum(v for v in self.bond_graph.itervalues())

    @property
    def symbol(self):
        """ str: elemental symbol
        """
        return data.ELEMENTS.get(self.atnum, '?')
    elem = element = symbol

redpajama_set_name: RedPajamaGithub


One of the flavors I brought home was Sour Cream & Onion. This is a preferred flavor in my house. As I looked at the bag I thought, "I wonder how the development of this particular flavor came to be? What did that conversation and planning look like?". I've always found really random history like this very interesting.
While I didn't dive into the history of this particular flavor of crispy potato goodness, I am going to make a fairly safe assumption that it stemmed from people who were tired of plain potato chips. I would imagine this is how the plethora of chip flavors all began – "You know what would taste really good? If we made potato chips taste like _____!".
I then began thinking about innovation in education. The word innovation is used so heavily now. We're all supposed to be innovative all the time in our teaching and the opportunities we offer students. It's quickly become a buzzword like so many that have come before it, and we are certainly offered a lot of choices on ways to be innovative in the edtech world. Think of what the edtech space would look like as an aisle in the grocery store!
I'm not saying that being innovative is bad. What I'm getting at is we shouldn't over complicate what innovation looks like. I think the idea of being/becoming more innovative is intimidating to some people. It needs to begin with something that we've become tired of; a particular lesson or unit, a process, a workflow, or the culture of a school or district. Or maybe we've discovered something just isn't working as well as it used to – especially with learning opportunities we give our students and the ways we equip them to express their learning. It's making the conscious decision (whether individually or collaboratively) that we are ready for something new – something more for ourselves and our students.
Don't let all the options overwhelm you. Spend some quality time in the "edtech aisle". Ask lots of questions. Seek help from your network. Select one and give it a go. Make an informed decision on what's best for your students. I would then encourage you to share what you tried. Blog about it, share it with your school, find your voice to share the great things you're doing in your classroom. We need more of that.
Is it better to bring people together around things or ideas? There are lots of communities in education: we have communities in our schools, we have learning communities with colleagues, social media communities, professional organizations that create a community around its members, and companies that create a community around what the company is all about for teaching and learning. Needless to say, we have options.
The professional communities that center around education in some way usually bring people together around a device or a platform. Not always, but often. It might be their product(s), software, or other resources that at first bring us in. But what these groups do to keep people active in these spaces matters more than the original hook to "get them in the door". What are you offering? Is it always the same stuff delivered by the same people? Is it a lot of "old wine in a new bottle"? At the end of the day is it more about the business or more about creating diverse experiences and viewpoints?
A community is nothing without its people, obviously, but community leaders must be willing to put in the work to keep them there. To listen to them, to improve because of them, to be in a mindset of constant iteration, and serving the members. Do you tell your community how much you appreciate them? Do you show them? If I'm in your community, how do I know I'm more than just social media metrics or a bottom line?
A community is about connecting dots for others. We need to make sure we're giving just as much if not more than what we're getting.


Designs that provide driver and passenger safety and comfort with protection for the overall vehicle and on-board equipment from road dynamics and power train operation as well as sophisticated and sensitive electronics, guidance systems, fire control systems, targeting systems, optics systems and other payloads from extreme operational dynamics, gunfire, rough terrain, high speed maneuvers, close proximity ballistic hits and dynamic or active armor countermeasure inputs. Stock and custom designs for Medium Duty and Heavy Duty vehicles as well as emergency and specialty vehicles. Stock and custom designs to meet environmental requirements of Mil Specs such as Mil-Std-810 and Mil-E-5400.


Whether you're working diligently at a desk or meeting with a large group of people, LD Products has the furniture to match your needs. Choose from our large selection of desks, tables and accessories. LD's furniture is perfect for everything from a small home office to a professional board room.


text:
.. _bool: https://docs.python.org/2/library/stdtypes.html

.. _vSphere API 4.0: ../../../vim/version.rst#vimversionversion5

.. _vmodl.DynamicData: ../../../vmodl/DynamicData.rst

vim.host.ScsiLun.Capabilities
=============================
  Scsi device specific capabilities.
:extends: vmodl.DynamicData_
:since: `vSphere API 4.0`_

Attributes:
    updateDisplayNameSupported (`bool`_):

       Can the display name of the SCSI device be updated?