3.2. Tuning the hyper-parameters of an estimator¶
Hyper-parameters are parameters that are not directly learnt within estimators.
In scikit-learn they are passed as arguments to the constructor of the
estimator classes. Typical examples include C
, kernel
and gamma
for Support Vector Classifier, alpha
for Lasso, etc.
It is possible and recommended to search the hyper-parameter space for the best cross validation score.
Any parameter provided when constructing an estimator may be optimized in this manner. Specifically, to find the names and current values for all parameters for a given estimator, use:
estimator.get_params()
A search consists of:
an estimator (regressor or classifier such as
sklearn.svm.SVC()
);a parameter space;
a method for searching or sampling candidates;
a cross-validation scheme; and
Two generic approaches to parameter search are provided in
scikit-learn: for given values, GridSearchCV
exhaustively considers
all parameter combinations, while RandomizedSearchCV
can sample a
given number of candidates from a parameter space with a specified
distribution. Both these tools have successive halving counterparts
HalvingGridSearchCV
and HalvingRandomSearchCV
, which can be
much faster at finding a good parameter combination.
After describing these tools we detail best practices applicable to these approaches. Some models allow for specialized, efficient parameter search strategies, outlined in Alternatives to brute force parameter search.
Note that it is common that a small subset of those parameters can have a large impact on the predictive or computation performance of the model while others can be left to their default values. It is recommended to read the docstring of the estimator class to get a finer understanding of their expected behavior, possibly by reading the enclosed reference to the literature.
3.2.1. Exhaustive Grid Search¶
The grid search provided by GridSearchCV
exhaustively generates
candidates from a grid of parameter values specified with the param_grid
parameter. For instance, the following param_grid
:
param_grid = [
{'C': [1, 10, 100, 1000], 'kernel': ['linear']},
{'C': [1, 10, 100, 1000], 'gamma': [0.001, 0.0001], 'kernel': ['rbf']},
]
specifies that two grids should be explored: one with a linear kernel and C values in [1, 10, 100, 1000], and the second one with an RBF kernel, and the cross-product of C values ranging in [1, 10, 100, 1000] and gamma values in [0.001, 0.0001].
The GridSearchCV
instance implements the usual estimator API: when
“fitting” it on a dataset all the possible combinations of parameter values are
evaluated and the best combination is retained.
Examples:
See Parameter estimation using grid search with cross-validation for an example of Grid Search computation on the digits dataset.
See Sample pipeline for text feature extraction and evaluation for an example of Grid Search coupling parameters from a text documents feature extractor (n-gram count vectorizer and TF-IDF transformer) with a classifier (here a linear SVM trained with SGD with either elastic net or L2 penalty) using a
pipeline.Pipeline
instance.See Nested versus non-nested cross-validation for an example of Grid Search within a cross validation loop on the iris dataset. This is the best practice for evaluating the performance of a model with grid search.
See Demonstration of multi-metric evaluation on cross_val_score and GridSearchCV for an example of
GridSearchCV
being used to evaluate multiple metrics simultaneously.See Balance model complexity and cross-validated score for an example of using
refit=callable
interface inGridSearchCV
. The example shows how this interface adds certain amount of flexibility in identifying the “best” estimator. This interface can also be used in multiple metrics evaluation.See Statistical comparison of models using grid search for an example of how to do a statistical comparison on the outputs of
GridSearchCV
.
3.2.2. Randomized Parameter Optimization¶
While using a grid of parameter settings is currently the most widely used
method for parameter optimization, other search methods have more
favourable properties.
RandomizedSearchCV
implements a randomized search over parameters,
where each setting is sampled from a distribution over possible parameter values.
This has two main benefits over an exhaustive search:
A budget can be chosen independent of the number of parameters and possible values.
Adding parameters that do not influence the performance does not decrease efficiency.
Specifying how parameters should be sampled is done using a dictionary, very
similar to specifying parameters for GridSearchCV
. Additionally,
a computation budget, being the number of sampled candidates or sampling
iterations, is specified using the n_iter
parameter.
For each parameter, either a distribution over possible values or a list of
discrete choices (which will be sampled uniformly) can be specified:
{'C': scipy.stats.expon(scale=100), 'gamma': scipy.stats.expon(scale=.1),
'kernel': ['rbf'], 'class_weight':['balanced', None]}
This example uses the scipy.stats
module, which contains many useful
distributions for sampling parameters, such as expon
, gamma
,
uniform
or randint
.
In principle, any function can be passed that provides a rvs
(random
variate sample) method to sample a value. A call to the rvs
function should
provide independent random samples from possible parameter values on
consecutive calls.
Warning
The distributions in
scipy.stats
prior to version scipy 0.16 do not allow specifying a random state. Instead, they use the global numpy random state, that can be seeded vianp.random.seed
or set usingnp.random.set_state
. However, beginning scikit-learn 0.18, thesklearn.model_selection
module sets the random state provided by the user if scipy >= 0.16 is also available.
For continuous parameters, such as C
above, it is important to specify
a continuous distribution to take full advantage of the randomization. This way,
increasing n_iter
will always lead to a finer search.
A continuous log-uniform random variable is available through
loguniform
. This is a continuous version of
log-spaced parameters. For example to specify C
above, loguniform(1,
100)
can be used instead of [1, 10, 100]
or np.logspace(0, 2,
num=1000)
. This is an alias to SciPy’s stats.reciprocal.
Mirroring the example above in grid search, we can specify a continuous random
variable that is log-uniformly distributed between 1e0
and 1e3
:
from sklearn.utils.fixes import loguniform
{'C': loguniform(1e0, 1e3),
'gamma': loguniform(1e-4, 1e-3),
'kernel': ['rbf'],
'class_weight':['balanced', None]}
Examples:
Comparing randomized search and grid search for hyperparameter estimation compares the usage and efficiency of randomized search and grid search.
References:
Bergstra, J. and Bengio, Y., Random search for hyper-parameter optimization, The Journal of Machine Learning Research (2012)
3.2.3. Searching for optimal parameters with successive halving¶
Scikit-learn also provides the HalvingGridSearchCV
and
HalvingRandomSearchCV
estimators that can be used to
search a parameter space using successive halving 1 2. Successive
halving (SH) is like a tournament among candidate parameter combinations.
SH is an iterative selection process where all candidates (the
parameter combinations) are evaluated with a small amount of resources at
the first iteration. Only some of these candidates are selected for the next
iteration, which will be allocated more resources. For parameter tuning, the
resource is typically the number of training samples, but it can also be an
arbitrary numeric parameter such as n_estimators
in a random forest.
As illustrated in the figure below, only a subset of candidates ‘survive’ until the last iteration. These are the candidates that have consistently ranked among the top-scoring candidates across all iterations. Each iteration is allocated an increasing amount of resources per candidate, here the number of samples.
We here briefly describe the main parameters, but each parameter and their
interactions are described in more details in the sections below. The
factor
(> 1) parameter controls the rate at which the resources grow, and
the rate at which the number of candidates decreases. In each iteration, the
number of resources per candidate is multiplied by factor
and the number
of candidates is divided by the same factor. Along with resource
and
min_resources
, factor
is the most important parameter to control the
search in our implementation, though a value of 3 usually works well.
factor
effectively controls the number of iterations in
HalvingGridSearchCV
and the number of candidates (by default) and
iterations in HalvingRandomSearchCV
. aggressive_elimination=True
can also be used if the number of available resources is small. More control
is available through tuning the min_resources
parameter.
These estimators are still experimental: their predictions
and their API might change without any deprecation cycle. To use them, you
need to explicitly import enable_halving_search_cv
:
>>> # explicitly require this experimental feature
>>> from sklearn.experimental import enable_halving_search_cv # noqa
>>> # now you can import normally from model_selection
>>> from sklearn.model_selection import HalvingGridSearchCV
>>> from sklearn.model_selection import HalvingRandomSearchCV
<IP_ADDRESS>. Choosing min_resources
and the number of candidates¶
Beside factor
, the two main parameters that influence the behaviour of a
successive halving search are the min_resources
parameter, and the
number of candidates (or parameter combinations) that are evaluated.
min_resources
is the amount of resources allocated at the first
iteration for each candidate. The number of candidates is specified directly
in HalvingRandomSearchCV
, and is determined from the param_grid
parameter of HalvingGridSearchCV
.
Consider a case where the resource is the number of samples, and where we
have 1000 samples. In theory, with min_resources=10
and factor=2
, we
are able to run at most 7 iterations with the following number of
samples: [10, 20, 40, 80, 160, 320, 640]
.
But depending on the number of candidates, we might run less than 7
iterations: if we start with a small number of candidates, the last
iteration might use less than 640 samples, which means not using all the
available resources (samples). For example if we start with 5 candidates, we
only need 2 iterations: 5 candidates for the first iteration, then
5 // 2 = 2
candidates at the second iteration, after which we know which
candidate performs the best (so we don’t need a third one). We would only be
using at most 20 samples which is a waste since we have 1000 samples at our
disposal. On the other hand, if we start with a high number of
candidates, we might end up with a lot of candidates at the last iteration,
which may not always be ideal: it means that many candidates will run with
the full resources, basically reducing the procedure to standard search.
In the case of HalvingRandomSearchCV
, the number of candidates is set
by default such that the last iteration uses as much of the available
resources as possible. For HalvingGridSearchCV
, the number of
candidates is determined by the param_grid
parameter. Changing the value of
min_resources
will impact the number of possible iterations, and as a
result will also have an effect on the ideal number of candidates.
Another consideration when choosing min_resources
is whether or not it
is easy to discriminate between good and bad candidates with a small amount
of resources. For example, if you need a lot of samples to distinguish
between good and bad parameters, a high min_resources
is recommended. On
the other hand if the distinction is clear even with a small amount of
samples, then a small min_resources
may be preferable since it would
speed up the computation.
Notice in the example above that the last iteration does not use the maximum
amount of resources available: 1000 samples are available, yet only 640 are
used, at most. By default, both HalvingRandomSearchCV
and
HalvingGridSearchCV
try to use as many resources as possible in the
last iteration, with the constraint that this amount of resources must be a
multiple of both min_resources
and factor
(this constraint will be clear
in the next section). HalvingRandomSearchCV
achieves this by
sampling the right amount of candidates, while HalvingGridSearchCV
achieves this by properly setting min_resources
. Please see
Exhausting the available resources for details.
<IP_ADDRESS>. Amount of resource and number of candidates at each iteration¶
At any iteration i
, each candidate is allocated a given amount of resources
which we denote n_resources_i
. This quantity is controlled by the
parameters factor
and min_resources
as follows (factor
is strictly
greater than 1):
n_resources_i = factor**i * min_resources,
or equivalently:
n_resources_{i+1} = n_resources_i * factor
where min_resources == n_resources_0
is the amount of resources used at
the first iteration. factor
also defines the proportions of candidates
that will be selected for the next iteration:
n_candidates_i = n_candidates // (factor ** i)
or equivalently:
n_candidates_0 = n_candidates
n_candidates_{i+1} = n_candidates_i // factor
So in the first iteration, we use min_resources
resources
n_candidates
times. In the second iteration, we use min_resources *
factor
resources n_candidates // factor
times. The third again
multiplies the resources per candidate and divides the number of candidates.
This process stops when the maximum amount of resource per candidate is
reached, or when we have identified the best candidate. The best candidate
is identified at the iteration that is evaluating factor
or less candidates
(see just below for an explanation).
Here is an example with min_resources=3
and factor=2
, starting with
70 candidates:
|
|
|---|---|
3 (=min_resources) |
70 (=n_candidates) |
3 * 2 = 6 |
70 // 2 = 35 |
6 * 2 = 12 |
35 // 2 = 17 |
12 * 2 = 24 |
17 // 2 = 8 |
24 * 2 = 48 |
8 // 2 = 4 |
48 * 2 = 96 |
4 // 2 = 2 |
We can note that:
the process stops at the first iteration which evaluates
factor=2
candidates: the best candidate is the best out of these 2 candidates. It is not necessary to run an additional iteration, since it would only evaluate one candidate (namely the best one, which we have already identified). For this reason, in general, we want the last iteration to run at mostfactor
candidates. If the last iteration evaluates more thanfactor
candidates, then this last iteration reduces to a regular search (as inRandomizedSearchCV
orGridSearchCV
).each
n_resources_i
is a multiple of bothfactor
andmin_resources
(which is confirmed by its definition above).
The amount of resources that is used at each iteration can be found in the
n_resources_
attribute.
<IP_ADDRESS>. Choosing a resource¶
By default, the resource is defined in terms of number of samples. That is,
each iteration will use an increasing amount of samples to train on. You can
however manually specify a parameter to use as the resource with the
resource
parameter. Here is an example where the resource is defined in
terms of the number of estimators of a random forest:
>>> from sklearn.datasets import make_classification
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.experimental import enable_halving_search_cv # noqa
>>> from sklearn.model_selection import HalvingGridSearchCV
>>> import pandas as pd
>>>
>>> param_grid = {'max_depth': [3, 5, 10],
... 'min_samples_split': [2, 5, 10]}
>>> base_estimator = RandomForestClassifier(random_state=0)
>>> X, y = make_classification(n_samples=1000, random_state=0)
>>> sh = HalvingGridSearchCV(base_estimator, param_grid, cv=5,
... factor=2, resource='n_estimators',
... max_resources=30).fit(X, y)
>>> sh.best_estimator_
RandomForestClassifier(max_depth=5, n_estimators=24, random_state=0)
Note that it is not possible to budget on a parameter that is part of the parameter grid.
<IP_ADDRESS>. Exhausting the available resources¶
As mentioned above, the number of resources that is used at each iteration
depends on the min_resources
parameter.
If you have a lot of resources available but start with a low number of
resources, some of them might be wasted (i.e. not used):
>>> from sklearn.datasets import make_classification
>>> from sklearn.svm import SVC
>>> from sklearn.experimental import enable_halving_search_cv # noqa
>>> from sklearn.model_selection import HalvingGridSearchCV
>>> import pandas as pd
>>> param_grid= {'kernel': ('linear', 'rbf'),
... 'C': [1, 10, 100]}
>>> base_estimator = SVC(gamma='scale')
>>> X, y = make_classification(n_samples=1000)
>>> sh = HalvingGridSearchCV(base_estimator, param_grid, cv=5,
... factor=2, min_resources=20).fit(X, y)
>>> sh.n_resources_
[20, 40, 80]
The search process will only use 80 resources at most, while our maximum
amount of available resources is n_samples=1000
. Here, we have
min_resources = r_0 = 20
.
For HalvingGridSearchCV
, by default, the min_resources
parameter
is set to ‘exhaust’. This means that min_resources
is automatically set
such that the last iteration can use as many resources as possible, within
the max_resources
limit:
>>> sh = HalvingGridSearchCV(base_estimator, param_grid, cv=5,
... factor=2, min_resources='exhaust').fit(X, y)
>>> sh.n_resources_
[250, 500, 1000]
min_resources
was here automatically set to 250, which results in the last
iteration using all the resources. The exact value that is used depends on
the number of candidate parameter, on max_resources
and on factor
.
For HalvingRandomSearchCV
, exhausting the resources can be done in 2
ways:
by setting
min_resources='exhaust'
, just like forHalvingGridSearchCV
;by setting
n_candidates='exhaust'
.
Both options are mutally exclusive: using min_resources='exhaust'
requires
knowing the number of candidates, and symmetrically n_candidates='exhaust'
requires knowing min_resources
.
In general, exhausting the total number of resources leads to a better final candidate parameter, and is slightly more time-intensive.
<IP_ADDRESS>. Aggressive elimination of candidates¶
Ideally, we want the last iteration to evaluate factor
candidates (see
Amount of resource and number of candidates at each iteration). We then just have to
pick the best one. When the number of available resources is small with
respect to the number of candidates, the last iteration may have to evaluate
more than factor
candidates:
>>> from sklearn.datasets import make_classification
>>> from sklearn.svm import SVC
>>> from sklearn.experimental import enable_halving_search_cv # noqa
>>> from sklearn.model_selection import HalvingGridSearchCV
>>> import pandas as pd
>>>
>>>
>>> param_grid = {'kernel': ('linear', 'rbf'),
... 'C': [1, 10, 100]}
>>> base_estimator = SVC(gamma='scale')
>>> X, y = make_classification(n_samples=1000)
>>> sh = HalvingGridSearchCV(base_estimator, param_grid, cv=5,
... factor=2, max_resources=40,
... aggressive_elimination=False).fit(X, y)
>>> sh.n_resources_
[20, 40]
>>> sh.n_candidates_
[6, 3]
Since we cannot use more than max_resources=40
resources, the process
has to stop at the second iteration which evaluates more than factor=2
candidates.
Using the aggressive_elimination
parameter, you can force the search
process to end up with less than factor
candidates at the last
iteration. To do this, the process will eliminate as many candidates as
necessary using min_resources
resources:
>>> sh = HalvingGridSearchCV(base_estimator, param_grid, cv=5,
... factor=2,
... max_resources=40,
... aggressive_elimination=True,
... ).fit(X, y)
>>> sh.n_resources_
[20, 20, 40]
>>> sh.n_candidates_
[6, 3, 2]
Notice that we end with 2 candidates at the last iteration since we have
eliminated enough candidates during the first iterations, using n_resources =
min_resources = 20
.
<IP_ADDRESS>. Analysing results with the cv_results_
attribute¶
The cv_results_
attribute contains useful information for analysing the
results of a search. It can be converted to a pandas dataframe with df =
pd.DataFrame(est.cv_results_)
. The cv_results_
attribute of
HalvingGridSearchCV
and HalvingRandomSearchCV
is similar
to that of GridSearchCV
and RandomizedSearchCV
, with
additional information related to the successive halving process.
Here is an example with some of the columns of a (truncated) dataframe:
iter |
n_resources |
mean_test_score |
params |
|
|---|---|---|---|---|
0 |
0 |
125 |
0.983667 |
{‘criterion’: ‘entropy’, ‘max_depth’: None, ‘max_features’: 9, ‘min_samples_split’: 5} |
1 |
0 |
125 |
0.983667 |
{‘criterion’: ‘gini’, ‘max_depth’: None, ‘max_features’: 8, ‘min_samples_split’: 7} |
2 |
0 |
125 |
0.983667 |
{‘criterion’: ‘gini’, ‘max_depth’: None, ‘max_features’: 10, ‘min_samples_split’: 10} |
3 |
0 |
125 |
0.983667 |
{‘criterion’: ‘entropy’, ‘max_depth’: None, ‘max_features’: 6, ‘min_samples_split’: 6} |
… |
… |
… |
… |
… |
15 |
2 |
500 |
0.951958 |
{‘criterion’: ‘entropy’, ‘max_depth’: None, ‘max_features’: 9, ‘min_samples_split’: 10} |
16 |
2 |
500 |
0.947958 |
{‘criterion’: ‘gini’, ‘max_depth’: None, ‘max_features’: 10, ‘min_samples_split’: 10} |
17 |
2 |
500 |
0.951958 |
{‘criterion’: ‘gini’, ‘max_depth’: None, ‘max_features’: 10, ‘min_samples_split’: 4} |
18 |
3 |
1000 |
0.961009 |
{‘criterion’: ‘entropy’, ‘max_depth’: None, ‘max_features’: 9, ‘min_samples_split’: 10} |
19 |
3 |
1000 |
0.955989 |
{‘criterion’: ‘gini’, ‘max_depth’: None, ‘max_features’: 10, ‘min_samples_split’: 4} |
Each row corresponds to a given parameter combination (a candidate) and a given
iteration. The iteration is given by the iter
column. The n_resources
column tells you how many resources were used.
In the example above, the best parameter combination is {'criterion':
'entropy', 'max_depth': None, 'max_features': 9, 'min_samples_split': 10}
since it has reached the last iteration (3) with the highest score:
0.96.
References:
- 1
K. Jamieson, A. Talwalkar, Non-stochastic Best Arm Identification and Hyperparameter Optimization, in proc. of Machine Learning Research, 2016.
- 2
L. Li, K. Jamieson, G. DeSalvo, A. Rostamizadeh, A. Talwalkar, Hyperband: A Novel Bandit-Based Approach to Hyperparameter Optimization, in Machine Learning Research 18, 2018.
3.2.4. Tips for parameter search¶
<IP_ADDRESS>. Specifying an objective metric¶
By default, parameter search uses the score
function of the estimator
to evaluate a parameter setting. These are the
sklearn.metrics.accuracy_score
for classification and
sklearn.metrics.r2_score
for regression. For some applications,
other scoring functions are better suited (for example in unbalanced
classification, the accuracy score is often uninformative). An alternative
scoring function can be specified via the scoring
parameter of most
parameter search tools. See The scoring parameter: defining model evaluation rules for more details.
<IP_ADDRESS>. Specifying multiple metrics for evaluation¶
GridSearchCV
and RandomizedSearchCV
allow specifying
multiple metrics for the scoring
parameter.
Multimetric scoring can either be specified as a list of strings of predefined scores names or a dict mapping the scorer name to the scorer function and/or the predefined scorer name(s). See Using multiple metric evaluation for more details.
When specifying multiple metrics, the refit
parameter must be set to the
metric (string) for which the best_params_
will be found and used to build
the best_estimator_
on the whole dataset. If the search should not be
refit, set refit=False
. Leaving refit to the default value None
will
result in an error when using multiple metrics.
See Demonstration of multi-metric evaluation on cross_val_score and GridSearchCV for an example usage.
HalvingRandomSearchCV
and HalvingGridSearchCV
do not support
multimetric scoring.
<IP_ADDRESS>. Composite estimators and parameter spaces¶
GridSearchCV
and RandomizedSearchCV
allow searching over
parameters of composite or nested estimators such as
Pipeline
,
ColumnTransformer
,
VotingClassifier
or
CalibratedClassifierCV
using a dedicated
<estimator>__<parameter>
syntax:
>>> from sklearn.model_selection import GridSearchCV
>>> from sklearn.calibration import CalibratedClassifierCV
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.datasets import make_moons
>>> X, y = make_moons()
>>> calibrated_forest = CalibratedClassifierCV(
... base_estimator=RandomForestClassifier(n_estimators=10))
>>> param_grid = {
... 'base_estimator__max_depth': [2, 4, 6, 8]}
>>> search = GridSearchCV(calibrated_forest, param_grid, cv=5)
>>> search.fit(X, y)
GridSearchCV(cv=5,
estimator=CalibratedClassifierCV(...),
param_grid={'base_estimator__max_depth': [2, 4, 6, 8]})
Here, <estimator>
is the parameter name of the nested estimator,
in this case base_estimator
.
If the meta-estimator is constructed as a collection of estimators as in
pipeline.Pipeline
, then <estimator>
refers to the name of the estimator,
see Nested parameters. In practice, there can be several
levels of nesting:
>>> from sklearn.pipeline import Pipeline
>>> from sklearn.feature_selection import SelectKBest
>>> pipe = Pipeline([
... ('select', SelectKBest()),
... ('model', calibrated_forest)])
>>> param_grid = {
... 'select__k': [1, 2],
... 'model__base_estimator__max_depth': [2, 4, 6, 8]}
>>> search = GridSearchCV(pipe, param_grid, cv=5).fit(X, y)
Please refer to Pipeline: chaining estimators for performing parameter searches over pipelines.
<IP_ADDRESS>. Model selection: development and evaluation¶
Model selection by evaluating various parameter settings can be seen as a way to use the labeled data to “train” the parameters of the grid.
When evaluating the resulting model it is important to do it on
held-out samples that were not seen during the grid search process:
it is recommended to split the data into a development set (to
be fed to the GridSearchCV
instance) and an evaluation set
to compute performance metrics.
This can be done by using the train_test_split
utility function.
<IP_ADDRESS>. Parallelism¶
The parameter search tools evaluate each parameter combination on each data
fold independently. Computations can be run in parallel by using the keyword
n_jobs=-1
. See function signature for more details, and also the Glossary
entry for n_jobs.
<IP_ADDRESS>. Robustness to failure¶
Some parameter settings may result in a failure to fit
one or more folds
of the data. By default, this will cause the entire search to fail, even if
some parameter settings could be fully evaluated. Setting error_score=0
(or =np.NaN
) will make the procedure robust to such failure, issuing a
warning and setting the score for that fold to 0 (or NaN
), but completing
the search.
3.2.5. Alternatives to brute force parameter search¶
<IP_ADDRESS>. Model specific cross-validation¶
Some models can fit data for a range of values of some parameter almost as efficiently as fitting the estimator for a single value of the parameter. This feature can be leveraged to perform a more efficient cross-validation used for model selection of this parameter.
The most common parameter amenable to this strategy is the parameter encoding the strength of the regularizer. In this case we say that we compute the regularization path of the estimator.
Here is the list of such models:
|
Elastic Net model with iterative fitting along a regularization path. |
|
Cross-validated Least Angle Regression model. |
|
Lasso linear model with iterative fitting along a regularization path. |
|
Cross-validated Lasso, using the LARS algorithm. |
|
Logistic Regression CV (aka logit, MaxEnt) classifier. |
Multi-task L1/L2 ElasticNet with built-in cross-validation. |
|
|
Multi-task Lasso model trained with L1/L2 mixed-norm as regularizer. |
Cross-validated Orthogonal Matching Pursuit model (OMP). |
|
|
Ridge regression with built-in cross-validation. |
|
Ridge classifier with built-in cross-validation. |
<IP_ADDRESS>. Information Criterion¶
Some models can offer an information-theoretic closed-form formula of the optimal estimate of the regularization parameter by computing a single regularization path (instead of several when using cross-validation).
Here is the list of models benefiting from the Akaike Information Criterion (AIC) or the Bayesian Information Criterion (BIC) for automated model selection:
|
Lasso model fit with Lars using BIC or AIC for model selection. |
<IP_ADDRESS>. Out of Bag Estimates¶
When using ensemble methods base upon bagging, i.e. generating new training sets using sampling with replacement, part of the training set remains unused. For each classifier in the ensemble, a different part of the training set is left out.
This left out portion can be used to estimate the generalization error without having to rely on a separate validation set. This estimate comes “for free” as no additional data is needed and can be used for model selection.
This is currently implemented in the following classes:
A random forest classifier. |
|
A random forest regressor. |
|
An extra-trees classifier. |
|
|
An extra-trees regressor. |
Gradient Boosting for classification. |
|
Gradient Boosting for regression. |


