Forecasting in statsmodels¶
This notebook describes forecasting using time series models in statsmodels.
Note: this notebook applies only to the state space model classes, which are:
sm.tsa.SARIMAX
sm.tsa.UnobservedComponents
sm.tsa.VARMAX
sm.tsa.DynamicFactor
[1]:
%matplotlib inline
import numpy as np
import pandas as pd
import statsmodels.api as sm
import matplotlib.pyplot as plt
macrodata = sm.datasets.macrodata.load_pandas().data
macrodata.index = pd.period_range('1959Q1', '2009Q3', freq='Q')
Basic example¶
A simple example is to use an AR(1) model to forecast inflation. Before forecasting, let’s take a look at the series:
[2]:
endog = macrodata['infl']
endog.plot(figsize=(15, 5))
[2]:
<AxesSubplot: >
Constructing and estimating the model¶
The next step is to formulate the econometric model that we want to use for forecasting. In this case, we will use an AR(1) model via the SARIMAX
class in statsmodels.
After constructing the model, we need to estimate its parameters. This is done using the fit
method. The summary
method produces several convenient tables showing the results.
[3]:
# Construct the model
mod = sm.tsa.SARIMAX(endog, order=(1, 0, 0), trend='c')
# Estimate the parameters
res = mod.fit()
print(res.summary())
RUNNING THE L-BFGS-B CODE
* * *
Machine precision = 2.220D-16
N = 3 M = 10
At X0 0 variables are exactly at the bounds
At iterate 0 f= 2.32873D+00 |proj g|= 8.23649D-03
At iterate 5 f= 2.32864D+00 |proj g|= 1.41994D-03
* * *
Tit = total number of iterations
Tnf = total number of function evaluations
Tnint = total number of segments explored during Cauchy searches
Skip = number of BFGS updates skipped
Nact = number of active bounds at final generalized Cauchy point
Projg = norm of the final projected gradient
F = final function value
* * *
N Tit Tnf Tnint Skip Nact Projg F
3 8 10 1 0 0 5.820D-06 2.329D+00
F = 2.3286389358138591
CONVERGENCE: NORM_OF_PROJECTED_GRADIENT_<=_PGTOL
SARIMAX Results
==============================================================================
Dep. Variable: infl No. Observations: 203
Model: SARIMAX(1, 0, 0) Log Likelihood -472.714
Date: Wed, 02 Nov 2022 AIC 951.427
Time: 17:06:31 BIC 961.367
Sample: 03-31-1959 HQIC 955.449
- 09-30-2009
Covariance Type: opg
==============================================================================
coef std err z P>|z| [0.025 0.975]
------------------------------------------------------------------------------
intercept 1.3962 0.254 5.488 0.000 0.898 1.895
ar.L1 0.6441 0.039 16.482 0.000 0.568 0.721
sigma2 6.1519 0.397 15.487 0.000 5.373 6.930
===================================================================================
Ljung-Box (L1) (Q): 8.43 Jarque-Bera (JB): 68.45
Prob(Q): 0.00 Prob(JB): 0.00
Heteroskedasticity (H): 1.47 Skew: -0.22
Prob(H) (two-sided): 0.12 Kurtosis: 5.81
===================================================================================
Warnings:
[1] Covariance matrix calculated using the outer product of gradients (complex-step).
This problem is unconstrained.
Forecasting¶
Out-of-sample forecasts are produced using the forecast
or get_forecast
methods from the results object.
The forecast
method gives only point forecasts.
[4]:
# The default is to get a one-step-ahead forecast:
print(res.forecast())
2009Q4 3.68921
Freq: Q-DEC, dtype: float64
The get_forecast
method is more general, and also allows constructing confidence intervals.
[5]:
# Here we construct a more complete results object.
fcast_res1 = res.get_forecast()
# Most results are collected in the `summary_frame` attribute.
# Here we specify that we want a confidence level of 90%
print(fcast_res1.summary_frame(alpha=0.10))
infl mean mean_se mean_ci_lower mean_ci_upper
2009Q4 3.68921 2.480302 -0.390523 7.768943
The default confidence level is 95%, but this can be controlled by setting the alpha
parameter, where the confidence level is defined as \((1 - \alpha) \times 100\%\). In the example above, we specified a confidence level of 90%, using alpha=0.10
.
Specifying the number of forecasts¶
Both of the functions forecast
and get_forecast
accept a single argument indicating how many forecasting steps are desired. One option for this argument is always to provide an integer describing the number of steps ahead you want.
[6]:
print(res.forecast(steps=2))
2009Q4 3.689210
2010Q1 3.772434
Freq: Q-DEC, Name: predicted_mean, dtype: float64
[7]:
fcast_res2 = res.get_forecast(steps=2)
# Note: since we did not specify the alpha parameter, the
# confidence level is at the default, 95%
print(fcast_res2.summary_frame())
infl mean mean_se mean_ci_lower mean_ci_upper
2009Q4 3.689210 2.480302 -1.172092 8.550512
2010Q1 3.772434 2.950274 -2.009996 9.554865
However, if your data included a Pandas index with a defined frequency (see the section at the end on Indexes for more information), then you can alternatively specify the date through which you want forecasts to be produced:
[8]:
print(res.forecast('2010Q2'))
2009Q4 3.689210
2010Q1 3.772434
2010Q2 3.826039
Freq: Q-DEC, Name: predicted_mean, dtype: float64
[9]:
fcast_res3 = res.get_forecast('2010Q2')
print(fcast_res3.summary_frame())
infl mean mean_se mean_ci_lower mean_ci_upper
2009Q4 3.689210 2.480302 -1.172092 8.550512
2010Q1 3.772434 2.950274 -2.009996 9.554865
2010Q2 3.826039 3.124571 -2.298008 9.950087
Plotting the data, forecasts, and confidence intervals¶
Often it is useful to plot the data, the forecasts, and the confidence intervals. There are many ways to do this, but here’s one example
[10]:
fig, ax = plt.subplots(figsize=(15, 5))
# Plot the data (here we are subsetting it to get a better look at the forecasts)
endog.loc['1999':].plot(ax=ax)
# Construct the forecasts
fcast = res.get_forecast('2011Q4').summary_frame()
fcast['mean'].plot(ax=ax, style='k--')
ax.fill_between(fcast.index, fcast['mean_ci_lower'], fcast['mean_ci_upper'], color='k', alpha=0.1);
Note on what to expect from forecasts¶
The forecast above may not look very impressive, as it is almost a straight line. This is because this is a very simple, univariate forecasting model. Nonetheless, keep in mind that these simple forecasting models can be extremely competitive.
Prediction vs Forecasting¶
The results objects also contain two methods that all for both in-sample fitted values and out-of-sample forecasting. They are predict
and get_prediction
. The predict
method only returns point predictions (similar to forecast
), while the get_prediction
method also returns additional results (similar to get_forecast
).
In general, if your interest is out-of-sample forecasting, it is easier to stick to the forecast
and get_forecast
methods.
Cross validation¶
Note: some of the functions used in this section were first introduced in statsmodels v0.11.0.
A common use case is to cross-validate forecasting methods by performing h-step-ahead forecasts recursively using the following process:
Fit model parameters on a training sample
Produce h-step-ahead forecasts from the end of that sample
Compare forecasts against test dataset to compute error rate
Expand the sample to include the next observation, and repeat
Economists sometimes call this a pseudo-out-of-sample forecast evaluation exercise, or time-series cross-validation.
Example¶
We will conduct a very simple exercise of this sort using the inflation dataset above. The full dataset contains 203 observations, and for expositional purposes we’ll use the first 80% as our training sample and only consider one-step-ahead forecasts.
A single iteration of the above procedure looks like the following:
[11]:
# Step 1: fit model parameters w/ training sample
training_obs = int(len(endog) * 0.8)
training_endog = endog[:training_obs]
training_mod = sm.tsa.SARIMAX(
training_endog, order=(1, 0, 0), trend='c')
training_res = training_mod.fit()
# Print the estimated parameters
print(training_res.params)
RUNNING THE L-BFGS-B CODE
* * *
Machine precision = 2.220D-16
N = 3 M = 10
At X0 0 variables are exactly at the bounds
At iterate 0 f= 2.23132D+00 |proj g|= 1.09171D-02
At iterate 5 f= 2.23109D+00 |proj g|= 3.93607D-05
* * *
Tit = total number of iterations
Tnf = total number of function evaluations
Tnint = total number of segments explored during Cauchy searches
Skip = number of BFGS updates skipped
Nact = number of active bounds at final generalized Cauchy point
Projg = norm of the final projected gradient
F = final function value
* * *
N Tit Tnf Tnint Skip Nact Projg F
3 6 8 1 0 0 7.066D-07 2.231D+00
F = 2.2310884444664749
CONVERGENCE: NORM_OF_PROJECTED_GRADIENT_<=_PGTOL
intercept 1.162076
ar.L1 0.724242
sigma2 5.051600
dtype: float64
This problem is unconstrained.
[12]:
# Step 2: produce one-step-ahead forecasts
fcast = training_res.forecast()
# Step 3: compute root mean square forecasting error
true = endog.reindex(fcast.index)
error = true - fcast
# Print out the results
print(pd.concat([true.rename('true'),
fcast.rename('forecast'),
error.rename('error')], axis=1))
true forecast error
1999Q3 3.35 2.55262 0.79738
To add on another observation, we can use the append
or extend
results methods. Either method can produce the same forecasts, but they differ in the other results that are available:
append
is the more complete method. It always stores results for all training observations, and it optionally allows refitting the model parameters given the new observations (note that the default is not to refit the parameters).extend
is a faster method that may be useful if the training sample is very large. It only stores results for the new observations, and it does not allow refitting the model parameters (i.e. you have to use the parameters estimated on the previous sample).
If your training sample is relatively small (less than a few thousand observations, for example) or if you want to compute the best possible forecasts, then you should use the append
method. However, if that method is infeasible (for example, because you have a very large training sample) or if you are okay with slightly suboptimal forecasts (because the parameter estimates will be slightly stale), then you can consider the extend
method.
A second iteration, using the append
method and refitting the parameters, would go as follows (note again that the default for append
does not refit the parameters, but we have overridden that with the refit=True
argument):
[13]:
# Step 1: append a new observation to the sample and refit the parameters
append_res = training_res.append(endog[training_obs:training_obs + 1], refit=True)
# Print the re-estimated parameters
print(append_res.params)
RUNNING THE L-BFGS-B CODE
* * *
Machine precision = 2.220D-16
N = 3 M = 10
At X0 0 variables are exactly at the bounds
At iterate 0 f= 2.22839D+00 |proj g|= 2.38555D-03
At iterate 5 f= 2.22838D+00 |proj g|= 9.78329D-08
* * *
Tit = total number of iterations
Tnf = total number of function evaluations
Tnint = total number of segments explored during Cauchy searches
Skip = number of BFGS updates skipped
Nact = number of active bounds at final generalized Cauchy point
Projg = norm of the final projected gradient
F = final function value
* * *
N Tit Tnf Tnint Skip Nact Projg F
3 5 8 1 0 0 9.783D-08 2.228D+00
F = 2.2283821699856365
CONVERGENCE: NORM_OF_PROJECTED_GRADIENT_<=_PGTOL
intercept 1.171544
ar.L1 0.723152
sigma2 5.024580
dtype: float64
This problem is unconstrained.
Notice that these estimated parameters are slightly different than those we originally estimated. With the new results object, append_res
, we can compute forecasts starting from one observation further than the previous call:
[14]:
# Step 2: produce one-step-ahead forecasts
fcast = append_res.forecast()
# Step 3: compute root mean square forecasting error
true = endog.reindex(fcast.index)
error = true - fcast
# Print out the results
print(pd.concat([true.rename('true'),
fcast.rename('forecast'),
error.rename('error')], axis=1))
true forecast error
1999Q4 2.85 3.594102 -0.744102
Putting it altogether, we can perform the recursive forecast evaluation exercise as follows:
[15]:
# Setup forecasts
nforecasts = 3
forecasts = {}
# Get the number of initial training observations
nobs = len(endog)
n_init_training = int(nobs * 0.8)
# Create model for initial training sample, fit parameters
init_training_endog = endog.iloc[:n_init_training]
mod = sm.tsa.SARIMAX(training_endog, order=(1, 0, 0), trend='c')
res = mod.fit()
# Save initial forecast
forecasts[training_endog.index[-1]] = res.forecast(steps=nforecasts)
# Step through the rest of the sample
for t in range(n_init_training, nobs):
# Update the results by appending the next observation
updated_endog = endog.iloc[t:t+1]
res = res.append(updated_endog, refit=False)
# Save the new set of forecasts
forecasts[updated_endog.index[0]] = res.forecast(steps=nforecasts)
# Combine all forecasts into a dataframe
forecasts = pd.concat(forecasts, axis=1)
print(forecasts.iloc[:5, :5])
This problem is unconstrained.
RUNNING THE L-BFGS-B CODE
* * *
Machine precision = 2.220D-16
N = 3 M = 10
At X0 0 variables are exactly at the bounds
At iterate 0 f= 2.23132D+00 |proj g|= 1.09171D-02
At iterate 5 f= 2.23109D+00 |proj g|= 3.93607D-05
* * *
Tit = total number of iterations
Tnf = total number of function evaluations
Tnint = total number of segments explored during Cauchy searches
Skip = number of BFGS updates skipped
Nact = number of active bounds at final generalized Cauchy point
Projg = norm of the final projected gradient
F = final function value
* * *
N Tit Tnf Tnint Skip Nact Projg F
3 6 8 1 0 0 7.066D-07 2.231D+00
F = 2.2310884444664749
CONVERGENCE: NORM_OF_PROJECTED_GRADIENT_<=_PGTOL
1999Q2 1999Q3 1999Q4 2000Q1 2000Q2
1999Q3 2.552620 NaN NaN NaN NaN
1999Q4 3.010790 3.588286 NaN NaN NaN
2000Q1 3.342616 3.760863 3.226165 NaN NaN
2000Q2 NaN 3.885850 3.498599 3.885225 NaN
2000Q3 NaN NaN 3.695908 3.975918 4.196649
We now have a set of three forecasts made at each point in time from 1999Q2 through 2009Q3. We can construct the forecast errors by subtracting each forecast from the actual value of endog
at that point.
[16]:
# Construct the forecast errors
forecast_errors = forecasts.apply(lambda column: endog - column).reindex(forecasts.index)
print(forecast_errors.iloc[:5, :5])
1999Q2 1999Q3 1999Q4 2000Q1 2000Q2
1999Q3 0.797380 NaN NaN NaN NaN
1999Q4 -0.160790 -0.738286 NaN NaN NaN
2000Q1 0.417384 -0.000863 0.533835 NaN NaN
2000Q2 NaN 0.304150 0.691401 0.304775 NaN
2000Q3 NaN NaN -0.925908 -1.205918 -1.426649
To evaluate our forecasts, we often want to look at a summary value like the root mean square error. Here we can compute that for each horizon by first flattening the forecast errors so that they are indexed by horizon and then computing the root mean square error fore each horizon.
[17]:
# Reindex the forecasts by horizon rather than by date
def flatten(column):
return column.dropna().reset_index(drop=True)
flattened = forecast_errors.apply(flatten)
flattened.index = (flattened.index + 1).rename('horizon')
print(flattened.iloc[:3, :5])
1999Q2 1999Q3 1999Q4 2000Q1 2000Q2
horizon
1 0.797380 -0.738286 0.533835 0.304775 -1.426649
2 -0.160790 -0.000863 0.691401 -1.205918 -0.311464
3 0.417384 0.304150 -0.925908 -0.151602 -2.384952
[18]:
# Compute the root mean square error
rmse = (flattened**2).mean(axis=1)**0.5
print(rmse)
horizon
1 3.292700
2 3.421808
3 3.280012
dtype: float64
Using extend
¶
We can check that we get similar forecasts if we instead use the extend
method, but that they are not exactly the same as when we use append
with the refit=True
argument. This is because extend
does not re-estimate the parameters given the new observation.
[19]:
# Setup forecasts
nforecasts = 3
forecasts = {}
# Get the number of initial training observations
nobs = len(endog)
n_init_training = int(nobs * 0.8)
# Create model for initial training sample, fit parameters
init_training_endog = endog.iloc[:n_init_training]
mod = sm.tsa.SARIMAX(training_endog, order=(1, 0, 0), trend='c')
res = mod.fit()
# Save initial forecast
forecasts[training_endog.index[-1]] = res.forecast(steps=nforecasts)
# Step through the rest of the sample
for t in range(n_init_training, nobs):
# Update the results by appending the next observation
updated_endog = endog.iloc[t:t+1]
res = res.extend(updated_endog)
# Save the new set of forecasts
forecasts[updated_endog.index[0]] = res.forecast(steps=nforecasts)
# Combine all forecasts into a dataframe
forecasts = pd.concat(forecasts, axis=1)
print(forecasts.iloc[:5, :5])
RUNNING THE L-BFGS-B CODE
* * *
Machine precision = 2.220D-16
N = 3 M = 10
At X0 0 variables are exactly at the bounds
At iterate 0 f= 2.23132D+00 |proj g|= 1.09171D-02
At iterate 5 f= 2.23109D+00 |proj g|= 3.93607D-05
* * *
Tit = total number of iterations
Tnf = total number of function evaluations
Tnint = total number of segments explored during Cauchy searches
Skip = number of BFGS updates skipped
Nact = number of active bounds at final generalized Cauchy point
Projg = norm of the final projected gradient
F = final function value
* * *
N Tit Tnf Tnint Skip Nact Projg F
3 6 8 1 0 0 7.066D-07 2.231D+00
F = 2.2310884444664749
CONVERGENCE: NORM_OF_PROJECTED_GRADIENT_<=_PGTOL
This problem is unconstrained.
1999Q2 1999Q3 1999Q4 2000Q1 2000Q2
1999Q3 2.552620 NaN NaN NaN NaN
1999Q4 3.010790 3.588286 NaN NaN NaN
2000Q1 3.342616 3.760863 3.226165 NaN NaN
2000Q2 NaN 3.885850 3.498599 3.885225 NaN
2000Q3 NaN NaN 3.695908 3.975918 4.196649
[20]:
# Construct the forecast errors
forecast_errors = forecasts.apply(lambda column: endog - column).reindex(forecasts.index)
print(forecast_errors.iloc[:5, :5])
1999Q2 1999Q3 1999Q4 2000Q1 2000Q2
1999Q3 0.797380 NaN NaN NaN NaN
1999Q4 -0.160790 -0.738286 NaN NaN NaN
2000Q1 0.417384 -0.000863 0.533835 NaN NaN
2000Q2 NaN 0.304150 0.691401 0.304775 NaN
2000Q3 NaN NaN -0.925908 -1.205918 -1.426649
[21]:
# Reindex the forecasts by horizon rather than by date
def flatten(column):
return column.dropna().reset_index(drop=True)
flattened = forecast_errors.apply(flatten)
flattened.index = (flattened.index + 1).rename('horizon')
print(flattened.iloc[:3, :5])
1999Q2 1999Q3 1999Q4 2000Q1 2000Q2
horizon
1 0.797380 -0.738286 0.533835 0.304775 -1.426649
2 -0.160790 -0.000863 0.691401 -1.205918 -0.311464
3 0.417384 0.304150 -0.925908 -0.151602 -2.384952
[22]:
# Compute the root mean square error
rmse = (flattened**2).mean(axis=1)**0.5
print(rmse)
horizon
1 3.292700
2 3.421808
3 3.280012
dtype: float64
By not re-estimating the parameters, our forecasts are slightly worse (the root mean square error is higher at each horizon). However, the process is faster, even with only 200 datapoints. Using the %%timeit
cell magic on the cells above, we found a runtime of 570ms using extend
versus 1.7s using append
with refit=True
. (Note that using extend
is also faster than using append
with refit=False
).
Indexes¶
Throughout this notebook, we have been making use of Pandas date indexes with an associated frequency. As you can see, this index marks our data as at a quarterly frequency, between 1959Q1 and 2009Q3.
[23]:
print(endog.index)
PeriodIndex(['1959Q1', '1959Q2', '1959Q3', '1959Q4', '1960Q1', '1960Q2',
'1960Q3', '1960Q4', '1961Q1', '1961Q2',
...
'2007Q2', '2007Q3', '2007Q4', '2008Q1', '2008Q2', '2008Q3',
'2008Q4', '2009Q1', '2009Q2', '2009Q3'],
dtype='period[Q-DEC]', length=203)
In most cases, if your data has an associated data/time index with a defined frequency (like quarterly, monthly, etc.), then it is best to make sure your data is a Pandas series with the appropriate index. Here are three examples of this:
[24]:
# Annual frequency, using a PeriodIndex
index = pd.period_range(start='2000', periods=4, freq='A')
endog1 = pd.Series([1, 2, 3, 4], index=index)
print(endog1.index)
PeriodIndex(['2000', '2001', '2002', '2003'], dtype='period[A-DEC]')
[25]:
# Quarterly frequency, using a DatetimeIndex
index = pd.date_range(start='2000', periods=4, freq='QS')
endog2 = pd.Series([1, 2, 3, 4], index=index)
print(endog2.index)
DatetimeIndex(['2000-01-01', '2000-04-01', '2000-07-01', '2000-10-01'], dtype='datetime64[ns]', freq='QS-JAN')
[26]:
# Monthly frequency, using a DatetimeIndex
index = pd.date_range(start='2000', periods=4, freq='M')
endog3 = pd.Series([1, 2, 3, 4], index=index)
print(endog3.index)
DatetimeIndex(['2000-01-31', '2000-02-29', '2000-03-31', '2000-04-30'], dtype='datetime64[ns]', freq='M')
In fact, if your data has an associated date/time index, it is best to use that even if does not have a defined frequency. An example of that kind of index is as follows - notice that it has freq=None
:
[27]:
index = pd.DatetimeIndex([
'2000-01-01 10:08am', '2000-01-01 11:32am',
'2000-01-01 5:32pm', '2000-01-02 6:15am'])
endog4 = pd.Series([0.2, 0.5, -0.1, 0.1], index=index)
print(endog4.index)
DatetimeIndex(['2000-01-01 10:08:00', '2000-01-01 11:32:00',
'2000-01-01 17:32:00', '2000-01-02 06:15:00'],
dtype='datetime64[ns]', freq=None)
You can still pass this data to statsmodels’ model classes, but you will get the following warning, that no frequency data was found:
[28]:
mod = sm.tsa.SARIMAX(endog4)
res = mod.fit()
RUNNING THE L-BFGS-B CODE
* * *
Machine precision = 2.220D-16
N = 2 M = 10
At X0 0 variables are exactly at the bounds
At iterate 0 f= 1.37900D-01 |proj g|= 4.66940D-01
At iterate 5 f= 1.32476D-01 |proj g|= 6.00133D-06
* * *
Tit = total number of iterations
Tnf = total number of function evaluations
Tnint = total number of segments explored during Cauchy searches
Skip = number of BFGS updates skipped
Nact = number of active bounds at final generalized Cauchy point
Projg = norm of the final projected gradient
F = final function value
* * *
N Tit Tnf Tnint Skip Nact Projg F
2 5 10 1 0 0 6.001D-06 1.325D-01
F = 0.13247641992895681
CONVERGENCE: NORM_OF_PROJECTED_GRADIENT_<=_PGTOL
/opt/hostedtoolcache/Python/3.10.8/x64/lib/python3.10/site-packages/statsmodels/tsa/base/tsa_model.py:471: ValueWarning: A date index has been provided, but it has no associated frequency information and so will be ignored when e.g. forecasting.
self._init_dates(dates, freq)
/opt/hostedtoolcache/Python/3.10.8/x64/lib/python3.10/site-packages/statsmodels/tsa/base/tsa_model.py:471: ValueWarning: A date index has been provided, but it has no associated frequency information and so will be ignored when e.g. forecasting.
self._init_dates(dates, freq)
This problem is unconstrained.
What this means is that you cannot specify forecasting steps by dates, and the output of the forecast
and get_forecast
methods will not have associated dates. The reason is that without a given frequency, there is no way to determine what date each forecast should be assigned to. In the example above, there is no pattern to the date/time stamps of the index, so there is no way to determine what the next date/time should be (should it be in the morning of 2000-01-02? the afternoon? or
maybe not until 2000-01-03?).
For example, if we forecast one-step-ahead:
[29]:
res.forecast(1)
/opt/hostedtoolcache/Python/3.10.8/x64/lib/python3.10/site-packages/statsmodels/tsa/base/tsa_model.py:834: ValueWarning: No supported index is available. Prediction results will be given with an integer index beginning at `start`.
return get_prediction_index(
[29]:
4 0.011866
dtype: float64
The index associated with the new forecast is 4
, because if the given data had an integer index, that would be the next value. A warning is given letting the user know that the index is not a date/time index.
If we try to specify the steps of the forecast using a date, we will get the following exception:
KeyError: 'The `end` argument could not be matched to a location related to the index of the data.'
[30]:
# Here we'll catch the exception to prevent printing too much of
# the exception trace output in this notebook
try:
res.forecast('2000-01-03')
except KeyError as e:
print(e)
'The `end` argument could not be matched to a location related to the index of the data.'
Ultimately there is nothing wrong with using data that does not have an associated date/time frequency, or even using data that has no index at all, like a Numpy array. However, if you can use a Pandas series with an associated frequency, you’ll have more options for specifying your forecasts and get back results with a more useful index.


Working closely with product and engineering to understand the requirements, the needs and the limitations Creating different versions and discussing usabilityCreating final design
The first step was creating a flow to add a new comment
The second step was designing an option to add a subcomment, that required some design changes
The nexts step was adding the feed item properties, such as: bookmark, like button, tags etc.
Adding the filter and sorting options to the feed
The final step was adding indication when another person is viewing the incident and, most importantly - typing a comment


This document describes blast4, an ASN.1 interface to BLAST. The National Center for Biotechnology Information provides free BLAST services to the public using this interface (over HTTP) and others. NCBI's BLAST source code is in the public domain, so other organizations may choose to run their own BLAST servers.
The functionality provided by this interface is similar to that provided by the URL API. Either interface will work for many applications, but application programmers may find this interface to be more convenient.
For more information on using NCBI's public BLAST servers using this interface, please refer to Appendix 2: Using NCBI's BLAST Servers.
We welcome your suggestions, comments, and questions about this specification. Please email them to us at<EMAIL_ADDRESS>blast4 clients send Blast4-request
objects and receive
Blast4-reply
objects. Each request is answered with one reply. The
particular encoding used for requests and replies depends on the communication
mechanism used and is not part of this specification. Depending on the
communication mechanism used, a session may consist of one request and one reply
or of multiple requests and their replies.
A Blast4-request
consists of an optional ident
,
which identifies the application sending the request, and a body
,
which contains one of several specific requests:
Blast4-request ::= SEQUENCE { ident VisibleString OPTIONAL, body Blast4-request-body } Blast4-request-body ::= CHOICE { finish-params Blast4-finish-params-request, get-databases NULL, get-matrices NULL, get-parameters NULL, get-programs NULL, get-search-results Blast4-get-search-results-request, get-sequences Blast4-get-sequences-request, queue-search Blast4-queue-search-request }
The structure of Blast4-reply
is similar:
Blast4-reply ::= SEQUENCE { errors SEQUENCE OF Blast4-error OPTIONAL, body Blast4-reply-body } Blast4-reply-body ::= CHOICE { finish-params Blast4-finish-params-reply, get-databases Blast4-get-databases-reply, get-matrices Blast4-get-matrices-reply, get-parameters Blast4-get-parameters-reply, get-programs Blast4-get-programs-reply, get-search-results Blast4-get-search-results-reply, get-sequences Blast4-get-sequences-reply, queue-search Blast4-queue-search-reply }
errors
contains any informational, warning, or error messages
related to the processing of the request. Warnings indicate that the server
processed the request successfully, but that the results may be different than
the user anticipated. Errors indicate that the server was unable, in whole or in
part, to process the request.
Although there are many requests, the queue-search
and
get-search-results
requests are most important.
The queue-search
request is used to initiate a BLAST search:
Blast4-queue-search-request ::= SEQUENCE { program VisibleString, service VisibleString, queries Bioseq-set, subject Blast4-subject, paramset VisibleString OPTIONAL, params Blast4-parameters OPTIONAL }
program
and service
select a program in the BLAST
family and a service offered by that program. The complete set of programs and
services offered is returned by the get-programs
request.
queries
specifies the sequences to be searched.
subject
specifies the sequences against which the query
sequences will be searched. The sequences can be specified indirectly, through
databases
, or directly, through sequences
:
Blast4-subject ::= CHOICE { database VisibleString, sequences SEQUENCE OF Bioseq }
paramset
is used to include a named set of parameters. Including
a named set of parameters is equivalent to prepending the parameters in the set
to params
.
params
is used to override default parameter settings selected
by the server or parameter settings included via paramset
. There
are many parameters that can be specified, but none are required; the server
will attempt to set reasonable values for those that are not specified. For more
information, refer to Appendix 1: Search Parameters.
To learn more about default values set by the server, please refer to the
finish-params request.
The reply to a queue-search
request contains a request-id
,
which can be used later to retrieve the results of the search:
Blast4-queue-search-reply ::= SEQUENCE { request-id VisibleString OPTIONAL }
The get-search-results
request is used to retrieve the results
of a BLAST search:
Blast4-get-search-results-request ::= SEQUENCE { request-id VisibleString } Blast4-get-search-results-reply ::= SEQUENCE { alignments Seq-align-set OPTIONAL, phi-alignments Blast4-phi-alignments OPTIONAL, mask Blast4-mask OPTIONAL, ka-blocks SEQUENCE OF Blast4-ka-block OPTIONAL, search-stats SEQUENCE OF VisibleString OPTIONAL }
The elements returned are all optional; which ones are included depends on the particular search.
With the queue-search
request, the actual parameter values may
be different than those explicitly specified by the user; some may be read from
a parameter set (a paramset), while others may be set, by default, by the
server. For some applications and users, it may be important to know exactly
which values the server will use to execute a search. The finish-params
request takes arguments similar to those of the queue-search
request and returns a complete, or finished, set of parameters:
Blast4-finish-params-request ::= SEQUENCE { program VisibleString, service VisibleString, paramset VisibleString OPTIONAL, params Blast4-parameters OPTIONAL } Blast4-finish-params-reply ::= Blast4-parameters Blast4-parameters ::= SEQUENCE OF Blast4-parameter
The params
returned in the reply show the values of all search
parameters whose values are not zero, false, the empty string, or null.
The get-databases
request is used to enumerate the names of
databases known to the server. These names are the domain of the
subject.database
element of a queue-search
request.
Blast4-get-databases-reply ::= SEQUENCE OF Blast4-database-info Blast4-database-info ::= SEQUENCE { database Blast4-database, description VisibleString, last-updated VisibleString, total-length BigInt, num-sequences BigInt }
The get-matrices
request is used to enumerate the scoring
matrices known to the server. These are the matrices that can be specified by
name in the matrix search parameter.
Blast4-get-matrices-reply ::= SEQUENCE OF Blast4-matrix-id Blast4-matrix-id ::= SEQUENCE { residue-type Blast4-residue-type, name VisibleString }
The get-parameters
request is used to enumerate the search
parameters known by the server. This request is not intended to be initiated
directly by an end user, and the results are not intended to be displayed to an
end user; rather, this request helps clients to construct a user interface
dynamically so they can accomodate changes in the set of known search parameters
without modification. Clients are not required to use this request; they may
choose instead to support just those search parameters that are known when they
are written.
Blast4-get-matrices-reply ::= SEQUENCE OF Blast4-matrix-id Blast4-matrix-id ::= SEQUENCE { residue-type Blast4-residue-type, name VisibleString }
The get-paramsets
request is used to enumerate the named sets of
search parameters (the "parsets") known to the server. Parsets may make it
easier for users to tailor their searches to achieve specific results, but they
are never required.
Blast4-get-paramsets-reply ::= SEQUENCE OF Blast4-paramset-info Blast4-paramset-info ::= SEQUENCE { program VisibleString, name VisibleString }
Names of paramsets are unique (within the scope of a particular program) and are designed to be descriptive enough that no separate description is needed. Names are not required to follow any particular form.
The get-programs
request is used to enumerate the combinations
of program
and name
that may be specified in a
queue-search
request.
Blast4-program-info ::= SEQUENCE { program VisibleString, services SEQUENCE OF VisibleString }
Names of paramsets are unique (within the scope of a particular program) and are designed to be descriptive enough that users will be able to make reasonable choices based on program and name alone. Names are not required to follow any particular form and may be relatively long (perhaps 40 characters or more).
Search parameters are specified as name-value pairs:
Blast4-parameter ::= SEQUENCE { name VisibleString, value Blast4-value } Blast4-value ::= CHOICE { -- scalar types: big-integer BigInt, bioseq Bioseq, boolean BOOLEAN, cutoff Blast4-cutoff, integer INTEGER, matrix Blast4-matrix, real REAL, seq-align Seq-align, seq-id Seq-id, seq-loc Seq-loc, strand-type Blast4-strand-type, string VisibleString, -- lists of scalar types: big-integer-list SEQUENCE OF BigInt, bioseq-list SEQUENCE OF Bioseq, boolean-list SEQUENCE OF BOOLEAN, cutoff-list SEQUENCE OF Blast4-cutoff, integer-list SEQUENCE OF INTEGER, matrix-list SEQUENCE OF Blast4-matrix, real-list SEQUENCE OF REAL, seq-align-list SEQUENCE OF Seq-align, seq-id-list SEQUENCE OF Seq-id, seq-loc-list SEQUENCE OF Seq-loc, strand-type-list SEQUENCE OF Blast4-strand-type, string-list SEQUENCE OF VisibleString, -- imported collection types: bioseq-set Bioseq-set, seq-align-set Seq-align-set }
The following table shows the legal name
's and their
corresponding value
types:
| parameter | type | description |
| cutoff | cutoff | Only hits with e-values below the cutoff e-value or normalized scores above the cutoff score will be reported. |
| db-genetic-code | integer | Code used to translate database from nucleotide to protein. See Table of Genetic Codes. |
| culling | boolean | If true, hit lists are culled by keeping at most a certain number (hsp-range-max?) of HSP's in a range. (where is the size of the range set?) |
| ungapped-alignment | boolean | If true, ungapped alignments are allowed. |
| entrez-query | string | Used to construct an oid list. (which is used how?) |
| i-thresh | integer | E-value threshold for inclusion in a PSI-BLAST multiple alignment. (See Gapped BLAST and PSI-BLAST: a new generation of protein database search programs and Improving the accuracy of PSI-BLAST protein database searches with composition-based statistics and other refinements.) |
| filter | string | A string that specifies when and how the query sequences are to be masked. Please refer to Appendix 3: Filter Strings. |
| first-db-seq, final-db-seq |
integer | Only sequences with oid's between first-db-seq and final-db-seq will be searched. |
| gap-open, gap-extend |
integer | Penalties applied for opening and extending gaps, respectively. The penalty for a gap of N residues is gap-open + N * gap-extend. Meaningful only if gapped-alignment is true. |
| gi-list | integer_list | collection of sequences, specified by a list of gi numbers, against which queries will be compared. |
| hitlist-size | integer | maximum number of database sequences for which to save hits. |
| hsp-range-max | integer | maximum number of HSP's to save in any region. Meaningful only when culling is true. |
| matrix | string, matrix | Substitution matrix containing similarity scores for all possible pairs of residues, specified by either name or value. (See Basic local alignment search tool and Table of Genetic Codes.) |
| perc-ident | real | Only alignments in which at least this percentage of query residues are identical to the corresponding subject residues will be reported. |
| nucl-penalty, nucl-reward |
integer | Penalty for a nucleotide mismatch and reward for a nucleotide match, respectively. Called the scores for mismatches and identities in DNA sequence comparisons in Basic local alignment search tool. |
| phi-pattern | string | TBD |
| pseudocount-weight | integer | Called "beta" in Gapped BLAST and PSI-BLAST: a new generation of protein database search programs. (See Equation 5.) |
| genetic-code | integer | Code used to translate query from nucleotide to protein. (See Table of Genetic Codes.) |
| query-mask | seq_loc_list | Locations of query residues to be masked. Words spanning these locations are not included in the initial word table. With hard masking, these locations are also treated as unknown residues during extension. |
| required-start, required-end |
integer | Only alignments which contain this region will be reported. |
| searchsp-eff | real | User-specified search space; overrides value calculated by BLAST. |
| strand-option | strand_type | Specifies whether to search the forward strand, the reverse strand, or both strands of the query sequences. |
| template-length | integer | Length of a megablast discontiguous words template. Meaningful only for service=megablast. |
| template-type | integer | Type of a megablast discontiguous words template. Legal values are TBD. Meaningful only for service=megablast. |
| use-comp-based-stats | boolean | If true, uses composition-based statistics as described in Improving the accuracy of PSI-BLAST protein database searches with composition-based statistics and other refinements |
| window-size | integer | Called "w" in Basic local alignment search tool, "W" in Gapped BLAST and PSI-BLAST: a new generation of protein database search programs. |
| word-threshold | integer | Called "T" in Basic local alignment search tool. |
NCBI provides a C++ wrapper to this interface
(ncbi::blast::CRemoteBlast
, as part of the xblast
library). The C++ wrapper automatically encodes requests, decodes replies,
and handles communication with the server. The C++ wrapper is the only
supported way to use this interface.
Filter strings consist of any number of the following options, separated by spaces or semicolons. For options that take parameters, parameters follow the letter which specifies the option and are separated, from the option letter and from each other, by spaces. Default values are shown in parentheses.
Options:
Examples:


{% extends 'base.html' %} {% block content %}
Results Now
Secure Searching Always
Persoanlized For You


As Good As It Gets (1997)
It is very difficult to not love anything directed by James L. Brooks (*Broadcast News*, *The Simpsons*, *The Tracey Ullmann Show*), and it is very difficult not to love what one friend calls "vintage Nicholson," so it is very difficult to not like *As Good As It Gets*. And what's not to like.  Hey, it's got Helen Hunt. Why are you reading this review? Rush out and see this movie now!
Of course, with all this going for it, it's easy to overlook the improbability of the storyline and the unlikeliness of it all.
Sold entirely on the strength of Jack Nicholson's reputation (which suffered under recent nonsense like *Wolf*), it is greatly augmented by great performances by Hunt, Greg Kinnear, Cuba Gooding Jr., and their little dog, too. The dialogue is very lively and often hilarious. Now, onto the requisite description of the situation comedy presented here.
Melvin Udall (Nicholson) is a bigot who has a nasty comment for anyone and everyone he meets--strangers, neighbors, and people he knows. He surely has no friends. He also has obsessive-compulsive disorder and hypochondria, which is played for laughs here, and which disappears as needed to propel the story along. Melvin is a creature of habit; he never steps on a crack, he uses a new bar of soap every time he washes his hands, and he eats lunch at the same restaurant, at the same table, served by the same waitress, Carol (Hunt).
 Also upsetting the apple cart is the absence of Carol from her waitress station when her asthmatic son gets sick. This forces Melvin to reconfigure his OCD and prejudices so he can try to restore them.
What follows is the very unlikely road trip to Baltimore (from New York) so Simon can have some sort of reconciliation with his homophobic parents, which is sidelined by the budding romance of Carol and Melvin.
Does it matter that this couldn't possibly ever happen? No.  The movie is very well written and has many funny moments, however unrealistic. For example, how does a waitress afford a multiroom apartment in an historic district in Brooklyn.
Especially noteworthy: Shirley Knight as Beverly, Carol's mother, and the scene in which the movie's title is uttered.
Written by Mark Andrus and James L. Brooks.
More movie reviews by Seth Bookey, with graphics, can be found at http://www.geocities.com/Athens/2679/kino.html
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


- Zoom in and out using the mouse wheel
- Select a rectangular area with the mouse. It zooms into the selected x-axis interval, and adjusts the y axes automatically.
- Use the slider widget and buttons at the bottom of the chart to zoom and move over the data.
- Hover over the data elements, tooltips pop up.
- The chart can render up to 100k data points in a fraction of a second.
Well, depending on your hardware, browser, OS, etc.
- See the rendering speed measurement at the bottom of the chart.
- GitHub repo


Master of Computer Applications (MCA) is a 3-Year (6 Semesters) academic programme of professional nature. The objective of this programme is to fulfill the immense requirements of computer applications. The programme is envisaged to equip the candidates with a strong conceptual background in Computer Science and Applications to solve the challenging industrial problems.
This programme comprises of courses in different areas of Computer Science, Computer Applications, Business Systems and Mathematics. The rigorous exposures in this areas is aimed additionally at equipping the students with strong analytical and technical skill to work competently in diverse areas including software related developments, teaching and research.
Every year approx, 3000 students appear in the entrance exam. One amongst every 60 students get selected for this course.


| Name | User ID | |
|---|---|---|
| No users have signed in with this app yet |
Fake a gym date for the following user:
Send a single date entry to the server.
I'm an app that lives in this panel next to your dashboard. To use me, please authenticate yourself.
Sign in with RootHi there,
This app tracks which days you go to gym (good on you!), and rewards you with free movie tickets.


Thank you for using Movie Seeker. If your already a member, click the button below to sign in.
Welcome intro text you said that you would write.....Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when
an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised
in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and
Creating an account is fast, easy, and free!
On the following page, login's for various streaming services will be available
Check out some features below!
Username:
Password:
Email:
Phone (optional):
Nullam id dolor id nibh ultricies vehicula ut id elit.
Nullam id dolor id nibh ultricies vehicula ut id elit. Peiores principem Constantium cautela sed cetera et nimia graves cetera modi in titulo causarum infudisset plagas apud sed ut siquid. Invadere tabescebat egressus
ullo flagitii per parans per egressus edictus.
Nullam id dolor id nibh ultricies vehicula ut id elit. Observantes habitu ignoti conspiratione poterant homines formido cognita malorum conpluribus peragranter divites fingerent poterant peragranter.
Nullam id dolor id nibh ultricies vehicula ut id elit. Populique et auctoritate cum sint partes regina canities et circumspectum certamina suffragiorum reverenda et set circumspectum temporis auctoritate certamina verecundum
quotquot domina per et sint auctoritate sunt omnes ubique redierit.
What are you waiting for? Click the button to see if your streaming service is available.


| Up | TOC | Index | |||||
| << 6 Mini-Guides | < 7.2 EuDOC Source Documentation Tool | Up: 7 Included Tools | 7.4 EuDis, Disassembling Euphoria Code > | 8 API Reference >> |
7.3 Edx Demonstration Code Editor
7.3.1 Introduction
The Euphoria includes a handy, text-mode editor, edx that is written completely in Euphoria.
While edx is intended as a demonstration program, many people find edx convenient for editing and examinng small programs.
7.3.2 Summary
Usage:
- edx filename
- edx
After any error, just type edx and you will be placed in the editor at the line and column where the error was detected. The error message will be at the top of your screen.
Euphoria related files are displayed in color. Other text files are in mono. You will know that you have misspelled something when the color does not change as you expect. Keywords are blue. Names of routines that are built in to the interpreter appear in magenta. Strings are green, comments are red, most other text is black. Balanced brackets (on the same line) have the same color. You can change these colors as well as several other parameters of edx. See user-modifiable parameters near the top of edx.ex.
The arrow keys move the cursor left, right, up or down. Most other characters are immediately inserted into the file.
In Windows, you can associate various types of files with edx.bat. You will then be put into edx when you double-click on these types of files -- such as. .e, .pro, .doc etc. Main Euphoria files ending in .ex, .exd or .exw might better be associated with eui.exe, euid.exe, or euiw.exe, respectively.
edx is a multi-file and multi-window text-based editor. Esc c will split your screen so you can view and edit up to ten files simultaneously, with cutting and pasting between them. You can also use multiple edit windows to view and edit different parts of a single file.
7.3.3 Special Keys
Some PC keys do not work in a Linux or FreeBSD or Windows text console, or in Telnet, and some keys do not work in an xterm under X windows. Alternate keys have been provided. In some cases you might have to edit edx.ex to map the desired key to the desired function. For example you may have to use C-t and C-b instead of C-Home and C-End.
| Delete | Delete the current character above the cursor |
| Backspace | Move the cursor to the left and delete a character |
| C-Delete | Delete the current line (not available on all platforms) |
| C-d | Delete the current line (same as C-Delete) |
| Insert | re-insert the preceding series of Deletes before the current line/character |
| C-Left | Move to the start of the previous word. On Unix use C-l |
| C-Right | Move to the start of the next word. On Unix use C-r |
| Home | Move to the beginning of the current line |
| End | Move to the end of the current line |
| C-Home | Move to the beginning of the file (euid.exe only, others use C-t |
| C-End | Move to the end of the file (euid.exe only, others use C-b |
| PgUp | Move up one screen. On Unix use C-u |
| PgDn | Move down one screen. On Unix use C-p |
| F1..F10 | Select a new window. The windows are numbered from top to bottom with the top window on the screen being F1 |
| F12 | User definable key (see CUSTOM_KEYSTROKES near top of ed.ex. Default action is to insert -- for a Euphoria comment |
7.3.4 Escape Commands
Press and release the Esc key, then press one of the following keys:
| h | Get help text for the editor, or Euphoria. The screen is split so you can view your program and the help text at the same time. |
| c | "Clone" the current window, i.e. make a new edit window that is initially viewing the same file at the same position as the current window. The sizes of all windows are adjusted to make room for the new window. You might want to use Esc l to get more lines on the screen. Each window that you create can be scrolled independently and each has its own menu bar. The changes that you make to a file will initially appear only in the current window. When you press an F-key to select a new window, any changes will appear there as well. You can use Esc n to read a new file into any window. |
| q | Quit (delete) the current window and leave the editor if there are no more windows. You'll be warned if this is the last window used for editing a modified file. Any remaining windows are given more space. |
| s | Save the file being edited in the current window, then quit the current window as Esc q above. |
| w | Save the file but do not quit the window. |
| e | Save the file, and then execute it with euid, euiw or eui. When the program finishes execution you'll hear a beep. Hit Enter to return to the editor. This operation may not work if you are very low on extended memory. You can't supply any command-line arguments to the program. |
| d | Run an operating system command. After the beep, hit Enter to return to the editor. You could also use this command to edit another file and then return, but Esc c is probably more convenient. |
| n | Start editing a new file in the current window. Deleted lines/chars and search strings are available for use in the new file. You must type in the path to the new file. Alternatively, you can drag a file name from a Windows file manager window into the console window for edx. This will type the full path for you. |
| f | Find the next occurrence of a string in the current window. When you type in a new string there is an option to "match case" or not. Press y if you require upper/lower case to match. Keep hitting Enter to find subsequent occurrences. Any other key stops the search. To search from the beginning, press C-Home before Esc f. The default string to search for, if you don't type anything, is shown in double quotes. |
| r | Globally replace one string by another. Operates like Esc f command. Keep hitting Enter to continue replacing. Be careful - there is no way to skip over a possible replacement. |
| l | Change the number of lines displayed on the screen. Only certain values are allowed, depending on your video card. Many cards will allow 25, 28, 43 and 50 lines. In a Unix text console you're stuck with the number of lines available (usually 25). In a Unix terminal xterm window, edx will use the number of lines initially available when edx is started up. Changing the size of the window will have no effect after edx is started. |
| m | Show the modifications that you've made so far. The current edit buffer is saved as editbuff.tmp, and is compared with the file on disk using the Windows fc command, or the Linux/FreeBSD diff command. Esc m is very useful when you want to quit the editor, but you can't remember what changes you made, or whether it's ok to save them. It's also useful when you make an editing mistake and you want to see what the original text looked like. |
| ddd | Move to line number ddd. e.g. Esc 1023 Enter would move to line 1023 in the file. |
| CR | Esc Carriage-Return, i.e. Esc Enter, will tell you the name of the current file, as well as the line and character position you are on, and whether the file has been modified since the last save. If you press Esc and then change your mind, it is harmless to just hit Enter so you can go back to editing. |
7.3.5 Recalling Previous Strings
The Esc n, Esc d, Esc r and Esc f commands prompt you to enter a string. You can recall and edit these strings just as you would at the command line. Type up-arrow or down-arrow to cycle through strings that you previously entered for a given command, then use left-arrow, right-arrow and the delete key to edit the strings. Press Enter to submit the string.
7.3.6 Cutting and Pasting
When you C-Delete (or C-d) a series of consecutive lines, or Delete a series of consecutive characters, you create a "kill-buffer" containing what you just deleted. This kill-buffer can be re-inserted by moving the cursor and then pressing Insert.
A new kill-buffer is started, and the old buffer is lost, each time you move away and start deleting somewhere else. For example, cut a series of lines with C-Delete. Then move the cursor to where you want to paste the lines and press Insert. If you want to copy the lines, without destroying the original text, first C-Delete them, then immediately press Insert to re-insert them. Then move somewhere else and press Insert to insert them again, as many times as you like. You can also Delete a series of individual characters, move the cursor, and then paste the deleted characters somewhere else. Immediately press Insert after deleting if you want to copy without removing the original characters.
Once you have a kill-buffer, you can type Esc n to read in a new file, or you can press an F-key to select a new edit window. You can then insert your kill-buffer.
7.3.7 Using Tabs
The standard tab width is 8 spaces. The editor assumes tab=8 for most files. However, it is more convenient when editing a program for a tab to equal the amount of space that you like to indent. Therefore you will find that tabs are set to four when you edit Euphoria files (or .c, or .h or .bas files). The editor converts from tab=8 to tab=4 when reading your program file, and converts back to tab=8 when you save the file. Thus your file remains compatible with the tab=8 world.
If you would like to choose a different number of spaces to indent, change the line at the top of edx.ex that says "constant PROG_INDENT = 4".
7.3.8 Long Lines
Lines that extend beyond the right edge of the screen are marked with an inverse video character in the 80th column. This warns you that there is more text "out there" that you can not see. You can move the cursor beyond the 80th column. The screen will scroll left or right so the cursor position is always visible.
7.3.9 Maximum File Size
Like any Euphoria program, edx can access all the memory on your machine. It can edit huge files, and unless disk swapping occurs, most operations will be very fast.
7.3.10 Non-text Files
edx is designed for editing pure text files, although you can use it to view other files. As edx reads in a file, it replaces certain non-printable characters (less than ASCII 14) with ASCII 254 -- a small square. If you try to save a non-text file you will be warned about this. Since edx opens all files as "text" files, a control-z character (26) embedded in a file will appear to edx to be the end of the file.
7.3.11 Line Terminator
The end-of-line terminator on Unixis simply \n. On Windows text files have lines ending with \r\n. If you copy a Windows file to Unix and try to modify it, edx will give you a choice of either keeping the \r\n terminators, or saving the file with \n terminators.
7.3.12 Source-Code
The complete source code to this editor is in bin\edx.ex and bin\syncolor.e . You are welcome to make improvements. There is a section at the top of edx.ex containing user-modifiable configuration parameters that you can adjust. The colors and the cursor size may need adjusting for some operating environments.


Severity: Notice
Message: Trying to get property of non-object
Filename: views/demo.php
Line Number: 40
Line Number: 41
Line Number: 45


{#
if the user variable is available (only the case if the page is authenticated) let them know they're logged in via a header
#}
{% if user.firstName %}
Hey {{ user.firstName }} {{ user.lastName }}!
Logout
{# dashboard view explicitly sets is_dashboard to true, otherwise is falsey #}
{% if not is_dashboard %}
Dashboard
{% endif %}


PyRossGeo API¶
Note: PyRossGeo is still in active development, and future versions might change substantially. See the changelog for all changes between updates.
To go to the main PyRossGeo documentation page click here
Table of Contents
pyrossgeo.Simulation¶
-
class
pyrossgeo.Simulation.
Simulation
¶ Simulates the geographic compartmental model.
-
age_groups
¶ The number of age-groups.
- Type
int
-
model_dim
¶ The number of model classes.
- Type
int
-
max_node_index
¶ The highest index of all nodes (not including cnodes). “Index” here is not to be confused with (age, model_class, home, location).
- Type
int
-
node_mappings
¶ Contains mappings between nodes (age, model_class, home, location) to its index in the state vector X_state.
- Type
dict
-
cnode_mappings
¶ Contains mappings between cnodes (age, model_class, home, from, to) to its index in the state vector X_state.
- Type
dict
-
storage
¶ Persistent storage used for events.
- Type
dict
-
has_been_initialized
¶ If True, then Simulation.initialize has been called.
- Type
bool
-
compute
()¶ Computes the right-hand side of the dynamical system.
Sets the array dX_state to the derivative of the dynamical system at the state X_state.
- Parameters
X_state (np.ndarray) – The state of the system.
dX_state (np.ndarray) – The array to input the derivative into.
t (float) – Time
dt (float) – The time-step used
-
get_contact_matrix
()¶ Returns the contact matrix with the given key.
-
get_contact_matrix_keys
()¶ Returns a list of the contact matrix keys.
-
initialize
()¶ Initializes the simulation using the given configuration files.
Each argument will be accepted as either as raw data or a path to a file containing the data. See the documentation for the format each configuration file should take.
- Parameters
model_dat (str or dict) – Specifies the epidemic model
commuter_networks_dat (str or np.ndarray) – Specifies the commuter network
node_parameters_dat (str or pandas.DataFrame) – Specifies the parameters of the model at each node
cnode_parameters_dat (str or pandas.DataFrame) – Specifies the parameters of the model at each commuter node
contact_matrices_dat (str or dict) – Specifies the contact matrices
node_cmatrices_dat (str or pandas.DataFrame) – Specifies what contact matrix to use at each node
cnode_cmatrices_dat (str or pandas.DataFrame) – Specifies what contact matrix to use at each commuter node
node_populations_dat (str or np.ndarray) – Specifies the population at each node
cnode_populations_dat (str or np.ndarray) – Specifies the population at each commuter node (default None)
-
is_commuting_stopped
()¶ Returns True if the commuter network has been disabled.
-
set_contact_matrix
()¶ Change the contact matrix of the given key.
- Parameters
cmat_key – the key of the contact matrix
cmat – the array to set the contact matrix to.
-
simulate
()¶ Simulates the system.
Simulates the system between times t_start and t_end, with the initial condition X_state. dts an array of time-steps, where dts[i] is the time-step used during step i of the simualtion.
If save_path is specified, then the result of the simulation will be outputted directly to the hard-drive as a zarr array at the given path.
- Parameters
X_state (np.ndarray) – Initial condition of the system.
t_start (float) – Start time
t_end (float) – End time
dts (float, or list or array of floats) – Time steps
steps_per_save (int) – Number of simulation steps per saving the state (default -1)
save_path (str) – The path of the folder to save the output to (default “”)
only_save_nodes (bool) – If True, commuter nodes will not be saved (default False)
event_times (list or array of floats) – The times at which the event_function should be called (default [])
event_function (function) – The function that will be called at each event time (default None)
- Returns
A tuple ((node_mappings, cnode_mappings), ts, X_states). X_states is an np.ndarray of shape (ts.size, N) where N is the total degrees of freedom of the system. If only_save_nodes = True then N is just the degrees of freedom of the nodes, and excludes the commuting nodes. ts is the times corresponding to X_states. node_mappings is a dictionary with keys of form (a,o,i,j), corresponding to age-bracket, class, home and location respectively. node_mappings[a,o,i,j] is the column of X_states for the corresponding state value. Similarly, cnode_mappings is a dictionary with keys of the form (a,o,i,j,k), corresponding to age-bracket, class, home, origin, destination respectively.
- Return type
tuple
-
stop_commuting
()¶ Disables the commuter network if s is True, and enables it if False.
-
pyrossgeo.utils¶
-
pyrossgeo.utils.
extract_cnode_data
(sim_data)¶ Returns the results of the simulation for each commuter node.
- Parameters
sim_data (Tuple) – Simulation data.
- Returns
A dictionary of keys of the form (i, j, k), corresponding to home node, origin node and destination node respectively. cnode_data[i,j,k] is an np.ndarray of shape (ts.size, # of age groups, # of classes).
- Return type
dict
-
pyrossgeo.utils.
extract_community_data
(sim_data)¶ Returns the results of the simulation for each community.
- Parameters
sim_data (Tuple) – Simulation data.
- Returns
An array of shape (ts.size, # of age groups, # of classes, # of locations). It contains the results of the simulation summed over each community. So community_data[:,0,1,32] contains the history of all people of age-bracket 0, class 1 and who live at location 32.
- Return type
np.ndarray
-
pyrossgeo.utils.
extract_location_data
(sim_data)¶ Returns the results of the simulation for a given location.
- Parameters
sim_data (Tuple) – Simulation data.
- Returns
An array of shape (ts.size, # of age groups, # of classes, # of locations). It contains the results of the simulation at each location. So community_data[5,0,1,32] contains the state of people of age-bracket 0, class 1 who are at location 32, at step 5 of the simulation.
- Return type
np.ndarray
-
pyrossgeo.utils.
extract_network_data
(sim_data)¶ Returns the results of the simulation for the whole network.
- Parameters
sim_data (Tuple) – Simulation data.
- Returns
An array of shape (ts.size, # of age groups, # of classes). It contains the result of the simulation of the network as a whole for each age group and class.
- Return type
np.ndarray
-
pyrossgeo.utils.
extract_node_data
(sim_data)¶ Returns the results of the simulation for each node.
- Parameters
sim_data (Tuple) – Simulation data.
- Returns
A dictionary of keys of the form (i, j), corresponding to home node, and location node respectively. node_data[i,j,k] is an np.ndarray of shape (ts.size, # of age groups, # of classes).
- Return type
dict
-
pyrossgeo.utils.
extract_simulation_data
(sim_data)¶ Returns a tuple containing various formatted data for a given simulation result.
It returns node_data, cnode_data, location_data, community_data, network_data.
-
pyrossgeo.utils.
extract_ts
(sim_data)¶ Returns the results of the simulation times given simulation data.
- Parameters
sim_data (Tuple) – Simulation data.
- Returns
A 1D array containing each time-step.
- Return type
np.ndarray
-
pyrossgeo.utils.
get_dt_schedule
(times, end_time)¶ Generates a time-step schedule.
Example:
The following generates a time-step schedule where we use a time-step of one minute between 7-10 and 17-19 o’clock, and 2 hours for all other times.
- ts, dts = pyrossgeo.utils.get_dt_schedule([
(0, 2*60), (7*60, 1), (10*60, 2*60), (17*60, 1), (19*60, 2*60) ], end_time=24*60)
- Parameters
times (lost) – list of tuples
end_time (float) – The final time of the schedule.
- Returns
A tuple (ts, dts). dts are the time-steps and ts the times.
- Return type
tuple
-
pyrossgeo.utils.
load_sim_data
(load_path, use_zarr=False)¶ Loads
- Parameters
load_path (str) – Path of the simulation data folder.
use_zarr (bool, optional) – If True, the simulation data will be given as a zarr array, rather than as a numpy array. The former is useful if the data is very large.
- Returns
A tuple (node_mappings, cnode_mappings, ts, X_states), containing all simulation data. X_states is either an np.ndarray or a zarr.core.Array. If use_zarr=True, the latter will be given.
- Return type
tuple


zip.js
A JavaScript library to zip and unzip files
Read a zip file demo
choose a zip file
show zip content


1. Overview¶
1.1. Getting Started¶
See our Contributing to Augur guide for specifics on how we review pull requests. tl;dr: Fork our repo. Make a change. Use the mailing list for CHAOSS, Submit a pull request.
1.2. Building Changes¶
After making your changes, run
make build
to update the docs and frontend before adding them to your staging area.
make docs
1.3. Augur Development Overview¶
1.3.2. Augur’s Design Value System¶
Augur’s architecture is designed with an eye toward fulfilling its primary missions of rapid open source software metric prototyping and using data visualization to facilitate discussions among folks who manage open source communities.
Core aims
- Rapid metrics prototyping
- Using data visualization to support discussion
Our visualization design follows two principles: 1. Allow comparisons across projects 2. Where logical, show trends over time on a metric
Project comparison helps people understand what a metric tells them. If I show you total commits in a month or a year, what does that tell you about the health of an open source project? If you are able to compare a project you are managing with a project or two in the same space that you are familiar with, is that helpful? In most cases the answers are yes. We aim to produce not only metrics, but enough information for consumers of Augur to construct meaning. Which then helps the CHAOSS community build better, more useful metrics.
Time is, in effect, a project focused type of comparison. If you can see the changes in different metrics on your project over time, its easier to maintain awareness of how metrics compare with results.
1.4. Augur’s Architecture¶
In our aspiration to implement our value system for metrics in software, we seperate concerns pragmatically. Any metrics dashboard system has to do 4 things: 1). Ingest data 2). store data 3). reshape data for analysis 4). present data
Of course, these “dashboard requirements” can be interpreted and circumvented. For example, if robust API’s are available, like the GitHub Version 4 API, persistence can be considered optional.
Right now, Augur satisfies the enumerated dashboard system requirements in concrete ways we describe in the following four sections.
1.4.1. Augur Data Ingestion¶
We use the GHTorrent database, or its MSR14 little brother to help you get up and running quickly. You may find this dataset insufficient for a particular metric you want to build. API’s available from a number of places can be accessed from Augur.
Inside your Augur system root directory there is another directory named
augur
. This is where the Python library lives, including the data
source plugins (in datasources
), functionality plugins (in
plugins
), and the web API (in server.py
). Below is the list of
default data sources shipped with Augur:
- ghtorrent : reads the ghtorrent database you installed
- facade : reads a copy of the Facade database, developed by Brian Warner
- githubapi : Pulls data from the GitHub API
- downloads : gathers download statistics for github repositories. Currently configured for npm and ruby gems download data.
- librariesio : Pulls data from the libraries.io API (Package manager download data)
- localcsv : Pulls data from a .csv file you persist.
If you want to ingest substantial amounts of new data, you may want to contribute to the Augur-OSSifragae project, which focuses on systematic, structured ingestion of open source respository data from heterogeneous sources. (Note: an Ossifragae is a bearded vulture that is one of a handful of birds said to yield valid signs for ancient Roman Augurs (visionaries) to follow. We think the existance of “OSS” at the beginning of the birds name is a sign. We took it.)
1.4.2. Augur Data Storage¶
The database system that you built with GHTorrent or MSR14 is our principle data storage environment right now. We have added a few small details to the GHTorrent database in a seperate schema called GHTorrent_Plus. This schema is built on deployment, and supports aggregations of the GHTorrent Schema information so that metrics can be generated more quickly in a few cases.
1.4.3. Augur Data Reshaping for Analysis¶
Now that you understand the basic structure of Augur, our Back End Development Guide will be the place to start for reshaping data and building out analysis endpoints. The end result of new back end code is a REST API Endpoint.
1.4.4. Augur Data Presentation¶
Once you have a REST API Endpoint, you can stop and say, “I have built an endpoint. Here is my pull request”. OR, you can build front end visualizations for those endpoints, following our Front End Development Guide.
1.5. Important notes about contributing metrics¶
Before we start, there are a few things we would like to go over. Please take the time to read this section carefully; not only will it will make your life much easier, but also the lives of all the other contributors!
Some of the metrics we develop are defined more formally by metrics committees and working groups; some are not. Should you choose to work on implementing any of these metrics that are formally defined, they should be placed under their respective category, wherever you are adding it.
Across the project, metric groups are ordered as such: 1). Diversity and Inclusion (D&I) 2). Growth, Maturity, and Decline (GMD) 3). Risk 4). Value 5). Experimental
This order is followed across the project. Data source files, test
files, server.py
, AugurAPI.js
, frontend cards, and other places
that metrics appear in should adhere to this order for maximum
uniformity (In AugurAPI.js
, Git metrics have their own section).
If you are adding a new metric that does not fall under one of these
categories, it should be placed in the Experimental group in the correct
sub-category. If you would like to add a new Experimental sub-category,
please open a pull request with your proposed addition. In addition,
please update the file mentioned above to include your new metric: it
can be found at augur/docs/scratchpad/master-metrics-order.md
.
Files where metrics appear should include a header for every group, even if there are no relevant metrics in that group. The exception to this rule are the frontend tab cards; these are already grouped.


Group Orintated
Every day holds new excitement for our residents. Whether Monday Bingo or a New Years Eve party the activity room is the place to be. Our resident look forward to Tuesday for revelation of that weeks coloring contest winner. We also have monthly events including baking, sing-a-longs, nail care, birthday parties, and live entertainment.


Class AssignmentExtensions
Provides methods for working with assignment
Inheritance
Inherited Members
Namespace:Bifrost.CodeGeneration.JavaScript
Assembly:Bifrost.dll
Syntax
public static class AssignmentExtensions
Methods
| Improve this Doc View SourceAssign(ObjectLiteral, String)
Assign a key within an ObjectLiteral
Declaration
public static KeyAssignment Assign(this ObjectLiteral objectLiteral, string name)
Parameters
| Type | Name | Description |
|---|---|---|
| ObjectLiteral | objectLiteral | ObjectLiteral to assign to |
| System.String | name | Name of key |
Returns
| Type | Description |
|---|---|
| KeyAssignment | KeyAssignment to build |
WithBoolean(Assignment, Boolean)
Assign bool value
Declaration
public static Assignment WithBoolean(this Assignment assignment, bool value = false)
Parameters
| Type | Name | Description |
|---|---|---|
| Assignment | assignment | Assignment to assign to |
| System.Boolean | value | System.Boolean to assign |
Returns
| Type | Description |
|---|---|
| Assignment | The Assignment to build on |
WithDate(Assignment)
Assign new Date value
Declaration
public static Assignment WithDate(this Assignment assignment)
Parameters
| Type | Name | Description |
|---|---|---|
| Assignment | assignment | Assignment to assign to |
Returns
| Type | Description |
|---|---|
| Assignment | The Assignment to build on |
WithDefaultEnumValue(Assignment, Type)
Assign the default value of a given enum type
Declaration
public static Assignment WithDefaultEnumValue(this Assignment assignment, Type enumType)
Parameters
| Type | Name | Description |
|---|---|---|
| Assignment | assignment | Assignment to assign to |
| System.Type | enumType | The type of enum which to create a default for |
Returns
| Type | Description |
|---|---|
| Assignment | The Assignment to build on |
WithDefaultNumericValue(Assignment, Type)
Assign the default value of a given Type
Declaration
public static Assignment WithDefaultNumericValue(this Assignment assignment, Type type)
Parameters
| Type | Name | Description |
|---|---|---|
| Assignment | assignment | Assignment to assign to |
| System.Type | type | The type of which to create a default for |
Returns
| Type | Description |
|---|---|
| Assignment | The Assignment to build on |
WithDefaultValue(Assignment, Type)
Assign the default value of a given Type
Declaration
public static Assignment WithDefaultValue(this Assignment assignment, Type type)
Parameters
| Type | Name | Description |
|---|---|---|
| Assignment | assignment | Assignment to assign to |
| System.Type | type | The type of which to create a default for |
Returns
| Type | Description |
|---|---|
| Assignment | The Assignment to build on |
WithEmptyArray(Assignment)
Assign an empty Array
Declaration
public static Assignment WithEmptyArray(this Assignment assignment)
Parameters
| Type | Name | Description |
|---|---|---|
| Assignment | assignment | Assignment to assign to |
Returns
| Type | Description |
|---|---|
| Assignment | The Assignment to build on |
WithFunction(Assignment, Action<Function>, String[])
Assign a function
Declaration
public static Assignment WithFunction(this Assignment assignment, Action<Function> callback, params string[] parameters)
Parameters
| Type | Name | Description |
|---|---|---|
| Assignment | assignment | Assignment to assign to |
| System.Action<Function> | callback | System.Action<T> that gets called to build the function |
| System.String[] | parameters | Optional parameters for the function |
Returns
| Type | Description |
|---|---|
| Assignment | The Assignment to build on |
WithFunctionCall(Assignment, Action<FunctionCall>)
Assign a function call
Declaration
public static Assignment WithFunctionCall(this Assignment assignment, Action<FunctionCall> callback)
Parameters
| Type | Name | Description |
|---|---|---|
| Assignment | assignment | Assignment to assign to |
| System.Action<FunctionCall> | callback | System.Action<T> that gets called to build the functioncall |
Returns
| Type | Description |
|---|---|
| Assignment | The Assignment to build on |
WithGuidEmpty(Assignment)
Assign an empty guid value
Declaration
public static Assignment WithGuidEmpty(this Assignment assignment)
Parameters
| Type | Name | Description |
|---|---|---|
| Assignment | assignment | Assignment to assign to |
Returns
| Type | Description |
|---|---|
| Assignment | The Assignment to build on |
WithLiteral(Assignment, Object)
Assign a literal
Declaration
public static Assignment WithLiteral(this Assignment assignment, object literal)
Parameters
| Type | Name | Description |
|---|---|---|
| Assignment | assignment | Assignment to assign to |
| System.Object | literal | Literal to assign |
Returns
| Type | Description |
|---|---|
| Assignment | The Assignment to build on |
WithNullValue(Assignment)
Assign null value
Declaration
public static Assignment WithNullValue(this Assignment assignment)
Parameters
| Type | Name | Description |
|---|---|---|
| Assignment | assignment | Assignment to assign to |
Returns
| Type | Description |
|---|---|
| Assignment | The Assignment to build on |
WithObjectLiteral(Assignment, Action<ObjectLiteral>)
Assign an object literal
Declaration
public static Assignment WithObjectLiteral(this Assignment assignment, Action<ObjectLiteral> callback = null)
Parameters
| Type | Name | Description |
|---|---|---|
| Assignment | assignment | Assignment to assign to |
| System.Action<ObjectLiteral> | callback | System.Action<T> that gets called to build the object literal |
Returns
| Type | Description |
|---|---|
| Assignment | The Assignment to build on |
WithObservable(Assignment, ObservableVisitor)
Assign an observable
Declaration
public static Assignment WithObservable(this Assignment assignment, ObservableVisitor visitor = null)
Parameters
| Type | Name | Description |
|---|---|---|
| Assignment | assignment | Assignment to assign to |
| ObservableVisitor | visitor | Optional System.Action<T> that gets called to build the observable |
Returns
| Type | Description |
|---|---|
| Assignment | The Assignment to build on |
WithObservableArray(Assignment)
Assign an observable array
Declaration
public static Assignment WithObservableArray(this Assignment assignment)
Parameters
| Type | Name | Description |
|---|---|---|
| Assignment | assignment | Assignment to assign to |
Returns
| Type | Description |
|---|---|
| Assignment | The Assignment to build on |
WithString(Assignment, String)
Assign a string
Declaration
public static Assignment WithString(this Assignment assignment, string theString)
Parameters
| Type | Name | Description |
|---|---|---|
| Assignment | assignment | Assignment to assign to |
| System.String | theString | String to assign |
Returns
| Type | Description |
|---|---|
| Assignment | The Assignment to build on |
WithThis(Assignment)
Assign "this" to an Assignment
Declaration
public static Assignment WithThis(this Assignment assignment)
Parameters
| Type | Name | Description |
|---|---|---|
| Assignment | assignment | Assignment to assign to |
Returns
| Type | Description |
|---|---|
| Assignment | The Assignment to build on |
WithType(Assignment, Action<TypeExtension>)
Assign a type
Declaration
public static Assignment WithType(this Assignment assignment, Action<TypeExtension> callback)
Parameters
| Type | Name | Description |
|---|---|---|
| Assignment | assignment | Assignment to assign to |
| System.Action<TypeExtension> | callback | System.Action<T> that gets called to build the type |
Returns
| Type | Description |
|---|---|
| Assignment | The Assignment to build on |


MED 2018 General Information |
The 26th Mediterranean Conference on Control and Automation, MED 18, takes place at the town of Zadar, Croatia. The theme of MED 18 centers on the growing societal and economic challenges, as well as possible solutions brought by the control, automation and robotics technologies and systems. A broad range of topics is proposed, following current trends of combining control/systems theory with software/communication technologies, as well as new developments in robotics and mechatronics, autonomous systems, unmanned systems, cyber physical systems, network controlled systems, with the goal of strengthening cooperation of control and automation scientists with industry. The town of Zadar has exceptional history and rich cultural heritage, spanning over 2,000 years. The Old Town, located on a natural peninsula, is surrounded by historical ramparts, within which one can find a mix of archaeological and monumental treasures from ancient and medieval times to Renaissance and contemporary architectural achievements such as the first Sea Organ in the world. In the year 2016, Zadar received the prestigious Best European Destination 2016 award. |
|
|
|
Conference Venue - Hotel Kolovare |
Hotel Kolovare (4*) is located near the historical sights of Zadar, in a peaceful and picturesque part of the city. The hotel has a modern architectural structure adapted to the Mediterranean style and it has modern and luxurious equipped rooms with air conditioning. The hotel has 191 rooms (double or twin bedrooms, king-size bedrooms) and 12 apartments. All rooms are non-smoking. All rooms are furnished in modern style with 100% cotton bed linen. There is also an ΰ la carte restaurant with 270 seats, wine boutique, a bar, hair salon, massage parlour, congress hall, rent-a-car, an outdoor swimming pool for children and adults and a sports-recreation centre with tennis courts, volleyball court and miniature golf court. There is a beach near the hotel. |
|
|
|
Conference Program Innovations |
As the part of the conference program, there are two roundtables dedicated to challenges in control and automation, particularly to societal and economic challenges related to increase in the system autonomy. The panelists from industry, academia and public bodies are attending. The second innovative aspect of the conference program is related to industrial challenges planned for M. Sc. and Ph. D. students. Three challenges are organized with topics in: i) industrial automation, ii) automotive control design, and iii) autonomous systems control design. Challenges i) and ii) are supported by industrial partners, while the third one is organized under support of<EMAIL_ADDRESS>an organization of robotics laboratories at the University of Zagreb Faculty of Electrical Engineering and Computing. Travel and accommodation for the finalists is covered by the conference organizers and challenges supporters. The winners will be announced at the gala dinner. |
|
Registration Desk | ||||||||
All Conference attendees must register, either by using on-line early registration (preferred option), or on-site. All registered participants must check in at the Registration Desk to pick up their registration packages. Personal badges will be provided to identify registered participants. The Registration Desk will be open during the following hours: | ||||||||
|
|
|
Events and Receptions | ||||||||||||
|


