Formulation of the (magneto)-hydrodynamics problem¶
The general equations describing thermal convection and dynamo action of a rotating compressible fluid are the starting point from which the Boussinesq or the anelastic approximations are developed. In MagIC, we consider a spherical shell rotating about the vertical \(z\) axis with a constant angular velocity \(\Omega\). Equations are solve in the corotating system.
The conservation of momentum is formulated by the Navier-Stokes equation
where \(\vec{u}\) is the velocity field, \(\vec{B}\) the magnetic field, and \(p\) a modified pressure that includes centrifugal forces. \(\mathsf{S}\) corresponds to the rate-of-strain tensor given by:
Convection is driven by buoyancy forces acting on variations in density \(\rho\). These variations have a dynamical part formulated by the continuity equation describing the conservation of mass:
In addition an equation of state is required to formulate the thermodynamic density changes. For example the relation
describes density variations caused by variations in temperature \(T\), pressure \(p\), and composition \(\xi\). The latter contribution needs to be considered for describing the effects of light elements released from a growing solid iron core in a so-called double diffusive approach.
To close the system we also have to formulate the dynamic changes of entropy, pressure, and composition. The evolution equation for pressure can be derived from the Navier-Stokes equation, as will be further discussed below. For entropy variations we use the so-called energy or heat equation
where \(\Phi_\nu\) corresponds to the viscous heating expressed by
Note that we use here the summation convention over the indices \(i\) and \(j\). The second last term on the right hand side is the Ohmic heating due to electric currents. The last term is a volumetric sink or source term that can describe various effects, for example radiogenic heating, the mixing-in of the light elements or, when radially dependent, potential variations in the adiabatic gradient (see below). For chemical composition, we finally use
The induction equation is obtained from the Maxwell equations (ignoring displacement current) and Ohm’s law (neglecting Hall effect):
When the magnetic diffusivity \(\lambda\) is homogeneous this simplifies to the commonly used form
The physical properties determining above equations are rotation rate \(\Omega\), the kinematic viscosity \(\nu\), the magnetic permeability \(\mu_0\), gravity \(\vec{g}\), thermal conductivity \(k\), Fick’s conductiviy \(k_\xi\), magnetic diffusivity \(\lambda\). The latter connects to the electrical conductivity \(\sigma\) via \(\lambda = 1/(\mu_0\sigma)\). The thermodynamics properties appearing in (3) are the thermal expansivity at constant pressure (and composition)
the compressibility at constant temperature
and an equivalent parameter \(\delta\) for the dependence of density on composition:
The reference state¶
The convective flow and the related processes including magnetic field generation constitute only small disturbances around a background or reference state. In the following we denote the background state with a tilde and the disturbance we are interested in with a prime. Formally we will solve equations in first order of a smallness parameters \(\epsilon\) which quantified the ratio of convective disturbances to background state:
The background state is hydrostatic, i.e. obeys the simple force balance
Convective motions are supposed to be strong enough to provide homogeneous entropy (and composition). The reference state is thus adiabatic and its gradients can be expressed in terms of the pressure gradient (11):
The reference state obviously dependence only on radius. Dimensionless numbers quantifying the temperature and density gradients are called dissipation number \(Di\) and compressibility parameter \(Co\) respectively:
and
Here \(d\) is a typical length scale, for example the shell thickness of the problem. The dissipation number is something like an inverse temperature scale hight while the compressibility parameters is an inverse density scale hight. The ratio of both numbers also helps to quantify the relative impact of temperature and pressure on density variations:
As an example we demonstrate how to derive the first order continuity equation here. Using \(\rho=\tilde{\rho}+\rho'\) in (2) leads to
The zero order term vanishes since the background density is considered static (or actually changing very slowly on very long time scales). The second term in the right hand side is obviously of second order. The ratio of the remaining two terms can be estimated to also be of first order in \(\epsilon\), meaning that the time derivative of \(\rho\) is actually also of second order:
Square brackets denote order of magnitude estimates here. We have used the fact that the reference state is static and assume time scale of changes are comparable (or slower) \(\rho'\) than the time scales represented by \(u\) and that length scales associated to the gradient operator are not too small. We can then neglect local variations in \(\rho'\) which means that sound waves are filtered out. This first order continuity equation thus simply reads:
This defines the so-called anelastic approximation where sound waves are filtered out by neglecting the local time derivative of density. This approximation is justified when typical velocities are sufficiently smaller than the speed of sound.
Boussinesq approximation¶
For Earth the dissipation number and the compressibility parameter are around \(0.2\) when temperature and density jump over the whole liquid core are considered. This motivates the so called Boussinesq approximation where \(Di\) and \(Co\) are assumed to vanish. The continuity equation (2) then simplifies further:
When using typical number for Earth, (14) becomes \(0.05\) so that pressure effects on density may be neglected. The first order Navier-Stokes equation (after to zero order hydrostatic reference solution has been subtracted) then reads:
Here \(u\) and \(B\) are understood as first order disturbances and \(p'\) is the first order non-hydrostatic pressure and \(T'\) the super-adiabatic temperature and \(\xi\) the super-adiabatic chemical composition. Above we have adopted a simplification of the buoyancy term. In the Boussinesq limit with vanishing \(Co\) and a small density difference between a solid inner and a liquid outer core a linear gravity dependence provides a reasonable approximation:
where we have chosen the gravity \(\tilde{g}_o\) at the outer boundary radius \(r_o\) as reference.
The first order energy equation becomes
where we have assumed a homogeneous \(k\) and neglected viscous and Ohmic heating which can be shown to scale with \(Di\) as we discuss below. Furthermore, we have used the simple relation
defined the thermal diffusivity
and adjusted the definition of \(\epsilon\). Finally the first order equation for chemical composition becomes
where we have assumed a homogeneous \(k_\xi\) and adjusted the definition of \(\epsilon_\xi\).
MagIC solves a dimensionless form of the differential equations. Time is scaled in units of the viscous diffusion time \(d^2/\nu\), length in units of the shell thickness \(d\), temperature in units of the temperature drop \(\Delta T=T_o-T_i\) over the shell, composition in units of the composition drop \(\Delta \xi = \xi_o-\xi_i\) over the shell and magnetic field in units \((\mu\lambda\tilde{\rho}\Omega)^{1/2}\). Technically the transition to the dimensionless form is achieved by the substitution
where \(r\) stands for any length. The next step then is to collect the physical properties as a few possible characteristic dimensionless numbers. Note that many different scalings and combinations of dimensionless numbers are possible. For the Navier-Stokes equation in the Boussinesq limit MagIC uses the form:
where \(\vec{e}_z\) is the unit vector in the direction of the rotation axis and the meaning of the pressure disturbance \(p'\) has been adjusted to the new dimensionless equation form.
Anelastic approximation¶
The anelastic approximation adopts the simplified continuity (15). The background state can be specified in different ways, for example by providing profiles based on internal models and/or ab initio simulations. We will assume a polytropic ideal gas in the following.
Analytical solution in the limit of an ideal gas¶
In the limit of an ideal gas which follows \(\tilde{p}=\tilde{\rho}\tilde{T}\) and has \(\alpha=1/\tilde{T}\), one directly gets:
where \(\gamma=c_p/c_v\). Note that we have moved to a dimensionless formulations here, where all quantities have been normalized with their outer boundary values and \(Di\) refers to the respective outer boundary value. If we in addition make the assumption of a centrally-condensed mass in the center of the spherical shell of radius \(r\in[r_i,r_o]\), i.e. \(g\propto, 1/r^2\), this leads to
where \(N_\rho=\ln(\tilde{\rho}_i/\tilde{\rho}_o)\) is the number of density scale heights of the reference state and \(m=1/(\gamma-1)\) is the polytropic index.
Warning
The relationship between \(N_\rho\) and the dissipation number \(Di\) directly depends on the gravity profile. The formula above is only valid when \(g\propto 1/r^2\).
In this formulation, when you change the polytropic index \(m\), you also change the nature of the fluid you’re modelling since you accordingly modify \(\gamma=c_p/c_v\).
Anelastic MHD equations¶
In the most general formulation, all physical properties defining the background state may vary with depth. Specific reference values must then be chosen to provide a unique dimensionless formulations and we typically chose outer boundary values here. The exception is the magnetic diffusivity where we adopt the inner boundary value instead. The motivation is twofold: (i) it allows an easier control of the possible continuous conductivity value in the inner core; (ii) it is a more natural choice when modelling gas giants planets which exhibit a strong electrical conductivity decay in the outer layer.
The time scale is then the viscous diffusion time \(d^2/\nu_o\) where \(\nu_o\) is the kinematic viscosity at the outer boundary. Magnetic field is expressed in units of \((\rho_o\mu_0\lambda_i\Omega)^{1/2}\), where \(\rho_o\) is the density at the outer boundary and \(\lambda_i\) is the magnetic diffusivity at the inner boundary.
This leads to the following sets of dimensionless equations:
Here \(\tilde{g}\) and \(\tilde{\rho}\) are the normalized radial gravity and density profiles that reach one at the outer boundary.
Entropy equation and turbulent diffusion¶
The entropy equation usually requires an additional assumption in most of the existing anelastic approximations. Indeed, if one simply expands Eq. (4) with the classical temperature diffusion an operator of the form:
will remain the right-hand side of the equation. At first glance, there seems to be a \(1/\epsilon\) factor between the first term and the second one, which would suggest to keep only the second term in this expansion. However, for astrophysical objects which exhibit strong convective driving (and hence large Rayleigh numbers), the diffusion of the adiabatic background is actually very small and may be comparable or even smaller in magnitude than the \(\epsilon\) terms representing the usual convective perturbations. For the Earth core for instance, if one assumes that the typical temperature fluctuations are of the order of 1 mK and the temperature contrast between the inner and outer core is of the order of 1000 K, then \(\epsilon \sim 10^{-6}\). The ratio of the two terms can thus be estimated as
where \(d\) is the thickness of the inner core and \(\delta\) is the typical thermal boundary layer thickness. This ratio is exactly one when \(\delta =1\text{ m}\), a plausible value for the Earth inner core.
In numerical simulations however, the over-estimated diffusivities restrict the computational capabilities to much lower Rayleigh numbers. As a consequence, the actual boundary layers in a global DNS will be much thicker and the ratio (25) will be much smaller than unity. The second terms will thus effectively acts as a radial-dependent heat source or sink that will drive or hinder convection. This is one of the physical motivation to rather introduce a turbulent diffusivity that will be approximated by
where \(\kappa\) is the turbulent diffusivity. Entropy diffusion is assumed to dominate over temperature diffusion in turbulent flows.
The choice of the entropy scale to non-dimensionalize Eq. (4) also depends on the nature of the boundary conditions: it can be simply the entropy contrast over the layer \(\Delta s\) when the entropy is held constant at both boundaries, or \(d\,(ds /dr)\) when flux-based boundary conditions are employed. We will restrict to the first option in the following, but keep in mind that depending on your setup, the entropy reference scale (and thus the Rayleigh number definition) might change.
A comparison with (20) reveals meaning of the different non-dimensional numbers that scale viscous and Ohmic heating. The fraction \(Pr/Ra\) simply expresses the ratio of entropy and flow in the Navier-Stokes equation, while the additional factor \(1/E Pm\) reflects the scale difference of magnetic field and flow. Then remaining dissipation number \(Di\) then expresses the relative importance of viscous and Ohmic heating compared to buoyancy and Lorentz force in the Navier-Stokes equation. For small \(Di\) both heating terms can be neglected compared to entropy changes due to advection, an limit that is used in the Boussinesq approximation.
Dimensionless control parameters¶
The equations (20)-(26) are governed by four dimensionless numbers: the Ekman number
the thermal Rayleigh number
the compositional Rayleigh number
the Prandtl number
the Schmidt number
and the magnetic Prandtl number
In addition to these four numbers, the reference state is controlled by the geometry of the spherical shell given by its radius ratio
and the background density and temperature profiles, either controlled by \(Di\) or by \(N_\rho\) and \(m\).
In the Boussinesq approximation all physical properties are assumed to be homogeneous and we can drop the sub-indices \(o\) and \(i\) except for gravity. Moreover, the Rayleigh number can be expressed in terms of the temperature jump across the shell:
See also
In MagIC, those control parameters can be adjusted in the &phys_param section of the input namelist.
Variants of the non-dimensional equations and control parameters result from different choices for the fundamental scales. For the length scale often \(r_o\) is chosen instead of \(d\). Other natural scales for time are the magnetic or the thermal diffusion time, or the rotation period. There are also different options for scaling the magnetic field strength. The prefactor of two, which is retained in the Coriolis term in (20), is often incorporated into the definition of the Ekman number.
See also
Those references timescales and length scales can be adjusted by several input parameters in the &control section of the input namelist.
Usual diagnostic quantities¶
Characteristic properties of the solution are usually expressed in terms of non-dimensional diagnostic parameters. In the context of the geodynamo for instance, the two most important ones are the magnetic Reynolds number \(Rm\) and the Elsasser number \(\Lambda\). Usually the rms-values of the velocity \(u_{rms}\) and of the magnetic field \(B_{rms}\) inside the spherical shell are taken as characteristic values. The magnetic Reynolds number
can be considered as a measure for the flow velocity and describes the ratio of advection of the magnetic field to magnetic diffusion. Other characteristic non-dimensional numbers related to the flow velocity are the (hydrodynamic) Reynolds number
which measures the ratio of inertial forces to viscous forces, and the Rossby number
a measure for the ratio of inertial to Coriolis forces.
measures the ratio of Lorentz to Coriolis forces and is equivalent to the square of the non-dimensional magnetic field strength in the scaling chosen here.
See also
The time-evolution of these diagnostic quantities are stored in the par.TAG file produced during the run of MagIC.
Boundary conditions and treatment of inner core¶
Mechanical conditions¶
In its simplest form, when modelling the geodynamo, the fluid shell is treated as a container with rigid, impenetrable, and co-rotating walls. This implies that within the rotating frame of reference all velocity components vanish at \(r_o\) and \(r_i\). In case of modelling the free surface of a gas giant planets or a star, it is preferable to rather replace the condition of zero horizontal velocity by one of vanishing viscous shear stresses (the so-called free-slip condition).
Furthermore, even in case of modelling the liquid iron core of a terrestrial planet, there is no a priori reason why the inner core should necessarily co-rotate with the mantle. Some models for instance allow for differential rotation of the inner core and mantle with respect to the reference frame. The change of rotation rate is determined from the net torque. Viscous, electromagnetic, and torques due to gravitational coupling between density heterogeneities in the mantle and in the inner core contribute.
See also
The mechanical boundary conditions can be adjusted with the parameters ktopv and kbotv in the &phys_param section of the input namelist.
Magnetic boundary conditions and inner core conductivity¶
When assuming that the fluid shell is surrounded by electrically insulating regions (inner core and external part), the magnetic field inside the fluid shell matches continuously to a potential field in both the exterior and the interior regions. Alternative magnetic boundary conditions (like cancellation of the horizontal component of the field ) are also possible.
Depending on the physical problem you want to model, treating the inner core as an insulator is not realistic either, and it might instead be more appropriate to assume that it has the same electrical conductivity as the fluid shell. In this case, an equation equivalent to (24) must be solved for the inner core, where the velocity field simply describes the solid body rotation of the inner core with respect to the reference frame. At the inner core boundary a continuity condition for the magnetic field and the horizontal component of the electrical field apply.
See also
The magnetic boundary conditions can be adjusted with the parameters ktopb and kbotb in the &phys_param section of the input namelist.
Thermal boundary conditions and distribution of buoyancy sources¶
In many dynamo models, convection is simply driven by an imposed fixed super-adiabatic entropy contrast between the inner and outer boundaries. This approximation is however not necessarily the best choice, since for instance, in the present Earth, convection is thought to be driven by a combination of thermal and compositional buoyancy. Sources of heat are the release of latent heat of inner core solidification and the secular cooling of the outer and inner core, which can effectively be treated like a heat source. The heat loss from the core is controlled by the convecting mantle, which effectively imposes a condition of fixed heat flux at the core-mantle boundary on the dynamo. The heat flux is in that case spatially and temporally variable.
See also
The thermal boundary conditions can be adjusted with the parameters ktops and kbots in the &phys_param section of the input namelist.
Chemical composition boundary conditions¶
They are treated in a very similar manner as the thermal boundary conditions
See also
The boundary conditions for composition can be adjusted with the parameters ktopxi and kbotxi in the &phys_param section of the input namelist.


Casey at the Bat
by Ernest Lawrence Thayer
Additional Information
- Year Published: 1888
- Language: English
- Country of Origin: United States of America
- Source: Thayer, E. L. (1888). The San Francisco Examiner. San Francisco: The San Francisco Examiner.
-
Readability:
- Flesch–Kincaid Level: 5.3
- Word Count: 625
- Genre: Poetry
- Keywords: baseball, despair, game, hope, sports
- ✎ Cite This
Downloads
The Outlook wasn’t brilliant for the Mudville nine that day:
The score stood four to two, with but one inning more to play.
And then when Cooney died at first, and Barrows did the same,
A sickly silence fell upon the patrons of the game.
A straggling few got up to go in deep despair. The rest
Clung to that hope which springs eternal in the human breast;
They thought, if only Casey could get but a whack at that –
We’d put up even money, now, with Casey at the bat.
But Flynn preceded Casey, as did also Jimmy Blake,
And the former was a lulu and the latter was a cake;
So upon that stricken multitude grim melancholy sat,
For there seemed but little chance of Casey’s getting to the bat.
But Flynn let drive a single, to the wonderment of all,
And Blake, the much despis–ed, tore the cover off the ball;
And when the dust had lifted, and the men saw what had occurred,
There was Jimmy safe at second and Flynn a–hugging third.
Then from 5,000 throats and more there rose a lusty yell;
It rumbled through the valley, it rattled in the dell;
It knocked upon the mountain and recoiled upon the flat,
For Casey, mighty Casey, was advancing to the bat.
There was ease in Casey’s manner as he stepped into his place;
There was pride in Casey’s bearing and a smile on Casey’s face.
And when, responding to the cheers, he lightly doffed his hat,
No stranger in the crowd could doubt ‘twas Casey at the bat.
Ten thousand eyes were on him as he rubbed his hands with dirt;
Five thousand tongues applauded when he wiped them on his shirt.
Then while the writhing pitcher ground the ball into his hip,
Defiance gleamed in Casey’s eye, a sneer curled Casey’s lip.
And now the leather–covered sphere came hurtling through the air,
And Casey stood a–watching it in haughty grandeur there.
Close by the sturdy batsman the ball unheeded sped–
“That ain’t my style,” said Casey. “Strike one,” the umpire said.
From the benches, black with people, there went up a muffled roar,
Like the beating of the storm–waves on a stern and distant shore.
“Kill him! Kill the umpire!” shouted someone on the stand;
And its likely they’d a–killed him had not Casey raised his hand.
With a smile of Christian charity great Casey’s visage shone;
He stilled the rising tumult; he bade the game go on;
He signaled to the pitcher, and once more the spheroid flew;
But Casey still ignored it, and the umpire said, “Strike two.”
“Fraud!” cried the maddened thousands, and echo answered fraud;
But one scornful look from Casey and the audience was awed.
They saw his face grow stern and cold, they saw his muscles strain,
And they knew that Casey wouldn’t let that ball go by again.
The sneer is gone from Casey’s lip, his teeth are clenched in hate;
He pounds with cruel violence his bat upon the plate.
And now the pitcher holds the ball, and now he lets it go,
And now the air is shattered by the force of Casey’s blow.
Oh, somewhere in this favored land the sun is shining bright;
The band is playing somewhere, and somewhere hearts are light,
And somewhere men are laughing, and somewhere children shout;
But there is no joy in Mudville – mighty Casey has struck out.


{TOWN_FULL}
Adult population
{POP}
Median income
{INCOME}
Poverty
{POVERTY}
By investing
$1,000
in every adult,
we
would bring
{TOTAL}
into {TOWN_SHORT}
every single
month
.
Highlights now here
Shadows now here


In order to introduce you to development with of three-dimensional CA with OpenCAL, we start this section by implementing a simple 3D model, namely the mod2 3D CA. Cells can be in one of two differnt states, 0 or 1, as in Game of Life. The cellular space is a parallelepiped made by cubic cells, while the cell’s neighbourhood is the 3D Moore one, consisting of the central cell and its adjecent cells. The transition function simply evaluates the quantity \(s\) as the number of neighbouring cells which are in the state 1 and sets the new state for the central cell as \(s\%2\) (i.e. the rest of \(s\) divided by 2). This simple example of 3D CA is formally defined as:
\[mod2 = < R, X, Q, \sigma >\]
where:
\(R\) is the set of points, with integer coordinates, which defines the 3-dimensional cellular space. The generic cell in \(R\) is individuated by means of a triple of integer coordinates \((i, j, k)\), where \(0 \leq i < i_{max}\), \(0 \leq j < j_{max}\), and \(0 \leq k < k_{max}\). The firt coordinate, \(i\), represents the row, the second, \(j\), the column, while the third coordinate represents the slice. The cell at coodinates \((0,0,0)\) is located at the top-left-far corner of the computational grid.
\(X = \{(0,0,0), \dots, (-1,1,0), (0,0,-1), \dots, (-1,1,-1), (0,0,1), \dots, (-1,1,1)\}\) is the Moore neighborhood relation, a geometrical pattern which identifies the cells influencing the state transition of the central cell. The neighborhood of the generic cell of coordinate \((i, j)\) is given by \[N(X, (i, j, k)) =\] \[= \{(i, j, k)+(0,0,0), \dots, (i, j, k)+(-1,1,-1)\} =\] \[= \{(i, j, k), \dots, (i-1,j+1,k-1)\}\] Here, a subscript operator can be used to index cells belonging to the neighbourhood. Let \(|X|\) be the number of elements in X, and \(n \in \mathbb{N}\), \(0 \leq n < |X|\); the notation
\[N(X, (i, j, k), n)\]
represents the \(n^{th}\) neighbourhood of the cell \((i,j,k)\). Thereby, \(N(X, (i, j, k), 0) = (i, j, k)\), i.e. the central cell, \(N(X, (i, j, k), 1) = (i-1, j, k)\), i.e. the first neighbour, and so on.
\(Q = \{0, 1\}\) is the set of cell states.
\(\sigma : Q^{27} \shortrightarrow Q\) is the deterministic cell transition function. It is composed by one elementary process, which implements the previously descripted transition rules.
As you can imagine, the OpenCAL implementation of the mod2 3D CA is very simple, as the Conway’s game of Life is. The complete source code is shown in Listing [lst:cal_mod2CA3D].
As you can see, even if Listing [lst:cal_life] is very short, it
completely defines the mod2 3D CA and perform a simulation
(actually, only one step in this example). Lines 3-5 include some
header files for the 3D version of OpenCAL, while lines 12-14 declare
CA, substate and simulation objects. They are therefore defined later
in the main function. In particular, line 30 defines the CA as a
parallelepiped having ROWS
rows, COLS
columns
and SLICES
slices (cf. lines 7-9). Moreover, the 3D Moore
neighbourhood is here set as well as cyclic conditions at boundaries.
Eventually, no optimizations are considered. Line 31 defines the
simulation object by setting just one step of computation and implicit
substate’s update. Finally, the only substate,
\(Q\), is defined at line 34. Note that, since it was defined by means
of the calInitSubstate3Db()
function, each element
\(q \in Q\) results to be of the CALbyte type. Line 37 registers the
only CA’s elementary process, namely the
mod2_transition_function()
function, which is then implemnented
at lines 17-25. Line 43 initializes the cell’s substated
\(Q\) at coordinates (2, 3, 1) to the state 1. The obtained initial
configuration is then saved to disk at line 46, and the simulation ran
at line 49. The final configuration is therefore saved to disk at line
52 and, eventually, memory previously and implicitly allocated is
released at lines 55-56. Note that, diffrently to the previous
examples, almost all the OpenCAL functions come in the 3D flower. For
instace, this is the case of the alGetX3Db()
and
calSet3Db()
functions at lines 22 and 24, respectively, which
take k
as third cell’s coordinate, identifying the
cellular space’s slice.
Figures [fig:mod2_0000] and [fig:mod2_LAST] show the initial and final configuration of mod2 3D CA as implemented in Listing [lst:cal_mod2CA3D], respectively. A graphical representation after 77 computational step is shown in Figure [fig:cal_mod2CA3D].


Welcome! Thanks for signing up. Please follow this link to activate your account:
{{ confirm_url }}
Cheers!


The idea is to implement a future that does the work that Tokio's delay_for function does. delay_for
takes as input a duration and returns a future that resolves when that time duration has elapsed. Here's an example of how this can be used:
use std::time::Duration;
use tokio::time::delay_for;
#[tokio::main]
async fn main() {
println!("waiting 2 seconds");
// wait 2 seconds
delay_for(Duration::from_secs(2)).await;
println!("Done waiting.");
}
Implementing an efficient production grade timer is a very involved topic. We are going to implement a simple-minded inefficient one that just spawns a thread that sleeps for the desired duration.
Use the std::thread::spawn API to create native threads. Here's a small example:
use std::thread;
fn main() {
print("Starting thread.");
let th = thread::spawn(|| {
print("Thread runneth over.");
});
th.join().unwrap();
print("All done.");
}
fn print(msg: &str) {
println!("[{:?}] {}", thread::current().id(), msg);
}
When you run this, you should see output that looks like this:
[ThreadId(1)] Starting thread.
[ThreadId(2)] Thread runneth over.
[ThreadId(1)] All done.
Rust's standard library provides synchronization primitives that you can use when you need to mutate shared state between threads. The Arc type is a thread-safe reference counted smart pointer. The Mutex type, as you might imagine, allows you to get exclusive access to some shared data. Use these together to safely share mutable state across threads.
Here's an example:
use std::sync::{Arc, Mutex};
use std::thread;
#[derive(Clone)]
struct Delay {
state: Arc<Mutex<State>>,
}
impl Delay {
fn new(complete: bool) -> Self {
Delay {
state: Arc::new(Mutex::new(State { complete }))
}
}
}
struct State {
complete: bool,
}
fn main() {
let d = Delay::new(false);
thread::spawn({
let d = d.clone();
move || {
d.state.lock().unwrap().complete = true;
}
});
let t2 = thread::spawn({
let d = d.clone();
move || {
while !d.state.lock().unwrap().complete {}
}
});
t2.join().unwrap();
println!("complete = {}", d.state.lock().unwrap().complete);
}
Create a new library project using cargo
:
cargo new --lib delay-future
Your implementation might have the following general structure:
use std::future::Future;
use std::pin::Pin;
use std::sync::{Arc, Mutex};
use std::task::{Context, Poll, Waker};
use std::thread;
use std::time::Duration;
struct Delay {
// stuff here
}
fn delay_for(duration: Duration) -> Delay {
// create and return Delay
todo!()
}
impl Future for Delay {
type Output = ();
fn poll(mut self: Pin<&mut Self>, cx: &mut Context) -> Poll<Self::Output> {
todo!()
}
}
The goal is to implement the future for Delay
so that the following test passes:
#[cfg(test)]
mod tests {
use super::*;
use futures::executor;
use std::time::Instant;
#[test]
fn waits_one_second() {
let start = Instant::now();
executor::block_on(async {
delay_for(Duration::from_secs(1)).await;
});
assert!(start.elapsed() >= Duration::from_secs(1));
}
}


updpkgsums
Update the checksums of the sources in a `PKGBUILD`.
Unless a preexisting hashing algorithm is used, SHA256 will be used.
More information: home page
- Update the checksums in a `PKGBUILD`:
updpkgsums
- Display Version:
updpkgsums -v
- Display help:
updpkgsums -h


John Tinker Accessible Trail
The John Tinker Accessible Trail is a stunning wheelchair accessible and stroller friendly route through the woods. The trail begins with an off street parking lot that leads to a smooth gravel pathway. This wide pathway follows the Nashua River, so any trail users may observe the wildlife in and out of the river. Along the trail are scenic overlooks that exhibit inviting stone benches. This trail is short and family friendly, so even the smallest legs can walk to the end. Speaking of the end, the trail's end leads to where Groton's first trading post, built by John Tinker himself, was located.
History of the John Tinker Trading Post


Solid is an exciting new project led by Prof. Tim Berners-Lee, inventor of the World Wide Web, taking place at MIT. The project aims to radically change the way Web applications work today, resulting in true data ownership as well as improved privacy.
Solid (derived from "social linked data") is a proposed set of conventions and tools for building decentralized social applications based on Linked Data principles. Solid is modular and extensible and it relies as much as possible on existing W3C standards and protocols.
At a glance, here is what Solid offers...
Users should have the freedom to choose where their data resides and who is allowed to access it by decoupling content from the application itself.
Because applications are decoupled from the data they produce, users will be able to avoid vendor lock-in by seamlessly switching the apps and personal data storage servers, without losing any data or social connections.
Developers will be able to easily innovate by creating new apps or improving current apps, all while reusing existing data that was created by other apps.
Here are a few examples of prototype applications we have built using the Solid stack.
As the project director, but also as a web developer, Tim Berners-Lee is involved in the overall planning and evolution of Solid.
Lalana is the project manager, but she also keeps an eye on the research aspects of the project.
Amy was a PhD visiting student at MIT from the University of Edinburgh in 2015-2016. She lead the bridging of the Solid concepts with the W3C Social Web WG, and co-lead the development of the Linked Data Notifications (LDN) protocol.
Andrei was a researcher and developer for the Solid project. His time is spent between writing code and helping advance the Solid project.
Nicola is currently a PhD student at MIT, visiting Protocol Labs for a year from 2017-09. He was also a lead developer for the reference implementation of the Solid server.
Sarven was a PhD visiting student at MIT from the University of Bonn in 2015-2016. He co-lead the development of LDN and works on dokieli.


Thanks for your interest! I'll get back to you as soon as possible!
Click here to return to the homepage.


Photo by Simon Salt
| Name | Mollie Taylor |
| Date | September 2014 |
| Part of | The Wilderness Act Performance Series |
| Location | Outdoor Activity Center |
| Description | For the last three years, I've been documenting Atlanta's intown parks through photos and maps. Therefore, the idea of an event with Atlanta's wildernesses as its theme naturally excited me. I wanted to learn more about these greenspaces and to have the chance to share my knowledge and views with others. While these parks aren't what we typically think of as "wildernesses," there are certainly elements of the wild present in them, from muskrats and deer and blue herons to native Piedmont trees that are hundreds of years old. They also provide spaces for quiet reflection away from frantic city life and traffic, a valuable resource for our city. During the field seminars, we learned about Atlanta's watersheds and about how our urban environment and living impacts the natural environment of creeks. We also learned how greenspaces can help to mitigate our impact. My watershed maps are a result of these discussions. |


Django builder is free to use, and a personal project worked on in my spare time. Any donations are very much appreciated.
1J7JaUA5YhowVNtWCEoSh2tUD7pVJQfwcx


Searches for the given term in function names only. Per default returns a list of all function names which include the search term. These names can then be used to retrieve methods for a explicit function using the 'findMethodsForFunction' resource.
Given the fully qualified name of the function it will return a list of Julia method signatures which exist for the given function. The results can then be used to retrieve a particular implementation with source code for a particular method using the 'getImplementationForMethod' resource.
Allows for parameterized retrieval of source code of a method. Since there might be several implementations of the same method the user can decide if he wants to choose the most popular, the most recent, the fastest or most memory-efficient implementation.


name: title class: center, middle, inverse # multi**vis** ### Meg Pirrung #### Technical Talk --- name: overview-what layout: false .full-width[ # overiew ] .left-column[ ### what ] .right-column[ ### multiple visualizations of the same underlying (microbial ecology) data* .footnote[*any .json properly formatted data] ] --- name: overview-why layout: false .full-width[ # overiew ] .left-column[ ### what ### why ] .right-column[ ### different people visualize data in different ways ![Multiple Visualizations of the Same Data](./img/diffvis.png) ] --- name: overview-how layout: false .full-width[ # overiew ] .left-column[ ### what ### why ### how ] .right-column[ ### to use it? ] --- class: center, middle, inverse ## what is multivis? --- class: center, middle, inverse ## what is **multi**vis? ??? # multiple --- class: center, middle, inverse ## what is multi**vis**? ??? # visualizations of the same underlying data --- name: what-tools1 layout: false .full-width[ # what is multi**vis** ] .left-column[ ### .html ] .right-column[ ### framing ] --- name: what-tools2 layout: false .full-width[ # what is multi**vis** ] .left-column[ ### .html ### .css ] .right-column[ ### styling ] --- name: what-tools3 layout: false .full-width[ # what is multi**vis** ] .left-column[ ### .html ### .css ### .js ] .right-column[ ### heavy lifting ### jQuery ### d3.js ### three.js ] ??? # three.js WebGL based --- name: what-tools4 layout: false .full-width[ # what is multi**vis** ] .left-column[ ### .html ### .css ### .js ### .php* ] .right-column[ ### admin ### logging ### unique IDs .footnote[*only on surveyOption1 branch] ] ??? # used for survey-based visualization research --- name: what-features1 layout: false .full-width[ # multi**vis** features ] .left-column[ ### compatibility ] .right-column[ ### tested in major web browsers (chrome, safari, firefox, IE) ] --- name: what-features2 layout: false .full-width[ # multi**vis** features ] .left-column[ ### compatibility ### admin capabilities ] .right-column[ ### admin mode for quick debugging .footnote[*only on surveyOption1 branch] ] --- name: what-features2 layout: false .full-width[ # multi**vis** features ] .left-column[ ### compatibility ### admin capabilities ### survey embedding ] .right-column[ ### easily embed SurveyMonkey surveys with unique ID capabilities ] --- name: what-screens1 layout: false .full-width[ # multi**vis** hierarchical data views ] ??? demo --- name: what-screens2 layout: false .full-width[ # multi**vis** abundance data views ] ??? demo --- name: what-screens3 layout: false .full-width[ # multi**vis** multi-dimensional data views ] ??? demo --- class: center, middle, inverse ## why create multi**vis**? --- name: why-easy1 layout: false .full-width[ # why create multi**vis** ] .left-column[ ### easy ] .right-column[ ### click buttons instead of re-running scripts ] --- name: why-easy2 layout: false .full-width[ # why create multi**vis** ] .left-column[ ### easy ] .right-column[ ### click buttons instead of re-running scripts ### web-based, easy install ] --- name: why-modular1 layout: false .full-width[ # why create multi**vis** ] .left-column[ ### easy ### modular ] .right-column[ ### written in object-oriented javascript for ease of embedding ] --- name: why-modular2 layout: false .full-width[ # why create multi**vis** ] .left-column[ ### easy ### modular ] .right-column[ ### written in object-oriented javascript for ease of embedding ### web-based scientific data visualization ] --- name: why-modular3 layout: false .full-width[ # why create multi**vis** ] .left-column[ ### easy ### modular ] .right-column[ ### written in object-oriented javascript for ease of embedding ### web-based scientific data visualization ### survey-based visualization research ] --- class: center, middle, inverse ## how to use multi**vis**? --- class: center, middle, inverse ## using multi**vis** for quick vis --- name: how-general-resources1 .full-width[ # using multi**vis** for quick vis ] .left-column[ ### resources ] .right-column[ ### web-browser ] --- name: how-general-resources2 .full-width[ # using multi**vis** for quick vis ] .left-column[ ### resources ] .right-column[ ### web-browser ### multivis repo ] --- name: how-general-resources3 .full-width[ # using multi**vis** for quick vis ] .left-column[ ### resources ] .right-column[ ### web-browser ### multivis repo ### minimal html/javascript coding ] --- name: how-general-resources4 .full-width[ # using multi**vis** for quick vis ] .left-column[ ### resources ] .right-column[ ### web-browser ### multivis repo ### minimal html/javascript coding ### .json formatted dataset ] --- name: how-general-code .full-width[ # using multi**vis** for quick vis ] .left-column[ ### resources ### html code ] .right-column[ ```html
``` ```html
``` ] ??? demo --- name: how-survey class: center, middle, inverse .full-width[ # using multi**vis** for visualization research ] --- name: how-survey-intro1 class: center, middle .full-width[ ![Different vis for Different Populations](./img/populations.png) ] ??? # Need to communicate scientific research to different populations # Visualization is key to scientific data analysis # Making science understandable keeps research funded and inspires the next generation of scientists --- name: how-survey-intro2 class: center, middle .full-width[ ![Different vis for Different Populations](./img/populationvis.png) ] ??? # visualizations familiar to scientists are not familiar to the general public --- name: how-survey-intro3 class: center, middle .full-width[ ### How can we figure out which visualizations are most effective? ] --- name: how-survey-intro3 class: center, middle .full-width[ ## *Hypothesis:* # Useful and informative visualizations for scientific communication can be determined experimentally ] --- name: how-experimentaldesign class: center, middle .full-width[ ![Experimental Design](./img/expdesign1.png) ] ??? same underlying data --- name: how-experimentaldesign class: center, middle .full-width[ ![Experimental Design](./img/expdesign2.png) ] ??? system to visualize in different ways (multivis) --- name: how-experimentaldesign class: center, middle .full-width[ ![Experimental Design](./img/expdesign3.png) ] ??? questions about the underlying data --- name: how-experimentaldesign class: center, middle .full-width[ ![Experimental Design](./img/expdesign4.png) ] ??? put the system and questions together --- name: how-experimentaldesign class: center, middle .full-width[ ![Experimental Design](./img/expdesign5.png) ] ??? in this web-based framework --- name: how-experimentaldesign class: center, middle .full-width[ ![Experimental Design](./img/expdesign6.png) ] ??? score the questions --- name: how-experimentaldesign class: center, middle .full-width[ ![Experimental Design](./img/expdesign7.png) ] ??? for each visualization --- name: how-experimentaldesign class: center, middle .full-width[ ![Experimental Design](./img/expdesign8.png) ] ??? average performance score in certain populations surveyed --- name: how-survey-resources layout: false .full-width[ # using multi**vis** for visualization research ] .left-column[ ### resources ] .right-column[ ### html/javascript coding ### .json formatted dataset ### SurveyMonkey survey ] ??? any embedable online survey system --- name: how-survey class: center, middle .full-width[ ![Survey Screenshot](./img/surveyscreenshot.png) ] ??? demo --- name: how-survey class: center, middle .full-width[ # http://tinyurl.com/vissurvey-cv ] --- name: how-survey-resources layout: false .full-width[ # multi**vis** ] .left-column[ ### features ] .right-column[ ### web-based ] --- name: how-survey-resources layout: false .full-width[ # multi**vis** ] .left-column[ ### features ] .right-column[ ### web-based ### modular ] --- name: how-survey-resources layout: false .full-width[ # multi**vis** ] .left-column[ ### features ] .right-column[ ### web-based ### modular ### accessible ] --- name: how-survey-resources layout: false .full-width[ # multi**vis** ] .left-column[ ### features ### uses ] .right-column[ ### quick vis ] --- name: how-survey-resources layout: false .full-width[ # multi**vis** ] .left-column[ ### features ### uses ] .right-column[ ### quick vis ### survey-based visualization research ] --- name: how-contribute .full-width[ # opensource on [github](https://github.com/meganap/multivis/) ] --- name: how-contribute .full-width[ # opensource on [github](https://github.com/meganap/multivis/) ## licensed under MIT ] --- name: how-contribute .full-width[ # opensource on [github](https://github.com/meganap/multivis/) ## licensed under MIT ## collaboration ] --- name: how-contribute .full-width[ # opensource on [github](https://github.com/meganap/multivis/) ## licensed under MIT ## collaboration ## feature requests & bug reports ] --- name: how-contribute class: center, middle .full-width[ # questions ? ![Thanks](./img/thanks.jpg) ]


@Api class SgfController : SgfInputListener
(source)
Controls interaction between an SgfViewAdapter and SgfTree objects.
The typical call would be SgfController().load(someSgfString).into(someSgfView)
. This creates an
SgfTree from the given string and loads its current representation into the view. The controller
handles the touch events from the view and supplies it with new data to display accordingly.
For this task, the controller consists of three components:
If you want to change anything about the way the nodes are processed, you need to modify the SgfNodeHandler.
InteractionMode |
How the user can interact with the SgfViewAdapter controlled by this SgfController. enum class InteractionMode |
<init> |
Controls interaction between an SgfViewAdapter and SgfTree objects. SgfController(showVariations: Boolean? = null, interactionMode: InteractionMode = InteractionMode.FREE_PLAY) |
interactionMode |
specifies how the user can interact with the controlled SgfViewAdapter, one of InteractionMode var interactionMode: InteractionMode |
sgfViewAdapter |
the SgfViewAdapter to control var sgfViewAdapter: SgfViewAdapter? |
showVariations |
whether or not to hint at the possible variations, overrides the settings
by the var showVariations: Boolean? |
into |
Loads the SgfTree into the adapter and subscribes to it as SgfInputListener. fun into(adapter: SgfViewAdapter): Unit |
load |
Sets up parser and navigator for the sgfString, returning this SgfController for convenience. fun load(sgfString: String): SgfController |
onMove |
Play the move, or loads the variation at the given variationIndex if this is not fun onMove(move: Move, variationIndex: Int?): Unit |
onRedo |
Redoes the last undone move, if any, or plays the main variation otherwise. fun onRedo(): Unit |
onUndo |
Undoes the last move, regardless of whether it is part of the fun onUndo(): Unit |


During the last two decades there has been a swift and amazing development of Machine Learning techniques and algorithms that impact many areas in not only Science and Technology but also the Humanities, Social Sciences, Medicine, Law, indeed, almost all possible disciplines. The applications are incredibly many, from self-driving cars to solving high-dimensional differential equations or complicated quantum mechanical many-body problems. Machine Learning is perceived by many as one of the main disruptive techniques nowadays.
Statistics, Data science and Machine Learning form important fields of research in modern science. They describe how to learn and make predictions from data, as well as allowing us to extract important correlations about physical process and the underlying laws of motion in large data sets. The latter, big data sets, appear frequently in essentially all disciplines, from the traditional Science, Technology, Mathematics and Engineering fields to Life Science, Law, education research, the Humanities and the Social Sciences.
It has become more and more common to see research projects on big data in for example the Social Sciences where extracting patterns from complicated survey data is one of many research directions. Having a solid grasp of data analysis and machine learning is thus becoming central to scientific computing in many fields, and competences and skills within the fields of machine learning and scientific computing are nowadays strongly requested by many potential employers. The latter cannot be overstated, familiarity with machine learning has almost become a prerequisite for many of the most exciting employment opportunities, whether they are in bioinformatics, life science, physics or finance, in the private or the public sector. This author has had several students or met students who have been hired recently based on their skills and competences in scientific computing and data science, often with marginal knowledge of machine learning.
Machine learning is a subfield of computer science, and is closely related to computational statistics. It evolved from the study of pattern recognition in artificial intelligence (AI) research, and has made contributions to AI tasks like computer vision, natural language processing and speech recognition. Many of the methods we will study are also strongly rooted in basic mathematics and physics research.
Ideally, machine learning represents the science of giving computers the ability to learn without being explicitly programmed. The idea is that there exist generic algorithms which can be used to find patterns in a broad class of data sets without having to write code specifically for each problem. The algorithm will build its own logic based on the data. You should however always keep in mind that machines and algorithms are to a large extent developed by humans. The insights and knowledge we have about a specific system, play a central role when we develop a specific machine learning algorithm.
Machine learning is an extremely rich field, in spite of its young age. The increases we have seen during the last three decades in computational capabilities have been followed by developments of methods and techniques for analyzing and handling large date sets, relying heavily on statistics, computer science and mathematics. The field is rather new and developing rapidly. Popular software packages written in Python for machine learning like Scikit-learn, Tensorflow, PyTorch and Keras, all freely available at their respective GitHub sites, encompass communities of developers in the thousands or more. And the number of code developers and contributors keeps increasing. Not all the algorithms and methods can be given a rigorous mathematical justification, opening up thereby large rooms for experimenting and trial and error and thereby exciting new developments. However, a solid command of linear algebra, multivariate theory, probability theory, statistical data analysis, understanding errors and Monte Carlo methods are central elements in a proper understanding of many of algorithms and methods we will discuss.
These sets of lectures aim at giving you an overview of central aspects of statistical data analysis as well as some of the central algorithms used in machine learning. We will introduce a variety of central algorithms and methods essential for studies of data analysis and machine learning.
Hands-on projects and experimenting with data and algorithms plays a central role in these lectures, and our hope is, through the various projects and exercises, to expose you to fundamental research problems in these fields, with the aim to reproduce state of the art scientific results. You will learn to develop and structure codes for studying these systems, get acquainted with computing facilities and learn to handle large scientific projects. A good scientific and ethical conduct is emphasized throughout the course.  An important aspect of all our calculations is a proper estimation of errors. Here we will also discuss famous resampling techniques like the blocking, the bootstrapping and the jackknife methods and the infamous bias-variance tradeoff.
The second part of the material covers several algorithms used in machine learning.
Ideally, machine learning represents the science of giving computers the ability to learn without being explicitly programmed. The idea is that there exist generic algorithms which can be used to find patterns in a broad class of data sets without having to write code specifically for each problem. The algorithm will build its own logic based on the data. You should however always keep in mind that machines and algorithms are to a large extent developed by humans. The insights and knowledge we have about a specific system, play a central role when we develop a specific machine learning algorithm.
Machine learning is an extremely rich field, in spite of its young age. The increases we have seen during the last decades in computational capabilities have been followed by developments of methods and techniques for analyzing and handling large date sets, relying heavily on statistics, computer science and mathematics. The field is rather new and developing rapidly. Popular software libraries written in Python for machine learning like Scikit-learn, Tensorflow, PyTorch and Keras, all freely available at their respective GitHub sites, encompass communities of developers in the thousands or more. And the number of code developers and contributors keeps increasing.
Not all the algorithms and methods can be given a rigorous mathematical justification (for example decision trees and random forests), opening up thereby large rooms for experimenting and trial and error and thereby exciting new developments. However, a solid command of linear algebra, multivariate theory, probability theory, statistical data analysis, understanding errors and Monte Carlo methods are central elements in a proper understanding of many of the algorithms and methods we will discuss.
The approaches to machine learning are many, but are often split into two main categories. In supervised learning we know the answer to a problem, and let the computer deduce the logic behind it. On the other hand, unsupervised learning is a method for finding patterns and relationship in data sets without any prior knowledge of the system. Some authours also operate with a third category, namely reinforcement learning. This is a paradigm of learning inspired by behavioral psychology, where learning is achieved by trial-and-error, solely from rewards and punishment.
Another way to categorize machine learning tasks is to consider the desired output of a system. Some of the most common tasks are:
The methods we cover have three main topics in common, irrespective of whether we deal with supervised or unsupervised learning.
At the heart of basically all Machine Learning algorithms we will encounter so-called minimization or optimization algorithms. A large family of such methods are so-called gradient methods.
When you hear phrases like predictions and estimations and correlations and causations, what do you think of? May be you think of the difference between classifying new data points and generating new data points. Or perhaps you consider that correlations represent some kind of symmetric statements like if \( A \) is correlated with \( B \), then \( B \) is correlated with \( A \). Causation on the other hand is directional, that is if \( A \) causes \( B \), \( B \) does not necessarily cause \( A \).
These concepts are in some sense the difference between machine learning and statistics. In machine learning and prediction based tasks, we are often interested in developing algorithms that are capable of learning patterns from given data in an automated fashion, and then using these learned patterns to make predictions or assessments of newly given data. In many cases, our primary concern is the quality of the predictions or assessments, and we are less concerned about the underlying patterns that were learned in order to make these predictions.
In machine learning we normally use a so-called frequentist approach, where the aim is to make predictions and find correlations. We focus less on for example extracting a probability distribution function (PDF). The PDF can be used in turn to make estimations and find causations such as given \( A \) what is the likelihood of finding \( B \).
In science and engineering we often end up in situations where we want to infer (or learn) a quantitative model \( M \) for a given set of sample points \( \boldsymbol{X} \in [x_1, x_2,\dots x_N] \).
As we will see repeatedely in these lectures, we could try to fit these data points to a model given by a straight line, or if we wish to be more sophisticated to a more complex function.
The reason for inferring such a model is that it serves many useful purposes. On the one hand, the model can reveal information encoded in the data or underlying mechanisms from which the data were generated. For instance, we could discover important corelations that relate interesting physics interpretations.
In addition, it can simplify the representation of the given data set and help us in making predictions about future data samples.
A first important consideration to keep in mind is that inferring the correct model for a given data set is an elusive, if not impossible, task. The fundamental difficulty is that if we are not specific about what we mean by a correct model, there could easily be many different models that fit the given data set equally well.
The central question is this: what leads us to say that a model is correct or optimal for a given data set? To make the model inference problem well posed, i.e., to guarantee that there is a unique optimal model for the given data, we need to impose additional assumptions or restrictions on the class of models considered. To this end, we should not be looking for just any model that can describe the data. Instead, we should look for a model \( M \) that is the best among a restricted class of models. In addition, to make the model inference problem computationally tractable, we need to specify how restricted the class of models needs to be. A common strategy is to start with the simplest possible class of models that is just necessary to describe the data or solve the problem at hand. More precisely, the model class should be rich enough to contain at least one model that can fit the data to a desired accuracy and yet be restricted enough that it is relatively simple to find the best model for the given data.
Thus, the most popular strategy is to start from the simplest class of models and increase the complexity of the models only when the simpler models become inadequate. For instance, if we work with a regression problem to fit a set of sample points, one may first try the simplest class of models, namely linear models, followed obviously by more complex models.
How to evaluate which model fits best the data is something we will come back to over and over again in these set of lectures.
Python plays nowadays a central role in the development of machine learning techniques and tools for data analysis. In particular, seen the wealth of machine learning and data analysis libraries written in Python, easy to use libraries with immediate visualization(and not the least impressive galleries of existing examples), the popularity of the Jupyter notebook framework with the possibility to run R codes or compiled programs written in C++, and much more made our choice of programming language for this series of lectures easy. However, since the focus here is not only on using existing Python libraries such as Scikit-Learn, Tensorflow and Pytorch, but also on developing your own algorithms and codes, we will as far as possible present many of these algorithms either as a Python codes or C++ or Fortran (or other languages) codes.
In most of the cases we will study, we will either generate the data to analyze ourselves (both for supervised learning and unsupervised learning) or we will recur again and again to data present in say Scikit-Learn or Tensorflow. Many of the examples we end up dealing with are from a privacy and data protection point of view, rather inoccuous and boring results of numerical calculations. However, this does not hinder us from developing a sound ethical attitude to the data we use, how we analyze the data and how we handle the data.
The most immediate and simplest possible ethical aspects deal with our approach to the scientific process. Nowadays, with version control software like Git and various online repositories like Github, Gitlab etc, we can easily make our codes and data sets we have used, freely and easily accessible to a wider community. This helps us almost automagically in making our science reproducible. The large open-source development communities involved in say Scikit-Learn, Tensorflow, PyTorch and Keras, are all excellent examples of this. The codes can be tested and improved upon continuosly, helping thereby our scientific community at large in developing data analysis and machine learning tools. It is much easier today to gain traction and acceptance for making your science reproducible. From a societal stand, this is an important element since many of the developers are employees of large public institutions like universities and research labs. Our fellow taxpayers do deserve to get something back for their bucks.
However, this more mechanical aspect of the ethics of science (in particular the reproducibility of scientific results) is something which is obvious and everybody should do so as part of the dialectics of science. The fact that many scientists are not willing to share their codes or data is detrimental to the scientific discourse.
Before we proceed, we should add a disclaimer. Even though we may dream of computers developing some kind of higher learning capabilities, at the end (even if the artificial intelligence community keeps touting our ears full of fancy futuristic avenues), it is we, yes you reading these lines, who end up constructing and instructing, via various algorithms, the machine learning approaches. Self-driving cars for example, rely on sofisticated programs which take into account all possible situations a car can encounter. In addition, extensive usage of training data from GPS information, maps etc, are typically fed into the software for self-driving cars. Adding to this various sensors and cameras that feed information to the programs, there are zillions of ethical issues which arise from this.
For self-driving cars, where basically many of the standard machine learning algorithms discussed here enter into the codes, at a certain stage we have to make choices. Yes, we , the lads and lasses who wrote a program for a specific brand of a self-driving car. As an example, all carmakers have as their utmost priority the security of the driver and the accompanying passengers. A famous European carmaker, which is one of the leaders in the market of self-driving cars, had if statements of the following type: suppose there are two obstacles in front of you and you cannot avoid to collide with one of them. One of the obstacles is a monstertruck while the other one is a kindergarten class trying to cross the road. The self-driving car algo would then opt for the hitting the small folks instead of the monstertruck, since the likelihood of surving a collision with our future citizens, is much higher.
This leads to serious ethical aspects. Why should we opt for such an option? Who decides and who is entitled to make such choices? Keep in mind that many of the algorithms you will encounter in this series of lectures or hear about later, are indeed based on simple programming instructions. And you are very likely to be one of the people who may end up writing such a code. Thus, developing a sound ethical attitude to what we do, an approach well beyond the simple mechanistic one of making our science available and reproducible, is much needed. The example of the self-driving cars is just one of infinitely many cases where we have to make choices. When you analyze data on economic inequalities, who guarantees that you are not weighting some data in a particular way, perhaps because you dearly want a specific conclusion which may support your political views? Or what about the recent claims that a famous IT company like Apple has a sexist bias on the their recently launched credit card?
We do not have the answers here, nor will we venture into a deeper discussions of these aspects, but we want you think over these topics in a more overarching way. A statistical data analysis with its dry numbers and graphs meant to guide the eye, does not necessarily reflect the truth, whatever that is. As a scientist, and after a university education, you are supposedly a better citizen, with an improved critical view and understanding of the scientific method, and perhaps some deeper understanding of the ethics of science at large. Use these insights. Be a critical citizen. You owe it to our society.


Michael's Notes
Introductory Concepts
The Basics of The Internet
The World Wide Web is a vast collection of documents that are comprised of HTML or HyperText Markup Language. HTML is essentially what "glues" everything together as the main type of document on the Web.
HTML - HyperText Markup Language
HTML is made up of:
- Text content (what you see)
- Markup (what it looks like)
- References to other documents (i.e images, videos, etc.)
- Links to other pages
Introductory Lesson: Keys to Remember
- Computers are dumb.
- The Internet was invented in the early 1990's and is comprised of some 30 billion pages.
- Elements: everything within a set of opening and closing tags
- Attribute: property of HTML element
- If unsure about which tag to use when coding be sure to reference HTML tags to solve the dilemma.


--- layout: post title: The Sims as a learning environment date: 2005-01-04 00:00:00 category: play ---
Modifying The Sims to turn it into a learning environment: "...a modification to the number one selling video game The Sims that intelligently combines game data from the English edition with data from editions of other languages to form a bilingual gaming environment. This exposes learners to abundant L2 vocabulary, yet still provides enough L1 support not to detract from the game."


Estimation¶
Our goal is to estimate the parameter \(\theta\) of a copula, where \(X_1, ..., X_d\) are random variables associated to the marginals. We denote \(F_1, ..., F_d\) the cumulative distribution functions (CDF) and \(f_1, ..., f_d\) the probability density functions (PDF), if it exists, of those random variables. Most of estimation methods involve likelihood function \(L\), that we can easily get using the expression of copula’s density \(c\) :
To fit the copulas, we use a dataset \(\mathbf{x}=\left \{(x_{i1}, ..., x_{id}) \right \}_{1 \leq i \leq n}\) and the log-likelihood function will refer to \(\mathcal{L}(\mathbf{x}_i)=\log L(\mathbf{x}_i)\).
Maximum Likelihood Estimation (MLE)¶
-
estimation.
mle
(copula, X, marginals, hyper_param, hyper_param_start=None, hyper_param_bounds=None, theta_start=[0], theta_bounds=None, optimize_method='Nelder-Mead', bounded_optimize_method='SLSQP')¶ Computes the MLE on specified data.
Parameters: copula : Copula
The copula.
X : numpy array (of size n * copula dimension)
The data to fit.
marginals : numpy array
The marginals distributions. Use scipy.stats distributions or equivalent that requires pdf and cdf functions according to rv_continuous class from scipy.stat.
hyper_param : numpy array
The hyper-parameters for each marginal distribution. Use None when the hyper-parameter is unknow and must be estimated.
hyper_param_start : numpy array
The start value of hyper-parameters during optimization. Must be same dimension of hyper_param.
hyper_param_bounds : numpy array
Allowed values for each hyper-parameter.
theta_start : numpy array
Initial value of theta in optimization algorithm.
theta_bounds : couple
Allowed values of theta.
optimize_method : str
The optimization method used in SciPy minimization when no theta_bounds was specified.
bounded_optimize_method : str
The optimization method used in SciPy minimization under constraints.
Returns: optimizeResult : OptimizeResult
The optimization result returned from SciPy.
estimatedHyperParams : numpy array
The estimated hyper-parameters.
The MLE objective is to maximize the log-likelihood function over all parameters and hyper-parameters of marginals. We suppose that \(X_j \sim f(\beta_j)\) where \(\beta_j\) is an hyper-parameter of the copula. The MLE will then return the copula’s parameter and all estimated hyper-parameters at the same time. The estimated parameters \(\hat{\theta}, \hat{\beta}_1, ..., \hat{\beta}_d\) are solution to the following optimization problem.
For instance, suppose that we would like to fit a copula thanks to MLE method where \(X_1 \sim Gamma(\alpha, 1.2)\) and \(X_2 \sim Exp(\lambda)\) with \(\alpha > 0\) and \(\lambda > 0\). Then we would write the following code :
mle(copula, X, marginals=[ scipy.stats.gamma, scipy.stats.expon ], hyper_param=[ { 'a': None, 'scale': 1.2 }, { 'scale': None } ], hyper_param_bounds=[ [0, None], [0, None]])
Use None to consider an hyper-parameter as unknown and None to define \(\pm \infty\) in hyper-parameters bounds. Here is a detailled example on how to fit a Clayton copula with MLE.
clayton = ArchimedeanCopula(family="clayton", dim=2)
boundAlpha = [0, None] # Greater than 0
boundLambda = [0, None]
bounds = [ boundAlpha, boundLambda ]
paramX1 = { 'a': None, 'scale': 1.2 } # Hyper-parameters of Gamma
paramX2 = { 'scale': None } # Hyper-parameters of Exp
hyperParams = [ paramX1, paramX2 ] # The hyper-parameters
gamma = scipy.stats.gamma # The Gamma distribution
expon = scipy.stats.expon # The Exponential distribution
# Fitting copula with MLE method and Gamma/Exp marginals distributions
clayton.fit(data, method='mle', marginals=[gamma, exp], hyper_param=hyperParams, hyper_param_bounds=bounds)
Keep in mind that, in case where there are many hyper-parameters, the computational cost can be extremely high.
Inference Functions for Margins (IFM)¶
-
estimation.
ifm
(copula, X, marginals, hyper_param, hyper_param_start=None, hyper_param_bounds=None, theta_start=0, theta_bounds=None, optimize_method='Nelder-Mead', bounded_optimize_method='SLSQP')¶ Computes the IFM estimation on specified data.
Parameters: copula : Copula
The copula.
X : numpy array (of size n * copula dimension)
The data to fit.
marginals : numpy array
The marginals distributions. Use scipy.stats distributions or equivalent that requires pdf and cdf functions according to rv_continuous class from scipy.stat.
hyper_param : numpy array
The hyper-parameters for each marginal distribution. Use None when the hyper-parameter is unknow and must be estimated.
hyper_param_start : numpy array
The start value of hyper-parameters during optimization. Must be same dimension of hyper_param.
hyper_param_bounds : numpy array
Allowed values for each hyper-parameter.
theta_start : float
Initial value of theta in optimization algorithm.
theta_bounds : couple
Allowed values of theta.
optimize_method : str
The optimization method used in SciPy minimization when no theta_bounds was specified.
bounded_optimize_method : str
The optimization method used in SciPy minimization under constraints
Returns: optimizeResult : OptimizeResult
The optimization result returned from SciPy.
estimatedHyperParams : numpy array
The estimated hyper-parameters
The difference with the previous method is that hyper-parameters are estimated independently from the copula’s parameter.
Then, our observations \(\mathbf{x}\) are transformed into uniform variables \(\mathbf{u}\).
Finally, as we did before, we compute the likelihood function and use optimization algorithm to estimate the parameter \(\theta\).
The specifications of this method are the same of MLE, and you can use this method calling fitting process.
clayton.fit(data, method='ifm', marginals=[gamma, exp], hyper_param=hyperParams, hyper_param_bounds=bounds)
Canonical Maximum Likelihood Estimation (CMLE)¶
-
estimation.
cmle
(log_lh, theta_start=0, theta_bounds=None, optimize_method='Nelder-Mead', bounded_optimize_method='SLSQP')¶ Computes the CMLE on a specified log-likelihood function.
Parameters: log_lh : Function
The log-likelihood.
theta_start : float
Initial value of theta in optimization algorithm.
theta_bounds : couple
Allowed values of theta.
optimize_method : str
The optimization method used in SciPy minimization when no theta_bounds was specified.
bounded_optimize_method : str
The optimization method used in SciPy minimization under constraints
Returns: OptimizeResult
The optimization result returned from SciPy.
This semi-parametric method does not require to specify the marginals distributions of the copula. Indeed, instead of estimating the hyper-parameters, the empirical CDF \(\hat{F}_j\) for each random variable is computed and observations \(\mathbf{x}\) are transformed into uniform variables \(\mathbf{u}\).
Estimating the parameter of the copula is then applied maximizing log-likelihood on transformed data.
Since CMLE does not require marginal distributions, using this method is quite easy. For instance, on the Clayton copula :
clayton.fit(data, method='cmle')


The only ptatform to choose your desired advertiser.
{% endif %}
{% if user.is_authenticated %}
Available slots for Newspaper Advertisements
{% for ad in filter.qs %}
{% if ad.is_accepted == 0 and ad.is_paid == 0 %}
{% if ad.publisher.publisher_type != "" %}
{% if ad.publisher.is_customer == 0 %}
BD-Ads has simplified and given a complete makeover to the whole process of booking ads for different media platforms. Now there is no need for you to travel all the way to the respective offices. Nor do you need to write messages manually on forms. BD-Ads lets you do all this and more from the comfort of your home, office or even when you’re travelling.
BD-Ads has time and again proven itself to be an excellent platform for booking advertisements in any national and regional newspapers. You can choose from a variety of publications keeping in view your target audience, then select the category that suits your classified ad, and pay through a secure gateway. Advertisements in leading newspapers like Prothom Alo, The Daily Star, Ittefaq, Kaler Kantho, Bangladesh Pratidin and Samakal amongst others can be booked with the help of BD-Ads.
Customers can easily book different types of advertisements like Matrimonial, Recruitment, Property, Education, and Obituary ads by utilizing our services at reasonable prices. In addition, customized packages and proper media planning are also offered through us. We help you place your advertisements in magazines, in television and cinema, and through the digital medium.
Come experience the easy, quick and effortless way of booking ads now!


This record stores the status of the forced calculation mode for the current workbook.
|
Offset |
Name |
Size |
Contents |
|
4 |
rt |
2 |
Record type; this matches the BIFF rt in the first two bytes of the record; =08A3h |
|
6 |
grbitFrt |
2 |
FRT cell reference flag; =0 currently |
|
8 |
(Reserved) |
8 |
Currently not used, and set to 0 |
|
16 |
fNoDeps |
4 |
=1 if the workbook is in the forced calculation mode, in which case dependencies are ignored, and all worksheets are marked to calculate fully every time the calculation is triggered. Stored as 4-byte integer value |


{{ partial "default/header" . }}
Collaborators view or edit only selected parts of projects without being exposed to unnecessary details or sensitive information.
Single source of truth is established by tracking inputs, history of changes, scenarios, sensitivities, simulations, conversations, and supporting documentation in a single place that tells a story where nobody can overwrite other’s work.
Analyses, presentations and calculators, dashboards, financial statements and KPI reports are dynamically driven by spreadsheets, built and shared in minutes without experts or moving data across tools.
Risk of errors is reduced with automated ‘What-If’ analysis and Financial Statements.
{{ .description | markdownify }}
{{ end }}| SPREADSHEETS + ADDONS | COLLABORATIVE SPREADSHEETS | FILE SHARING TOOLS | DATA VISUALIZATION | FINANCIAL APPS | ||
| Spreadsheet, debug and audit | ||||||
| Selective sharing and workflows on a single source of truth | ||||||
| Collaborative what-if analysis in real time | ||||||
| Spreadsheet driven interactive presentations and reports | ||||||
| Cost / Value |


The sticky masses model is built in Ptolemy II using the continuous time (CT) domain and the finite state machine (FSM) domain. The top-level block diagram is shown in the figure below:
The refinement for the Separate state models the situation where the point masses are separate, and is shown below:
The refinement for the Together state models the situation where the point masses are together, and is shown below:


Enter? (yes/no) (Type 'help' for a quick tutorial)


Example website for JPA Queries in XML configuration
Add a new entity
Created by
*
:
Query entites by creator
Created by
*
:


{% extends "base.html" %} {% block title %}
This is a demo for a NeuroVault annotation portal. We can streamline this workflow, integrated with the hypothes.is API, and (possibly) integrate it into NeuroVault.
The collections data comes by way of a pandas dataframe, which is retrieved directly from the NeuroVault API. The collection metadata is loaded from a pickle file to maximize performance, however the images metadata is retrieved in real time.
You first need to sign up for a hypothes.is account, download the browser plugin, and activate it.
The main portal will allow you to choose a collection to annotate. You can use the "Quick View" to see if there are annotations missing. Under the collections view, you can view annotations (metadata) for the individual images, or the entire collection. Red highlight indicates that the annotation is missing. For example, here we have a missing value:
We can then follow the "Annotate" button to go to the page, and make an annotation. To annotate a collection field, you should make a single annotation that has the value for the annotation in the top text box, and the tag for it in the "tags" box. To annotate an image, you must add the image id, which is shown in the top right of the box above, also as a tag. For example, here is how I would annotate "smoothness_fwhm" for image id 111:
Once you do the annotation, if you refresh the collection page, you will see the value filled in. If you annotate a value that already exists, it will not be overwritten.
We want to do our annotations based on a standard terminology, both for contrasts from the Cognitive Atlas, and images from NeuroVault. We (Hypothes.is and Poldracklab) are working on an annotation interface that is aware of both images in a collection, and tasks/contrasts in the Cognitive Atlas. For now the tags are open response, and it is your job to write in the correct field name for your annotation. An incorrect tag or annotation will not show up in the interface.
When the main page is rendered, it programatically retrieves a json that has annotations for all of the collections. In the case that an annotation has been made, it will fill in the value of the data frame, and the interface will be updated that the annotation is no longer needed. In some "actual" implementation, we would have these annotations getting added to the appropriate fields in the NeuroVault database. For now they live in the Hypothes.is database.
{% endblock %}


Home
Registered Courses
Sign Out
Register Course
Course Code
Course Title
Course Requirements
Maths, English, Kiswahili, Chemistry, 85pts
Maths, English, Physics, Geography, 80pts
Maths, 2Science, History, 70pts
==Your Registered Courses==
Course Code
Course Title
Jill
Smith
Eve
Jackson
Adam
Johnson
Kisma
Jibril


Spectre comes with built-in development server. Its main purpose is to monitor source files in you app’s folder and reload them when something has been changed, so you’ll see a new version in your browser with no need to restart server manually.
To run development server, you’ll need Spectre installed (see Installing Spectre). Execute the following in your command prompt:
>>> spectre rundevserver <path_to_your_app_folder>
[20:09:47 23-Nov-10] [info] [spectre] Watching <path_to_your_app_folder>/ for modifications
[20:09:47 23-Nov-10] [info] [spectre] Rebuildind pod <your_app_name> as file:<...>
[20:09:47 23-Nov-10] [info] [spectre] Starting pod <...>_reloaded_1
[20:09:47 23-Nov-10] [info] [web] spectre::WebServer started on port 8080
To bind on specific port use:
>>> spectre rundevserver <path_to_your_app_folder> -port 8000
There’s also an option to write log to a file:
>>> spectre rundevserver <path_to_your_app_folder> -logto /var/log/spectre.log
When developing app, you’ll probably want to serve static files from the same devserver as the rest of the app. Spectre includes StaticView turtle for that purpose. Just include it into your app’s routing scheme:
router = Router {
...
["/css/*", StaticView(appDir + `static/styles/`)],
["/js/*", StaticView(appDir + `static/scripts/`)],
["/favicon.ico", StaticView(appDir + `static/img/favicon.ico`)]
}
To serve single files (as /favicon.ico), create StaticView with a path to this specific file. To serve whole folders, specify /* at the end of the url (as in /css/*).
To run server in production mode, use RunServer class:
>>> spectre runserver <path_to_your_app_folder>
It will disable hot app reloading, enable usage of Mustache templates cache, so your app will perform faster. If you want to change something in your application depending of server mode, use Settings.debug attribute which will be set to false when in production mode.


Hi there, we are Simon & Debbie.
A multidisciplinary husband and wife team, with over 10 years
digital media experience. Based in Andover, Hampshire.
Available to hire —
About
—
✉
<EMAIL_ADDRESS>General Services
Website Development/Design
–
Single Page Apps (SPA)
–
eCommerce
–
Social Media Strategy
Section Heading
Hello world!
Hello world!


◄ 40th IPHO 2009 ►
Country results • Individual results
| Contestant | Country | Rank | Award |
|---|---|---|---|
| Handuo Shi | People's Republic of China | 1 | Gold Medal |
| Yu-An Chen | Taiwan | 2 | Gold Medal |
| Donggun Kim | Republic of Korea | 3 | Gold Medal |
| Qian Lin | People's Republic of China | 4 | Gold Medal |
| Jin Lei | People's Republic of China | 5 | Gold Medal |
| Piotr Godlewski | Poland | 6 | Gold Medal |
| Nikola Sibalić | Serbia | 7 | Gold Medal |
| Bukyoung Jhun | Republic of Korea | 8 | Gold Medal |
| Gopi Sivakanth | India | 9 | Gold Medal |
| Nitin Jain | India | 10 | Gold Medal |
| Joshua Oreman | United States of America | 11 | Gold Medal |
| Amyas Chew Weng Khin | Singapore | 12 | Gold Medal |
| Yuto Ashida | Japan | 13 | Gold Medal |
| Zhaoxi Xiong | People's Republic of China | 14 | Gold Medal |
| Itamar Hason | Israel | 15 | Gold Medal |
| Fernaldo Richtia Winnerdy | Indonesia | 16 | Gold Medal |
| Akhyn Zhagsalag | Kazakhstan | 17 | Gold Medal |
| Zixuan Guan | People's Republic of China | 18 | Gold Medal |
| Marianna Mao | United States of America | 19 | Gold Medal |
| Virgil Baran | Romania | 20 | Gold Medal |
| Sho Higashikawa | Japan | 21 | Gold Medal |
| Marius Constantin | Romania | 22 | Gold Medal |
| Wei-Cheng Kuo | Taiwan | 23 | Gold Medal |
| Grigory Starkov | Russia | 24 | Gold Medal |
| Ahmet Can Musabeyoğlu | Turkey | 25 | Gold Medal |
| Yu Lik Hang | Hong Kong | 26 | Gold Medal |
| Lia Izabella Lovas | Hungary | 27 | Gold Medal |
| Jarrel Seah Chen Yi | Singapore | 28 | Gold Medal |
| Haewon Ko | Republic of Korea | 29 | Gold Medal |
| Dmitry Tregubov | Russia | 30 | Gold Medal |
| Anand Natarajan | United States of America | 31 | Gold Medal |
| Bowei Liu | United States of America | 32 | Gold Medal |
| Vladislav Zemlyanov | Russia | 33 | Gold Medal |
| Peter Szerzo | Romania | 34 | Gold Medal |
| Priyank Parikh | India | 35 | Gold Medal |
| Zhanibek Kaimuldenov | Kazakhstan | 36 | Gold Medal |
| Nai-Lun Hsu | Taiwan | 37 | Gold Medal |
| Dong Hyun Choi | Republic of Korea | 38 | Gold Medal |
| Eugen Hruska | Slovakia | 39 | Gold Medal |
| Thanapat Worasaran | Thailand | 40 | Gold Medal |
| Shubham Tulsiani | India | 41 | Gold Medal |
| Kasra Hejazi | Islamic Republic of Iran | 42 | Silver Medal |
| Winson Tanputraman | Indonesia | 43 | Silver Medal |
| Hsiao-Yi Chen | Taiwan | 44 | Silver Medal |
| Saranapob Thavapatikom | Thailand | 45 | Silver Medal |
| Isarapong Eksinchol | Thailand | 46 | Silver Medal |
| André Luis Macedo Farias | Brazil | 47 | Silver Medal |
| Bousseau Pierrick | France | 48 | Silver Medal |
| Vinit Atal | India | 49 | Silver Medal |
| Andrey Doroshenko | Russia | 50 | Silver Medal |
| Arvin Shahbazi Moghaddam | Islamic Republic of Iran | 51 | Silver Medal |
| Matjaz Payrits | Slovenia | 52 | Silver Medal |
| Ihar Karhin | Belarus | 53 | Silver Medal |
| Dzuhri Radityo Utomo | Indonesia | 54 | Silver Medal |
| David Field | United States of America | 55 | Silver Medal |
| Máté Balogh | Hungary | 56 | Silver Medal |
| Giuliano Chiriacò | Italy | 57 | Silver Medal |
| Jeffrey Ting Fung Poon | Hong Kong | 58 | Silver Medal |
| Nina Kudryashova | Russia | 59 | Silver Medal |
| Jirawat Tangpanitanon | Thailand | 60 | Silver Medal |
| Vu Hong Anh | Vietnam | 61 | Silver Medal |
| Young Jun Park | Republic of Korea | 62 | Silver Medal |
| Yasin Kaya | Turkey | 63 | Silver Medal |
| Leonid Tuzenko | Ukraine | 64 | Silver Medal |
| Pascal Cremer | Germany | 65 | Silver Medal |
| Stanislav Zavjalov | Estonia | 66 | Silver Medal |
| Jixuan Wang | Canada | 67 | Silver Medal |
| Lun-Kai Hsu | Taiwan | 68 | Silver Medal |
| Stefano Rulli | Italy | 69 | Silver Medal |
| Pham Van Quyen | Vietnam | 70 | Silver Medal |
| Márton Bence Farkas | Hungary | 71 | Silver Medal |
| Pham Thanh Long | Vietnam | 72 | Silver Medal |
| Martin Krebs | Germany | 73 | Silver Medal |
| Mykola Tuzenko | Ukraine | 74 | Silver Medal |
| Fabian Gundlach | Germany | 75 | Silver Medal |
| James Taylor | United Kingdom | 76 | Silver Medal |
| Ong Ming Yang | Singapore | 77 | Silver Medal |
| Iooss Nicolas | France | 78 | Silver Medal |
| Rabault Jean | France | 79 | Silver Medal |
| Daniel Bruegmann | Germany | 80 | Silver Medal |
| Gabriel Petrică | Romania | 81 | Silver Medal |
| Mateusz Jończyk | Poland | 82 | Silver Medal |
| Patrick Steinmueller | Germany | 83 | Silver Medal |
| Naim Göksel Karaçaylı | Turkey | 84 | Silver Medal |
| Teo Mae Hwee | Singapore | 85 | Silver Medal |
| Thomas Lacy | Australia | 86 | Silver Medal |
| Oded Zewi | Israel | 87 | Silver Medal |
| Lam Kin | Hong Kong | 88 | Silver Medal |
| Mohammadreza Mohammadi | Islamic Republic of Iran | 89 | Silver Medal |
| Hiroyuki Namba | Japan | 90 | Silver Medal |
| Maxim Gorlach | Belarus | 91 | Silver Medal |
| Tan Zhong Ming | Singapore | 92 | Silver Medal |
| Guy Emerson | United Kingdom | 93 | Silver Medal |
| Ovidiu Alexandru Cotlet | Romania | 94 | Silver Medal |
| Nguyen Dinh Tung | Vietnam | 95 | Silver Medal |
| Nguyen Phan Minh | Vietnam | 96 | Silver Medal |
| Ignat Ganchev Kalinov | Bulgaria | 97 | Silver Medal |
| Jan Humplik | Czech Republic | 98 | Silver Medal |
| Anastasiia Antonova | Ukraine | 99 | Silver Medal |
| Andri Pradana | Indonesia | 100 | Silver Medal |
| Kaloyan Dimitrov Lozanov | Bulgaria | 101 | Silver Medal |
| Vyacheslav LI | Kazakhstan | 102 | Silver Medal |
| Michal Koutny | Czech Republic | 103 | Silver Medal |
| Anton Dashkevich | Belarus | 104 | Silver Medal |
| Aleksandar Vasiljković | Serbia | 105 | Silver Medal |
| Askar Amangeldy | Kazakhstan | 106 | Silver Medal |
| Sergei Patiakin | United Kingdom | 107 | Silver Medal |
| Daqian Wang | Hungary | 108 | Silver Medal |
| Ivan Guilhon Mitoso Rocha | Brazil | 109 | Silver Medal |
| Rubert Guillermo Pardo Martin | Cuba | 110 | Silver Medal |
| Weerapat Pittayakanchit | Thailand | 111 | Silver Medal |
| Takeru Yokota | Japan | 112 | Bronze Medal |
| German Alberto Parada Hernandez | Colombia | 113 | Bronze Medal |
| Ádám Varga | Hungary | 114 | Bronze Medal |
| Illan Feiman Halpern | Brazil | 115 | Bronze Medal |
| Matteo Ippoliti | Italy | 116 | Bronze Medal |
| Taavi Pungas | Estonia | 117 | Bronze Medal |
| Richard Polma | Czech Republic | 118 | Bronze Medal |
| Jáchym Sýkora | Czech Republic | 119 | Bronze Medal |
| Michael Puzevsky | Israel | 120 | Bronze Medal |
| Ognjen Ivković | Serbia | 121 | Bronze Medal |
| Henrique Manuel Pereira Cabral | Portugal | 122 | Bronze Medal |
| Jeppe Trøst Nielsen | Denmark | 123 | Bronze Medal |
| Cathryn Mcdonald | Australia | 124 | Bronze Medal |
| Paolo Comaschi | Italy | 125 | Bronze Medal |
| Anna Mitskovets | Belarus | 126 | Bronze Medal |
| Paul Zakharia Fajar Hanakata | Indonesia | 127 | Bronze Medal |
| Aleksandar Aleksandrov Makelov | Bulgaria | 128 | Bronze Medal |
| Amirhossein Tajdini | Islamic Republic of Iran | 129 | Bronze Medal |
| Leonardo Pereira Stedile | Brazil | 130 | Bronze Medal |
| Petr Ryšavý | Czech Republic | 131 | Bronze Medal |
| Shachar Carmeli | Israel | 132 | Bronze Medal |
| Benjamin Dive | United Kingdom | 133 | Bronze Medal |
| Yeung Wing Ki | Hong Kong | 134 | Bronze Medal |
| Harres Bin Tariq | Pakistan | 135 | Bronze Medal |
| Robbie Hermsen | Netherlands | 136 | Bronze Medal |
| Fiona Naughton | Australia | 137 | Bronze Medal |
| Patrick Schwendimann | Switzerland | 138 | Bronze Medal |
| Mikkel Bjørn | Denmark | 139 | Bronze Medal |
| Loisel Benoît | France | 140 | Bronze Medal |
| Dominik Wild | Switzerland | 141 | Bronze Medal |
| Said Khamidov Khamidov | Tajikistan | 142 | Bronze Medal |
| Aleksandra Dimić | Serbia | 143 | Bronze Medal |
| Jordan Rush | United Kingdom | 144 | Bronze Medal |
| Uglješa Stojanović | Serbia | 145 | Bronze Medal |
| Veronika Sunko | Croatia | 146 | Bronze Medal |
| Andries Waelkens | Belgium | 147 | Bronze Medal |
| Alexei Zubarev | Moldova | 148 | Bronze Medal |
| Michal Spisiak | Slovakia | 149 | Bronze Medal |
| Stanislav Hrivnak | Slovakia | 150 | Bronze Medal |
| Peter Vanya | Slovakia | 151 | Bronze Medal |
| Oleksii Tsokurov | Ukraine | 152 | Bronze Medal |
| Adam Wyrzykowski | Poland | 153 | Bronze Medal |
| Sagar Dipak Silva Pratapsi | Portugal | 154 | Bronze Medal |
| Mikhail Hushchyn | Belarus | 155 | Bronze Medal |
| Jonathan Samuel Zung | Canada | 156 | Bronze Medal |
| Dusan Nemec | Slovakia | 157 | Bronze Medal |
| Piotr Waluk | Poland | 158 | Bronze Medal |
| Kübra Işık | Turkey | 159 | Bronze Medal |
| Freja Elbro | Denmark | 160 | Bronze Medal |
| Lee Tak Yan | Hong Kong | 161 | Bronze Medal |
| Geva Sheinvald | Israel | 162 | Bronze Medal |
| Pieter De Haan | Netherlands | 163 | Bronze Medal |
| David Wurm | Austria | 164 | Bronze Medal |
| Vittorio Sala | Italy | 165 | Bronze Medal |
| Francisca Santos De Pinho Costa | Portugal | 166 | Bronze Medal |
| Le Mouel Charlotte | France | 167 | Bronze Medal |
| Vasil Vasilev Karayonchev | Bulgaria | 168 | Bronze Medal |
| Tadas Kartanas | Lithuania | 169 | Bronze Medal |
| Remy Abraham Mock | Canada | 170 | Bronze Medal |
| Ivan Kukuljan | Slovenia | 171 | Bronze Medal |
| Gabija Žemaityte | Lithuania | 172 | Bronze Medal |
| David Eduardo Hernandez Sanchez | Mexico | 173 | Bronze Medal |
| Rohan Poudel | Nepal | 174 | Bronze Medal |
| Mark Boer | Netherlands | 175 | Bronze Medal |
| Petar Mlinaric | Croatia | 176 | Bronze Medal |
| Xiao Heng Shawn Xu | Canada | 177 | Bronze Medal |
| Vahe Galstyan | Armenia | 178 | Bronze Medal |
| Moulin Rémy | Belgium | 179 | Bronze Medal |
| Martín Canziani | Argentina | 180 | Bronze Medal |
| Rolando la Placa | Puerto Rico | 181 | Bronze Medal |
| Frederik Sonderby Nathan | Denmark | 182 | Bronze Medal |
| Filip Kozarski | Slovenia | 183 | Bronze Medal |
| Shota Garuchava | Georgia | 184 | Bronze Medal |
| Ivan Luchko | Ukraine | 185 | Bronze Medal |
| Takashi Ando | Japan | 186 | Bronze Medal |
| Edgar Andres Sánchez García | Mexico | 187 | Bronze Medal |
| Knut Andreas Meyer | Norway | 188 | Bronze Medal |
| Eirik Løhaugen Fjærbu | Norway | 189 | Bronze Medal |
| Muhammad Zain ul Abideen Ali Khas | Pakistan | 190 | Bronze Medal |
| Ignacio Velasco Rodriguez | Spain | 191 | Honourable Mention |
| Reza Javadinezhad | Islamic Republic of Iran | 192 | Honourable Mention |
| Emilis Pileckis | Lithuania | 193 | Honourable Mention |
| Kristinn Kristinsson | Iceland | 194 | Honourable Mention |
| Algirdas Baskys | Lithuania | 195 | Honourable Mention |
| Kristian Laakkonen | Finland | 196 | Honourable Mention |
| Ants Remm | Estonia | 197 | Honourable Mention |
| Roland Matt | Estonia | 198 | Honourable Mention |
| Rikard Lundmark | Sweden | 199 | Honourable Mention |
| Diego Hernando Useche Reyes | Colombia | 200 | Honourable Mention |
| Christopher Herron | Australia | 201 | Honourable Mention |
| Juho Kahala | Finland | 202 | Honourable Mention |
| Zhaoxi Michael Zhang | Canada | 203 | Honourable Mention |
| Marcio Araujo De Paiva Filho | Brazil | 204 | Honourable Mention |
| John Brochan Collison | Ireland | 205 | Honourable Mention |
| Victor Buza | Moldova | 206 | Honourable Mention |
| Maurits Van Heijningen | Netherlands | 207 | Honourable Mention |
| Ljudevit Palle | Croatia | 208 | Honourable Mention |
| Sabi Teodosiev Teodosiev | Bulgaria | 209 | Honourable Mention |
| Alija Bevrnja | Bosnia and Herzegovina | 210 | Honourable Mention |
| Aldiyar Nurmanov | Kazakhstan | 211 | Honourable Mention |
| Alexei Zbirnea | Moldova | 212 | Honourable Mention |
| Dominik Gresch | Switzerland | 213 | Honourable Mention |
| Runar Schistad Skålbones | Norway | 214 | Honourable Mention |
| David Wyndham Keith Cox | Ireland | 215 | Honourable Mention |
| Brajith Srigengan | Ireland | 216 | Honourable Mention |
| Andrej Hmelev | Latvia | 217 | Honourable Mention |
| Vinay Sewbaran | Suriname | 218 | Honourable Mention |
| Ashot Grigoryan | Armenia | 219 | Honourable Mention |
| Ahmet Barış Özgüler | Turkey | 220 | Honourable Mention |
| Brandur Thorgrimsson | Iceland | 221 | Honourable Mention |
| Aamir Ayub | Pakistan | 222 | Honourable Mention |
| Germán Gabriel Blesio | Argentina | 223 | Honourable Mention |
| Arman Kohnić | Bosnia and Herzegovina | 224 | Honourable Mention |
| Faruk Husremović | Bosnia and Herzegovina | 225 | Honourable Mention |
| David Higuera Caubilla | Spain | 226 | Honourable Mention |
| Povilas Kanapickas | Lithuania | 227 | Honourable Mention |
| Dominik Gronkiewicz | Poland | 228 | Honourable Mention |
| Félix Petitzon | Belgium | 229 | Honourable Mention |
| Valeri Vardanyan | Armenia | 230 | Honourable Mention |
| Vents Kanders | Latvia | 231 | Honourable Mention |
| Mario Silvester Könz | Switzerland | 232 | Honourable Mention |
| Nick Bruun | Denmark | 233 | Honourable Mention |
| Muhammad Musab Jilani | Pakistan | 234 | Honourable Mention |
| Fanny Ummelen | Netherlands | 235 | Honourable Mention |
| Edina Zukić | Bosnia and Herzegovina | ≥236 | |
| Nikola Konjik | Bosnia and Herzegovina | ≥236 |
Results may be incomplete or incorrect.
Please send the relevant information to the webmaster:
<EMAIL_ADDRESS>If you are a participant you can send a personal page URL to be attached to your name.
If you are a participant you can send a personal page URL to be attached to your name.


Module: Homebrew::Assertions Private
- Includes:
- Context, Minitest::Assertions
- Defined in:
- formula_assertions.rb
Overview
This module is part of a private API. This module may only be used in the Homebrew/brew repository. Third parties should avoid using this module if possible, as it may be removed or changed without warning.
Helper functions available in formula test
blocks.
Instance Attribute Summary collapse
-
#assertions ⇒ Object
private
Instance Method Summary collapse
-
#pipe_output(cmd, input = nil, result = nil) ⇒ Object
Returns the output of running the cmd with the optional input, and optionally asserts the exit status.
-
#shell_output(cmd, result = 0) ⇒ Object
Returns the output of running cmd, and asserts the exit status.
Methods included from Context
current, current=, #debug?, #quiet?, #verbose?, #with_context
Instance Attribute Details
#assertions ⇒ Object
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
17 18 19 |
# File 'formula_assertions.rb', line 17 def assertions @assertions ||= 0 end |
Instance Method Details
#pipe_output(cmd, input = nil, result = nil) ⇒ Object
Returns the output of running the cmd with the optional input, and optionally asserts the exit status.
36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'formula_assertions.rb', line 36 def pipe_output(cmd, input = nil, result = nil) ohai cmd output = IO.popen(cmd, "w+") do |pipe| pipe.write(input) unless input.nil? pipe.close_write pipe.read end assert_equal result, $CHILD_STATUS.exitstatus unless result.nil? output rescue Minitest::Assertion puts output if verbose? raise end |
#shell_output(cmd, result = 0) ⇒ Object
Returns the output of running cmd, and asserts the exit status.
23 24 25 26 27 28 29 30 31 |
# File 'formula_assertions.rb', line 23 def shell_output(cmd, result = 0) ohai cmd output = `#{cmd}` assert_equal result, $CHILD_STATUS.exitstatus output rescue Minitest::Assertion puts output if verbose? raise end |


If you like playing fast-paced word games, then you'll love WordSlide Battle! The object of the game is to make words by sliding letter tiles. Think fast, you have three one-minute rounds to make more words -- or better ones -- than your opponent.
WordSlide Battle combines the unique gameplay of the highly-rated WordSlide with the multiplayer abilities players have been asking for. Invite a friend to play online or let WordSlide Battle match you against a random opponent. You can even pass your phone or tablet back and forth with a friend for an offline game.
Unlike other word games, in WordSlide Battle you can move the tiles anywhere on the screen -- even on top of other tiles. This makes the action fast and fun and gives you a freedom the other games can't match. Whenever you form a word, the tiles snap together with a satifying click.
Tired of word games that make you wait for your opponent's turn? WordSlide Battle is played in real-time -- there are no long delays while you wait for your opponent.
Challenge yourself with achievements or try for a spot on the leaderboards. WordSlide Battle is the action-packed word game you've been looking for!