- Setting editable config option to true you define that tree nodes can be edited.
- editOnClick and editOnDblclick config option defines whenever editing must start. By default - on element double click.
- When renaming node - "rename" event is fired. It receives old value as first argument and new value as second argument.
- You can use zpTreeNodeObj.data.label to access node label or save state of whole Zapatec.Tree using zpTreeObj.saveState() method
- Also you need to add <script type="text/javascript" src="zapatec/utils/edit_inline.js"></script> to your page.
- You can finish node editing by pressing Ctrl+Enter
- Use Tab and Shift-Tab to switch bettwen the nodes while editing.


Oleg Gutsenko
freelance web developer
Toggle navigation
Business Casual
Home
About
Work
Contact
Work
Web developer at
Ciklum
February 27, 2012 - November 20, 2014
Projects in Ciklum
Web developer at
KONTI
July 7, 2010 - February 15, 2012


Personal data
Name
Last name
Contact data
E-Mail
Phone number
Bio
Message
Academic data
Birthdate
GPA (Grade Point Average)
Gender
Male:
Female:
Genderfluid:
Nonbinary:
Final steps
Agree to terms
User profile image


SNEAKERS A film review by Frank Maloney Copyright 1992 Frank Maloney
SNEAKERS is a film directed by Phil Alden Robinson and written by Robinson and Lawrence Lasker & Walter Parkes. It stars Robert Redford, Ben Kingsley, Mary McDonnell, Sydney Poitier, Dan Aykroyd, River Phoenix, and David Strathairn. Rated PG, for minor violence.
SNEAKERS is an old-fashioned caper movie, despite its overlay of computers and high-techery. It is funny, likable, and very smooth. It is also, in all likelihood, nonsense and pointless at the end. It has a taut story and some wonderful actors who seem to be enjoying themselves. Director Phil Alden Robinson (FIELD OF DREAMS) along with Walter Parkes and Lawrence Lasker (WAR GAMES) put together a smooth, workable package with only a few deficiencies. It is perhaps a little too smooth to the point where the tension level is not high enough to call it a thriller, where the paranoia level is confined mostly to the very funny and very wigged out character played by Dan Aykroyd, and where politics is reduced a single evil genius (Ben Kingsley). The ostensible topic is cryptography, but the real subject is star vehicle. Also, it would have been nice if they had figured something for River Phoenix to do.
Indeed, Robert Redford turns in his best performance in years. After such bombs as HAVANA, his on-screen career could the kind of boost SNEAKERS is probably capable of giving it. Redford is not the smooth man-of-the-world, but a member of the over-the-hill gang, who stumbles, who bumbles. In its way, it is a courageous performance.
And it is a genuine pleasure to find Sidney Poitier on the screen again. I find him much more interesting and less on his dignity here than he's been since the end of the 50s. He is the sure anchor for the rest of the cast.
Mary McDonnell continues to impress me; I loved her as Kevin Kline's wife in the Lawrence Kasdan film of last year, and my enthusiasm then is more than justified by her performance now; the sexual tension between her and Redford's characters is very erotic without any overt bedroom hijinks.
As mentioned, Aykroyd does a near perfect turn on his character, a man who calmly believes the CIA is holding John Kennedy prisoner, inter alia.
Kingsley's performance is more problematical. Usually, it's the heavy who has the most fun in these movies; Kingsley's performance is more complex than mere scene-chewing, yet somehow it does not quite satisfy, which may more the writing than the acting. Does Redford's Martin Bishop really have to tell Kingsley's character that he's crazy; shouldn't that been made clear by the character himself?
The editing is intelligent and add much to all forms of tension in the film. The cast is first rate. The production values are high overall. There are lots of well-earned laughs. I just can't believe the story any more than I could believe the story of WAR GAMES. An plausible movie about the inherent threats to human liberty in the Information Age would be an important film. SNEAKERS is merely good entertainment. SNEAKERS is an entertaining film, not one to be taken too seriously, but certainly worth a matinee ticket.
-- Frank Richard Aloysius Jude Maloney .
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