Teen solves vehicle blind spot issue using webcam and projector
Ingenuity starts at an early age
by Shawn KnightBottom line: Short-throw projectors and discrete cameras already exist to allow automakers to implement the idea in upcoming models. It’ll be largely up to them to determine how quickly they want to act – if at all. Such a system would no doubt add a bit more to the overall cost of a vehicle but I’m willing to bet that consumers would eat up this sort of tech and safety enhancement.
The blind spot created by a vehicle’s A-pillar – the thick supports on either side of your windshield – is an issue that has plagued automakers and frustrated drivers for decades. Now thanks to the ingenuity of one teenager, the safety hazard may soon be a thing of the past.
Alaina Gassler, a 14-year-old inventor from West Grove, Pennsylvania, recently came up with a clever solution for a national science fair. The teen attached a webcam to the outside of the A-pillar which is used to pipe a live video stream to a projector that projects the image onto the A-pillar. Using custom 3D-printed parts, she was able to line the projection up perfectly on the A-pillar, essentially making it “invisible” by providing the driver with a live view of what’s going on in the blind spot.
Gassler’s project was presented at the Society for Science and the Public’s Broadcom MASTERS (Math, Applied Science, Technology and Engineering for Rising Stars) science and engineering competition where it took home top honors.


https://github.com/dbuezas/arduino-web-uploader
Upload Blink to lgt8f328p [
]
Upload Blink to nano/uno/pro/pro-mini [
]
Upload Blink to nano with old bootloader (most chinese clones) [
]


