Equivalent to clicking the Arrange command on the Window menu. Rearranges open windows and icons and resizes open windows. Also can be used to synchronize scrolling of windows of the active sheet.
Syntax
ARRANGE.ALL(arrange_num, active_doc, sync_horiz, sync_vert)
ARRANGE.ALL?(arrange_num, active_doc, sync_horiz, sync_vert)
Arrange_num is a number from 1 to 7 specifying how to arrange the windows.
| Arrange_num | Result |
| 1 or omitted | Tiled (also used to arrange icons in Microsoft Excel for Windows) |
| 2 | Horizontal |
| 3 | Vertical |
| 4 | None |
| 5 | Horizontally arranges and sizes the windows based on the position of the active cell. |
| 6 | Vertically arranges and sizes the windows based on the position of the active cell. |
| 7 | Arranges windows so that they cascade from the upper left to the bottom right of the application workspace. |
If you want to change whether the windows are synchronized for scrolling but not how they are arranged, make sure arrange_num is 4.
Active_doc is a logical value specifying which windows to arrange. If active_doc is TRUE, Microsoft Excel arranges only windows on the active workbook; if FALSE or omitted, all open windows are arranged.
Sync_horiz is a logical value corresponding to the Sync Horizontal check box in Microsoft Excel version 4.0.
If sync_horiz is TRUE, Microsoft Excel selects the check box and synchronizes horizontal scrolling.
If sync_horiz is FALSE or omitted, Microsoft Excel clears the check box, and windows will not be synchronized when you scroll horizontally.
This argument is used only when active_doc is TRUE.
Sync_vert is a logical value corresponding to the Sync Vertical check box in Microsoft Excel version 4.0.
If sync_vert is TRUE, Microsoft Excel selects the check box and synchronizes vertical scrolling.
If sync_vert is FALSE or omitted, Microsoft Excel clears the check box, and windows will not be synchronized when you scroll vertically.
This argument is used only when active_doc is TRUE.
Note If arguments are omitted in the dialog box form of this function, the default values are the previous settings, if any; otherwise the default values are as described above.
Remarks
After arranging windows, the top or leftmost window is active.
In Microsoft Excel for Windows, if all windows are minimized, ARRANGE.ALL ignores its arguments, if any, and arranges the corresponding icons horizontally along the bottom of the workspace.
Tip You can use synchronized horizontal or vertical scrolling when you need to scroll while viewing macro formulas in one window and corresponding macro values in another window of the same macro sheet.
Related Function
ACTIVATE Switches to a window
Return to index