In the previous section we illustrated an OpenCAL implementation of a simple cellular automaton, namely the Conway’s Game of Life. Here, we will deal with a more complex example concerning the implementations of the SciddicaT Cellular Automata model for landslide simulation. Different versions will be presented, ranging from a naive to a fully optimized implementation.
Sciddica is a family of two-dimensional XCA (eXtended Cellular
Automata - see Chapter [ch:CA]) debris flow models, successfully
applied to the simulation of many real cases, such as the 1988 Mt.
Ontake (Japan) landslide and the 1998 Sarno (Italy) disaster. An
oversimplified toy-version of Sciddica (SciddicaT in the following) was
here considered to be implemented in OpenCAL
, and its
application to the 1992 Tessina (Italy) landslide shown.
SciddicaT considers the surface over which the phenomenon evolves as subdivided in square cells of uniform size. Each cell changes its state by means of the transition function, which takes as input the state of the cells belonging to the von Neumann neighborhood. It is formally defined as:
\[SciddicaT = < R, X, Q , P, \sigma >\]
where:
\(R\) is the set of points, with integer coordinates, which defines the 2-dimensional cellular space over which the phenomenon evolves. The generic cell in \(R\) is individuated by means of a couple of integer coordinates \((i, j)\), where \(0 \leq i < i_{max}\) and \(0 \leq j < j_{max}\). The firt coordinate, \(i\), represents the row, while the second, \(j\), the column. The cell at coodinates \((0,0)\) is located at the top-left corner of the computational grid.
\(X = \{(0,0), (-1, 0), (0, -1), (0, 1), (1, 0)\}\) is the von Neumann neighborhood relation (cf. Figure [fig:2Dneighborhood]), 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)) =\] \[= \{(i, j)+(0,0), (i, j)+(-1, 0), (i, j)+(0, -1), (i, j)+(0, 1), (i, j)+(1, 0)\} =\] \[= \{(i, j), (i-1, j), (i, j-1), (i, j+1), (i+1, j)\}\]
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), n)\]
represents the \(n^{th}\) neighbourhood of the cell \((i,j)\). Thereby, \(N(X, (i, j), 0) = (i, j)\), i.e. the central cell, \(N(X, (i, j), 1) = (i-1, j)\), i.e. the first neighbour, and so on.
\(Q\) is the set of cell states. It is subdivided in the following substates:
\(Q_z\) is the set of values representing the topographic altitude (i.e. elevation);
\(Q_h\) is the set of values representing the debris thickness;
\(Q_o^4\) are the sets of values representing the debris outflows from the central cell to the neighboring ones.
The Cartesian product of the substates defines the overall set of state \(Q\):
\[Q = Q_z \times Q_h \times Q_o^4\] so that the cell state is specified by the following sixtuple:
\[q = (q_z, q_h, q_{o_0}, q_{o_1}, q_{o_2}, q_{o_3})\] In particular, \(q_{o_0}\) represents the outflows from the central cell towards the neighbour 1, \(q_{o_1}\) the outflow towards the neighbour 2, and so on.
\(P\) is set of parameters ruling the CA dynamics:
\(p_\epsilon\) is the parameter which specifies the thickness of the debris that cannot leave the cell due to the effect of adherence;
\(p_r\) is the relaxation rate parameter, which affects the size of outflows (cf. section above).
\(\sigma : Q^5 \shortrightarrow Q\) is the deterministic cell transition function. It is composed by two elementary processes, listed below in the same order they are applied:
\(\sigma_1 : (Q_z \times Q_h)^5 \times p_\epsilon \times p_r\shortrightarrow Q_o^4\) determines the outflows from the central cell to the neighboring ones by applying the minimization algorithm of the differences. In brief, a preliminary control avoids outflows computation for those cells in which the amount of debris is smaller or equal to \(p_\epsilon\), acting as a simplification of the adherence effect. Thus, by means of the minimization algorithm, outflows \(q_o(0,m) \; (m=0,\ldots,3)\) from the central cell towards its four adjecent cells are evaluated, and the \(Q_o^4\) substates accordingly updated. Note that, \(q_o(0,0)\) represents the aoutflow from the central cell towards the neighbour 1, \(q_o(0,1)\) the aoutflow towards the neighbour 2, and so on. In general, \(q_o(0,m)\) represnets the outflows from the central cell towards the \(n=(m+1)^{th}\) neighbouring cell. Eventually, a relaxation rate factor, \(p_r \in \; ]0,1]\), is considered in order to obtain the local equilibrium condition in more than one CA step. This can significantly improve the realism of model as, in general, more than one step may be needed to displace the proper amount of debris from a cell towards the adjacent ones. In this case, if \(f(0,m) \; (i=0, \ldots, 3)\) represent the outgoing flows towards the 4 adjacent cells, as computed by the minimization algorithm, the resulting outflows are given by \(q_o(0,m)=f(0,m) \cdot p_r \; (i=0, \ldots, 3)\).
\(\sigma_2: Q_h \times (Q_o^4)^4 \shortrightarrow Q_h\) determines the value of debris thickness inside the cell by considering mass exchange in the cell neighborhood: \(h'(0) = h(0) + \sum_{m=0}^3 (q_o(0,m) - q_o(m,0))\). Here, \(h'(0)\) is the new debris thickness inside the cell, while \(q_o(m,0)\) represents the inflow from the \(n=(m+1)^{th}\) neighbouring cell. No parameters are involved in this elementary process.
In the following Listing [lst:cal_sciddicaT], an OpenCAL implementation of SciddicaT is shown.
As for the case of Game of Life, the CA model and the simulation
objects are declared as global variables (lines 22 and 35,
respectively), and defined later into the main function (lines 147 and
148, respevctively). As you can see, the 2D cellular space is a grid of
ROWS
rows times COLS
columns cells,
corresponding to
\(i_{max}\) and
\(j_{max}\) of the formal definition, respectively (cf. lines 10-11),
while the von Neumann neighbourhood is adopted. The cellular space is
still toroidal, as in Life, and no optimization is considered.
Regarding the simulation object, a total of STEPS
steps
(i.e. 4000 steps - cf. line 14) are set, and implicit substates
updating considered.
Substates and parameters are grouped into two different C structures
(lines 24-28 and 30-33, respectively). Substates are therefore bound to
the CA context by means of the calAddSubstate2Dr()
function (lines 155-160), as well as elementary processes are defined
as collback functions by means of the calAddElementaryProcess2D()
function (lines 151-152).
The topographic altitude and debris thickness substates are
initialized from files through the calLoadSubstate2Dr()
function (lines 163-164), while the remaining initial state of the CA
is set by means of the calRunAddInitFunc2D()
function. It
registers the sciddicaT_simulation_init()
callback, whic
is executed once before the execution of the simulation loop, in which
the elementary processes are applied to the whole set of cells of the
cellular space. Such a callback function must return void and take a
pointer to a simulation obect as parameter. Differently to an
elementary process, that can only access state values of cells
belonging to the neighbourhood, this function can perform global
operations on the whole cellular space. In the specific case of the
SciddicaT model, the sciddicaT_simulation_init()
function
(lines 104-130) sets the values of all the outflows from the central
cell to its neighbours to zero, by means of the function
calInitSubstate2Dr()
(lines 110-113). Moreover, it sets the
values of the P.r and P.epsilon parameters (lines 116-117) and
initializes the debris flow source by simply subtracting the source’s
debris thickness to the topographic altitude. For this purpose, a
nested double for is executed to check the debris thickness in each
cell of the cellular space. Here, the sciddicaT->rows
and
sciddicaT->cols
members of the CA object are used, which
represent the cellular spece’s numbers of rows and columns,
respectively. Still, the calGet2Dr()
and calSet2Dr()
functions are here employed to read/update substates’ values inside
the cells.
Line 168 defines a steering callback by the
calRunAddSteeringFunc2D()
function. Steering is executed at the
end of each computational step (i.e. after all the elementary processe
have been applied to each cell of the cellular space), and can perform
global operations over the cellular space. In this case, the
sciddicaT_simulation_init()
callback is registered; it must
return void and takes a pointer to a simulation object as function
parameter. It simply reset (to zero) the outflows everywere through the
calInitSubstate2Dr()
function.
The function calRun2D()
(line 171) enters the OpenCAL
simulation loop, which exectues a totoal of 4000 steps (cf. lines 14
and 148). Eventually, the final debris flow path is saved to file by
means of the calSaveSubstate2Dr()
function (line 176) and
previously allocated memery is released (lines 179-180).
As regards the elementary processes, the first one,
\(\sigma_1\), is defined at lines 38-88, while the second,
\(\sigma_2\), at lines 91-101. In both cases, the calGet2Dr()
calGetX2Dr()
functions are employed to get substes’
values for the central cell and its neighbours, respectively. Moreover,
the calSet2Dr()
function, updates the central cell’s
state.
Figure [fig:sciddicaT] shows the SciddicaT simulation of the 1992 Tessina (Italy) landslide. Both the initial landslide source and the final flow path configruation are shown.
As regards computational preformace, the simulation shown in Figure [fig:sciddicaT] was executed on a Intel Core i7-4702HQ CPU @ 2.20GHz by exploiting only a single core. The simulation lasted a total of 172 seconds for executing a total of 4000 compuational steps.
Figure [fig:opencal_main_loop] shows the OpenCAL main loop. Before
entering the loop, if defined, the init function is executed.
Afterwards, while the current step is lower or equal to the final step
of computation (or this latter is set to CAL_RUN_LOOP
),
elementary processes are executed concurrently9. In this cycle, substates are updated after
each elementary process has been applyed, while just before the end of
the computational step, if defined, the steering function is executed.
At the end of the computational step, a stop condition is checked,
which can stop the simulation before the last step is reached. In order
to define such a stop condition, the user can use the
stopCondition()
function, which registers a callback in which the
stop condition can be defined.