I've written various posts, articles in the technology, music or development space. Most of these can be found on Medium here or linked below.
Me on Medium
Common technology management problems, questions and improvement for teams.
A series of articles on making music programatically with Sonic Pi.
Number of articles on my (currently) preferred method of developing mobile apps - React Native.


You are seeing this because the callback url was set to 'oob'
Enter this PIN in your app: {{ verifier }}
{% extends "base.html" %}
{% block title %}ADL LRS Client Allow Access{% endblock title %}
{% block heading %}ADL LRS Client Allow Access{% endblock heading %}
{% block extra_css %}
{% endblock extra_css %}
{% block content %}
You are seeing this because the callback url was set to 'oob'
Enter this PIN in your app: {{ verifier }}


All Classes
Packages
com.mvvmlib.activities
com.mvvmlib.adapters
com.mvvmlib.models
com.mvvmlib.models.Adapters
com.mvvmlib.services
com.mvvmlib.services.enums
com.mvvmlib.services.Interfaces
com.mvvmlib.utils
com.mvvmlib.viewModels


---
layout: post
type: post
status: publish
tags:
- "2012"
- india
- Non-technical
- pycon
- pyconindia2012
meta:
_wpbitly: http://q.bibhas.in/Qxs0Y3
snapEdIT: "1"
snap_isAutoPosted: "1"
_edit_last: "1"
snapTW: "s:89:\"a:1:{i:0;a:2:{s:13:\"SNAPincludeTW\";s:1:\"1\";s:10:\"SNAPformat\";s:18:\"%TITLE% - %URL% #l\";}}\";"
published: true
title: How to Reach PyCon India 2012
permalink: /blog/847/how-to-reach-pycon-india-2012/
---
I had a quick visit to the venue today. As I'm volunteering this time, will be visiting tomorrow too, to help set up everything including the directions. So I thought, it's better if I just let you know of the location of the venue.
It's just beside Christ College bus stoppage. For those who don't know, here is the general location of the Christ college stoppage and the venue -
[caption id="" align="aligncenter" width="615"] PyCon 2012 Venue[/caption]
Once you get to the Christ College stoppage, follow this path -
[caption id="" align="aligncenter" width="610"] PyCon 2012 closer map[/caption]
And you'll find yourself at the venue. :)
Just for reference, here is the co-ordinates of the venue - 12.9349, 77.6052(Clickable).
See you at the venue. :)