A footing in Geometric Quantisation
Weekly Meetings: Geometric Quantisation
This set of notes is based off of: https://arxiv.org/pdf/math-ph/0405065.pdf and https://arxiv.org/pdf/1206.2334.pdf
Week 1 - Axel Polaczek
What is the purpose of geometric quantisation? To construct a methodology of taking a classical theory on a manifold and creating a quantum theory. This is done by making use of symplectic geometry (the stage for classical mechanics) and associating to a symplectic manifold a U(1)-principal bundle with connection. Then construction a Hilbert space of states is the space of sections of the associated line bundle.
There are some subtleties and obstructions that will present themselves which will prevent us from constructing such structures for any symplectic manifold.
Symplectic Geometry
We need to have some basic understand of symplectic geometry, so there will be a lot of definitions following:
Definition A pair \((M,\omega)\) consisting of a manifold \(M\) and a two-form \(\omega\) is said to be symplectic manifold if we have that the two form satisfies
- \(d\omega = 0\) (closedness)
- if \(\omega(X,Y) = 0\) for all \(X\in \Gamma(TM)\) then we must have that \(Y = 0\). (non degenerate )
We can also have symplectic vector fields, \[X\in \Gamma(TM)\] if we have that \(\mathcal{L}_X \omega = 0\). Using the interior product, \((i_X \omega) (Y) = \omega(X,Y)\) we can express this condition as: \((i_X \circ d + d \circ i_X)\omega = 0\). Which when combined with the closeness property of the symplectic form, we have that a vector field is symplectic if \((d \circ i_X) \omega =0\)
An important concept is that of a Hamiltonian vector field.
Definition: A function, \(f\) defines a vector field called the Hamiltonian vector field (of \(f\)) \(X_f \in \Gamma(TM)\) which obeys the relation: \(d f = - i_{X_f} \omega\)
Expressing this relationship a bit more fully, we see that \(df (Y) = Y(f)\) by definition of the differential and by the definition of the Hamiltonian vector field we can write this as: \(df(Y) = (- i_{X_f} \omega)(Y) = -\omega(X_f, Y)\). The minus sign seems to be a quirk of Axel’s (the person giving this talk) as most online resources I’ve come across don’t include it. Something to keep an eye on as we proceed, as we will change speakers.
The next structure we need is that of a Poisson Bracket.
Definition: A map \(\{\cdot,\cdot\}: C^\infty(M) \to C^\infty(M) \to C^\infty(M)\) is called the Poisson bracket of the symplectic form \(\omega\) if we have that \(\{f,g\} = i_{X_f}i_{X_g} \omega= - \omega(X_f,X_g)\)
This is called the natural Poisson structure of a symplectic manifold.
Proposition: A function \(g\) is constant along the integral curves of the hamiltonian vector field \(X_f\) if and only if \(\{f,g\} = 0\).
Proof: Take \(\gamma:[0,1] \to M\) to be the integral curve of \(X_f\). So we can then look at \(\frac{d}{dt} g(\gamma(t)) = X_f(g(\gamma(t)))\) (which is just definition of an integral curve), then we can examine the right hand side as the following: \[ X_f(g(\gamma(t))) = d(g\circ\gamma)(t) (X_f) = i_{X_f} d(g\circ \gamma)(t) \] We then take the hamiltonian vector field associated to \(g\), and we can express \(dg = -i_{X_g}\omega\) this as: \[ X_f(g(\gamma(t))) = i_{X_f} (dg \circ d\gamma) (t) = - i_{X_f} (i_{X_g} \omega) (\gamma(t)) = -\{f,g\} (\gamma(t)) \] As this holds for arbitrary values of \(t\) this must hold along the entire curve \(\gamma\).
Another handy result is that \(X_{\{f,g\}} = - [X_f, X_g]\), which can be shown if we invert the statement above for the Lie derivative interns of the interior and exterior product. To get that \(i_{[X,Y]} =[\mathcal{L}_X,Y]\).
Also, as we have that \(d\omega = 0\) then by Poincare lemma we have that \(\omega = d\theta\).
Time for the classic example:
Examples: Take the manifold to be the total space of the cotangent bundle \(M =T^*(Q)\) over some manifold \(Q\)? (I think we just treat \(Q\) as a vector space, but I’m not sure where this becomes important if at all). So then points in this space are of the form \(m = (q,p) \in M\) and we can form a bundle structure over \(Q\) by taking projection onto the first coordinate \(\pi:M \to Q\) (so we are just taking the cotangent bundle over \(Q\)). We need a map \(\theta: TM \to \mathbb{R}\) (i.e. \(\theta \in \Omega^1(M)\)) such that the following diagram commutes
Where \(p:TQ \to \mathbb{R}\) is what exactly? My notes from the time don’t say, but lets figure this out. Given a point \(m\in M = T^*Q\) we know that it gets mapped to \(q\) under the map \(\pi\). Alternatively we can view \(m\) as a map from \(T_qQ \to \mathbb{R}\) as its a one-form after all. Which in Axels notes must be the map \(p\) above, alternatively I’ll write it as \(m\) below.
So what is the combination \(m\circ d\pi\) , it acts on an element of \(TM\) corresponding to the point \(m\in M\) and sends it to \(\mathbb{R}\). So it’s a map from \(T_mM \to \mathbb{R}\) which is means in the diagrams above, we need to put a specific on \(\theta = \theta_m\). Then we vary \(m\) over the entire manifold and see that the formula holds.
In terms of coordinates we have that \(\theta = p_i dq_i\) where \(p = p_idx^i\) and \(q_i:M \to \mathbb{R}\) are the coordinates in a local chart of \(M\) treated as functions on \(M\).
Example: Take \(M = T^*\mathbb{R}\), with points \((q,p) = m\in M\) and \(\omega = dp \wedge dq\) and \(dH = -i_{X_H}\omega\) . We can write any vector field in terms of it’s components \(X_H = X^p_H \frac{\partial}{\partial p} + X^q_H \frac{\partial}{\partial q}\) . By looking at the definition of a Hamiltonian vector field we have \[ dH(Y)= -i_{X_H} \omega(Y) = - \omega(X_H,Y) = -(X^p_H dq(Y) - X^q_H dp(Y)) \] so that \(dH = - (X^p_H dq - X^q_H dp)\), but we also have that \(dH = \frac{\partial H}{\partial p} dp + \frac{\partial H}{\partial q} dq\). So we have that $X^p_H = - $ and \(X^q_H = \frac{\partial H}{\partial p}\) and so combining we get: \[ X_H = - \frac{\partial H}{\partial q}\frac{\partial}{\partial p} + \frac{\partial H}{\partial p}\frac{\partial}{\partial q} \]
Quantisation
- This was fairly rushed and I may embellish the notes bit later on.
What we want is a map \(\mathcal{Q}: Obs \to End(\mathcal{H})\) which maps us from the space of classical observables on our symplectic manifold to some operators on a Hilbert space. The space of observables is just the algebra of functions \(C^\infty(M)\). We want this map to follow some general rules
there was a fair bit of discussion about whether or not we want this map to satisfy all of the requirements or not. I’m sure it will come up again later
- Q1: \(Q(1) = Q_1 = id\) , so the identity is mapped to the identity.
- Q2: \(Q_{\alpha f + g} = \alpha Q_f + Q_g\) , so the map preserves the linear structure.
- Q3: \([Q_f, Q_g] = i\hbar Q_{\{f,g\}}\) , this is the condition that required all the background on symplectic manifolds, but you can see that it maps the symplectic structure to a commutator. We will see why this is important later I guess.
There was one other condition and it caused some disagreement between the audience of the meeting.
-
Q4: For \(\phi: M^{(1)}
\to M^{(2)}\) such the \(\phi^*\omega^{(2)} = \omega^{(1)}\) and for
\(f\in C^\infty(M^{(2)}) = Obs^{(2)}\)
we want
- \(f\circ \phi \in Obs^{(1)}\)
- \(\exists U_\phi :\mathcal{H^{(1)}} \to \mathcal{H^{(2)}}\) such that \(Q^{(1)}_{f\circ \phi} = U^*_\phi Q^{(2)}_f U_\phi\)
These are statements about irreducibility. Which I understand to be that the Stone vonNeumann theorem tells us that there is unique (up to unitary equivalence) representation that is irreducible (I.e. that map \(Q\) is an irreducible representation of \(Obs\)) that satisfies the standard canonical commutation relations. However, the way it’s formalised above is supposed to exists for a general manifold, even when the split of \(M = T^*Q\) (where \(Q\) is some general symplectic manifold now instead of a vector space as above) into global coordinates \((q,p)\) doesn’t exist. However, it’s not clear that this is true to me.
Week 2 - Axel Polaczek
We examine the above example, where \(M = T^*Q\) for \(Q = \mathbb{R^d}\). Then we can take \(\omega = d\theta\) where \(\theta\) is known globally so we can write it as above \(\theta = p_i dq^i\). In this case we have an expression for the map \(Q\). \[ Q_f = - i \hbar X_f - \theta(X_f) + f \] Where the Hilbert space in question is \(\mathcal{H} = L^2(M)\), where the norm is given by the inner product \(\langle \phi,\psi \rangle = \int_M \omega^n \phi^* \psi\) or something similar. (I think d = 2n but not 100% sure).
We then can check that this map satisfied Q1 - Q4.
However, in the general case of a symplectic manifold \(Q\). We can’t choose global coordinates for \(Q\) or \(M = T^*Q\). However by Darboux theorem we can always choose a covering of \(Q\) such that in each coordinate patch \(\omega = dp_i \wedge dq_i\) and so that we can express the symplectic potential in that patch as \(\theta = p_idq_i\).
So if we take two charts \(U_a, U_b\), take \(\theta\) to be defined on \(U_a\) and \(\theta^\prime\) to be defined on \(U_b\) and look at \(\omega\) on the overlap of \(U_a \cap U_b\). Then we have that \(\omega = d\theta = d\theta^\prime\). So we know then that \(\theta = \theta^\prime + du_{ab}\) and the functions \(u_{ab}\) depends on the coordinate patches in question.
As the definition of \(Q\) above depends on the potentials \(\theta\) we should examine how the terms in the expression above differ in the different coordinate patches. \[ \theta(X_f) - \theta^\prime(X_f) = du(X_f) = X_f(u) \] We can then write \(X_f(u)\) as the following expression involving operators \(e^{-u}\) and \(e^u\). We do this as we want to relate the two expression of \(Q\) to each other via unitary operators and this step will help us do that. \[ X_f(u) = -e^u X_f e^{-u} \] Then we can render the expression \(Q_f\) in the chart \(U_a\) and use the relation for the potentials. \[ \begin{align} e^{\frac{u}{i\hbar}} Q_f^a e^{-\frac{u}{i\hbar}} \phi &= e^{\frac{u}{i\hbar}} \left( -i\hbar X_f - \theta(X_f)+f\right) e^{\frac{u}{i\hbar} } \phi\\ &= e^{- \frac{u}{i\hbar}}\left( -i\hbar X_f + f - \theta^\prime(X_f) - X_f(u) \right)e^{\frac{u}{i\hbar}} \phi\\ &=e^{- \frac{u}{i\hbar}} \left( -i\hbar X_f + f -\theta^\prime(X_f) - X_f(u) \right)e^{\frac{u}{i\hbar}} \phi\\ &=\left( i\hbar e^{- \frac{u}{i\hbar}}X_f e^{-\frac{u}{i\hbar}} + f - \theta^\prime(X_f) - X_f(u) \right)\phi \end{align} \] As \(X_f(u)\) is just a function, the exponentials can commute with it. However, for the \(-ihX_f\) we need to act the vector field. \[ \begin{align} -i\hbar e^{\frac{u}{i\hbar}} X_f (e^{-\frac{u}{i\hbar}}\phi) &= -i\hbar e^{\frac{u}{i\hbar}} X_f (e^{-\frac{u}{i\hbar}}) \phi + -i\hbar e^{\frac{u}{i\hbar}}e^{-\frac{u}{i\hbar}} X_f (\phi) \\ &= (+X_f(u) -i\hbar X_f) \phi \end{align} \] So substituting this into the expression above gives us that \[ e^{\frac{u}{i\hbar}} Q_f^a e^{-\frac{u}{i\hbar}} \phi = \left(-i\hbar X_f + f -\theta^\prime(X_f)\right)\phi = Q^b_f \phi \] ### Complex Line Bundles
We know switch gears, and view all of the above construction as being data in an Hermitian complex line bundle with connection/covariant derivative with the symplectic form used so heavily above, being related to curvature of the covariant derivative.
Given a 1 dimensional complex vector bundle \(\mathbb{L} \overset{\pi}{\longrightarrow} M\), let \(\varphi_u: \pi^{-1}(U) \to U\times \mathbb{C}\) be the local trivialisations and on the intersections \(U_{\alpha \beta} = U_\alpha \cap U_\beta \neq \emptyset\) let \(g_{\alpha\beta}: \mathbb{C} \to \mathbb{C}\) be the transitions functions such that: \[ \begin{align} \varphi_\alpha^{-1} \circ \varphi_\beta : &U_{\alpha \beta} \times \mathbb{C} \to &U_{\alpha \beta} \times \mathbb{C}\\ & (m,\phi_\beta)\mapsto & (m,g_{\alpha\beta} \psi_\beta ) \end{align} \] And such that they satisfy the cocycle conditions for triple intersections \(U_{\alpha\beta\gamma}\):
\(g_{ab}g_{bc}g_{ca} = 1\), \(g_{\alpha \beta}g_{\beta \gamma} = g_{\alpha \gamma}\). \(g_{\alpha \alpha } = 1\) and also \(g_{\alpha\beta} = \frac{1}{g_{\beta \alpha}}\).
If we view \(exp(\frac{u_{ab}}{i\hbar}) = g_{ab}\) as transition functions. Then the fact that transition functions have to satisfy the cocycle condition that \(g_{ab}g_{bc}g_{ca} = 1\), then we need that \(u_{ab} + u_{bc} + u_{ca} = n_{abc}\in \mathbb{Z}\). Which is called the integrability condition or prequantisation condition.
To this line bundle we can also have a covariant derivative, which is a prescription to “differentiate” sections of a vector bundle along the direction of a vector field.
Definition: A covariant derivative on \(\mathbb{L} \to M\) is a map \(\nabla: \mathfrak{X}(M) \times \Gamma(\mathbb{L}) \to \Gamma(\mathbb{L})\) such that the following conditions are true:
- (function linearity) \(\nabla_{fX} (\psi) = f \nabla_X(\psi)\)
- (Leibniz relation) \(\nabla_X(f\psi) = f \nabla_X(\psi) + X(f) \psi\)
where \(f\in C^\infty(M,\mathbb{C})\), \(X\in \mathfrak{X}(M)\) and \(s\in \Gamma(\mathbb{L})\).
We now just need to construct the Hermitian structure such that it is doesn’t not conflict with the connection.
Definition: A complex line bundle is called Hermitian if there exists local sections of the line bundle \(\{ e_\alpha: U_\alpha \to U_\alpha \times \mathbb{C} \}\) which obey the following relationship: \[ e_\alpha = |g_{\alpha \beta}|^{-2} e_\beta \] where \(g_{\alpha\beta}\) are the transition functions of the line bundle. We can then define a fibre-wise inner product of sections in the following way: \[ (\phi, \psi)_m = e_\alpha(m) \bar{\phi}_\alpha(m) \psi_\alpha(m) \]
In order for this Hermitian structure to be compatible with the connection we require the following relation: \[ X((\phi,\psi)_m) = (\nabla_X\phi, \psi)_m + (\phi, \nabla_X \psi)_m \] for every point \(m\in M\).
One last definition is that of the curvature of a covariant derivative:
Definition: The curvature of a covariant derivative is given by \[ R^\nabla(X,Y) = \nabla_X\nabla_Y - \nabla_Y \nabla_X - \nabla_{[X,Y]} \]
This is a map from \(\Gamma(\mathbb{L})\) to itself, i.e. \(\in End(\Gamma(\mathbb{L}))\).
Making the link
In a local chart \(U_\alpha\) we take the covariant derivative to have the following form: \[ \nabla_X \psi_\alpha = \left( X - \frac{i}{\hbar}\theta_\alpha(X)\right) \psi_\alpha \]
Then we can calculate the curvature:
\[\begin{align} R^\nabla(X,Y)\psi_\alpha =& (X - \frac{i}{\hbar}\theta_\alpha(X))( Y - \frac{i}{\hbar}\theta_\alpha(Y)) \psi_\alpha \\ &- (Y - \frac{i}{\hbar}\theta_\alpha(Y))(X - \frac{i}{\hbar}\theta_\alpha(X)) \psi_\alpha \\ &- ([X,Y]\psi_\alpha - \frac{i}{\hbar}\theta_\alpha([X,Y]))\psi_\alpha\\ =& XY\psi_\alpha - \left(\frac{i}{\hbar} X\theta_\alpha(Y) + \frac{i}{\hbar} \theta_\alpha(X) Y\right)\psi_\alpha - \frac{1}{\hbar^2}\theta_\alpha(X)\theta_\alpha(Y) \psi_\alpha \\ &- YX\psi_\alpha + \left(\frac{i}{\hbar} Y\theta_\alpha(X) + \frac{i}{\hbar} \theta_\alpha(Y)X \right)\psi_\alpha + \frac{1}{\hbar^2}\theta_\alpha(Y)\theta_\alpha(X) \psi_\alpha \\ & - [X,Y] \psi_\alpha + \frac{i}{\hbar} \theta_\alpha([X,Y])\psi_\alpha\\ =& XY\psi_\alpha - YX \psi_\alpha + \frac{i}{\hbar}\left( Y\theta_\alpha(X)- X\theta_\alpha(Y)\right)\psi_\alpha - \frac{i}{\hbar}(\theta_\alpha(X)Y - \theta_\alpha(Y) X) \psi_\alpha \\ &- [X,Y]\psi_\alpha + \frac{i}{\hbar}\theta_\alpha([X,Y])\psi_\alpha \end{align}\]
Where the terms of the form \(\frac{1}{\hbar^2} \theta(X) \theta(Y)\) cancel as \(\theta_\alpha(X)\) is just a function, so we can commute the terms and cancel them. The following terms require some investigation: \[ \begin{align} (Y\theta_\alpha(X)- X\theta_\alpha(Y))\psi &= Y (p_i X(q^i)\psi) - X(p_i(Y(q^i)\psi)\\ &= p_i (Y(X(q^i)\psi) - X(Y(q^i)\psi)) + Y(p_i)X(q^i)\psi - X(p_i)Y(q^i)\psi\\ & = p_i(Y(X(q^i))\psi) + p_iX(q^i)Y(\psi) - p_i(X(Y(q^i)))\psi - p_iY(q^i)X(\psi) \\ & \qquad+ Y(p_i)X(q^i)\psi - X(p_i)Y(q^i)\psi\\ & = \big(p_i(Y(X(q^i)) - p_i(X(Y(q^i))) + p_iX(q^i)Y - p_iY(q^i)X\big)\\ & \qquad + Y(p_i)X(q^i)\psi - X(p_i)Y(q^i)\psi\psi \end{align} \]
\[ \begin{align} \theta_\alpha([X,Y]) &= p_i dq^i([X,Y]) =p_i (X(dq^i(Y)) - Y(dq^i(X)))\\ &= p_i(X(Y(q^i)) - Y(X(q^i))) \end{align} \]
\[ \theta_\alpha(X)Y - \theta_\alpha(Y)X = p_iX(q_i)Y - p_i Y(q_i)X \]
From these formula’s we can see that \[ Y\theta_\alpha(X) - X\theta_\alpha(Y) = -\theta_\alpha([X,Y]) + \theta_\alpha(X)Y - \theta_\alpha(Y)X + + Y(p_i)X(q^i)\psi - X(p_i)Y(q^i)\psi \] Substituting this into the expression for the curvature we find that \[ \begin{align} R^\nabla(X,Y)\psi_\alpha &= \frac{i}{\hbar} \left( Y(p_i)X(q^i)\psi - X(p_i)Y(q^i) \right)\psi \\ &= \frac{i}{\hbar}\left(dp_i(Y) dq^i(X) - dp_i(X) dq^i(Y)\right)\\ &= \frac{i}{\hbar} (dp_i\wedge dq^i (Y,X))\\ &= - \frac{i}{\hbar} \omega(X,Y) \end{align} \] Note that in the set of notes we are following, they define the curvature to be \(i\) times the curvature I have defined. This doesn’t seem to be standard so I’ve changed it and now our curvature is complex, which isn’t so pleasant. However, if the other set of notes, approaches the topic in this way I’ve laid out here. It’s just worth pointing out that there is a difference.
So we have prequantised our symplectic manifold. We have found a methodology to form a Hermitian complex line bundle with connection over the same base space such that the symplectic form is given by the curvature of the connection. To fully quantise, we need to construct a procedure to associate a Hilbert space to every point in the base space. That’s the next step which Hans Nguyen will present.
Week 3 - Hans Nguyen
This next two lectures will explore the notion of polarisation and half-densities. This is needed because of the fact that the inner product given by the symplectic form produces a Hilbert space that too big for physics. Which means that in the cases we know how to quantise, it produces too many variables for the wavefunction to be dependent on. I believe more mathematical terminology for this is that the representation isn’t irreducible. From the book by Woodhouse on Geometric Quantisation states that in the classical case of the cotangent bundle of \(\mathbb{R}^n\) you end up with wave functions on \(\mathbb{R}^{2n}\), which is double the dimension we want from Quantum mechanics. And from quantising coadjoint orbits, you find the representation is irreducible. Both of which are fixed by Polarisation.
We need to form a Hilbert space, which means we need an inner product on the complex line bundle defined above (called the prequantum line bundle).
Definition: Given a Hermitian line bundle \((\mathbb{L} \to M, \nabla, (,)_{\pi^{-1}(x)})\) we can define an inner product of sections \(s,s^\prime \in \Gamma(\mathbb{L})\) in the following way: \[ \langle s, s^\prime \rangle = \int_M (s,s^\prime) \omega^n \] Where we would need to use partitions of unity and likewise techniques to take the fibrewise inner product to a global expression.
We can define the square integrable sections, \(L^2(\Gamma(\mathbb{L}))\) as being norm completion of the set of sections \(s \in\Gamma(\mathbb{L})\) that satisfy \(\langle s,s, \rangle < \infty\). This space \(L^2(\Gamma(\mathbb{L})\) is called the prequantum hilbert space.
Example: Lets have \(Q = \mathbb{R}\) so the phase spaceis given by \(T^*Q = \mathbb{R}\times \mathbb{R}\) with symplectic form \(\omega = dq\wedge dq\) with p and q living in their own copy of \(\mathbb{R}\). The prequantum bundle (i.e. the hermitian line bunde) is given by: \(T^*\mathbb{R} \times \mathbb{C} \to T^*\mathbb{R}\) is the trivial bundle. Then the inner products are all defined globally, so we find that \(\mathcal{H} = L^2(T^*\mathbb{R}, \mathbb{C}) = L^2(\mathbb{R}^2, \mathbb{C})\) which is not correct as we want the wave functions to just be dependant on the position.
Lets get to Polarisation:
Polarisation
A polarisation is a choice of half of the variables that is consistent with all the structures previously defined. To make this into precise mathematics we need to define some new notions (new to us, not new new).
Definition: A Lagrangian subspace \(\Lambda\) of a symplectic vector space \((V, \omega)\) is the collection of elements in \(V\) such that:
- \(\omega(V,v^\prime) = 0\) for all \(v, v^\prime \in V\). This is known as the isotropic condition
- \(\Lambda\) is a maximal isotropic subspace (as in the above notion of isotropy).
It can be shown (in general) for Lagrangian subspaces that they have dimension \(\frac{1}{2} dim(V)\).
So the aim is to prescribe a Lagrangian subspace to every tangent space in a consistent way.
Definition: A Real polarisation on \((M,\omega)\) is a subbundle of the tangent bundle \(\mathcal{F}\subset TM\) such that every fibre is a Lagrangian subspace of the tangent space and such that the commutator of local sections is also a local section. Summed up in maths:
- \(\mathcal{F}_x \subset T_xM\) is Lagrangian. This is referred to as the Lagrangian conditions
- if \(X,Y\) are local sections (i.e. \(U\subset M\) then \(X\in \Gamma(\mathcal{F} \to U)\) so \(X(x) \in \mathcal{F}_x\)). This is referred to as the Integrable condition.


library(fitbitr)
library(lubridate)
library(tidyverse)
## Dates to use throughout post
<- as_date("2020-01-01")
start <- as_date("2021-10-18")
end
generate_fitbitr_token()
Working With Your Fitbit Data in R
Note: This post was updated as of 3/25/2023 for fitbitr v0.3.0
Introduction
fitbitr 0.1.0
is now available on CRAN! You can install it with
install.packages("fitbitr")
or you can get the latest dev version with
## install.packages("devtools")
::install_github("mrkaye97/fitbitr") devtools
fitbitr
makes it easy to pull your Fitbit data into R and use it for whatever interests you: personal projects, visualization, medical purposes, etc.
This post shows how you might use fitbitr
to pull and visualize some of your data.
Sleep
First, you should either generate a new token with generate_token()
or load a cached token with load_cached_token()
.
And then you can start pulling your data!
<- get_sleep_summary(
sleep start_date = end - months(3),
end_date = end
)
head(sleep)
| log_id | date | start_time | end_time | duration | efficiency | minutes_to_fall_asleep | minutes_asleep | minutes_awake | minutes_after_wakeup | time_in_bed |
|---|---|---|---|---|---|---|---|---|---|---|
|<PHONE_NUMBER>5 | 2021-10-18 | 2021-10-17 23:01:00 | 2021-10-18 06:30:00 | 26940000 | 91 | 0 | 391 | 58 | 0 | 449 |
|<PHONE_NUMBER>5 | 2021-10-17 | 2021-10-16 23:03:30 | 2021-10-17 08:11:00 | 32820000 | 95 | 0 | 472 | 75 | 4 | 547 |
|<PHONE_NUMBER>3 | 2021-10-16 | 2021-10-15 22:46:30 | 2021-10-16 06:57:30 | 29460000 | 94 | 0 | 424 | 67 | 0 | 491 |
|<PHONE_NUMBER>3 | 2021-10-15 | 2021-10-14 23:50:00 | 2021-10-15 08:20:30 | 30600000 | 94 | 0 | 438 | 72 | 0 | 510 |
|<PHONE_NUMBER>5 | 2021-10-14 | 2021-10-13 23:34:00 | 2021-10-14 09:18:00 | 35040000 | 98 | 0 | 524 | 60 | 0 | 584 |
|<PHONE_NUMBER>8 | 2021-10-13 | 2021-10-12 23:50:00 | 2021-10-13 08:32:30 | 31320000 | 94 | 0 | 461 | 61 | 1 | 522 |
Once you’ve loaded some data, you can visualize it!
library(zoo)
library(scales)
library(ggthemes)
<- sleep %>%
sleep mutate(
date = as_date(date),
start_time = as_datetime(start_time),
end_time = as_datetime(end_time),
sh = ifelse(hour(start_time) < 8, hour(start_time) + 24, hour(start_time)), #create numeric times
sm = minute(start_time),
st = sh + sm/60,
eh = hour(end_time),
em = minute(end_time),
et = eh + em/60,
mst = rollmean(st, 7, fill = NA), #create moving averages
met = rollmean(et, 7, fill = NA),
year = year(start_time)
)
%>%
sleep ggplot(aes(x = date)) +
geom_line(aes(y = et), color = 'coral', alpha = .3, na.rm = T) +
geom_line(aes(y = st), color = 'dodgerblue', alpha = .3, na.rm = T) +
geom_line(aes(y = met), color = 'coral', na.rm = T) +
geom_line(aes(y = mst), color = 'dodgerblue', na.rm = T) +
scale_y_continuous(
breaks = seq(0, 30, 2),
labels = trans_format(
function(x) ifelse(x > 23, x - 24, x),
format = scales::comma_format(suffix = ":00", accuracy = 1)
)+
) labs(x = "Date", y = 'Time') +
theme_fivethirtyeight() +
scale_x_date(date_breaks = '1 month', date_labels = '%b', expand = c(0, 0)) +
facet_grid(. ~ year, space = 'free', scales = 'free_x', switch = 'x') +
theme(panel.spacing.x = unit(0,"line"), strip.placement = "outside")
This bit of code makes a nicely formatted plot of the times you went to sleep and woke up over the past three months. You can also use fitbitr
to expand the time window with a little help from purrr
(the Fitbit API rate limits you, so you can’t request data for infinitely long windows in a single request).
## Pull three months of data
<- map_dfr(
sleep 3:0,
~ sleep_summary(
- months(.x),
end - months(.x) + months(1)
end
) )
After pulling the data, we can use the same code again to visualize it.
<- sleep %>%
sleep mutate(
date = as_date(date),
start_time = as_datetime(start_time),
end_time = as_datetime(end_time),
sh = ifelse(hour(start_time) < 8, hour(start_time) + 24, hour(start_time)), #create numeric times
sm = minute(start_time),
st = sh + sm/60,
eh = hour(end_time),
em = minute(end_time),
et = eh + em/60,
mst = rollmean(st, 7, fill = NA), #create moving averages
met = rollmean(et, 7, fill = NA),
year = year(start_time)
%>%
) distinct()
%>%
sleep ggplot(aes(x = date)) +
geom_line(aes(y = et), color = 'coral', alpha = .3, na.rm = T) +
geom_line(aes(y = st), color = 'dodgerblue', alpha = .3, na.rm = T) +
geom_line(aes(y = met), color = 'coral', na.rm = T) +
geom_line(aes(y = mst), color = 'dodgerblue', na.rm = T) +
scale_y_continuous(
breaks = seq(0, 30, 2),
labels = trans_format(
function(x) ifelse(x > 23, x - 24, x),
format = scales::comma_format(suffix = ":00", accuracy = 1)
)+
) labs(x = "Date", y = 'Time') +
theme_fivethirtyeight() +
scale_x_date(date_breaks = '1 month', date_labels = '%b', expand = c(0, 0)) +
facet_grid(. ~ year, space = 'free', scales = 'free_x', switch = 'x') +
theme(panel.spacing.x = unit(0,"line"), strip.placement = "outside")
Heart Rate and Steps
You can also pull your heart rate data with fitbitr
. Maybe we’re curious about seeing how the number of minutes spent in the “fat burn,” “cardio,” and “peak” zones correlates with the number of steps taken that day. Let’s find out!
<- map_dfr(
hr 3:0,
~ heart_rate_zones(
- months(.x),
end - months(.x) + months(1)
end
)
)
<- map_dfr(
steps 3:0,
~ steps(
- months(.x),
end - months(.x) + months(1)
end
) )
First, we can examine the heart rate data:
head(hr)
| date | zone | min_hr | max_hr | minutes_in_zone | calories_out |
|---|---|---|---|---|---|
| 2021-07-18 | Out of Range | 30 | 113 | 1440 | 2530.16460 |
| 2021-07-18 | Fat Burn | 113 | 141 | 0 | 0.00000 |
| 2021-07-18 | Cardio | 141 | 176 | 0 | 0.00000 |
| 2021-07-18 | Peak | 176 | 220 | 0 | 0.00000 |
| 2021-07-19 | Out of Range | 30 | 113 | 1408 | 2689.45124 |
| 2021-07-19 | Fat Burn | 113 | 141 | 9 | 86.59917 |
and the steps data:
head(steps)
| date | steps |
|---|---|
| 2021-07-18 | 5620 |
| 2021-07-19 | 7537 |
| 2021-07-20 | 5513 |
| 2021-07-21 | 9014 |
| 2021-07-22 | 10883 |
| 2021-07-23 | 2975 |
Now, let’s plot them against each other.
<- hr %>%
df filter(zone != "Out of Range") %>%
group_by(date) %>%
summarize(total_minutes = sum(minutes_in_zone), .groups = "drop") %>%
inner_join(steps, by = "date")
%>%
df mutate(steps = as.numeric(steps)) %>%
filter(log(total_minutes) > 1) %>%
ggplot(
aes(
steps,
total_minutes
)+
) geom_point() +
geom_smooth(method = "lm", se = F) +
scale_x_log10() +
scale_y_log10()
Or maybe it’d be interesting to predict your zone minutes from your steps:
<- df %>%
predictions mutate(steps = as.numeric(steps)) %>%
lm(total_minutes ~ steps, data = .) %>%
::tidy() %>%
broommutate(across(where(is.numeric), round, 5))
head(predictions)
| term | estimate | std.error | statistic | p.value |
|---|---|---|---|---|
| (Intercept) | 23.09761 | 5.77502 | 3.99957 | 0.00011 |
| steps | 0.00252 | 0.00056 | 4.52922 | 0.00001 |
Wrapping Up
And that’s it! Hopefully this helped show how fitbitr
makes pulling your data easy, and gets you curious about the insights you can glean from your own data. The Fitbit API gives you access to so much interesting information about yourself, your habits, your fitness, and so much more, and fitbitr
is just meant to be a door into that gold mine.


Explore
Spending By
Student
School
Programs
Art
Basic School Support
Class Size Reduction
HR - Recruitment
Libraries
Middle School Electives
Oratorical Festival
School Levels
Elementary
Middle
High
Reset
Spending Levels
Reset
2012-13
2013-14
2014-15


Before Change
with _DrawValuesContextBlocker():
if isinstance(self.comp_dists, (list, tuple)):
try:
[comp_dist.random(size=23)
for comp_dist in self.comp_dists]
self._comp_dists_vect = True
except Exception:
// The comp_dists cannot call random with non None size or
After Change
// the broadcast shape would be. This shape will be the dist_shape
// used by generate samples (the shape of a single random sample)
// from the mixture
self._comp_dist_shapes = [to_tuple(d.shape) for d in comp_dists]
// All component distributions must broadcast with each other
try:
self._broadcast_shape = np.broadcast(
*[np.empty(shape) for shape in self._comp_dist_shapes]
).shape
except Exception:
raise TypeError("Supplied comp_dists shapes do not broadcast "


Extend Vaadin.TextFieldElement
to create your own custom element,
then override the checkValidity()
method to validate the user's input
Extend Vaadin.TextFieldElement
to create your own custom element,
then override the checkValidity()
to make your asynchronous validation,
and finally set the invalid
flag appropriately in the callback.


Glasgow Cuisine specializes in Scottish restaurant showcasing techniques rooted in Scotland but influenced by our regionality, carefully sourcing only the best ingredients from across the atlantic and from the UK. Building off the vibrant food scene of Glasgows Neo-bistro movement, Glasgow Cuisine displays an inspiring take on Scottish cuisine in a relaxing environment. This enables our genuine approach to food & hospitality to shine.
Hassan Khaliq is the Owner of this restaurant and only recently took over the ownership of this restaurant from his late grandfather who ran this restaurant since 1965. Ingrediants are the secret to the success of Glasgow Cuisine and the ingrediants have been inherited from his ancestors who were well known cooks of their time. Glasgow Cuisine started off as a Scottish Cuisine but with time imported recipes from around the world to suit the needs of customers who come to Glasgow Cuisine both local and from around the world from as far as Australia, France and the US.
Recently Glasgow Cuisines has won many awards including 5 star Michelin Awards 7 times. Also the restaurant has won many National awards including the Good Food awards, Restaurant and Bar design awards. The Tiffin Cup. The Food Network Awards. The Restaurant's Readers' Choice Award 5 times since 2010. Glasgow Cusine is also the most popular restaurant in Scotland with people coming from Edinburgh, Aberdeen, Dundee to enjoy the unique dining experience and unbeatable food taste. Glasgow Cuisine has further plans to expand globally to meet the demand of the customers and to reach the level that can match the quality of the restaurant.


As rare as they might be, sometimes a system crash can corrupt data for Wurm Assistant. Until now, it meant losing a lot of setup and being moderately angry for a while.
A new backup/restore feature will now help you restore most of your stuff after such an unfortunate incident. You can find it under Options menu -> Manage Wurm Assistant data backups.
Wurm Assistant will by default make one backup per day and keep them for up to 7 days. You can also schedule an additional backup at any time.
-- Aldur


Release and delivery
Project Information
| Project: |
NS-ACEF
|
| Last update: |
January 16, 2008 |
| Related Documents: |
|
Release 1
It is planned for December 2007.
It contains the following functionalities :
Release 2
It is planned for June 2008.
It includes the functionalities of the Release 1 and the following :
- F-1.002 Sub-circuit management.
- F-1.003 Transient analysis.
- F-2.003 Comparator.
- F-3.003 DC analysis.
- F-2.007 Forecast active set: use a local piecewise linear approximation to solve a smaller M.L.C.P.
It includes also a study on the following points :
- F-2.006 Multigrid algorithm: use a more simple piecewise linear approximation to accelerate the M.L.C.P. resolution.
- F-2.008 Non linear circuit: R,L or C non constant.
Release 3
It is planned for Decemder 2008.
It includes the functionalities of the Release 2 and the following :
It includes also a study on the following points :
- F-6.000 Specific electrical heuristics.


Chinese inflation hits highest rate since 2012
BEIJING, Nov 9 — China’s consumer prices grew at their fastest rate in almost eight years in October driven by a spike in pork prices caused by an outbreak of African swine fever, according to official figures released today.
The consumer price index (CPI) — a key gauge of retail inflation — hit 3.8 per cent last month, the National Bureau of Statistics (NBS) said, up from 3.0 per cent in September and the highest annual rate since January 2012.
Analysts in a Bloomberg News poll had forecast a rate of 3.4 per cent.
Prices of pork, the staple meat in China, have more than doubled in the past year, according to the NBS.
More than a million pigs have been culled due to the widespread outbreaks since African swine fever appeared in August 2018, according to official statistics, but that is widely considered to be an underestimate.
This, in turn, has also pushed up prices of other meats including beef, chicken, duck and eggs as consumers switch to other protein sources.
The spike has led the government to intervene to stabilise prices and guarantee supplies, according to the official Xinhua news agency.
“Chinese leaders are terrified of inflation,” Beijing-based research firm Trivium China said in a note, describing price rises as “one of the big drivers behind the 1989 Tiananmen protests”.
The inflation rate that year stood at 18.25 per cent.
Producer prices, meanwhile, saw their steepest decline in more than three years, sliding for a sixth straight month, hit by the trade war with the United States.
The producer price index (PPI) — an important barometer of the industrial sector that measures the cost of goods at the factory gate — contracted 1.6 per cent in October from the previous year, the NBS said.
That came after prices shrank 1.2 per cent in September, and represented the sharpest decline since August 2016.
Analysts in a Bloomberg poll had forecast producer prices would shrink 1.5 per cent. — AFP


# # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # from typing import Callable, Generic, Optional, Type, Union, TYPE_CHECKING import warnings from pyspark.pandas._typing import T if TYPE_CHECKING: from pyspark.pandas.frame import DataFrame from pyspark.pandas.indexes import Index from pyspark.pandas.series import Series class CachedAccessor(Generic[T]): """ Custom property-like object. A descriptor for caching accessors: Parameters ---------- name : str Namespace that accessor's methods, properties, etc will be accessed under, e.g. "foo" for a dataframe accessor yields the accessor ``df.foo`` accessor: cls Class with the extension methods. Notes ----- For accessor, the class's __init__ method assumes that you are registering an accessor for one of ``Series``, ``DataFrame``, or ``Index``. This object is not meant to be instantiated directly. Instead, use register_dataframe_accessor, register_series_accessor, or register_index_accessor. The pandas-on-Spark accessor is modified based on pandas.core.accessor. """ def __init__(self, name: str, accessor: Type[T]) -> None: self._name = name self._accessor = accessor def __get__( self, obj: Optional[Union["DataFrame", "Series", "Index"]], cls: Type[T] ) -> Union[T, Type[T]]: if obj is None: return self._accessor accessor_obj = self._accessor(obj) # type: ignore[call-arg] object.__setattr__(obj, self._name, accessor_obj) return accessor_obj def _register_accessor( name: str, cls: Union[Type["DataFrame"], Type["Series"], Type["Index"]] ) -> Callable[[Type[T]], Type[T]]: """ Register a custom accessor on {klass} objects. Parameters ---------- name : str Name under which the accessor should be registered. A warning is issued if this name conflicts with a preexisting attribute. Returns ------- callable A class decorator. See Also -------- register_dataframe_accessor: Register a custom accessor on DataFrame objects register_series_accessor: Register a custom accessor on Series objects register_index_accessor: Register a custom accessor on Index objects Notes ----- When accessed, your accessor will be initialiazed with the pandas-on-Spark object the user is interacting with. The code signature must be: .. code-block:: python def __init__(self, pandas_on_spark_obj): # constructor logic ... In the pandas API, if data passed to your accessor has an incorrect dtype, it's recommended to raise an ``AttributeError`` for consistency purposes. In pandas-on-Spark, ``ValueError`` is more frequently used to annotate when a value's datatype is unexpected for a given method/function. Ultimately, you can structure this however you like, but pandas-on-Spark would likely do something like this: >>> ps.Series(['a', 'b']).dt ... Traceback (most recent call last): ... ValueError: Cannot call DatetimeMethods on type StringType() Note: This function is not meant to be used directly - instead, use register_dataframe_accessor, register_series_accessor, or register_index_accessor. """ def decorator(accessor: Type[T]) -> Type[T]: if hasattr(cls, name): msg = ( "registration of accessor {0} under name '{1}' for type {2} is overriding " "a preexisting attribute with the same name.".format(accessor, name, cls.__name__) ) warnings.warn( msg, UserWarning, stacklevel=2, ) setattr(cls, name, CachedAccessor(name, accessor)) return accessor return decorator [docs]def register_dataframe_accessor(name: str) -> Callable[[Type[T]], Type[T]]: """ Register a custom accessor with a DataFrame Parameters ---------- name : str name used when calling the accessor after its registered Returns ------- callable A class decorator. See Also -------- register_series_accessor: Register a custom accessor on Series objects register_index_accessor: Register a custom accessor on Index objects Notes ----- When accessed, your accessor will be initialiazed with the pandas-on-Spark object the user is interacting with. The accessor's init method should always ingest the object being accessed. See the examples for the init signature. In the pandas API, if data passed to your accessor has an incorrect dtype, it's recommended to raise an ``AttributeError`` for consistency purposes. In pandas-on-Spark, ``ValueError`` is more frequently used to annotate when a value's datatype is unexpected for a given method/function. Ultimately, you can structure this however you like, but pandas-on-Spark would likely do something like this: >>> ps.Series(['a', 'b']).dt ... Traceback (most recent call last): ... ValueError: Cannot call DatetimeMethods on type StringType() Examples -------- In your library code:: from pyspark.pandas.extensions import register_dataframe_accessor @register_dataframe_accessor("geo") class GeoAccessor: def __init__(self, pandas_on_spark_obj): self._obj = pandas_on_spark_obj # other constructor logic @property def center(self): # return the geographic center point of this DataFrame lat = self._obj.latitude lon = self._obj.longitude return (float(lon.mean()), float(lat.mean())) def plot(self): # plot this array's data on a map pass Then, in an ipython session:: >>> ## Import if the accessor is in the other file. >>> # from my_ext_lib import GeoAccessor >>> psdf = ps.DataFrame({"longitude": np.linspace(0,10), ... "latitude": np.linspace(0, 20)}) >>> psdf.geo.center # doctest: +SKIP (5.0, 10.0) >>> psdf.geo.plot() # doctest: +SKIP """ from pyspark.pandas import DataFrame return _register_accessor(name, DataFrame) [docs]def register_series_accessor(name: str) -> Callable[[Type[T]], Type[T]]: """ Register a custom accessor with a Series object Parameters ---------- name : str name used when calling the accessor after its registered Returns ------- callable A class decorator. See Also -------- register_dataframe_accessor: Register a custom accessor on DataFrame objects register_index_accessor: Register a custom accessor on Index objects Notes ----- When accessed, your accessor will be initialiazed with the pandas-on-Spark object the user is interacting with. The code signature must be:: def __init__(self, pandas_on_spark_obj): # constructor logic ... In the pandas API, if data passed to your accessor has an incorrect dtype, it's recommended to raise an ``AttributeError`` for consistency purposes. In pandas-on-Spark, ``ValueError`` is more frequently used to annotate when a value's datatype is unexpected for a given method/function. Ultimately, you can structure this however you like, but pandas-on-Spark would likely do something like this: >>> ps.Series(['a', 'b']).dt ... Traceback (most recent call last): ... ValueError: Cannot call DatetimeMethods on type StringType() Examples -------- In your library code:: from pyspark.pandas.extensions import register_series_accessor @register_series_accessor("geo") class GeoAccessor: def __init__(self, pandas_on_spark_obj): self._obj = pandas_on_spark_obj @property def is_valid(self): # boolean check to see if series contains valid geometry return True Then, in an ipython session:: >>> ## Import if the accessor is in the other file. >>> # from my_ext_lib import GeoAccessor >>> psdf = ps.DataFrame({"longitude": np.linspace(0,10), ... "latitude": np.linspace(0, 20)}) >>> psdf.longitude.geo.is_valid # doctest: +SKIP True """ from pyspark.pandas import Series return _register_accessor(name, Series) [docs]def register_index_accessor(name: str) -> Callable[[Type[T]], Type[T]]: """ Register a custom accessor with an Index Parameters ---------- name : str name used when calling the accessor after its registered Returns ------- callable A class decorator. See Also -------- register_dataframe_accessor: Register a custom accessor on DataFrame objects register_series_accessor: Register a custom accessor on Series objects Notes ----- When accessed, your accessor will be initialiazed with the pandas-on-Spark object the user is interacting with. The code signature must be:: def __init__(self, pandas_on_spark_obj): # constructor logic ... In the pandas API, if data passed to your accessor has an incorrect dtype, it's recommended to raise an ``AttributeError`` for consistency purposes. In pandas-on-Spark, ``ValueError`` is more frequently used to annotate when a value's datatype is unexpected for a given method/function. Ultimately, you can structure this however you like, but pandas-on-Spark would likely do something like this: >>> ps.Series(['a', 'b']).dt ... Traceback (most recent call last): ... ValueError: Cannot call DatetimeMethods on type StringType() Examples -------- In your library code:: from pyspark.pandas.extensions import register_index_accessor @register_index_accessor("foo") class CustomAccessor: def __init__(self, pandas_on_spark_obj): self._obj = pandas_on_spark_obj self.item = "baz" @property def bar(self): # return item value return self.item Then, in an ipython session:: >>> ## Import if the accessor is in the other file. >>> # from my_ext_lib import CustomAccessor >>> psdf = ps.DataFrame({"longitude": np.linspace(0,10), ... "latitude": np.linspace(0, 20)}) >>> psdf.index.foo.bar # doctest: +SKIP 'baz' """ from pyspark.pandas import Index return _register_accessor(name, Index) def _test() -> None: import os import doctest import sys import numpy from pyspark.sql import SparkSession import pyspark.pandas.extensions os.chdir(os.environ["SPARK_HOME"]) globs = pyspark.pandas.extensions.__dict__.copy() globs["np"] = numpy globs["ps"] = pyspark.pandas spark = ( SparkSession.builder.master("local[4]") .appName("pyspark.pandas.extensions tests") .getOrCreate() ) (failure_count, test_count) = doctest.testmod( pyspark.pandas.extensions, globs=globs, optionflags=doctest.ELLIPSIS | doctest.NORMALIZE_WHITESPACE, ) spark.stop() if failure_count: sys.exit(-1) if __name__ == "__main__": _test()


An NED-UET, Safora Valley based startup, which has partnered with countless
MNC like Google, Facebook and NASA.
We offer everything, from making a website to cleaing your home, to make AI machine learing models to "faroot le kr aon apky liye", when I say everything I mean IT.
Our team of experts make the best full stack websites with affordable prices and gorgeous aesthetics.
Our team of experts can make cross platform mobile applications that are easy to use with a UI that is just too good yr, plus we do it all in like 10 rupees, so like come to papa!
Our team of experts can provide seurity to your websites, SQL injections beware saadat is here to put an end to all those things. Plus if you have pictures of Faroot in your phone then we can handle it okay? just chillax
Our team is going to go and watch avengers endgame together, maybe join us, we arent just some bitches who like to work all the time we're also human beings and like to straighten our backs every once in a while, I mean come on ffs.


| quarter {lubridate} | R Documentation |
Quarters divide the year into fourths. Semesters divide the year into halfs.
quarter(x, with_year = FALSE, fiscal_start = 1) semester(x, with_year = FALSE)
x |
a date-time object of class POSIXct, POSIXlt, Date, chron, yearmon, yearqtr, zoo, zooreg, timeDate, xts, its, ti, jul, timeSeries, fts or anything else that can be converted with as.POSIXlt |
with_year |
logical indicating whether or not to include the quarter's year. |
fiscal_start |
numeric indicating the starting month of a fiscal year |
numeric
x <- ymd(c("2012-03-26", "2012-05-04", "2012-09-23", "2012-12-31")) quarter(x) quarter(x, with_year = TRUE) quarter(x, with_year = TRUE, fiscal_start = 11) semester(x) semester(x, with_year = TRUE)


Significant expertise in standards platforms, primarily Microsoft .NET, variety of both Server & Client and the Open Source platforms.
Current with all the responsive design best practices, and constantly reading and learning about best practices to implement the kind of design that make site responsive and mobile.
With web vulnerabilities progressing by the day, a solid and secure app thrives to engage defense features starting from code design up to SSL and hosting.
Involved in teams, as well as an individuals on various projects, from db architecture, to front-end, facing challenges that follow scratch-to-launch process.
With the need to stand behind our work and provide our clients the comfort of reliable and responsible parter.
Our team expanded, so did our client base, followed by the trust we put in each other.
Senior Software Engineer
Senior Software Engineer
Senior Software Engineer
Project Manager


Modified from GDI Seattle Ruby on Rails track.
Girl Develop It is here to provide affordable and accessible programs to learn software through mentorship and hands-on instruction.
Some "rules"
# Java
for(int i = 0; i < 5; i++)
# Ruby
5.times do
For Ruby, we'll use REPL.IT to run Ruby code.
For Rails, we'll use CLOUD 9.
We'll leave 30 minutes at the end of today to install Ruby and Rails, if you want to develop "locally" (i.e. saving and running files in your computer).
Want to 'deploy' your Rails site on the actual web? Sign up for HEROKU.
I will show you how to upload your Rails site on the web for those of you who are interested, but this is by no means required.
Okay... I'm exaggerating!
Select "Ruby"
puts "Hello World!"
1 + 1
Will evaluate to 2!
You can subtract (-), multiply (*), "divide" (%)
Just puting "Hello World!" every time is boring. We can store this in a variable!
Programmers are lazy. We like to type very little!
greeting = "Hello World!"
Variables can store anything!
Can combine them with "puts"!
In Repl.It...
Duration: 5 minutes
gets.chomp
This grabs the info the user types in...
Can save this to a variable to get it again
response = gets.chomp
puts "What is your name?"
name = gets.chomp
puts "Where are you from?"
location = gets.chomp
puts "What is your favorite food?"
food = gets.chomp
puts "Got it, your name is " + name
puts "You are from " + location
puts "And your favorite food is " + food
These are all built-in with Ruby!
Make methods do things!
They take something in and spit something out
This method takes in a name, and greets the name.
def greeting(name)
name = name.capitalize
puts "Hello " + name
end
10.times do
puts "HELLO " + name
end
my_fancy_array = [1, "two", "3", "A"]
my_fancy_array = []
But it's empty!
my_fancy_array << "stuff"
my_fancy_array.push("stuff")
my_fancy_array = [1, "two", "3", "A"]
There are different ways to take stuff out
my_fancy_array.pop
This removes the last thing in the array
It also "returns" that value
my_fancy_array[0]
my_fancy_array[1]
my_fancy_array[2]
You can get the value you want depending on where it is in the array
BEWARE! Arrays start at "0"
Hashes allow you to store information in "key value" pairs.
Keys and Values go together. It helps you "link" data.
Think of it like an index, almost.
menu = {:drink => "cola", :food => burger}
This helps keep info organized.
Everytime you want to look up what drink you have, "cola" will be returned
What are other things we could store in hashes?
menu = {
:drinks => ["OJ", "Coke", "Coffee"],
:food => ["Burger", "Pizza", "PB&J"]
}
Getting info out
menu[:drinks]
menu[:food]
Returns all drinks and food. To just get one, you have to use the item's position in the array:
menu[:drinks][0]
menu[:food][2]
So tedious!
You can use .each do to loop through items in an array!
menu[:drinks].each do |drink|
puts drink
end
This outputs all of the drinks at once!
Let's "model" a cat.
A cat has...
class Cat
attr :name, :breed, :age
def initialize(name, breed, age)
@name = name
@breed = breed
@age = age
end
def meows
puts "*meowwwww*"
end
end
What if you wanted to create a class "Kitty", but you knew it would be pretty similar to "Cat"?
Is there a way to "copy" a class?
Why, yes! (Sort of.) You can use sub-classes.
class Cat
#some stuff
end
class Kitty < Cat
#some more stuff
end
You can use the < to symbolize Kitty is a sub-class from Cat.
The stuff available for Cat is available for Kitty.
The stuff available for Kitty is NOT available for Cat.


from __future__ import print_function
from __future__ import absolute_import
from __future__ import division
from numpy import array
from numpy import asarray
from numpy import argmax
from numpy import argmin
from numpy import amax
from numpy import amin
from numpy import dot
from numpy import ptp
from numpy import sum
from scipy.spatial import ConvexHull
# from scipy.spatial import QhullError
from compas.geometry import local_axes
from compas.geometry import world_to_local_coords_numpy
from compas.geometry import local_to_world_coords_numpy
__all__ = [
'oriented_bounding_box_numpy',
'oriented_bounding_box_xy_numpy',
]
# make alternative implementation using PCA
# compare results
[docs]def oriented_bounding_box_numpy(points):
r"""Compute the oriented minimum bounding box of a set of points in 3D space.
Parameters
----------
points : array-like
XYZ coordinates of the points.
Returns
-------
array
XYZ coordinates of 8 points defining a box.
Raises
------
QhullError
If the data is essentially 2D.
Notes
-----
The *oriented (minimum) bounding box* (OBB) of a given set of points
is computed using the following procedure:
1. Compute the convex hull of the points.
2. For each of the faces on the hull:
1. Compute face frame.
2. Compute coordinates of other points in face frame.
3. Find "peak-to-peak" (PTP) values of point coordinates along local axes.
4. Compute volume of box formed with PTP values.
3. Select the box with the smallest volume.
Examples
--------
Generate a random set of points with
:math:`x \in [0, 10]`, :math:`y \in [0, 1]` and :math:`z \in [0, 3]`.
Add the corners of the box such that we now the volume is supposed to be :math:`30.0`.
>>> points = numpy.random.rand(10000, 3)
>>> bottom = numpy.array([[0.0, 0.0, 0.0], [1.0, 0.0, 0.0], [0.0, 1.0, 0.0], [1.0, 1.0, 0.0]])
>>> top = numpy.array([[0.0, 0.0, 1.0], [1.0, 0.0, 1.0], [0.0, 1.0, 1.0], [1.0, 1.0, 1.0]])
>>> points = numpy.concatenate((points, bottom, top))
>>> points[:, 0] *= 10
>>> points[:, 2] *= 3
Rotate the points around an arbitrary axis by an arbitrary angle.
>>> from compas.geometry import Rotation
>>> from compas.geometry import transform_points_numpy
>>> R = Rotation.from_axis_and_angle([1.0, 1.0, 0.0], 0.3 * 3.14159)
>>> points = transform_points_numpy(points, R)
Compute the volume of the oriented bounding box.
>>> bbox = oriented_bounding_box_numpy(points)
>>> a = length_vector(subtract_vectors(bbox[1], bbox[0]))
>>> b = length_vector(subtract_vectors(bbox[3], bbox[0]))
>>> c = length_vector(subtract_vectors(bbox[4], bbox[0]))
>>> close(a * b * c, 30.)
True
"""
points = asarray(points)
n, dim = points.shape
assert 2 < dim, "The point coordinates should be at least 3D: %i" % dim
points = points[:, :3]
# try:
# hull = ConvexHull(points)
# except Exception as e:
# if 'QH6154' in str(e):
# hull = ConvexHull(points, qhull_options='Qb2:0B2:0')
# else:
# raise e
hull = ConvexHull(points)
volume = None
bbox = []
# this can be vectorised!
for simplex in hull.simplices:
a, b, c = points[simplex]
uvw = local_axes(a, b, c)
xyz = points[hull.vertices]
frame = [a, uvw[0], uvw[1]]
rst = world_to_local_coords_numpy(frame, xyz)
dr, ds, dt = ptp(rst, axis=0)
v = dr * ds * dt
if volume is None or v < volume:
rmin, smin, tmin = amin(rst, axis=0)
rmax, smax, tmax = amax(rst, axis=0)
bbox = [
[rmin, smin, tmin],
[rmax, smin, tmin],
[rmax, smax, tmin],
[rmin, smax, tmin],
[rmin, smin, tmax],
[rmax, smin, tmax],
[rmax, smax, tmax],
[rmin, smax, tmax],
]
bbox = local_to_world_coords_numpy(frame, bbox)
volume = v
return bbox
[docs]def oriented_bounding_box_xy_numpy(points):
"""Compute the oriented minimum bounding box of set of points in the XY plane.
Parameters
----------
points : list
XY(Z) coordinates of the points.
Returns
-------
list
XYZ coordinates of 8 points defining a box.
Notes
-----
The *oriented (minimum) bounding box* (OBB) is computed using the following
procedure:
1. Compute the convex hull of the points.
2. For each of the edges on the hull:
1. Compute the s-axis as the unit vector in the direction of the edge
2. Compute the othorgonal t-axis.
3. Use the start point of the edge as origin.
4. Compute the spread of the points along the s-axis. (dot product of the point vecor in local coordinates and the s-axis)
5. Compute the spread along the t-axis.
6. Determine the side of s on which the points are.
7. Compute and store the corners of the bbox and its area.
3. Select the box with the smallest area.
Examples
--------
>>>
"""
points = asarray(points)
n, dim = points.shape
assert 1 < dim, "The point coordinates should be at least 2D: %i" % dim
points = points[:, :2]
hull = ConvexHull(points)
xy_hull = points[hull.vertices].reshape((-1, 2))
boxes = []
m = sum(xy_hull, axis=0) / n
for simplex in hull.simplices:
p0 = points[simplex[0]]
p1 = points[simplex[1]]
# s direction
s = p1 - p0
sl = sum(s ** 2) ** 0.5
su = s / sl
vn = xy_hull - p0
sc = (sum(vn * s, axis=1) / sl).reshape((-1, 1))
scmax = argmax(sc)
scmin = argmin(sc)
# box corners
b0 = p0 + sc[scmin] * su
b1 = p0 + sc[scmax] * su
# t direction
t = array([-s[1], s[0]])
tl = sum(t ** 2) ** 0.5
tu = t / tl
vn = xy_hull - p0
tc = (sum(vn * t, axis=1) / tl).reshape((-1, 1))
tcmax = argmax(tc)
tcmin = argmin(tc)
# area
w = sc[scmax] - sc[scmin]
h = tc[tcmax] - tc[tcmin]
a = w * h
# box corners
if dot(t, m - p0) < 0:
b3 = b0 - h * tu
b2 = b1 - h * tu
else:
b3 = b0 + h * tu
b2 = b1 + h * tu
# box
boxes.append([[b0, b1, b2, b3], a[0]])
# return the box with the smallest area
return [point.tolist() for point in min(boxes, key=lambda b: b[1])[0]]
# ==============================================================================
# Main
# ==============================================================================
if __name__ == "__main__":
import doctest
import numpy # noqa: F401
import math # noqa: F401
from compas.geometry import bounding_box # noqa: F401
from compas.geometry import subtract_vectors # noqa: F401
from compas.geometry import length_vector # noqa: F401
from compas.geometry import Rotation # noqa: F401
from compas.geometry import transform_points_numpy # noqa: F401
from compas.geometry import allclose # noqa: F401
from compas.geometry import close # noqa: F401
doctest.testmod(globs=globals())


@* * Copyright 2023 HM Revenue & Customs * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *@ @(params: Map[String, Any]) @uk.gov.hmrc.hmrcemailrenderer.templates.helpers.html.template_main(params, "Changes made to application details") {
@{params("requesterName")} has changed the Developer Hub application details for @{params("applicationName")}.
The @{params("fieldName")} has been changed from:
@{params("previousValue")}
to
@{params("newValue")}
If you did not expect this change, sign in to the Developer Hub and check the application @{params("fieldName")}.
You can protect your account by changing your password and setting up 2-step verification.
Do not respond to this email. Replies to this email address are not monitored.
From HMRC Developer Hub
}


My Dog Skip (2000)
Jay Russell's MY DOG SKIP is a charming small film for family members of all ages, but it is no HUCKLEBERRY FINN.
We see images of Mark Twain's masterwork in several segments of SKIP. It appears behind the opening credits, in shots of period objects - furnishings from kids' rooms of the 1920's and '30's. Then the protagonist Willie Morris (Frankie Muniz) receives a hardback copy from his grandfather. Mostly the filmmaker crafts images that are supposed to be from a lost age in America - shots you might find in a catalog from a Norman Rockwell show. In one sequence, Willie and his Becky Thatcher-like friend Rivers Applewhite (Caitlin Wachs) tramp along a path, and later they paddle down a sleepy creek in a canoe. It doesn't matter that the film is set during the Second World War, almost 60 years after HUCK FINN was published. Russell is out to evoke a mood of nostalgia, an emotional tone of innocence mixed with virtually any genuine American ethic you can think of: hard work, independence, freedom, and so on.
The only problem is, these elements combine to create a batch of clichés, and they end up taking undue attention from the plot elements that are trying their hardest to hang together as a story. Even the set decoration is overdone, from the vintage baseball and football gear to the product advertisements cluttering the main street or painted on brick walls. The actors playing the parents of Willie's hero, next-door neighbor Dink Jenkins (Luke Wilson), are shown pausing (a real Rockwell moment) after they hang a small service banner from the porch ceiling. (Weren't these star flags hung in windows, by the way?) It may have been more appropriate to suggest a hint of the '40's, instead of flavoring the film so strongly.
The coming-of-age story is good enough. Loner Willie's only guests at his birthday party are elderly relatives and his own parents. Against her husband's wishes, Mrs. Morris (Diane Lane) gives Willie a dog, an "only dog" for an only child. What follows is a series of episodes typical of growing up stories. We watch Willie in various stages of happiness and sadness in the town of Yazoo, Mississippi. At times both Willie and his pooch fall into jeopardy - scenes mainly involving a couple of bootleggers hiding their hooch in a cemetery. These scenes are also reminiscent of Twain: Tom Sawyer this time. And the head bootlegger Junior might be compared to either Injun Joe or Huck's Pap.
The boy-and-his-dog story is engaging. Frankie Muniz (from the television series "Malcolm in the Middle") is a pleasant discovery, his face expressive and boyish enough to play a few years younger than his actual age.
His dog - the title character - is played by the Jack Russell terrier Moose, who also portrays the rascally Eddie on the t.v. show "Frasier." Excepting the brief shots in which you can see Moose staring off-camera at his trainer, this dog is wonderfully photogenic and clever. And he seems to have a true bond with Willie. He's the reason the film tips the scales more toward success than failure.
Willie has three enemies that become friends, and unfortunately these boys do not act their roles as comfortably as many other child actors would. Perhaps this is also a result of stereotypical characterization: the dim follower, the dirty towheaded sidekick, the suspender-wearing, loutish bully. None of these young actors can match Muniz's air of ease.
As Willie's father, Kevin Bacon tries valiantly to be a gruff but loving presence. His character lost his lower leg in combat in the Spanish Civil War, and now rides out his work life as an accountant, hiding his injury behind a desk. A small snag is that Bacon is not as old as the character he's playing, and he does not display a convincing Mississippi accent. (Most characters don't, if you want the truth, with the possible exception of Rivers.)
It's admirable that one of the film's agendas is to promote tolerance. Willie talks briefly with an African-American boy, who brags about a black athlete named Waldo Grace in the same way Willie brags about Dink Jenkins. We see blacks occupying the balcony seats in the town movie palace, and black families sitting around their part of town; at the end we even spot Willie and his friends watching Grace pitch and hit the horsehide at the Negro ball ground.
MY DOG SKIP is a mixed bag of pleasures and conventions. I would recommend it for both children and adults, though adults may find a few of its minutes taken up by sentimentality. It's worthwhile for its PG rating as well: my 11 year-old daughter liked the scenes featuring Willie and Rivers (or should I say Huck and Becky, or even Forrest and Jenny?)
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


29th Jun 2018:
Iceland's Oscar Candidate
Icelandic cinema does not make many films a year, but its titles are growing in prominence at film festivals, oftentimes garnering awards and honours. One such already acknowledged work will be shown at Brooklyn OFF. Woman at War is a comedy about a 50-year-old choir mistress: by day she is a pillar of the local Icelandic community, and by night an environmental terrorist at a secret war against the local aluminium industry. However, the fearless warrior for the preservation of Iceland’s pristine virgin landscape will have to reshuffle her priorities when her adoption request is granted.
The film premiered at the Critics’ Week in Cannes, winning a best script award. After festivals in Haifa, Hamburg and Melbourne, this successful action comedy became Iceland’s Oscar candidate and one of the three finalists for LUX Prize, presented by the European Parliament for the promotion of European cinema to titles focusing on burning political and social issues in Europe.
This film is another quirky comeback by director Benedikt Erlingsson, one of the most acknowledged Icelandic actors and stage directors. He starred in the comedy The Boss of It All (2006) by Lars von Trier, and Rúnar Rúnarsson’s Volcano (2011). His debut Of Horses and Men also represented Iceland in the Oscar run, garnering over 20 international awards. Erlingsson won the best director award in Tokio and the best debut director in San Sebastian.
His debut, literally translated as ‘the horse inside us’, is a visually stunning rural romance about the human in horses and the horselike in humans. The captivating beauty of Icelandic landscape serves as a backdrop of human weaknesses from an unexpected animalistic point of view and with a healthy dose of dark humour. Erlingsson’s second film Woman at War also allures with a masterfully told tale of man and nature, this time with more emotional depth and stronger political views.


Oranda Goldfish
Average Size:7.0 inches (17.78 cm)
Diet and Feeding
Since they are omnivorous, the Oranda Goldfish will generally eat all kinds of fresh, frozen, and flake foods. To keep a good balance give them a high quality flake food everyday. To care for your Oranda Goldfish, feed brine shrimp (either live or frozen), blood worms, Daphnia, or tubifex worms as a treat. It is usually better to feed freeze-dried foods as opposed to live foods to avoid parasites and bacterial infections that could be present in live foods. Due to their fleshy head growth they can have poor vision and a harder time seeing their food, so need extra time to feed.
Habitat
Setting up a goldfish aquarium in a manner that will keep your fish happy and healthy is the first step to success. The shape and size of the aquarium is important and depends upon the number of goldfish you are going to keep. These fish need a lot of oxygen and produce a lot of waste. Good filtration, especially biological filtration, is very helpful in maintaining the water quality of the aquarium. A filtration system will remove much of the detritus, excess foods, and waste, which keeps the tank clean and maintains the general health of the goldfish
Returns and Exchange Policy
We want you to love what you have purchased from us and have an enjoyable shopping experience.
Should there be any dissatisfaction with your purchase, kindly let us know through email<EMAIL_ADDRESS>within 7 days of receiving your order and we will assist you accordingly.
Return of Faulty Good(s) not pertaining to animals
If the item that you have bought is faulty, wrongly described or different from what is shown on our website, your purchase(s) will be considered for an exchange or refund with proof of purchase.
For exchange of faulty product(s), there is a need to provide the tax invoice and its orginal packaging should be in place before we proceed with the exchange. Our customer service personnel will evaluate the product(s) before allowing an exchange. Kindly allow some time for an exchange process to be completed.
If you request for a refund, the purchase price of the product(s) bought will be refunded to you using the same payment method. The refund amount do not include shipping and delivery charges incurred. You will be responsible for any shipping or delivery charges and currency conversion rates, if any, with returning the product(s) back to us. After we receive the product and confirm that it meets all refund conditions, we will then proceed with the refund process.
Kindly note that all refund requests will not be entertained if your purchase(s) have been shipped out. Do email us about your refund request(s) within 24 hours after receiving your order confirmation email.
We take pride in ensuring ALL product(s) are in excellent condition before shipping it out to our customers, thus seek your cooperation and understanding, shall an exchange process take longer than you expect.
Return and Exchange Instructions
All requests for returns and exchanges must be raised within 7 days from the date that you receive your item(s).
Kindly email us indicating your Order ID and providing us with accurate Contact Information. We will revert to your requests(s) within 3 working days.
For online orders, you may have the option to exchange your good(s) at our Fish-Tastic retail store at Waterway Point. This shall be determined after we receive your Returns and Exchange request via email. Kindly indicate in your email should you have any preference of collection methods.
For refund requests, you will need to attach the tax invoice, delivery slip and identification details matching the details on the package(s) sent to you. Further instructions may be provided, which may require your attention, on a case by case basis.
Other Terms and Conditions
All animals sold are non-returnable and non-refundable.
All original shipping and/or handling charges are non-refundable.
All returned item(s) must be in its original brand new condition and original packaging, with the original tags and tickets. Item(s) that show signs of worn are not eligible for exchange or return. Fish-Tastic reserves all rights to inspect the condition of the item(s) prior to any exchange or return. Should there be any dispute, Fish-Tastic's decision shall be final.
All goods are guaranteed to be free from defects in materials and workmanship. If you experience any problem with the item(s), please contact us at<EMAIL_ADDRESS>within 7 days from the invoice date for further assistance. We will investigate the case and contact you accordingly. This guarantee does not cover damage resulting from unique, accidental, or random damage that is the result of use by Buyer, or wear and tear. It also does not cover for products used in a manner or for a purpose not reasonably contemplated by Fish-Tastic, or previously modified in a manner not authorised by Fish-Tastic.


{% extends "layout_unbranded2.html" %} {% block page_title %} GOV.UK prototype kit {% endblock %} {% block content %} Close X Give us your feedback to improve this service Send feedback Feedback sent Thanks for your comments {% endblock %}
Thanks for your comments


- rate(ValuationParams, DiscountCurve, DiscountCurve, double, boolean) - Method in class org.drip.analytics.definition.FXForwardCurve
-
Calculate the rate implied by the discount curve inputs to a specified date
- rate(ValuationParams, DiscountCurve, DiscountCurve, double, boolean) - Method in class org.drip.state.curve.DerivedFXForward
-
- RateIndexFromCcyAndCouponFreq(String, int) - Static method in class org.drip.analytics.support.AnalyticsHelper
-
Calculate the rate index from currency and coupon frequency
- RatesAnalyticsAPI - Class in org.drip.sample.rates
-
RatesAnalyticsAPI contains a demo of the Rates Analytics API Usage.
- RatesAnalyticsAPI() - Constructor for class org.drip.sample.rates.RatesAnalyticsAPI
-
- RatesBasket - Class in org.drip.product.rates
-
RatesBasket contains the implementation of the Basket of Rates Component legs.
- RatesBasket(String, FixedStream[], FloatingStream[]) - Constructor for class org.drip.product.rates.RatesBasket
-
RatesBasket constructor
- RatesBasket(byte[]) - Constructor for class org.drip.product.rates.RatesBasket
-
RatesBasket de-serialization from input byte array
- RatesClosesLoader - Class in org.drip.feed.loader
-
EMRatesClosesLoader Loads the closing marks for a given EM Rates Curve.
- RatesClosesLoader() - Constructor for class org.drip.feed.loader.RatesClosesLoader
-
- RatesComponent - Class in org.drip.product.definition
-
RatesComponent is the abstract class that extends CalibratableComponent on top of which all rates
components are implemented.
- RatesComponent() - Constructor for class org.drip.product.definition.RatesComponent
-
- RatesCurveAPISample() - Static method in class org.drip.sample.rates.RatesLiveAndEODAPI
-
Sample API demonstrating the creation/usage of rates curve
USE WITH CARE: This sample ignores errors and does not handle exceptions.
- RatesCurveScenarioContainer - Class in org.drip.param.market
-
RatesCurveScenarioContainer implements the RatesScenarioCurve abstract class that exposes the interface
the constructs scenario discount curves.
- RatesCurveScenarioContainer(RatesCurveScenarioGenerator) - Constructor for class org.drip.param.market.RatesCurveScenarioContainer
-
Constructs an IRCurveScenarioContainer instance from the corresponding IRCurveScenarioGenerator
- RatesCurveScenarioGenerator - Class in org.drip.state.estimator
-
RatesCurveScenarioGenerator uses the interest rate calibration instruments along with the component
calibrator to produce scenario interest rate curves.
- RatesCurveScenarioGenerator(String, String, CalibratableComponent[]) - Constructor for class org.drip.state.estimator.RatesCurveScenarioGenerator
-
Construct a RatesCurveScenarioGenerator instance from the calibratable instrument array
- RatesLiveAndEODAPI - Class in org.drip.sample.rates
-
RatesLiveAndEODAPI contains the sample API demonstrating the usage of the Rates Live and EOD functions.
- RatesLiveAndEODAPI() - Constructor for class org.drip.sample.rates.RatesLiveAndEODAPI
-
- RatesLSMM - Class in org.drip.analytics.rates
-
RatesLSMM contains the Rates specific Latent State MM for the Rates Curve.
- RatesLSMM(String, String, String, double, TurnListDiscountFactor) - Constructor for class org.drip.analytics.rates.RatesLSMM
-
RatesLSMM constructor
- RatesManager - Class in org.drip.service.env
-
RatesManager manages the creation/loading of rates curves of different kinds for a given EOD.
- RatesManager() - Constructor for class org.drip.service.env.RatesManager
-
- RatesScenarioCurveBuilder - Class in org.drip.param.creator
-
RatesScenarioCurveBuilder implements the the construction of the scenario discount curve using the input
discount curve instruments, and a wide variety of custom builds.
- RatesScenarioCurveBuilder() - Constructor for class org.drip.param.creator.RatesScenarioCurveBuilder
-
- RatesSegmentSequenceBuilder - Class in org.drip.state.estimator
-
RatesSegmentSequenceBuilder holds the logic behind building the bootstrap segments contained in the given
Stretch.
- RatesSegmentSequenceBuilder(double, StretchRepresentationSpec, ValuationParams, PricerParams, ComponentMarketParams, QuotingParams, MultiSegmentSequence, StretchBestFitResponse, StretchBestFitResponse, BoundarySettings) - Constructor for class org.drip.state.estimator.RatesSegmentSequenceBuilder
-
RatesSegmentSequenceBuilder constructor
- RatesSetting - Class in org.drip.product.params
-
RatesSetting contains the rate related valuation parameters - the discount curves to be used for
discounting the coupon, the redemption, the principal, and the settle cash flows.
- RatesSetting(String, String, String, String) - Constructor for class org.drip.product.params.RatesSetting
-
RatesSetting constructor
- RatesSetting(byte[]) - Constructor for class org.drip.product.params.RatesSetting
-
RatesSetting de-serialization from input byte array
- RatesStreamBuilder - Class in org.drip.product.creator
-
RatesStreamBuilder contains the suite of helper functions for creating the Stream-based Rates Products
from different kinds of inputs.
- RatesStreamBuilder() - Constructor for class org.drip.product.creator.RatesStreamBuilder
-
- rationalTension() - Method in class org.drip.spline.basis.ExponentialRationalSetParams
-
Get the Rational Tension
- RAW_TENSION_HYPERBOLIC - Static variable in class org.drip.spline.bspline.BasisHatPairGenerator
-
Raw Tension Hyperbolic B Spline Basis Hat Phy and Psy
- regress() - Method in class org.drip.regression.core.UnitRegressionExecutor
-
- regress() - Method in interface org.drip.regression.core.UnitRegressor
-
This method performs the feature by feature regression for the given object.
- REGRESSION_DETAIL_MODULE_AGGREGATED - Static variable in class org.drip.regression.core.RegressionEngine
-
Regression outputs rolled up to Modules
- REGRESSION_DETAIL_MODULE_UNIT_AGGREGATED - Static variable in class org.drip.regression.core.RegressionEngine
-
Regression outputs rolled up to Module Units
- REGRESSION_DETAIL_MODULE_UNIT_DECOMPOSED - Static variable in class org.drip.regression.core.RegressionEngine
-
Regression outputs decomposed at individual Module Units
- REGRESSION_DETAIL_STATS - Static variable in class org.drip.regression.core.RegressionEngine
-
Regression Output: Statistics
- RegressionEngine - Class in org.drip.regression.core
-
RegressionEngine provides the control and frame-work functionality for the General Purpose Regression
Suite.
- RegressionRunDetail - Class in org.drip.regression.core
-
RegressionRunDetail contains named field level detailed output of the regression activity.
- RegressionRunDetail() - Constructor for class org.drip.regression.core.RegressionRunDetail
-
Empty constructor: Regression detail fields will be initialized
- RegressionRunOutput - Class in org.drip.regression.core
-
RegressionRunOutput contains the output of a single regression activity.
- RegressionRunOutput(String) - Constructor for class org.drip.regression.core.RegressionRunOutput
-
Empty Regression Run Output Constructor
- RegressionSplineEstimator - Class in org.drip.sample.stretch
-
RegressionSplineEstimator shows the sample construction and usage of RegressionSplines.
- RegressionSplineEstimator() - Constructor for class org.drip.sample.stretch.RegressionSplineEstimator
-
- RegressorSet - Interface in org.drip.regression.core
-
RegressorSet interface provides the Regression set stubs.
- RegulariseRow(double[][], double[], int, int) - Static method in class org.drip.quant.linearalgebra.LinearSystemSolver
-
Regularize (i.e., convert the diagonal entries of the given cell to non-zero using suitable linear
transformations)
- RegularizeUsingRowAddition(MatrixComplementTransform) - Static method in class org.drip.quant.linearalgebra.Matrix
-
Regularize the specified diagonal entry of the input matrix using Row Addition
- RegularizeUsingRowSwap(MatrixComplementTransform) - Static method in class org.drip.quant.linearalgebra.Matrix
-
Regularize the specified diagonal entry of the input matrix using Row Swapping
- remove(Object) - Method in class org.drip.analytics.support.CaseInsensitiveHashMap
-
- remove(Object) - Method in class org.drip.analytics.support.CaseInsensitiveTreeMap
-
- RemoveBond(String) - Static method in class org.drip.service.api.CreditAnalytics
-
Removes the bond ID from the cache
- removeCompQuote(String) - Method in class org.drip.param.definition.MarketParams
-
Remove the component quote
- removeCompQuote(String) - Method in class org.drip.param.market.MarketParamsContainer
-
- removeFixings(JulianDate, String) - Method in class org.drip.param.definition.MarketParams
-
Remove the fixing corresponding to the given date and index
- removeFixings(JulianDate, String) - Method in class org.drip.param.market.MarketParamsContainer
-
- removeMarketQuote() - Method in class org.drip.param.definition.ComponentQuote
-
Remove the market quote
- removeMarketQuote() - Method in class org.drip.param.market.ComponentMultiMeasureQuote
-
- removeQuote(String) - Method in class org.drip.param.definition.ComponentQuote
-
Remove the named Quote
- removeQuote(String) - Method in class org.drip.param.market.ComponentMultiMeasureQuote
-
- removeScenCC(String) - Method in class org.drip.param.definition.MarketParams
-
Removes the named scenario CC
- removeScenCC(String) - Method in class org.drip.param.market.MarketParamsContainer
-
- removeScenDC(String) - Method in class org.drip.param.definition.MarketParams
-
Remove the named scenario DC
- removeScenDC(String) - Method in class org.drip.param.market.MarketParamsContainer
-
- removeScenFC(String) - Method in class org.drip.param.definition.MarketParams
-
Remove the Named Scenario Forward Curve
- removeScenFC(String) - Method in class org.drip.param.market.MarketParamsContainer
-
- removeTSYQuote(String) - Method in class org.drip.param.definition.MarketParams
-
Remove the named Treasury Quote
- removeTSYQuote(String) - Method in class org.drip.param.market.MarketParamsContainer
-
- replicate() - Method in interface org.drip.spline.segment.BasisEvaluator
-
Clone/Replicate the current Basis Evaluator Instance
- replicate() - Method in class org.drip.spline.segment.SegmentBasisEvaluator
-
- resetCoupon(double) - Method in class org.drip.product.credit.CDSComponent
-
Reset the CDS's coupon
- resetCoupon(double) - Method in class org.drip.product.definition.CreditDefaultSwap
-
Reset the CDS's coupon
- resetNode(int, double) - Method in class org.drip.spline.stretch.CalibratableMultiSegmentSequence
-
- resetNode(int, SegmentResponseValueConstraint) - Method in class org.drip.spline.stretch.CalibratableMultiSegmentSequence
-
- resetNode(int, double) - Method in class org.drip.spline.stretch.SingleSegmentLagrangePolynomial
-
- resetNode(int, SegmentResponseValueConstraint) - Method in class org.drip.spline.stretch.SingleSegmentLagrangePolynomial
-
- resetNode(int, double) - Method in interface org.drip.spline.stretch.SingleSegmentSequence
-
Reset the Predictor Ordinate Node Index with the given Response
- resetNode(int, SegmentResponseValueConstraint) - Method in interface org.drip.spline.stretch.SingleSegmentSequence
-
Reset the Predictor Ordinate Node Index with the given Segment Constraint
- response() - Method in class org.drip.spline.params.SegmentBestFitResponse
-
Retrieve the Array of Responses
- response(int) - Method in class org.drip.spline.params.SegmentBestFitResponse
-
Retrieve the Indexed Response Element
- response() - Method in class org.drip.spline.params.StretchBestFitResponse
-
Retrieve the Array of Responses
- response(int) - Method in class org.drip.spline.params.StretchBestFitResponse
-
Retrieve the Indexed Response Element
- responseBasisCoefficient() - Method in class org.drip.spline.segment.ConstitutiveState
-
Retrieve the Array of Response Basis Coefficients
- responseBasisCoeffWeights() - Method in class org.drip.spline.params.SegmentBasisFlexureConstraint
-
Retrieve the Array of the Response Basis Coefficient Weights
- responseIndexedBasisConstraint(BasisEvaluator, InelasticConstitutiveState) - Method in class org.drip.spline.params.SegmentResponseValueConstraint
-
Convert the Segment Constraint onto Local Predictor Ordinates, the corresponding Response Basis
Function, and the Shape Controller Realizations
- ResponseScalingShapeControl - Class in org.drip.spline.params
-
ResponseScalingShapeControl implements the segment level basis functions proportional adjustment to
achieve the desired shape behavior of the response.
- ResponseScalingShapeControl(boolean, AbstractUnivariate) - Constructor for class org.drip.spline.params.ResponseScalingShapeControl
-
ResponseScalingShapeControl constructor
- responseValue() - Method in class org.drip.spline.params.SegmentPredictorResponseDerivative
-
Retrieve the Response Value
- responseValue(double) - Method in class org.drip.spline.pchip.MinimalQuadraticHaganWest
-
Calculate the Response Value given the Predictor Ordinate
- responseValue(double[], double) - Method in interface org.drip.spline.segment.BasisEvaluator
-
Compute the Response Value at the specified Predictor Ordinate
- responseValue(double) - Method in class org.drip.spline.segment.ConstitutiveState
-
Calculate the Response Value at the given Predictor Ordinate
- responseValue(double[], double) - Method in class org.drip.spline.segment.SegmentBasisEvaluator
-
- responseValue(double) - Method in class org.drip.spline.stretch.CalibratableMultiSegmentSequence
-
- responseValue(double) - Method in class org.drip.spline.stretch.SingleSegmentLagrangePolynomial
-
- responseValue(double) - Method in interface org.drip.spline.stretch.SingleSegmentSequence
-
Calculate the Response Value for the given Predictor Ordinate
- responseValueDerivative(double[], double, int) - Method in interface org.drip.spline.segment.BasisEvaluator
-
Compute the Response Value Derivative at the specified Predictor Ordinate
- responseValueDerivative(double[], double, int) - Method in class org.drip.spline.segment.SegmentBasisEvaluator
-
- responseValues() - Method in class org.drip.spline.params.SegmentStateCalibration
-
Retrieve the Array of the Calibration Response Values
- responseValues() - Method in class org.drip.spline.pchip.MonotoneConvexHaganWest
-
Retrieve the Array of Response Values
- ResponseValueTweakParams - Class in org.drip.param.definition
-
ResponseValueTweakParams contains the place holder for the scenario tweak parameters, for either a specific curve
node, or the entire curve (flat).
- ResponseValueTweakParams(int, boolean, double) - Constructor for class org.drip.param.definition.ResponseValueTweakParams
-
ResponseValueTweakParams constructor
- ResponseValueTweakParams(byte[]) - Constructor for class org.drip.param.definition.ResponseValueTweakParams
-
ResponseValueTweakParams de-serialization from input byte array
- responseWeights() - Method in class org.drip.spline.params.SegmentResponseValueConstraint
-
Retrieve the Array of Response Weights at each Predictor Ordinate
- return1D() - Method in class org.drip.service.api.ProductDailyPnL
-
Retrieve the 1D Return
- RIDDER - Static variable in class org.drip.quant.solver1D.VariateIteratorPrimitive
-
Ridder's Method
- Ridder(double, double, double, double, double, double) - Static method in class org.drip.quant.solver1D.VariateIteratorPrimitive
-
Iterate for the next variate using Ridder's method
- right() - Method in class org.drip.spline.bspline.TensionBasisHat
-
Retrieve the Right Predictor Ordinate
- right() - Method in class org.drip.spline.grid.OverlappingStretchSpan
-
- right() - Method in interface org.drip.spline.grid.Span
-
Retrieve the Right Span Edge
- right() - Method in class org.drip.spline.segment.InelasticConstitutiveState
-
Retrieve the Segment Right Predictor Ordinate
- RIGHT_INCLUDE - Static variable in class org.drip.analytics.date.JulianDate
-
RIGHT_INCLUDE includes the end date in the Feb29 check
- RIGHT_NODE_VALUE_PARAMETER_INDEX - Static variable in class org.drip.spline.segment.ConstitutiveState
-
RIGHT NODE VALUE PARAMETER INDEX
- RIGHT_OF_CONSTRAINT - Static variable in class org.drip.spline.params.SegmentResponseValueConstraint
-
Indicator specifying that the knot is to the right of the constraint ordinates
- rightDerivOrder() - Method in class org.drip.spline.stretch.BoundarySettings
-
Retrieve the Order of the Right Derivative
- rightEdgeDeriv() - Method in class org.drip.spline.params.SegmentStateCalibration
-
Retrieve the Array of the Right Edge Derivatives
- RightHatShapeControl - Class in org.drip.spline.bspline
-
RightHatShapeControl implements the BasisHatShapeControl interface for the right hat basis set as laid out
in the basic framework outlined in Koch and Lyche (1989), Koch and Lyche (1993), and Kvasov (2000)
Papers.
- RightHatShapeControl(double, double, String, double) - Constructor for class org.drip.spline.bspline.RightHatShapeControl
-
RightHatShapeControl constructor
- roll(double) - Method in class org.drip.analytics.daycount.DateAdjustParams
-
Roll the given date
- RollDate(double, int, String) - Static method in class org.drip.analytics.daycount.Convention
-
Roll the given date in accordance with the roll mode and the calendar set
- RollDate(JulianDate, String, int) - Static method in class org.drip.service.api.CreditAnalytics
-
Rolls the given date according to the calendar set and the roll mode
- rollDown1D() - Method in class org.drip.service.api.ProductDailyPnL
-
Retrieve the 1D Roll Down
- rollDown1M() - Method in class org.drip.service.api.ProductDailyPnL
-
Retrieve the 1M Roll Down
- rollDown3M() - Method in class org.drip.service.api.ProductDailyPnL
-
Retrieve the 3M Roll Down
- rollHoliday(double, boolean, Weekend) - Static method in class org.drip.analytics.holiday.Base
-
Roll the date to a non-holiday according to the rule specified
- rollMode() - Method in class org.drip.analytics.daycount.DateAdjustParams
-
Retrieve the Roll Mode
- RUBHoliday - Class in org.drip.analytics.holset
-
- RUBHoliday() - Constructor for class org.drip.analytics.holset.RUBHoliday
-
- RunFullBondTests(MarketParams, JulianDate, double, double) - Static method in class org.drip.tester.functional.BondTestSuite
-
Run the Full Suite of Bond Tests for the given price set
- RunFullMarketBondTests(MarketParams, JulianDate) - Static method in class org.drip.tester.functional.BondTestSuite
-
Run the Full Suite of Bond Market Tests
- RURHoliday - Class in org.drip.analytics.holset
-
- RURHoliday() - Constructor for class org.drip.analytics.holset.RURHoliday
-


@Documented @Retention(value=RUNTIME) @Target(value=TYPE) public @interface Immutable
It allows you to write classes in this shortened form:
@Immutable
class Customer {
String first, last
int age
Date since
Collection favItems
}
def d = new Date()
def c1 = new Customer(first:'Tom', last:'Jones', age:21, since:d, favItems:['Books', 'Games'])
def c2 = new Customer('Tom', 'Jones', 21, d, ['Books', 'Games'])
assert c1 == c2
The @Immutable
annotation instructs the compiler to execute an
AST transformation which adds the necessary getters, constructors,
equals, hashCode and other helper methods that are typically written
when creating immutable classes with the defined properties.
A class created in this way has the following characteristics:
@Immutable
classes or known immutables (e.g. java.awt.Color, java.net.URI, java.util.UUID).
Also handled are Cloneable classes, collections, maps and arrays, and other "effectively immutable"
classes with special handling (e.g. java.util.Date).
ReadOnlyPropertyException
.
equals
, hashCode
and toString
methods are provided based on the property values.
Though not normally required, you may write your own implementations of these methods. For equals
and hashCode
,
if you do write your own method, it is up to you to obey the general contract for equals
methods and supply
a corresponding matching hashCode
method.
If you do provide one of these methods explicitly, the default implementation will be made available in a private
"underscore" variant which you can call. E.g., you could provide a (not very elegant) multi-line formatted
toString
method for Customer
above as follows:
String toString() { _toString().replaceAll(/\(/, '(\n\t').replaceAll(/\)/, '\n)').replaceAll(/, /, '\n\t') }If an "underscore" version of the respective method already exists, then no default implementation is provided.
Date
s, Cloneable
s and arrays are defensively copied on the way in (constructor) and out (getters).
Arrays and Cloneable
objects use the clone
method. For your own classes,
it is up to you to define this method and use deep cloning if appropriate.
Collection
s and Map
s are wrapped by immutable wrapper classes (but not deeply cloned!).
Attempts to update them will result in an UnsupportedOperationException
.
@Immutable
classes are allowed but for an
otherwise possible mutable property type, an error is thrown.
equals
or hashCode
methods.
Similarly, you may use static properties (though usually this is discouraged) and these too will be ignored
as far as significant state is concerned. If you do break standard conventions, you do so at your own risk and
your objects may no longer be immutable. It is up to you to ensure that your objects remain immutable at least
to the extent expected in other parts of your program!
@Canonical
.
Customising behaviour:
You can customise the toString() method provided for you by @Immutable
by also adding the @ToString
annotation to your class definition.
Limitations:
Cloneable
objects use the clone
method. For your own classes,
it is up to you to define this method and use deep cloning if appropriate.
Collection
s and Map
s are wrapped by immutable wrapper classes (but not deeply cloned!).
BigInteger
and BigDecimal
are deemed immutable but see:
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6348370
java.awt.Color
is treated as "effectively immutable" but is not final so while not normally used with child
classes, it isn't strictly immutable. Use at your own risk.
java.util.Date
is treated as "effectively immutable" but is not final so it isn't strictly immutable.
Use at your own risk.
LinkedHashMap
or if there is a single Map, AbstractMap or HashMap property.
| Modifier and Type | Optional Element and Description |
|---|---|
boolean |
copyWith
If
true , this adds a method copyWith which takes a Map of
new property values and returns a new instance of the Immutable class with
these values set. |
Class[] |
knownImmutableClasses
Allows you to provide
@Immutable with a list of classes which
are deemed immutable. |
String[] |
knownImmutables
Allows you to provide
@Immutable with a list of property names which
are deemed immutable. |
public abstract Class[] knownImmutableClasses
@Immutable
with a list of classes which
are deemed immutable. By supplying a class in this list, you are vouching
for its immutability and @Immutable
will do no further checks.
Example:
import groovy.transform.*@Immutable
(knownImmutableClasses = [Address]) class Person { String first, last Address address }@TupleConstructor
class Address { final String street }
public abstract String[] knownImmutables
@Immutable
with a list of property names which
are deemed immutable. By supplying a property's name in this list, you are vouching
for its immutability and @Immutable
will do no further checks.
Example:
@groovy.transform.Immutable
(knownImmutables = ['address'])
class Person {
String first, last
Address address
}
...
public abstract boolean copyWith
true
, this adds a method copyWith
which takes a Map of
new property values and returns a new instance of the Immutable class with
these values set.
Example:
@groovy.transform.Immutable
(copyWith = true)
class Person {
String first, last
}
def tim = new Person( 'tim', 'yates' )
def alice = tim.copyWith( first:'alice' )
assert tim.first == 'tim'
assert alice.first == 'alice'
Unknown keys in the map are ignored, and if the values would not change
the object, then the original object is returned.
If a method called copyWith
that takes a single parameter already
exists in the class, then this setting is ignored, and no method is generated.


It can be seen from the plot, that as we approach the cities closer to equator, the temeprature goes higher. Also, it can be noticed that cities with higher temperature are mostly located in of 0-40 latitude range of northern hamisphere.


{% extends "base.html" %} {% block content %}
We are currently developing a new application form with much more detailed criteria and so we are unable to accept new applications at this time. We will reopen for new applications soon. A preview of the new application form is available. This is not a fully functional form and applications submitted will NOT be processed.
If you would like to receive updates on our progress, please follow us on Twitter.
Thank you for your patience.
{% endblock %}


Update your billing information. Please note that updating your location could affect your tax rates.
$29 / mo ($290 / yr)
Up to 5 active job postings
$99 / mo ($990 / yr)
Up to 25 active job postings
$249 / mo ($2490 / yr)
Unlimited active job postings


--- layout: page title: Navi description: "Personal Assistant Page" header-img: "img/general-xjtu-02.jpg" ---


SODIUM HYDROXIDE
Sodium hydroxide, also known as lye and caustic soda, it is an inorganic compound with the formula NaOH.
It is a white solid ionic compound consisting of sodium cations Na+ and hydroxide anions OH-.
Sodium hydroxide is a highly caustic base and alkali that decomposes proteins at ordinary ambient temperatures and may cause severe chemical burns.
PHYSICAL AND CHEMICAL PROPERTIES
| Appearance |
White, deliquescent flakes. |
| Odour |
Odourless. |
| Solubility |
111 g/100 g of water |
| Specific Gravity |
Lye - 1.50 and Flakes - 2.13 |
| pH |
13 - 14 (0.5% soln.) |
| % Volatile by volume : @ 21C (70F) |
0 |
| Melting Point |
318C (604F) |
| Boiling Point |
1390C (2534F) |
| Vapour Density (Air =1) |
> 1.0 |
| Vapour Pressure (mm Hg) |
Negligible |