public HttpMessage HttpRequest::getHistory ( void )
Get all sent requests and received responses as an HttpMessage object. If you want to record history, set the instance variable HttpRequest::recordHistory to TRUE. The returned object references the last received response, use HttpMessage::getParentMessage() to access the data of previously sent requests and received responses.
Returns an HttpMessage object representing the complete request/response history.


{% extends 'registration/registration_base.html' %} {% load static %} {% block title %} E-Legislative Password Reset Complete Page {% endblock title%} {% block body_block %}
You have successfully reset your password. You may try to log-in again.


| Interface | Description |
|---|---|
| ANTLRErrorListener |
How to emit recognition errors.
|
| ANTLRErrorStrategy |
The interface for defining strategies to deal with syntax errors encountered
during a parse by ANTLR-generated parsers.
|
| CharStream |
A source of characters for an ANTLR lexer.
|
| IntStream |
A simple stream of symbols whose values are represented as integers.
|
| Token |
A token has properties: text, type, line, character position in the line
(so we can ignore tabs), token channel, index, and source from which
we obtained this token.
|
| TokenFactory<Symbol extends Token> |
The default mechanism for creating tokens.
|
| TokenSource |
A source of tokens must provide a sequence of tokens via
TokenSource.nextToken()
and also must reveal it's source of characters; CommonToken 's text is
computed from a CharStream ; it only store indices into the char
stream. |
| TokenStream | |
| Vocabulary |
This interface provides information about the vocabulary used by a
recognizer.
|
| WritableToken |
| Class | Description |
|---|---|
| ANTLRFileStream | Deprecated
as of 4.7 Please use
CharStreams interface. |
| ANTLRInputStream | Deprecated
as of 4.7 Please use
CharStreams interface. |
| BailErrorStrategy |
This implementation of
ANTLRErrorStrategy responds to syntax errors
by immediately canceling the parse operation with a
ParseCancellationException . |
| BaseErrorListener |
Provides an empty default implementation of
ANTLRErrorListener . |
| BufferedTokenStream |
This implementation of
TokenStream loads tokens from a
TokenSource on-demand, and places the tokens in a buffer to provide
access to any previous token by index. |
| CharStreams |
This class represents the primary interface for creating
CharStream s
from a variety of sources as of 4.7. |
| CodePointBuffer | |
| CodePointBuffer.Builder | |
| CodePointCharStream |
Alternative to
ANTLRInputStream which treats the input
as a series of Unicode code points, instead of a series of UTF-16
code units. |
| CommonToken | |
| CommonTokenFactory |
This default implementation of
TokenFactory creates
CommonToken objects. |
| CommonTokenStream |
This class extends
BufferedTokenStream with functionality to filter
token streams to tokens on a particular channel (tokens where
Token.getChannel() returns a particular value). |
| ConsoleErrorListener | |
| DefaultErrorStrategy |
This is the default implementation of
ANTLRErrorStrategy used for
error reporting and recovery in ANTLR parsers. |
| DiagnosticErrorListener |
This implementation of
ANTLRErrorListener can be used to identify
certain potential correctness and performance problems in grammars. |
| InterpreterRuleContext |
This class extends
ParserRuleContext by allowing the value of
InterpreterRuleContext.getRuleIndex() to be explicitly set for the context. |
| Lexer |
A lexer is recognizer that draws input symbols from a character stream.
|
| LexerInterpreter | |
| ListTokenSource |
Provides an implementation of
TokenSource as a wrapper around a list
of Token objects. |
| Parser |
This is all the parsing support code essentially; most of it is error recovery stuff.
|
| Parser.TrimToSizeListener | |
| ParserInterpreter |
A parser simulator that mimics what ANTLR's generated
parser code does.
|
| ParserRuleContext |
A rule invocation record for parsing.
|
| ProxyErrorListener |
This implementation of
ANTLRErrorListener dispatches all calls to a
collection of delegate listeners. |
| Recognizer<Symbol,ATNInterpreter extends ATNSimulator> | |
| RuleContext |
A rule context is a record of a single rule invocation.
|
| RuleContextWithAltNum |
A handy class for use with
options {contextSuperClass=org.antlr.v4.runtime.RuleContextWithAltNum;}
that provides a backing field / impl for the outer alternative number
matched for an internal parse tree node.
|
| RuntimeMetaData |
This class provides access to the current version of the ANTLR 4 runtime
library as compile-time and runtime constants, along with methods for
checking for matching version numbers and notifying listeners in the case
where a version mismatch is detected.
|
| TokenStreamRewriter |
Useful for rewriting out a buffered input token stream after doing some
augmentation or other manipulations on it.
|
| UnbufferedCharStream |
Do not buffer up the entire char stream.
|
| UnbufferedTokenStream<T extends Token> | |
| VocabularyImpl |
This class provides a default implementation of the
Vocabulary
interface. |
| Enum | Description |
|---|---|
| CodePointBuffer.Type |
| Exception | Description |
|---|---|
| FailedPredicateException |
A semantic predicate failed during validation.
|
| InputMismatchException |
This signifies any kind of mismatched input exceptions such as
when the current input does not match the expected token.
|
| LexerNoViableAltException | |
| NoViableAltException |
Indicates that the parser could not decide which of two or more paths
to take based upon the remaining input.
|
| RecognitionException |
The root of the ANTLR exception hierarchy.
|
Copyright © 1992–2021 ANTLR. All rights reserved.