Detecting Spaces Between Products
File:
Predict
REFRESH
{% if select_cat %}
{% for filename in filenames %}
{% endfor %}
{% endif %}


This application provides the framework to build integration services. It uses Spring Boot as runtime environment.
It prepares the management interface on port 8081 and allows to call the info and health URL.


Hispanic-Market Print: "Mucho Mas"
Disguised as the cover of People in Español’s most popular issue, this milk ad portrayed milk consumption as a key ingredient of a beauty routine.
Disguised as the cover of People in Español’s most popular issue, this milk ad portrayed milk consumption as a key ingredient of a beauty routine.


This is for Academic year 2018/19: Postgraduate
Apply for Social Work Bursary
Apply for social work bursary.
The amount you get depends on:
- where you study
- whether you study full or part-time
- the cost of your tuition
This is for Academic year 2018/19: Postgraduate
Apply for social work bursary.
The amount you get depends on:


Thank you for being with us and providing your office Space : {{ message_content.get('space_title','') }}
On your continued support for us we would like to know whether your space is still available for renting out to the people.
So please select appropriate option as follows:


Do not use protected fields in final classes since they cannot be subclassed. Clarify your intent by using private or package access modifiers instead.
This rule is deprecated, use {rule:squid:S2156} instead.


Guiders.Ext Demo
The Guiders.Ext.js file providers a simple interface for creating a wizard type tour.
Changes include:
- The "id"/"next" are automatically set-up appropriately.
- Ihe extensions use conventions, as in:
- The "Next"/"Back" buttons always have events attached, you just provide the hooks if you need them.
- When using "Next"/"Back" events the guiders.next() / .prev() call is made for you appropriately.
- The "xButton" and "closeOnEscape" properties are disabled on Start/Finish points, but enabled in between.