You should try this instead: // same as `caveatsModel.items[0] = ...` but triggers view update caveatsModel.items.$set(0, { message: 'Changed!'})
You can also use the remove() function caveatsModel.items.$remove({ message: 'foo' }) This needs to be the same object instance.


The Tin Woodman of Oz
by L. Frank Baum
Chapter 6: “The Magic of a Yookoohoo”
Additional Information
- Year Published: 1918
- Language: English
- Country of Origin: United States of America
- Source: Baum, L. F. (1918). The Tin Woodman of Oz. J. R. Neill (Ed.).
-
Readability:
- Flesch–Kincaid Level: 7.0
- Word Count: 3,180
- Genre: Fantasy
- Keywords: 20th century literature, american literature, books of oz, children's literature, fantasy, l. frank baum
- ✎ Cite This
Downloads
Woot had seen very little of magic during his wanderings, while the Scarecrow and the Tin Woodman had seen a great deal of many sorts in their lives, yet all three were greatly impressed by Mrs. Yoop’s powers. She did not affect any mysterious airs or indulge in chants or mystic rites, as most witches do, nor was the Giantess old and ugly or disagreeable in face or manner. Nevertheless, she frightened her prisoners more than any witch could have done.
“Please be seated,” she said to them, as she sat herself down in a great arm-chair and spread her beautiful embroidered skirts for them to admire. But all the chairs in the room were so high that our friends could not climb to the seats of them. Mrs. Yoop observed this and waved her hand, when instantly a golden ladder appeared leaning against a chair opposite her own.
“Climb up,” said she, and they obeyed, the Tin Man and the boy assisting the more clumsy Scarecrow. When they were all seated in a row on the cushion of the chair, the Giantess continued: “Now tell me how you happened to travel in this direction, and where you came from and what your errand is.”
So the Tin Woodman told her all about Nimmie Amee, and how he had decided to find her and marry her, although he had no Loving Heart. The story seemed to amuse the big woman, who then began to ask the Scarecrow questions and for the first time in her life heard of Ozma of Oz, and of Dorothy and Jack Pumpkinhead and Dr. Pipt and Tik-tok and many other Oz people who are well known in the Emerald City. Also Woot had to tell his story, which was very simple and did not take long. The Giantess laughed heartily when the boy related their adventure at Loonville, but said she knew nothing of the Loons because she never left her Valley.
“There are wicked people who would like to capture me, as they did my giant husband, Mr. Yoop,” said she; “so I stay at home and mind my own business.”
“If Ozma knew that you dared to work magic without her consent, she would punish you severely,” declared the Scarecrow, “for this castle is in the Land of Oz, and no persons in the Land of Oz are permitted to work magic except Glinda the Good and the little Wizard who lives with Ozma in the Emerald City.”
“That for your Ozma!” exclaimed the Giantess, snapping her fingers in derision. “What do I care for a girl whom I have never seen and who has never seen me?”
“But Ozma is a fairy,” said the Tin Woodman, “and therefore she is very powerful. Also, we are under Ozma’s protection, and to injure us in any way would make her extremely angry.”
“What I do here, in my own private castle in this secluded Valley—where no one comes but fools like you—can never be known to your fairy Ozma,” returned the Giantess. “Do not seek to frighten me from my purpose, and do not allow yourselves to be frightened, for it is best to meet bravely what cannot be avoided. I am now going to bed, and in the morning I will give you all new forms, such as will be more interesting to me than the ones you now wear. Good night, and pleasant dreams.”
Saying this, Mrs. Yoop rose from her chair and walked through a doorway into another room. So heavy was the tread of the Giantess that even the walls of the big stone castle trembled as she stepped. She closed the door of her bedroom behind her, and then suddenly the light went out and the three prisoners found themselves in total darkness.
The Tin Woodman and the Scarecrow didn’t mind the dark at all, but Woot the Wanderer felt worried to be left in this strange place in this strange manner, without being able to see any danger that might threaten.
“The big woman might have given me a bed, anyhow,” he said to his companions, and scarcely had he spoken when he felt something press against his legs, which were then dangling from the seat of the chair. Leaning down, he put out his hand and found that a bedstead had appeared, with mattress, sheets and covers, all complete. He lost no time in slipping down upon the bed and was soon fast asleep.
During the night the Scarecrow and the Emperor talked in low tones together, and they got out of the chair and moved all about the room, feeling for some hidden spring that might open a door or window and permit them to escape.
Morning found them still unsuccessful in the quest and as soon as it was daylight Woot’s bed suddenly disappeared, and he dropped to the floor with a thump that quickly wakened him. And after a time the Giantess came from her bedroom, wearing another dress that was quite as elaborate as the one in which she had been attired the evening before, and also wearing the pretty lace apron. Having seated herself in a chair, she said:
“I’m hungry; so I’ll have breakfast at once.”
She clapped her hands together and instantly the table appeared before her, spread with snowy linen and laden with golden dishes. But there was no food upon the table, nor anything else except a pitcher of water, a bundle of weeds and a handful of pebbles. But the Giantess poured some water into her coffee-pot, patted it once or twice with her hand, and then poured out a cupful of steaming hot coffee.
“Would you like some?” she asked Woot.
He was suspicious of magic coffee, but it smelled so good that he could not resist it; so he answered: “If you please, Madam.”
The Giantess poured out another cup and set it on the floor for Woot. It was as big as a tub, and the golden spoon in the saucer beside the cup was so heavy the boy could scarcely lift it. But Woot managed to get a sip of the coffee and found it delicious.
Mrs. Yoop next transformed the weeds into a dish of oatmeal, which she ate with good appetite.
“Now, then,” said she, picking up the pebbles. “I’m wondering whether I shall have fish-balls or lamb-chops to complete my meal. Which would you prefer, Woot the Wanderer?”
“If you please, I’ll eat the food in my knapsack,” answered the boy. “Your magic food might taste good, but I’m afraid of it.”
The woman laughed at his fears and transformed the pebbles into fish-balls.
“I suppose you think that after you had eaten this food it would turn to stones again and make you sick,” she remarked; “but that would be impossible. Nothing I transform ever gets back to its former shape again, so these fish-balls can never more be pebbles. That is why I have to be careful of my transformations,” she added, busily eating while she talked, “for while I can change forms at will I can never change them back again—which proves that even the powers of a clever Yookoohoo are limited. When I have transformed you three people, you must always wear the shapes that I have given you.”
“Then please don’t transform us,” begged Woot, “for we are quite satisfied to remain as we are.”
“I am not expecting to satisfy you, but intend to please myself,” she declared, “and my pleasure is to give you new shapes. For, if by chance your friends came in search of you, not one of them would be able to recognize you.”
Her tone was so positive that they knew it would be useless to protest. The woman was not unpleasant to look at; her face was not cruel; her voice was big but gracious in tone; but her words showed that she possessed a merciless heart and no pleadings would alter her wicked purpose.
Mrs. Yoop took ample time to finish her breakfast and the prisoners had no desire to hurry her, but finally the meal was concluded and she folded her napkin and made the table disappear by clapping her hands together. Then she turned to her captives and said:
“The next thing on the programme is to change your forms.”
“Have you decided what forms to give us?” asked the Scarecrow, uneasily.
“Yes; I dreamed it all out while I was asleep. This Tin Man seems a very solemn person ”—indeed, the Tin Woodman was looking solemn, just then, for he was greatly disturbed—“so I shall change him into an Owl.”
All she did was to point one finger at him as she spoke, but immediately the form of the Tin Woodman began to change and in a few seconds Nick Chopper, the Emperor of the Winkies, had been transformed into an Owl, with eyes as big as saucers and a hooked beak and strong claws. But he was still tin. He was a Tin Owl, with tin legs and beak and eyes and feathers. When he flew to the back of a chair and perched upon it, his tin feathers rattled against one another with a tinny clatter. The Giantess seemed much amused by the Tin Owl’s appearance, for her laugh was big and jolly.
“You’re not liable to get lost,” said she, “for your wings and feathers will make a racket wherever you go. And, on my word, a Tin Owl is so rare and pretty that it is an improvement on the ordinary bird. I did not intend to make you tin, but I forgot to wish you to be meat. However, tin you were, and tin you are, and as it’s too late to change you, that settles it.”
Until now the Scarecrow had rather doubted the possibility of Mrs. Yoop’s being able to transform him, or his friend the Tin Woodman, for they were not made as ordinary people are. He had worried more over what might happen to Woot than to himself, but now he began to worry about himself.
“Madam,” he said hastily, “I consider this action very impolite. It may even be called rude, considering we are your guests.”
“You are not guests, for I did not invite you here,” she replied.
“Perhaps not; but we craved hospitality. We threw ourselves upon your mercy, so to speak, and we now find you have no mercy. Therefore, if you will excuse the expression, I must say it is downright wicked to take our proper forms away from us and give us others that we do not care for.”
“Are you trying to make me angry?” she asked, frowning.
“By no means,” said the Scarecrow; “I’m just trying to make you act more ladylike.”
“Oh, indeed!
Again the dreadful finger pointed, this time in the Scarecrow’s direction, and at once his form began to change. In a few seconds he had become a small Brown Bear, but he was stuffed with straw as he had been before, and when the little Brown Bear shuffled across the floor he was just as wobbly as the Scarecrow had been and moved just as awkwardly.
Woot was amazed, but he was also thoroughly frightened.
“Did it hurt?” he asked the little Brown Bear.
“No, of course not,” growled the Scarecrow in the Bear’s form; “but I don’t like walking on four legs; it’s undignified.”
“Consider my humiliation!” chirped the Tin Owl, trying to settle its tin feathers smoothly with its tin beak. “And I can’t see very well, either. The light seems to hurt my eyes.”
“That’s because you are an Owl,” said Woot. “I think you will see better in the dark.”
“Well,” remarked the Giantess, “I’m very well pleased with these new forms, for my part, and I’m sure you will like them better when you get used to them. So now,” she added, turning to the boy, “it is your turn.”
“Don’t you think you’d better leave me as I am?” asked Woot in a trembling voice.
“No,” she replied, “I’m going to make a Monkey of you. I love monkeys—they’re so cute!—and I think a Green Monkey will be lots of fun and amuse me when I am sad.”
Woot shivered, for again the terrible magic finger pointed, and pointed directly his way. He felt himself changing; not so very much, however, and it didn’t hurt him a bit. He looked down at his limbs and body and found that his clothes were gone and his skin covered with a fine, silk-like green fur. His hands and feet were now those of a monkey. He realized he really was a monkey, and his first feeling was one of anger. He began to chatter as monkeys do. He bounded to the seat of a giant chair, and then to its back and with a wild leap sprang upon the laughing Giantess. His idea was to seize her hair and pull it out by the roots, and so have revenge for her wicked transformations. But she raised her hand and said:
“Gently, my dear Monkey—gently! You’re not angry; you’re happy as can be!”
Woot stopped short.   In return, she smiled at the funny green animal and patted his head.
“Very good,” said the Giantess. “Let us all become friends and be happy together. How is my Tin Owl feeling?”
“Quite comfortable,” said the Owl. “I don’t like it, to be sure, but I’m not going to allow my new form to make me unhappy. But, tell me, please: what is a Tin Owl good for?”
“You are only good to make me laugh,” replied the Giantess.
“Will a stuffed Bear also make you laugh?” inquired the Scarecrow, sitting back on his haunches to look up at her.
“Of course,” declared the Giantess; “and I have added a little magic to your transformations to make you all contented with wearing your new forms. I’m sorry I didn’t think to do that when I transformed Polychrome into a Canary-Bird. But perhaps, when she sees how cheerful you are, she will cease to be silent and sullen and take to singing. I will go get the bird and let you see her.”
With this, Mrs. Yoop went into the next room and soon returned bearing a golden cage in which sat upon a swinging perch a lovely yellow Canary. “Polychrome,” said the Giantess, “permit me to introduce to you a Green Monkey, which used to be a boy called Woot the Wanderer, and a Tin Owl, which used to be a Tin Woodman named Nick Chopper, and a straw-stuffed little Brown Bear which used to be a live Scarecrow.”
“We already know one another,” declared the Scarecrow. “The bird is Polychrome, the Rainbow’s Daughter, and she and I used to be good friends.”
“Are you really my old friend, the Scarecrow?” asked the bird, in a sweet, low voice.
“There!” cried Mrs. Yoop; “that’s the first time she has spoken since she was transformed.”
“I am really your old friend,” answered the Scarecrow; “but you must pardon me for appearing just now in this brutal form.”
“I am a bird, as you are, dear Poly,” said the Tin Woodman; “but, alas! a Tin Owl is not as beautiful as a Canary-Bird.”
“How dreadful it all is!” sighed the Canary. “Couldn’t you manage to escape from this terrible Yookoohoo?”
No,” answered the Scarecrow, “we tried to escape, but failed. She first made us her prisoners and then transformed us. But how did she manage to get you, Polychrome?”’
“I was asleep, and she took unfair advantage of me,” answered the bird sadly. “Had I been awake, I could easily have protected myself.”
“Tell me,” said the Green Monkey earnestly, as he came close to the cage, “what must we do, Daughter of the Rainbow, to escape from these transformations? Can’t you help us, being a Fairy?”
“At present I am powerless to help even myself,” replied the Canary.
“That’s the exact truth!” exclaimed the Giantess, who seemed pleased to hear the bird talk, even though it complained; “you are all helpless and in my power, so you may as well make up your minds to accept your fate and be content. Remember that you are transformed for good, since no magic on earth can break your enchantments. I am now going out for my morning walk, for each day after breakfast I walk sixteen times around my castle for exercise. Amuse yourselves while I am gone, and when I return I hope to find you all reconciled and happy.”
So the Giantess walked to the door by which our friends had entered the great hall and spoke one word: “Open!” Then the door swung open and after Mrs. Yoop had passed out it closed again with a snap as its powerful bolts shot into place. The Green Monkey had rushed toward the opening, hoping to escape, but he was too late and only got a bump on his nose as the door slammed shut.