I see it as a kind of natural 'energy drink', one that I think works more pleasantly, effectively, and safely than all of that over priced, super-charged, sugar coated caffeine in a little can that people are sucking down like water these days. My experiences are the same. Mate gives me good, sustained energy, mental clarity, and a good mood, without feeling 'jittery' or 'amped-up' like even relatively small doses of green tea or soda will do to me. I have once or twice drank a little too much on an empty stomach, and gotten a very caffeine like effect, but this is rare with Mate, and doesn’t seem to feel so bad coming down.
As for the taste, I personally found it very palatable from the get-go (more so than coffee or tea), but I can see where it could be a very acquired taste for some. Different brands of Mate have subtle taste differences.
I have scored it in small Middle Eastern markets, sandwiched in between hookah tobacco and Turkish tea, as well as Oriental markets. In fact, the giant Asian supermarket down the street from me here has just added an 'argentine' sub-section to their 'Latin foods' aisle, and they have literally about a ton of it, all different brands.
I have had it in a teabag, from a mesh teaball, a French press, as well as the traditional gourd and filter straw. I have to say that I could form a kind of usage spectrum with the teabag being the least enjoyable (but most convenient) method, and the gourd and straw as the most enjoyable (but least convenient) way. The magic middle ground is the French press. The consistency and flavor it brings out is great, and I can use the press for the occasional cup of coffee, without having to own a coffee maker, or for making homemade herbal teas.
The traditional method is really cool, directly passed down from the natives of the forests where it has always grown, and deeply ingrained into the culture of modern day southern S. America. It does fill a void left since the Cannabis plant really started to disagree with me many years ago, and is, in my opinion, a much healthier plant to be ingesting on a regular basis.
One last note, because of the way Mate is dried and aged; I will always get some amount of sediment in my cup, no matter how fine the filtration is.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.