Light
68°F
+
ECC D2L
ECC Dashboard
PCPartpicker
GOKZ Stats
Planning Notes
Github
Reddit
Youtube
Google Music
Wolfram Alpha
Google Keep
Gmail
Seafile
Intra Cytube
Unfinished KZ Maps
CSGO Scale
Netplay
Project Euler
Hacker Rank


Login to continue
×
In order to save your highlight, please login.
You have successfully logged in.
Close this window to continue.


Davis Cup: Great Britain against Kazakhstan head into deciding doubles rubber
Jamie Murray and Neal Skupski will again take to court for the crucial doubles rubber to decide which team will make the quarter-finals of the Davis Cup in Madrid
Great Britain's crunch Davis Cup clash with Kazakhstan headed into a deciding doubles rubber after British No 1 Dan Evans suffered a three-set defeat to Alexander Bublik.
Kyle Edmund opened the tie on a winning-note with a 6-3 6-3 victory over Mikhail Kukushkin in the opening rubber before Evans went down 5-7 6-4 6-1 defeat to an inspired Bublik.
Edmund wasn't part of the team's opening round against the Netherlands and came into the team as the No 2 singles player for this decisive clash.
Leon Smith had elected to field Edmund and Evans for the two singles matches with Andy Murray supporting from the team bench. Jamie Murray and Neal Skupski retained their places for the doubles rubber.
On court at the Caja Magica in Madrid, Edmund cut a determined figure as he raced to a straight-sets win over Kukushkin, who is ranked two places higher than him.
The Brit was named late as the fifth member of Great Britain's squad and pipped Cameron Norrie to the post after a strong run at the Paris Masters.
"Today I just wanted to go on court and really give it my all. It was such a buzz to thrive off this crowd. Davis Cup, playing for your country - it doesn't get any better," Edmund said.
Edmund's performance set exactly the right tone for the day from a Great Britain perspective.
He struck his hefty groundstrokes with authority, pounced on any short balls and stayed tough in the face of any pressure, saving all the break points he faced.
"The job's half done so we really need to push it home now," Edmund added.
In the second rubber Evans was unable to emulate Edmund's result as world No 57 Bublik came back from a set down to level things and send the tie into a crucial deciding doubles rubber.
The Kazakh regularly sent down second serves in excess of 125mph, and one that landed virtually on the baseline gave Evans the first set, Bublik smashing his racket on the court in disgust.
But a break of the Evans serve for 5-4 in the second turned the tide and he was overpowered in the decider
Murray and Skupski must now repeat their heroics from Wednesday in the deciding doubles or Britain will make a premature exit from the competition.
Davis Cup quarter-final line-up
| Serbia | vs | Russia |
| Australia | vs | Canada |
| Great Britain or Kazakhstan | vs | Germany |
| Argentina | vs | Spain |
Check our news, reports and reaction from all major tennis events by following us on skysports.com/tennis, our app for mobile devices or our Twitter account @skysportstennis.


Download This Plugin
Back To jQueryScript.Net
jQuery TimeCircles Examples
Time until 25/12/2013
Counting down 15 minutes (900 seconds)
Start Timer
Stop Timer
Time since page was opened
Fade in
Fade out


Alex Limi is
VP Product at
Nuclia, an AI search company.
Previously, he was VP Product at
Highfive
— a hardware & software video conferencing
company, led Firefox
User Experience
& Product Design at Mozilla,
designed at Google,
and is the co-founder of the open source project Plone.
{% for post in paginator.posts %}
{% unless post.draft %}


CV
See the highlights below or click HERE to download a PDF version.
IN BRIEF
Meticulous and adaptable developer with a background in startup operations and maths-based music research, looking for demanding junior dev role beginning July 2015. Love Ruby and JavaScript, but up for anything!
WEB DEV SKILLS
Tools & Process
- I’ve worked in agile teams utilising scrums
- Comfortable with concepts of version control and have experience with collaborative git
- I love learning through pair programming and am currently working with friends to explore TDD through ping pong
Back-end
- I’ve worked with Ruby on Rails, prototyping apps to provided specifications
- I’m familiar with PostgreSQL database queries
- I have experience integrating APIs, and have built apps that interact extensively with Twitter and Google maps.
Front-end
- I write well-structured HTML and CSS
- I write unobtrusive JavaScript with jQuery
- I’ve played with the Angular.js framework
- I’m familiar with Ajax requests
WORK IN TECH
General Assembly, Web Dev Immersive Teaching Assistant (ongoing)
I will teach and support students as they learn server and client side languages and frameworks including Ruby on Rails, JavaScript, Ajax, Firebase, Node.js, and CSS/HTML.
EDUCATION
General Assembly, London
Web Development Immersive (April 2015)
Columbia University, New York, NY
M.Phil. Music Theory (2012)
M.A. Music Theory (2010)
Indiana University, Bloomington
B.A. Honours in Music, with High Distinction (2008)
Major: Music Theory and Oboe Performance
Minor: Spanish
FREE TIME
Codebar coach, London, ongoing
I chat Ruby, JavaScript, debugging and more with less-experienced coders at weekly events
Sonya Kovalevsky Mathematics Day Instructor, 2012-2013
Led workshops on maths and music for high school girls at Columbia University


Rendered source of your form:
About
Created By Adam Moore (@minikomi) to help take the stress out of
writing all that markup to get bootstrap forms together. The original version of this was a big jQuery
spaghetti mess, so as of March 2013 it has been rewritten using backbone.js and
takes advantage of underscode.js templates.
If you have a problem, or want a specific snippet added please check out the
github project. Note, this is only a simple tool so I'm not
that keen on adding many features (eg. saving/exporting forms, embedding forms etc.).
Adding snippets is quite simple now (due to the rewrite!) so please don't hesitate to open an issue!


JavaScript is a high-level, dynamic, untyped, and interpreted programming language. It has been standardized in the ECMAScript language specification. Alongside HTML and CSS, it is one of the three essential technologies of World Wide Web content production; the majority of websites employ it and it is supported by all modern web browsers without plug-ins. JavaScript is prototype-based with first-class functions, making it a multi-paradigm language, supporting object-oriented, imperative, and functional programming styles. It has an API for working with text, arrays, dates and regular expressions, but does not include any I/O, such as networking, storage or graphics facilities, relying for these upon the host environment in which it is embedded.


My Website
A website created by me.
Link
Link
Link
Link
About Me
photo of me:
Image
More Text
Some lorem ipsum text.
Image
Image
Image
Main Content


Categories: Core Battalion
Selections: Extra Enhancement: Artefacts of Power
Categories: Core Battalion
Selections: Battle Regiment - 0-2 Sub-Commander, Valedictor's Stave
Categories: ORDER, 9 or less wounds Leader, Leader, STORMCAST ETERNALS, THUNDERSTRIKE, HERO, WIZARD, KNIGHT-ARCANUM
Selections: Amulet of Destiny, Sigmarite Warblade, Warlord - 2-4 Sub-Commanders
Categories: Leader, 9 or less wounds Leader, ORDER, STORMCAST ETERNALS, THUNDERSTRIKE, HERO, TOTEM, KNIGHT-VEXILLOR, KNIGHT-VEXILLOR WITH BANNER OF APOTHEOSIS, Artefact
Selections: Castellant's Halberd, Warlord - 2-4 Sub-Commanders
Categories: CELESTIAL, HERO, HUMAN, ORDER, STORMCAST ETERNALS, Leader, LORD-CASTELLANT, 9 or less wounds Leader
Selections: Beak and Claws
Categories: CELESTIAL, GRYPH-HOUNDS, ORDER, STORMCAST ETERNALS, Other
Selections: 5. Staunch Defender, Battle Regiment - 1 Commander, Blessed Warhammer, General, Stormcaller Baton, Vicious Beak and Claws
Categories: 9 or less wounds Leader, Leader, ORDER, STORMCAST ETERNALS, THUNDERSTRIKE, HERO, LORD-IMPERATANT, General, 6_under_wounds
Selections: Arcane Bolt, Mystic Shield
Categories: Artefact
Selections: Blade of the High Heavens, Thengavar, Warlord - 1-2 Commanders
Categories: 9 or less wounds Leader, Leader, ORDER, STORMCAST ETERNALS, THUNDERSTRIKE, HERO, YNDRASTA
Selections: 5 Liberators [95pts], Battle Regiment - 2-5 Troops, Grandblade, Warblade and Shield
Categories: CELESTIAL, HUMAN, LIBERATORS, REDEEMER, ORDER, STORMCAST ETERNALS, Battleline
Selections: 5 Vindictors [140pts], Battle Regiment - 2-5 Troops, Stormspear
Categories: Battleline, STORMCAST ETERNALS, ORDER, THUNDERSTRIKE, VINDICATORS, REDEEMER
Selections: 5 Vindictors [140pts], Battle Regiment - 2-5 Troops, Stormspear
Categories: Battleline, STORMCAST ETERNALS, ORDER, THUNDERSTRIKE, VINDICATORS, REDEEMER
Selections: 3 Annihilators [190pts], Meteoric Hammer, Warlord - 1-2 Troops
Categories: Other, ANNIHILATORS, ORDER, STORMCAST ETERNALS, THUNDERSTRIKE
Selections: 2. Celestial Blades, 3 Evocators on Celestial Dracolines [280pts], Monstrous Claws, Tempest Blade and Stormstave, Warlord - 1-2 Troops
Categories: CELESTIAL, HUMAN, ORDER, SACROSANCT, STORMCAST ETERNALS, WIZARD, CORPUSCANT, DRACOLINE, Other, EVOCATORS
Selections: 3 Praetors [155pts], Battle Regiment - 2-5 Troops, Soulguard's Halberd
Categories: Other, ORDER, STORMCAST ETERNALS, THUNDERSTRIKE, PRAETORS
Selections: 5 Sequitors [130pts], Battle Regiment - 2-5 Troops, 2x Stormsmite Greatmace, Stormsmite Greatmace (Sequitor-Prime), Stormsmite Maul and Soulshield
Categories: CELESTIAL, HUMAN, ORDER, SACROSANCT, STORMCAST ETERNALS, SEQUITORS, REDEEMER, Other
Selections: Allegiance: Stormcast Eternals
Categories: Allegiance
Selections: 2000 Points - Battlehost
Categories: Game Options, Battlehost
Selections: Prized Sorcery
Categories: Game Options
Selections: Battle: Ghur
Categories: Game Options
Selections: Inspired
Categories: Game Options, Triumph
Created with BattleScribe


See: Description
| Package | Description |
|---|---|
| org.apache.beam.runners.apex |
Implementation of the Beam runner for Apache Apex.
|
| org.apache.beam.runners.dataflow |
Provides a Beam runner that executes pipelines on the Google Cloud Dataflow service.
|
| org.apache.beam.runners.dataflow.options |
Provides
PipelineOptions specific to Google Cloud Dataflow. |
| org.apache.beam.runners.dataflow.util |
Provides miscellaneous internal utilities used by the Google Cloud Dataflow runner.
|
| org.apache.beam.runners.direct |
Defines the
PipelineOptions.DirectRunner
which executes both Bounded and Unbounded Pipelines on the local machine. |
| org.apache.beam.runners.flink |
Internal implementation of the Beam runner for Apache Flink.
|
| org.apache.beam.runners.flink.metrics |
Internal metrics implementation of the Beam runner for Apache Flink.
|
| org.apache.beam.runners.spark |
Internal implementation of the Beam runner for Apache Spark.
|
| org.apache.beam.runners.spark.aggregators |
Provides internal utilities for implementing Beam aggregators using Spark accumulators.
|
| org.apache.beam.runners.spark.aggregators.metrics |
Defines classes for integrating with Spark's metrics mechanism (Sinks, Sources, etc.).
|
| org.apache.beam.runners.spark.coders |
Beam coders and coder-related utilities for running on Apache Spark.
|
| org.apache.beam.runners.spark.io |
Spark-specific transforms for I/O.
|
| org.apache.beam.runners.spark.metrics |
Provides internal utilities for implementing Beam metrics using Spark accumulators.
|
| org.apache.beam.runners.spark.metrics.sink |
Spark sinks that supports beam metrics and aggregators.
|
| org.apache.beam.runners.spark.stateful |
Spark-specific stateful operators.
|
| org.apache.beam.runners.spark.util |
Internal utilities to translate Beam pipelines to Spark.
|
| org.apache.beam.sdk |
Provides a simple, powerful model for building both batch and
streaming parallel data processing
Pipeline s. |
| org.apache.beam.sdk.annotations |
Defines annotations used across the SDK.
|
| org.apache.beam.sdk.coders |
Defines
Coders
to specify how data is encoded to and decoded from byte strings. |
| org.apache.beam.sdk.extensions.gcp.auth |
Defines classes related to interacting with
Credentials for
pipeline creation and execution containing Google Cloud Platform components. |
| org.apache.beam.sdk.extensions.gcp.options |
Defines
PipelineOptions for
configuring pipeline execution for Google Cloud Platform components. |
| org.apache.beam.sdk.extensions.gcp.storage |
Defines IO connectors for Google Cloud Storage.
|
| org.apache.beam.sdk.extensions.jackson |
Utilities for parsing and creating JSON serialized objects.
|
| org.apache.beam.sdk.extensions.joinlibrary |
Utilities for performing SQL-style joins of keyed
PCollections . |
| org.apache.beam.sdk.extensions.protobuf |
Defines a
Coder
for Protocol Buffers messages, ProtoCoder . |
| org.apache.beam.sdk.extensions.sorter |
Utility for performing local sort of potentially large sets of values.
|
| org.apache.beam.sdk.io | |
| org.apache.beam.sdk.io.elasticsearch |
Transforms for reading and writing from Elasticsearch.
|
| org.apache.beam.sdk.io.fs |
Apache Beam FileSystem interfaces and their default implementations.
|
| org.apache.beam.sdk.io.gcp.bigquery |
Defines transforms for reading and writing from Google BigQuery.
|
| org.apache.beam.sdk.io.gcp.bigtable |
Defines transforms for reading and writing from Google Cloud Bigtable.
|
| org.apache.beam.sdk.io.gcp.common |
Defines common Google Cloud Platform IO support classes.
|
| org.apache.beam.sdk.io.gcp.datastore |
Provides an API for reading from and writing to
Google Cloud Datastore over different
versions of the Cloud Datastore Client libraries.
|
| org.apache.beam.sdk.io.gcp.pubsub |
Defines transforms for reading and writing from
Google Cloud Pub/Sub.
|
| org.apache.beam.sdk.io.gcp.testing |
Defines utilities for unit testing Google Cloud Platform components of Apache Beam pipelines.
|
| org.apache.beam.sdk.io.hadoop |
Classes shared by Hadoop based IOs.
|
| org.apache.beam.sdk.io.hadoop.inputformat |
Defines transforms for reading from Data sources which implement Hadoop Input Format.
|
| org.apache.beam.sdk.io.hbase |
Defines transforms for reading and writing from HBase.
|
| org.apache.beam.sdk.io.hdfs |
FileSystem implementation for any Hadoop
FileSystem . |
| org.apache.beam.sdk.io.jdbc |
Transforms for reading and writing from JDBC.
|
| org.apache.beam.sdk.io.jms |
Transforms for reading and writing from JMS (Java Messaging Service).
|
| org.apache.beam.sdk.io.kafka |
Transforms for reading and writing from Apache Kafka.
|
| org.apache.beam.sdk.io.kafka.serialization |
Kafka serializers and deserializers.
|
| org.apache.beam.sdk.io.kinesis |
Transforms for reading and writing from Amazon Kinesis.
|
| org.apache.beam.sdk.io.mongodb |
Transforms for reading and writing from MongoDB.
|
| org.apache.beam.sdk.io.mqtt |
Transforms for reading and writing from MQTT.
|
| org.apache.beam.sdk.io.range |
Provides thread-safe helpers for implementing dynamic work rebalancing in position-based
bounded sources.
|
| org.apache.beam.sdk.io.xml |
Transforms for reading and writing Xml files.
|
| org.apache.beam.sdk.metrics |
Metrics allow exporting information about the execution of a pipeline.
|
| org.apache.beam.sdk.options |
Defines
PipelineOptions for
configuring pipeline execution. |
| org.apache.beam.sdk.state |
Classes and interfaces for interacting with state.
|
| org.apache.beam.sdk.testing |
Defines utilities for unit testing Apache Beam pipelines.
|
| org.apache.beam.sdk.transforms |
Defines
PTransform s for transforming
data in a pipeline. |
| org.apache.beam.sdk.transforms.display |
Defines
HasDisplayData for annotating components
which provide display data used
within UIs and diagnostic tools. |
| org.apache.beam.sdk.transforms.join |
Defines the
CoGroupByKey transform
for joining multiple PCollections. |
| org.apache.beam.sdk.transforms.splittabledofn |
Defines utilities related to splittable
DoFn . |
| org.apache.beam.sdk.transforms.windowing | |
| org.apache.beam.sdk.values |
Defines
PCollection and other classes for
representing data in a Pipeline . |
The Apache Beam SDK for Java provides a simple and elegant programming model to express your data processing pipelines; see the Apache Beam website for more information and getting started instructions.
The easiest way to use the Apache Beam SDK for Java is via one of the released artifacts from the Maven Central Repository.
Version numbers use the form major.minor.incremental and are incremented as follows:
Please note that APIs marked
@Experimental
may change at any point and are not guaranteed to remain compatible across versions.


jQuery Multi-bar v0.4.0
jQuery Multi-bar is a jQuery plugin which you can build custom progress bar with multi and personalized colors. The number and style of the colors are at your choice, so 'as the initial and final values. This allows you to create progress bar completely tailored to your needs. You can assign one or more values to the bar and you'll see them appear as a marker on the bar itself. And, if you want, you can decide to show also the legend of the value.
Unlike http://j-ulrich.github.com/jquery-ui-multiprogressbar plugin, this plugin adds the ability to include one or more markers that identify some points on the bar and show the relative legend.
Below you find a number of examples of using the plugin.
All info and updated code: https://github.com/teorossi82/jquery-multi-bar
Bar with single marker and default options
Bar with single marker with position inside and direction reverse (from max to min)
Bar with single marker and small size
Bar with multi marker and custom bar colors
Bar with multi marker and custom bar classes - 1
Bar with multi marker and custom bar classes - 2
Bar with some values of blocks hidden
Bar with all values of blocks hidden
Bar with multi marker, custom bar colors and legend
Bar with multi marker's custom style, custom bar colors and legend
Bar with multi marker, custom bar colors and legend with title and personalized style
Bar with shadow (shadow:"top_right")
Bar with scale of hot colors (type:hot)
Bar with scale of cold colors (type:cold)
Multi Bar Thermometer
Multi Bar Thermometer combined with type:"hot" and size:"small"


Eyeglasses
Sunglasses
RX Sunglasses
Shop all
Eyeonic
menu
Men
Women
Brands
Shop
arrow_drop_down
About
Contact
shopping_cart
(1)
Male
Female
Brands
Shop
About
Contact
Cart
Leave us a Message:
account_circle
Name:
email
E-mail:
mode_edit
Message
assignment
Purpose
Customer Service
User Experience
Order Status
Other Purpose
Select a Purpose


Source code for deck
from deck_module import DeckModule
from file_io import FileIO
debug = True
verbose = False
[docs]class Deck:
"""The Deck class is a representation of the robot deck
The Deck class is intended to be instantiated to a deck object which
contains the subclassed deck modules labeled by slot #.
Slot numbers are integers from 1 to 15, starting from the front-left slot
and ending with the back-right slot as follows:
+--+--+--+--+--+
| | | | | |
| 3| 6| 9|12|15|
+--+--+--+--+--+
| | | | | |
| 2| 5| 8|11|14|
+--+--+--+--+--+
| | | | | |
| 1| 4| 7|10|13|
+--+--+--+--+--+
"""
#Special Methods
def __init__(self, modules):
"""Initialize the Deck
modules = a dictionary of the modules needed on the deck of the form:
"p200-rack" : {"labware" : "tiprack-200ul","slot" : 1},
"p200-rack-2" : {"labware" : "tiprack-200ul","slot" : 6},
"p1000-rack" : {"labware" : "tiprack-1000ul","slot" : 7},
"plate-1": {"labware": "96-flat", "slot" : 11},
"plate-2": {"labware": "96-flat", "slot" : 8},
"trash": {"labware": "point", "slot" : 12}
"""
if debug == True: FileIO.log('deck.__init__ called')
self.modules = modules
def __str__(self):
return "Deck"
def __repr__(self):
return "Deck({0!r})".format(self.modules.keys())
#Methods


---
layout: post
title: And the Winner is .......
tags:
- Giveaway
status: publish
type: post
published: true
meta:
_edit_last: '2'
_yoast_wpseo_linkdex: '0'
_thumbnail_id: '2937'
_yoast_wpseo_focuskw: ''
_yoast_wpseo_title: ''
_yoast_wpseo_metadesc: ''
_yoast_wpseo_metakeywords: ''
_yoast_wpseo_meta-robots-noindex: '0'
_yoast_wpseo_meta-robots-nofollow: '0'
_yoast_wpseo_meta-robots-adv: none
_yoast_wpseo_sitemap-include: ! '-'
_yoast_wpseo_sitemap-prio: ! '-'
_yoast_wpseo_canonical: ''
_yoast_wpseo_redirect: ''
---
Hi Gals,
Thanks for such overwhelming response and love, and no doubt that Oh So special from Sleek Makeup emerged as the winner followed by Au Naturale.
And the Winner is Neha Mishra
Congrats Neha!!!!!!
Unfortunately, the first picked winner did not contact in 48 hours..:heart break:
So as per rules I had to pick a second winner.... and the winner is Toa Modak
Congrats dear !!!!!
a Rafflecopter giveaway
Please send me your contact details and pallet choice by mail in next 48 hours.
How is weekend coming... have a rocking day ahead !!!!


In the summer of 2013, my family wanted to go on vacation, so I decided to put together a website to organize our options of places to visit. I had just taken my first semester of computer science that spring and was very excited to try out web development.
This website displays my first attempt at HTML and CSS. It's nothing fancy, just a bunch of static web pages.
This is a project that I did with a partner for the final project in my Graphics class. It's an Interactive Potter's Wheel. Essentially, you can plot some points, connect them with a line (uses B-splines), and then rotate about an axis to see your 'pot.'
My lab partner is currently working on porting the project to Mac so that we can run it again. Once it's running, I'll add a link or instructions on how to run it.


abderraouf seniguer
instructor profile
abderraouf seniguer
profission :
web developer
certificates :
first/second/third
course categorie :
first/second/third
course number created :
20
number of students :
100
number of reviews :
100
«
Previous
1
2
3
»
Next
Courses Adminstration
Categories Management
Student Management
instructor Management


Previous | Contents | Index | Next
You're given an empty grid, and several rows of numbers on the side. You have to write a letter in every empty cell, following these rules:
The inventor of this type is unknown. This puzzle is also known under the names ABCD Puzzle, ABC-Kombi or ABCD-Rätsel.
More information: www.janko.at/Raetsel/Abc-Kombi/index.htm
ABCD uses the same control scheme as Solo, but with letters instead of numbers.
Left-click to select a cell, then type a letter on your keyboard to enter it. Press Backspace or Space to clear a cell.
Right-click a cell, then type a letter to add a pencil mark. Pencil marks can be used for any purpose.
You can also use the arrow keys to move the selected cell around. Press Enter to toggle between entering letters and entering pencil marks.
Press the 'M' key to fill every empty cell with all possible pencil marks.
These parameters are available from the 'Custom...' option on the 'Type' menu.


DAS BARBECU - A MUSICAL
November 15-18, 2001
Directed by Greg Smith
THE CAST
Narrator / Fricka / Needa / Erda - Megan Underwood
Wotan / Gunther / Hagan - Robby Merritt
Siegfried / Milan / Alberich - Jonathan Bennett
Gutrune / Freia/ Yvonne - Kala Robinson
Brunnhilde - Misty Kitchens


Color:
Left
Center
Right
Submit
Reset
View Data
HAB
Started on level 2
Level Reached
None
1
2
3
Climb Assists
CARGO
Hatches Placed
Balls Placed
ROCKET
Hatches

← Top →
← Middle →
← Bottom →
Balls


Cross To F2L
A tool to practice cross and transition to F2L
Level 1 – Cross requires 1 move to solve
Level 2 – Cross requires 2 moves to solve
Level 3 – Cross requires 3 moves to solve
Level 4 – Cross requires 4 moves to solve
Level 5 – Cross requires 5 moves to solve
Level 6 – Cross requires 6 moves to solve
Level 7 – Cross requires 7 moves to solve
Level 8 – Cross requires 8 moves to solve


We all want peace and prosperity... But if you want to be able to purchase special products or advance to higher positions, you must first do something of merit for this territory. Show me your badge and I'll show you as many special products as you want!
Ask about badges.
Quest


Main page
Main
Test 4
Test 3
SIDEBAR
CONTENT AREA
Hide header
Product 1
$19.99
Product 2
$29.99
Product 3
$39.99
Product 1
$19.99
Product 2
$29.99
Product 3
$39.99


Market seems hyped for this idea of a new Zcash Zooko fund.
Ledger making fun of Zooko, lulz
mrtzmp303-Aug-19 11:18 AM
Wasn't this zooko guy supposedly involved in creating btc
Why he need more cash lol
dukeleto03-Aug-19 11:32 AM
No
and No
he makes 2000 ZEC per month already
Zooko has beeen involved in open source a long time, and used Bitcoin early on, but I would not say he had anything to do with "creating" BTC, that is a stretch
Hollowman900003-Aug-19 12:14 PM
Looks like the arrr chart
♂
Lumbi03-Aug-19 12:16 PM
some resistance at 600 sats, no?
Hollowman900003-Aug-19 12:17 PM
I haven’t seen a big volume bump to indicate bottom
Market seems to value arrr at 0
Oh well
Arrr and k64 are my portfolio sinkholes at the moment
Markus03-Aug-19 12:18 PM
ouch pirate -20% against btc
Hollowman900003-Aug-19 12:19 PM
Arrr is just lack of interest
k64 is too much bullshit floated out previously that didn’t come to fruition
Memba when u used to join shitcoin telegrams and the admins would say "we have partnership under NDA we cant announce yet" and you would believe those muppets and fomo buy bags?
Then those bags would go -90% because it wasn't true.
Junkie membas.