The Database class stores a matrix of data, together with the sample period (the class derives from the Sample class), and the names of the variables. Functions to create a database from disk files (ASCII, OxMetrics and spreadsheet formats) are provided.
In addition, the Database class has built-in support to select variables (for modelling) from the database. Variables are selected by name, optionally with a lag length, and allocated to a group (e.g. to distinguish between dependent and independent variables). A sample period for the selection can be set. This selection can then be extracted from the database. The selected sample is always adjusted so as not to include missing values (.NaN).
The Database class also supports daily and weekly data. This is different because some years have 52 and others 53 weeks. Therefore, the method of using a fixed frequency, as implemented in the Sample class from which the Database class derives, does not work. Instead, a database can be dated:
Some sample code is given in ox/samples/database.
A choice variable has type DB_CHOICE. In that case, there is an array of text labels associated with values: value zero corresponds to index zero in the array, etc. See the example in ox/samples/database/dbchoice.ox.
To use the class, link in the database code and include database.oxh. This is most easily done by adding an #import <database> statement at the top of your source code.
| Base class | Sample class |
| Construction/Information | |
|---|---|
| Database | Constructor |
| Create | Create a database (not needed when using Load...) |
| Empty | empties the database and sample |
| GetDbName | get the database name |
| GetSize | number of observations in the database |
| GetVarCount | returns number of variables |
| Info | Print summary information |
| IsEmpty | returns TRUE if the database is empty |
| SetDbName | set the database name |
| Tabulate | cross-tabulation of discrete variables |
| Data input/output | |
| Load | Load a data file |
| LoadCsv | Load a CSV spreadsheet file |
| LoadDht | Load a GAUSS .dht/.dat file |
| LoadDta | Load a Stata .dta file |
| LoadFmtVar | Load a formatted .dat file |
| LoadIn7 | Load a .in7/.bn7 file |
| LoadObs | Load a human-readable file which is ordered by observation |
| LoadVar | Load a human-readable file which is ordered by variable |
| LoadXls | Load an Excel old-format spreadsheet file |
| LoadXlsx | Load an Excel Open XML spreadsheet file |
| Save | Save the database |
| SaveCsv | Save the database as a CSV spreadsheet file |
| SaveFmtVar | Save the database as a formatted .dat file |
| SaveIn7 | Save the database as a .in7/.bn7 file |
| SaveObs | Save the database as a human-readable file which is ordered by observation |
| SaveVar | Save the database as a human-readable file which is ordered by variable |
| SaveXls | Save the database as an Excel spreadsheet file |
| SaveXlsx | Save the database as an Excel Open XML spreadsheet file |
| Adding/removing variables/observations | |
| Append | Append variables |
| Deterministic | Create deterministic variables |
| Grow | Add observations to the database sample |
| Recode | Recode observations of a variable |
| Remove | Remove the named variable from the database |
| RemoveObsIf | Remove observations from the database |
| Rename | Rename a variable |
| Renew | Renew data on variables (append if new variable) |
| RenewBlock | Renew data without checking |
| SetVar | Sets variable(s) by name |
| Shrink | Shrinks the database |
| SortBy | Sort the database by a variable |
| Extraction | |
| GetAll | Return the whole data matrix |
| GetAllNames | return all variable names |
| GetSample | Returns text with database sample |
| GetSampleByIndex | virtual function returning sample text |
| GetVar | Get the data on the named variable(s) |
| GetVarByIndex | Get the data on variable(s) by the variable index |
| GetVarIndex | Get the database indices of the named variables |
| GetVarNameByIndex | Get variable name(s) by database index |
| Database sample information: Sample class | |
| GetFrequency | data frequency |
| GetIndex | index of time point |
| GetPeriod1 | period of first observation |
| GetPeriod2 | period of last observation |
| GetSize | number of observations in sample (the database) |
| GetYear1 | year of first observation |
| GetYear2 | year of last observation |
| ObsPeriod | finds period of observation index |
| ObsYear | finds year of observation index |
| Resample | changes the sample period and frequency (but not the sample size) |
| Dated data, choice data, and variable types | |
| GetDateByIndex | get the date of a database index |
| GetDates | returns date variable or <> if undated |
| GetIndexByDate | get the index for a date (must be dated) |
| GetIndexByDates | get the indices for a date range (must be dated) |
| GetObsLabel | gets the string representation of an observation |
| GetVarChoices | gets the choice labels (array of strings) |
| GetVarChoicesByIndex | gets the choice labels (array of strings) |
| GetVarType | gets the variable type |
| GetVarTypeByIndex | gets the variable type |
| IsDated | returns TRUE if the database is dated |
| SetDates | sets the date variable |
| SetVarChoices | sets the choice labels (array of strings) |
| SetVarChoicesByIndex | sets the choice labels (array of strings) |
| SetVarType | sets the variable type |
| SetVarTypeByIndex | sets the variable type |
| Variable selection | |
| DeSelect | Remove a selection |
| DeSelectByIndex | Remove a selected variable by its index |
| DeSelectByName | Remove a selected variable by its name |
| FindSelection | Find selection index of a variable |
| GetGroup | Get a group of selected variables |
| GetGroupLag | Get a group of selected variables wich have the specified lag |
| GetGroupLagNames | Get the names of a group of selected variables wich have the specified lag |
| GetGroupNames | Get the names of a group of selected variables |
| GetMaxGroupLag | Get the highest lag in a selection group |
| GetMaxSelLag | Get the highest lag in the selection |
| GetSelInfo | Get the whole selection info |
| Select | Select named variables into a selection group |
| SelectByIndex | Select variables into a selection group by index |
| SetSelInfo | Set the whole selection info |
| Sample selection | |
| ForceSelSample | Set the selection sample without checking |
| ForceSelSampleByIndex | Set the selection sample without checking |
| GetSelEnd | Get the observation index of the selection end |
| GetSelSample | Returns a string with the selected sample text |
| GetSelSampleMode | Returns the current selection sample mode |
| GetSelStart | Get the observation index of the selection start |
| SetSelDates | select a sample by year, month, day |
| SetSelSample | Set the selection sample |
| SetSelSampleByDates | select a sample by date value |
| SetSelSampleByIndex | select a sample by datebase indices |
| SetSelSampleMode | Set the selection sample mode |
Database::Append(const mNew, const asNew); Database::Append(const mNew, const asNew, const iT1);
Appends the k new variables to the database, storing the observations and variable names. It is an error if the variable already exists (use Renew or SetVar instead), or if the new variable has more observations than the database (use Grow first or SetVar instead).
The first observation has database index iT1 (omit the third argument, use 0 if the variables start at the same sample point as the database), the last is the end of the database sample, or the end of mNew, whichever comes first.
Database::Create(const iFreq, const iYear1, const iPeriod1, const iYear2, const iPeriod2); Database::Create(const cT);
Creates a database. Use this when the database is not to be loaded from disk. The Append member function allows adding data to the database. Use Empty first if the database is not empty.
Create(cT) is equivalent to Create(1, 1, 1, cT, 1).
Database::Database();Constructor. Calls Empty and sets the sample selection mode to SAM_ALLVALID.
Database::DeSelect(); Database::DeSelectByIndex(const iSel); Database::DeSelectByName(const sVar, const iGroup, const iLag);
DeSelect clears the current variable and sample selection completely.
The other two functions delete specific variable(s) from the current selection. The selection sample is not changed.
Database::Deterministic(const iCseason);
Appends constant, trend and seasonals to the database. These variables are named Constant, Trend and Season. Season_1, ..., Season_x, where x is the frequency.
Season has a 1 in quarter 1 (for quarterly data), and zeros elsewhere, Season_1 has a 1 in quarter 2, etc.
If iCseason is 0, normal seasonals are created. If iCseason is 1, the seasonals are centred (with quarterly observations, for quarter 1: 0.75, -0.25, -0.25, -0.25, ...), in which case the names are CSeason, CSeason_1, ..., CSeason_x. No seasonals are created if iCseason is < 0.
Database::Empty();
Database::FindSelection(const sVar, const iLag);
Returns the selection index of the specified variable with the specified lag, or -1 if it is not selected. ,
Database::ForceSelSample(const iYear1, const iPeriod1, const iYear2, const iPeriod2); Database::ForceSelSampleByIndex(const iT1, const iT2);
Returns the number of observations in the sample.
Sets a selection a sample for the variables previously selected with the Select function. This function does not check for missing values. Use SetSelSample() to set a sample with checking for missing values.
Database::GetAll(); Database::GetAllNames();
GetAll() returns the whole database matrix. GetAllNames() returns an array with all the variable names.
Database::GetDateByIndex(const iT1)
Returns the date at the specified index (the same as GetDates()[iT1]). This can be printed with the "%C" format, or translated using dayofcalendar. The database must be dated.
Database::GetDates();
Returns a column vector with the date variable or <> if the database is undated.
Database::GetDbName();
Returns a string with the database name.
Database::GetGroup(const iGroup); Database::GetGroupLag(const iGroup, const iLag1, const iLag2);
GetGroup returns a T x n matrix with all selected variables of group iGroup.
GetGroupLag returns only those with the specified lag length. If no database sample has been selected yet, the return value is a 0.
Database::GetGroupLagNames(const iGroup, const iLag1, const iLag2, aasNames); Database::GetGroupNames(const iGroup, const aasNames);
GetGroupLagNames gets the names of all selected variables of group iGroup which have a lag in iLag1 ... iLag2. GetGroupNames gets the names of all variables in the group. The selection sample period must have been set.
Database::GetIndexByDate(const dDate1) Database::GetIndexByDates(const dDate1, const dDate2)
GetIndexByDate returns the index closest to the specified date.
GetIndexByDates returns the start and end indices of the specified period as an array of two integers. This can be used, for example, as [t1,t2] = GetIndexByDates(dayofcalendar(1990,1,1), dayofcalendar(1990,12,31)).
Database::GetMaxGroupLag(iGroup); Database::GetMaxSelLag();
GetMaxSelLag returns the highest lag in all selected variables. GetMaxGroupLag returns the highest lag in selected variables of the specified group iGroup.
Database::GetObsLabel(sVar, const iT);
Return a string with the text of the observation, taking into account whether it is a choice, date or normal value.
Database::GetSample(); virtual Database::GetSampleByIndex(const iT1, const iT2)
GetSample returns a string with the database sample, e.g. "1980(1) - 1990(2)". GetSampleByIndex is called to create the text.
GetSampleByIndex writes the sample text for the sample with database indices iT1, iT2.
If iT1<0 the output is "no sample"; if iT2<0 the end-period is omitted, so only a sample date is returned.
Database::GetSelStart(); Database::GetSelEnd();
GetSelStart returns the database index of the first observation of the selected sample. GetSelEnd returns the database index of the last observation of the selected sample.
Database::GetSelInfo();
Returns a 1 x 5 array with the selection information as follows (c is the number of selected variables):
Database::GetSelSample();
GetSelSample returns a string with the text of the selected database sample, e.g. "1980(1) - 1984(2)". GetSampleByIndex is called to create the text.
Database::GetSelSampleMode();
GetSelSampleMode returns the current sample selection mode (also see findsample), one of: SAM_ALLVALID, SAM_ENDSVALID, SAM_ANYVALID.
Database::GetVar(const sName); Database::GetVarByIndex(const iVar);
Returns a matrix with the specified variable(s), or the empty matrix if the variable cannot be found. ,
Database::GetVarChoices(const sVar); Database::GetVarChoicesByIndex(const iVar);
Return an array of strings with the choice labels; if multiple variables are specified the return value is an array of arrays of strings.
Database::GetVarIndex(const asName);
Returns the database indices of the specified variable(s), or the empty matrix if none are found.
Database::GetVarCount();
Returns the number of variables in the database. ,,
Database::GetVarNameByIndex(const iVar); Database::GetVarType(const sVar); Database::GetVarTypeByIndex(const iVar);
GetVarNameByIndex returns an array with the names of the specified variable(s). If iVar is a scalar, s single string is returned.
GetVarTypeByIndex and GetVarType return the variable type, one of: DB_DOUBLE, DB_DATE , DB_CHOICE.
Database::Grow(const cTadd);
Database::Shrink(const cTdel);
Database::Info();
Prints information on the contents of the database.
Database::IsDated();
TRUE if the database is dated, FALSE otherwise.
Database::IsEmpty();
TRUE if the database is dated, FALSE otherwise.
Database::Load(const sFilename); Database::LoadCsv(const sFilename); Database::LoadDht(const sFilename, const iYear1, const iPeriod1, const iFreq); Database::LoadDta(const sFilename, const iYear1, const iPeriod1, const iFreq); Database::LoadFmtVar(const sFilename); Database::LoadIn7(const sFilename); Database::LoadObs(const sFilename, const cVar,const cObs, const iYear1, const iPeriod1, const iFreq, const fOffendMis); Database::LoadVar(const sFilename, const cVar,const cObs, const iYear1, const iPeriod1, const iFreq, const fOffendMis); Database::LoadXls(const sFilename); Database::LoadXlsx(const sFilename);
Returns FALSE if the loading failed, TRUE otherwise.
Load creates the database and loads the specified data file from disk. The file type is derived from the extension. Supported are: .csv, .dat (see LoadFmtVar), .dht, .dta, .in7, .xls, .xlsx.
LoadDht creates the database and loads the specified Gauss data file from disk.
LoadDta creates the database and loads the specified Stata (version 4--6) data file from disk.
LoadIn7 creates the database and loads the specified OxMetrics file (which is the same as a PcGive 7 data file) from disk.
LoadFmtVar creates the database and loads the ASCII file with formatting information from disk. In OxMetrics this is called `Data with load info'. Such a file is human-readable, with the data ordered by variable, and each variable preceded by a line of the type:
> name year1 period1 year2 period2 frequency
LoadObs and LoadVar create the database and load the specified human-readable data file from disk. The data is ordered by observation (LoadObs), or by variable. Since there is no information on the sample or the variable names in these files, the sample must be provided as function arguments. The variable names are set to Var1, Var2, etc., use Rename to rename the variables.
LoadCsv, LoadXls and LoadXlsx create the database and load the specified spreadsheet file from disk. A .csv file is a comma-separated file, an .xls file is an old-format Excel worksheet. The modern Excel spreadsheet file has an .xlsx extension.
Database class can read the following types of old-style Excel file:
When saving an old-style Excel file, it is written in Excel 2.1 format.
Database::Recode(const sVar, ...);
| recoding arguments | example |
|---|---|
| scalar old-value, scalar new value | 2, 1 |
| 1x2 matrix m, scalar new value | <-.Inf,2>, 1 |
| old value is closed interval [m[0],m[1]] |
Note that the intervals are closed, and that recoding processes the arguments from left to right.
For example
Database::Remove(const sName); Database::RemoveObsIf(const vRemove)
Removes the named variable or specified observations from the database.
Database::Rename(const sNewName, const sOldName);
Renames a database variable. To rename more than one variable at once, both most be arrays of the same size, and all old names must exist in the database.
Database::Renew(const mNew, const asName); Database::Renew(const mNew, const asName, const iT1);
Renews the observations on the named variable. The first new observation has database index iT1, the last is the end of the database sample, or the end of mNew, whichever comes first. If a non-existent variable is renewed, the variable is created first using Append. The database sample can be changed by Grow or SetVar, not by Renew or Append.
Database::RenewBlock(const mNew, const iVarIndex);
Renews the observations on the k variables starting from the first, without any checking for existence.
Database::Save(const sFilename); Database::SaveCsv(const sFilename); Database::SaveIn7(const sFilename); Database::SaveFmtVar(const sFilename); Database::SaveObs(const sFilename); Database::SaveVar(const sFilename); Database::SaveXls(const sFilename); Database::SaveXlsx(const sFilename);
Save derives the file type from the file extension (using .in7/.bn7 if no extension is given). Supported are: .csv, .dat (see SaveFmtVar), .dht, .dta, .in7, .xls, .xlsx.
SaveIn7 saves the database as a OxMetrics file.
SaveFmtVar saves the database as a formatted ASCII file. Also see under LoadFmtVar.
SaveObs and SaveVar save the database as a human-readable data file, ordered by observation, or by variable. Also see under LoadObs, LoadVar.
SaveCsv, SaveXls, and SaveXlsx save the database as a comma-separated, or old-style Excel, or Excel spreadsheet file respectively. Also see under LoadCsv, LoadXls, LoadXlsx.
Database::Select(const iGroup, const aSel); Database::SelectByIndex(const iGroup, const iVar, const iLag0, const iLag1);
Selects variables by name and with specified lags, and assigns the iGroup number to the selection. The aSel argument is an array consisting of sequences of three values: name, start lag, end lag. After a sample period is set, the selection can be extracted from the database.
Database::SetDates(const vDates);
If the database is not yet dated, vDates is set as the date column (the first column). Otherwise vDates replaces the current date column.
Database::SetDbName(const sName);
Sets the database name to sName.
Database::SetSelInfo(const asInfo);
Sets the selection based on the specified input array. No checking is done on the input values. The selection information should be organized as follows (c is the number of selected variables):
The last two arguments may be omitted, in which case a call to SetSelSample may be required.
Database::SetSelDates(const iYear1, const iMonth1, const iDay1, const iYear2, const iMonth2, const iDay2)
Returns the number of observations in the sample.
This is the equivalent of SetSelSample that can be used when the database is dated.
Selects a sample for the variables previously selected with the Select function. The actually selected sample will be the largest starting from the specified starting date (but not exceeding the specified end date) without any missing values using the default selection mode. Use SetSelSampleMode to change the selection mode. Use DeSelect to deselect the current sample and variables.
Database::SetSelSample(const iYear1, const iPeriod1, const iYear2, const iPeriod2);
Returns the number of observations in the sample.
Selects a sample for the variables previously selected with the Select function. The actually selected sample will be the largest starting from the specified starting date (but not exceeding the specified end date) without any missing values using the default selection mode. Use SetSelSampleMode to change the selection mode. Use DeSelect to deselect the current sample and variables.
Database::SetSelSampleByDates(const dDate1, const dDate2); Database::SetSelSampleByIndex(const iT1, const iT2);
Returns the number of observations in the sample.
Database::SetSelSampleMode(const iMode);
Database::SetVar(const mNew, const asName);
If any of the named variables exist in the database, the content is changed, otherwise the new variables are appended. If T is larger than the sample size of the database, the database is extended (unlike Renew); if it is shorter, the new (or changed) variable will have missing values for the remainder. If the database has not been created yet, it is created with frequency of unity (annual/undated). ,
Database::SetVarChoices(const sVar, const asChoices); Database::SetVarChoicesByIndex(const iVar, const asChoices);
Makes the variable in a choice variable (DB_CHOICE), and assigns the array of labels. The label for value i is asChoices[i]. Choice labels are only preserved in in7, xlsx and dta files. If asChoices is an empty array, the choice labels are removed and the variable is changed into a normal variable (DB_DOUBLE). ,
Database::SetVarType(const sVar, const iType); Database::SetVarTypeByIndex(const iVar, const iType);
Database::SortBy(const sVar);
Sort the database by a variable.
Database::Tabulate(const sX); Database::Tabulate(const sX, const sY); Database::Tabulate(const sX, const sY, const sOption);
Returns an array of two elements with the vector of values and corresponding counts (tabulation), or an array of three elements with the vector of x-values (row), y-values (column) and corresponding matrix of counts (cross-tabulation).
Tabulates one variable or cross-tabulates two variables. An example is given in samples/database/dbchoice.ox.
The Modelbase class derives from the Database class to implement model estimation features. Modelbase is not intended to be used directly, but as a base for a more specialized class. A range of virtual member functions allows for customization of the class. Modelbase facilitates interactive use with OxMetrics through the OxPack program. Dialogs and a test menu are easily created by overriding just a few virtual functions. Additional information is provided separately. In most cases, model estimation involves the following steps (key virtual functions are given in parentheses):
Modelbase has a few essential properties to track this procedure:
| Model status | GetModelStatus, SetModelStatus |
| Maximization method | GetMethod, SetMethod |
| Estimation result | GetResult, SetResult |
| Parameters | GetPar, SetPar, GetParCount, SetParCount |
| Fixed/Free parameters | GetFreeParCount, GetFreePar, SetFreePar, |
| FixPar, FreePar | |
| Covariance | Covar |
The samples/database/mbclass.ox example shows a minimal Modelbase implementation:
#include <oxstd.oxh> #import <modelbase> class Ols : Modelbase { decl m_mRes; decl m_dSigmaSqr; Ols(); GetPackageName(); GetPackageVersion(); DoEstimation(vP); }; Ols::Ols() { Modelbase(); } Ols::GetPackageName() { return "Ols"; } Ols::GetPackageVersion() { return "1.0"; } Ols::DoEstimation(vP) { decl cp = columns(m_mX); SetParCount(cp); olsc(m_mY, m_mX, &vP, &m_mCovar); m_mRes = m_mY - m_mX * vP; m_dSigmaSqr = m_mRes'm_mRes / (rows(m_mY) - cp); m_mCovar *= m_dSigmaSqr; SetResult(MAX_CONV); return vP; } main() { decl ols = new Ols(); ols.Load("data/data.in7"); ols.Deterministic(FALSE); ols.Select(Y_VAR, {"CONS", 0, 2}); ols.Select(X_VAR, {"Constant", 0, 0, "INC" , 0, 2}); ols.Estimate(); }The program produces:
Ols package version 1.0, object created on 19-03-1999 ---- Ols ---- The estimation sample is 1953 (3) - 1992 (3) The dependent variable is: CONS Coefficient Std.Error t-value t-prob CONS_1 1.31039 0.07564 17.3 0.000 CONS_2 -0.352108 0.07915 4.45 0.000 Constant -2.17250 11.19 0.194 0.846 INC 0.508481 0.03606 14.1 0.000 INC_1 -0.577251 0.05816 9.92 0.000 INC_2 0.112122 0.05325 2.11 0.037 log-likelihood .NaN no. of observations 157 no. of parameters 6 AIC .NaN AIC/T .NaN mean(CONS) 875.78 var(CONS) 182.397
At first sight it may be somewhat surprising how much this program achives with so little coding. But, with an understanding of virtual functions, the documentation below, and the actual source code of Modelbase (in ox\src), it should be possible to implement a Modelbase derived package. Other examples of the use of Modelbase are the Arfima and DPD packages.
Functions which are used in a minimal implementation are marked as follows:
| Base class | Database class |
| General | |
|---|---|
| Modelbase | constructor |
| ClearEstimation | removes results fom previous estimation |
| ClearModel | sets model status to MS_NONE |
| GetMethod | get the estimation method |
| GetMethodLabel | get the label for the current estimation method |
| GetModelLabel | get the label for the model |
| GetModelStatus | get the model status (MS_....) |
| GetPackageName* | returns name of the package |
| GetPackageVersion* | returns version of the package |
| GetResult | get the estimation result |
| Grow | extend database and update the deterministic terms |
| Init | resets all variables to default |
| IsUnivariate | returns TRUE if only one Y_VAR allowed |
| SetForecasts | set the number of forecasts |
| SetMethod | set the estimation method |
| SetModelStatus** | set the model status (MS_....) |
| SetPrint | switch printing on or off |
| SetRecursive | set the number of recursive steps |
| SetResult** | set the estimation result |
| ShowBanner | static method to switch off creation banner |
| parameter related | |
| FixPar | fixes parameters |
| FreePar | frees parameters |
| GetFreePar | get the vector of free parameters, px1 |
| GetFreeParCount | get number of free parameters p |
| GetFreeParNames | get the names of the free parameters, array of length p |
| GetPar | get the vector of all parameters, qx1 |
| GetParCount | get number of parameters q (including fixed) |
| GetParNames* | get the names of all parameters, array of length q |
| GetParStatus | returns full parameter info |
| GetParTypes | returns array of type letters for each model variable |
| MapParToFree | return the free parameters from the argument |
| ResetFixedPar | reset the values of the fixed parameters |
| SetFreePar | set the free parameters |
| SetPar** | set the full parameter vector |
| SetParCount** | set the number of parameters q (including fixed) |
| move up in model status | |
| DoEstimation | low level estimate |
| Estimate | high level estimate |
| InitData | get the data: Y,X |
| InitPar | initializes the parameter values |
| SetStartPar | set the starting values |
| covariance evaluation | |
| Covar* | sets m_mCovar |
| get model results | |
| GetCovar | returns pxp covariance matrix |
| GetCovarRobust | returns <> or pxp robust covariance matrix |
| GetLogLik | return the log-likelihood, m_dLogLik |
| GetResVar | returns residual variance, nxn |
| GetResiduals | returns residual matrix, Txn |
| GetStdErr | returns the std.errors (0 for fixed) qx1 |
| GetStdErrRobust | returns <> or robust standard errors |
| GetcDfLoss | returns degrees of freedom lost (for tailt, AIC) |
| GetcT | returns actual no of variables to use in output, m_cT |
| other get model functions | |
| GetPrint | returns current print setting |
| GetX | returns X matrix |
| GetY | returns Y matrix |
| GetcX | returns no of X variables |
| GetcY | returns no of Y variables |
| GetcYlag | returns no of lags of Y |
| post estimation | |
| DbDrawTMatrix | draws using the database sample information |
| GetForecastData | returns available data over a forecast period |
| Output | prints output |
| OutputHeader | prints output header, returns TRUE to print rest |
| OutputPar | prints parameter estimates |
| OutputLogLik | prints log-likelihood, AIC, etc. |
| OutputMax | prints maximization result and starting values |
| PrintTestVal | prints a test statistic |
| TestRestrictions | tests restrictions on the parameters |
| OxPack related, separately documented | |
| GetLongRunInfo | returns 0 or info on long-run |
| GetLongRunNames | returns 0 or names of long-run parameters |
| ReceiveData | receive the data for estimation |
| ReceiveDialog | receive output from a dialog |
| ReceiveModel | receive the model specification |
| SendDialog | send a dialog |
| SendFunctions | send specification of special functions |
| SendMenu | send a menu list |
| SendMethods | send the estimation methods |
| SendResults | send an output variable |
| SendSpecials | send the names of special variables |
| SendVarStatus | send the types of variables |
virtual Modelbase::ClearEstimation() virtual Modelbase::ClearModel();
ClearEstimation() clears the model estimation settings. ClearModel() sets the model status to MS_NONE, and calls ClearEstimation().
virtual Modelbase::Covar();
In some models, the evaluation of the variance-covariance matrix of the estimated parameters is costly, therefore, this matrix is only computed on demand: when the covariance matrix does not yet exist, Covar() is called to compute it. By default, the m_mCovar member variable of Modelbase is -1 when estimation commences (through a call to ClearEstimation()). Covar() should set m_mCovar to the variance-covariance matrix (but Estimate() or DoEstimation() may also do this, as in the example above). Covar() can optionally set m_mCovarRobust as well. If the covariance matrix does not exist, Covar() is automatically called when using GetCovar(), GetCovarRobust(), GetStdErr(), or GetStdErrRobust(). This procedure ensures that the covariance is only computed once when required, and not at all when not required (in some Monte Carlo experiments, for example).
Modelbase::DbDrawTMatrix(const iArea, const mYt, const asY, const iT1); Modelbase::DbDrawTMatrix(const iArea, const mYt, const asY, const iT1, const iSymbol, const iIndex);
This is equivalent to DrawTMatrix, but using sample information from the underlying database. The function will automatically draw a proper date axis if the database is dated.
virtual Modelbase::DoEstimation(vPar); virtual Modelbase::Estimate();
DoEstimation() returns:
There are two ways to implement estimation:
Modelbase::Estimate() { decl vpstart, vpfree, estout; if (!InitPar()) // calls InitData() if necessary return FALSE; vpstart = GetFreePar(); // map pars to estimation format estout = DoEstimation(vpstart); // do the estimation vpfree = isarray(estout) ? estout[0] : estout; SetFreePar(vpfree);// map estimated pars to normal format if (m_iResult >= MAX_CONV && m_iResult < MAX_MAXIT) m_iModelStatus = MS_ESTIMATED; else m_iModelStatus = MS_EST_FAILED; if (m_fPrint) { Output(); if (isarray(estout)) OutputMax(estout[1],m_iResult,vpstart,estout[2]); } return m_iModelStatus == MS_ESTIMATED; }
Modelbase::FixPar(const iP, const dFix);
FixPar() is used to fix a parameter at the specified value. Subsequently, this parameter is omitted from the vector returned by GetFreePar().
Modelbase::FreePar(const iP)
Frees a parameter which was previously fixed by FixPar().
virtual Modelbase::GetcDfLoss();
Returns the loss in degrees of freedom in the estimated model. The default is the number of estimated parameters.
Only override this function if the number to be used in the output is different from that number of free parameters in the estimation.
virtual Modelbase::GetcT();
Returns an integer with the actual number of observations to be used in the output.
Only override this function if the number reported in the output is different from that used in the estimation (m_cT). ,,
Modelbase::GetcX(); Modelbase::GetcY(); Modelbase::GetcYlag();
Returns respectively: no of X variables, no of Y variables, lag length of Y.
Modelbase::GetCovar(); Modelbase::GetCovarRobust();
Returns the pxp variance-covariance matrix of the free parameters.
See Covar for an explanation of the implementation.
GetForecastData(const iGroup, const mnLag, const mxLag, const cTforc); GetForecastData(const iGroup, const mnLag, const mxLag, const cTforc, const iT1forc);
Returns a matrix with the available forecasts data (or an empty matrix if no there is no data).
Modelbase::GetFreePar(); Modelbase::GetFreeParCount(); Modelbase::GetFreeParNames();
GetFreePar returns the px1 vector with free parameters.
GetFreeParCount returns the free parameter count p.
GetFreeParNames returns an array of length p with the names of the free parameters.
GetFreePar returns the current values of the free parameters. Parameters are fixed with FixPar(). The value of free parameters is set with SetFreePar().
Modelbase::GetLogLik();
Returns the log-likelihood, which is the value of the m_dLogLik member variable.
Modelbase::GetMethod(); virtual Modelbase::GetMethodLabel();
GetMethod returns an integer representing the estimation method, which is the value of the m_iMethod member variable.
GetMethodLabel returns the text label for the current estimation method m_iMethod.
virtual Modelbase::GetModelLabel(); Modelbase::GetModelStatus();
GetModelLabel returns the text label for the model.
GetModelStatus returns the model estimation status:
| value | description |
|---|---|
| MS_NONE | no model preparatory action has been taken, |
| MS_DATA | estimation data has been extracted from the database, |
| MS_PARAMS | the starting values for estimation have been set, |
| MS_ESTIMATED | the model has been estimated, |
| MS_EST_FAILED | model estimation has failed. |
virtual Modelbase::GetPackageName();
Returns the name of the modelling package.
This virtual function should be overridden by the derived class.
virtual Modelbase::GetPackageVersion();
Returns the version number of the modelling package.
This virtual function should be overridden by the derived class.
Modelbase::GetPar(); Modelbase::GetParCount(); virtual Modelbase::GetParNames();
GetPar returns the qx1 vector with the current parameter values (both fixed and free).
GetParCount returns the total parameter count q (both fixed and free parameters).
GetParNames returns an array of length q with the names of the parameters.
GetParNames should be overridden to use proper labels in the output.
Modelbase::GetParStatus();
Returns array with:
This function is infrequently used.
virtual Modelbase::GetParTypes();
Override the default to return an array of strings indicating the type of each model variable, e.g. {"Y","X","X","U"}. The default returns 0, so that no types are indicated in the output.
This function is infrequently used.
Modelbase::GetPrint();
Returns the current print setting.
virtual Modelbase::GetResiduals();
Returns the Txn matrix with residuals (n equals 1 for univariate models).
Must be overridden by the derived class to return residuals.
Modelbase::GetResult();
The estimation result (normally a value from MaxBFGS), which is the value of the m_iResult member variable.
virtual Modelbase::GetResVar();
Returns the nxn matrix with the residual variance (n equals 1 for univariate models).
Must be overridden by the derived class.
Modelbase::GetStdErr(); Modelbase::GetStdErrRobust();
Returns the qx1 vector with standard errors (0 at position of fixed parameters).
See Covar for an explanation of the implementation. ,
Modelbase::GetX(); Modelbase::GetY();
Modelbase::Grow(const cTadd);
Calls Database::Grow and updates the deterministic variables ("Constant", "Trend", "Seasonal", "CSeasonal").
virtual Modelbase::InitData();
Returns TRUE if successful.
Extracts the data for estimation from the underlying database. Sets the model status to MS_DATA if successful.
virtual Modelbase::InitPar();
Returns TRUE if successful.
Gets starting values for the estimation procedure. Sets the model status to MS_PARAMS if successful.
virtual Modelbase::IsUnivariate();
Returns TRUE if only one dependent variable (Y_VAR) is allowed.
This virtual function should be overridden by the derived class if multivariate models are implemented.
Modelbase::MapParToFree(const vPar);
Returns a px1 vector with free parameter values.
Extracts and returns the free parameter values from a full parameter vector.
Modelbase::Modelbase();
virtual Modelbase::Output();
Modelbase::OutputHeader(const sTitle);
Called by Output to print the header section.
Modelbase::OutputLogLik();
Called by Output to print the loglikelihood and other summary statistics.
Modelbase::OutputMax(const sMethod, const iResult, const vPstart, const bNumerical);
Called by Estimate to print the starting values and method used for iterative estimation.
Modelbase::OutputPar();
Called by Output to print the parameter estimates.
static PrintTestVal(const dTest, const cR, const cTdf, const sLabel);
Prints a test statistic and its significance. If cTdf is zero, the test is assumed to have Chi2(cR) distribution, otherwise an F(cR,cTdf) distribution.
Modelbase::ResetFixedPar();
Resets the fixed parameters to their prespecified values.
virtual SetForecasts(const cForc, const bIsLessForecasts);
The Modelbase version sets m_cTforc.
Modelbase::SetFreePar(const vParFree);
Modelbase::SetMethod(const iMethod);
Modelbase::SetModelStatus(const iModelStatus);
Modelbase::SetPar(const vPar); Modelbase::SetParCount(const cPar); Modelbase::SetParCount(const cPar, const bAdd);
SetParCount() must be called for the other parameter functions to work.
Modelbase::SetPrint(fPrint);
For Monte Carlo experiments, it can be useful to switch off printing.
virtual SetRecursive(const bSet, const cInit);
The Modelbase version sets m_bRecursive and m_cTinit.
Modelbase::SetResult(const iResult);
Sets the estimation result (normally a value from MaxBFGS), which is the value of the m_iResult member variable.
virtual Modelbase::SetStartPar(const vParFree);
This is an alternative to InitPar, allowing for direct setting of the starting parameters prior to estimation.
static ShowBanner(const bSet);
virtual Modelbase::TestRestrictions(vSel); virtual Modelbase::TestRestrictions(mR, const vR);
The one-argument version tests whether one or more coefficients
are zero. The second form tests restrictions of the type R\theta=r.
Both are implemented as a Wald test with a Chi2(s) distribution.
This function requires that Covar() and GetParNames() are implemented,
and SetPar() or SetParFree() are used to set the estimated
parameters.
The PcFiml class provides part of the advanced computations available in the menu driven computer program PcFiml. The class is derived from the Modelbase class, and provides model formulation using variable names. The class allows for estimating a Vector Autoregression (VAR), cointegration analysis (`Johansen procedure'), and multivariate regression model (such as an unrestricted reduced form, URF), as well as a simultaneous equations model (2SLS, 3SLS, FIML). No identities equations are currently possible. Mis-specification tests include: vector autoregression, vector normality, vector heteroscedasticity, vector portmanteau, as well as a Chow test.
The PcFimlDgp class is a data generation process (DGP), designed for use in dynamic econometric Monte Carlo experiments. Unlike the PcNaiveDgp class, it derives from Database to formulate the DGP and store the generated data. This makes the DGP more general, but somewhat more complex. The class is used through the header file pcfimldgp.h. The design is an n-variate version DGP:
The vectors yt and ut are n x 1, wt is k x 1 so that the coefficient matrix Pi is n x k. The zt vector is q x 1, making C0 q x q. The zs can be kept fixed between experiments, or regenerated for the experiment. A distribution for ut and vt can be specified.
PcFimlDgp::Asymp();
Prints an asymptotic analysis of the current DGP.
PcFimlDgp::Create(const iFreq, const iYear1, const iPeriod1, const cTdiscard, const mxDgpLag, const mxT);
Creates the database. After this, Select may be used to formulate the DGP, with group identifier Y_VAR or Z_VAR. The database name of the variables are "Ya", "Yb", ..., and "Za", "Zb", .... The Constant, Trend and normal Seasonals are automatically created.
PcFimlDgp::DiscardZ();
Discards the current zt; the next call to GenerateTo() will generate new observations on zt.
PcFimlDgp::Generate(const cT);
GenerateTo returns generated (Y:U), as a T x 2n matrix.
Generates cT observation of the current DGP.
virtual PcFimlDgp::GenerateU(const cT); virtual PcFimlDgp::GenerateV(const cT); virtual PcFimlDgp::GenerateZ(const cT, const mC0t, const mV); virtual PcFimlDgp::GenerateY(const cT, const mPit, const mU); virtual PcFimlDgp::GenerateU_t(const iT); virtual PcFimlDgp::GenerateV_t(const iT); virtual PcFimlDgp::GenerateZ_t(const iT, const mC0t); virtual PcFimlDgp::GenerateY_t(const iT, const mPit);
These virtual functions are called by GenerateTo() to generate the data. The sub-t versions are called when using a for loop for data generation. This is the case after a call to UseObsLoop(TRUE).
PcFimlDgp::GetU(); PcFimlDgp::GetV(); PcFimlDgp::GetY(); PcFimlDgp::GetZ();
GetU returns current U as a T x n matrix.
GetV returns current V as a T x q matrix.
GetY returns current Y as a T x n matrix.
GetZ returns current Z as a T x q matrix.
PcFimlDgp::PcFimlDgp(const cY, const cZ);
Constructor.
PcFimlDgp::Prepare();
Virtual function which must be called prior to data generation.
PcFimlDgp::Print();
Prints the setup of the current DGP.
PcFimlDgp::SetDistribution(const iEqn, const iDist, mPar1, mPar2);
See under RanPcNaive.
PcFimlDgp::SetFixedZ(const fSetting);
See under RanPcNaive.
PcFimlDgp::SetInit(const iDgp, const mInit);
Specifies initial values for the DGP (default is 0).
PcFimlDgp::SetYParameter(const mPit);
Sets the parameters for the yt equation.
PcFimlDgp::SetZParameter(const mC0);
Sets the parameters for the zt equation.
PcFimlDgp::UseObsLoop(const bUseObsLoop);
By default, the data are generated using matrix expressions. Use this to generate the data in a for loop. This is considerably slower, but gives more flexibility.
The PcNaiveDgp class is a data generation process (DGP), designed for use in dynamic econometric Monte Carlo experiments. The class is used through the header file ranpcnaive.oxh. The design is an n-variate version DGP: The class derives from the RanPcNaive class. Unlike RanPcNaive, the generated data are stored inside the object, and retrieved using Get functions.
PcNaiveDgp::DiscardZ();
Discards the current zt; the next call to Generate() will generate new observations on zt.
PcNaiveDgp::Generate(const cT); PcNaiveDgp::GenerateTo(const cT);
Generate returns generated Y = (y0 ... y_T)', as a T x n matrix.
GenerateTo returns generated (Y:U), as a T x 2n matrix.
Generates cT observation of the current DGP and stores it in the current object.
PcNaiveDgp::GenerateBreakTo(const cT, const iTbreak, const iTreset, const mA0, const mA1, const mA2, const mA3, const mA5)
Returns generated (Y:U), as a T x 2n matrix.
Generates cT observation of the current DGP and stores it in the current object, using the alternative DGP over the specified period.
PcNaiveDgp::GetU(); PcNaiveDgp::GetY(); PcNaiveDgp::GetZ();
GetU returns current U as a T x n matrix.
GetY returns current Y as a T x n matrix (as does Generate).
GetZ returns current Z as a T x q matrix.
PcNaiveDgp::PcNaiveDgp(const cY, const cZ);
Constructor.
The RanMC class provides random number generation of specific distribution for use by the RanPcNaive, PcNaiveDgp and PcFimlDgp classes. All member functions are static, and can be used without constructing an object, for example as:
x = RanMC::Choleski(x);
static RanMC::Choleski(const mSig);
Returns Choleski decomposition of mSig. mSig may have zeros on the diagonal. The corresponding rows and columns are ignored in the decomposition, and will be zero in the return value.
static RanMC::CheckDist(const sFunc, iDist, mPar1, mPar2);
Returns an array of three values:
static RanMC::RanDist(const iDist, const cT, const cY, const mDf1, const mDf2);
Returns a T x n matrix of random numbers from the specified distribution. The distribution parameters must be as returned from CheckDist().
static RanMC::RanDist1(const iDist, const cY, const mDf1, const mDf2, const mUlag, const mYlag);
Returns a 1 x n matrix of random numbers from the specified distribution. The distribution parameters must be as returned from CheckDist().
static RanMC::WriteDist(const sPar, const iDist, const mDf1, const mDf2);
Writes the used distribution. The distribution parameters must be as returned from CheckDist().
The RanPcNaive class is a data generation process (DGP), designed for use in dynamic econometric Monte Carlo experiments. The class is used through the header file ranpcnaive.oxh. The design is an n-variate version DGP:
The vectors yt,ut,et are n x 1, so that the coefficient matrices A0,A1,B0,B1 are n x n, and a3 is n x 1. The zt vector is q x 1, making a2 n x q, C0 q x q, and c1,c2 q x 1. The zs can be kept fixed between experiments, or regenerated for the experiment. A distribution for et and vt can be specified.
RanPcNaive::Asymp();
Prints an asymptotic analysis of the current DGP: companion matrix with eigenvalues, together with cointegrating space and level of integration of DGP: I(0), I(1) or I(2). Discards the current zt; the next call to Generate() will generate new observations on zt.
RanPcNaive::GenerateTo(const cT);
GenerateTo returns an array of three elements, holding the
generated {Y,Z,U}.
Generates cT observation of the current DGP.
If Z is fixed, the fixed value is used, unless none has been set.
RanPcNaive::GenerateBreakTo(const cT, const iTbreak, const iTreset, const mA0, const mA1, const mA2, const mA3, const mA5)
Returns returns an array of three elements, holding the generated {Y,Z,U}.
Generates cT observation of the current DGP, using the alternative DGP over the specified period.
RanPcNaive::GetFixedZValue();
Returns the current fixed Z matrix.
RanPcNaive::HasFixedZ();
Returns current TRUE if Z is fixed.
RanPcNaive::RanPcNaive(const cY, const cZ);
RanPcNaive::Print();
Prints the setup of the current DGP.
RanPcNaive::SetDistribution(const iEqn, const iDist, mPar1, mPar2);
Specifies the distribution for the u, or z equations given above. The first argument indicates the equation, the second the distribution. The last two arguments parameterize the distribution.
RanPcNaive::SetFixedZ(const fSetting);
Specifies whether zt is fixed (fSetting equals TRUE) or not, and clears the currently stored A new value for fixed zt can be set by SetFixedZValue or generated by SetNewFixedZValue.
RanPcNaive::SetFixedZValue(const mZ);
Sets a new value for fixed zt in the object.
RanPcNaive::SetInit(const iDgp, const mInit);
Specifies initial values for the DGP (default is 0).
RanPcNaive::SetNewFixedZValue(const cT);
Generates a new Z value and stores it in the object for subsequent use.
RanPcNaive::SetUParameter(const mLagAr, const mLagMa);
Sets the parameters for the et equation.
RanPcNaive::SetYParameter(const mA0, const mA1, const mA2, const mA3); RanPcNaive::SetYParameter(const mA0, const mA1, const mA2, const mA3, const mA5);
Sets the parameters for the yt equation.
RanPcNaive::SetYParameterEcm(const mAlpha, const mBeta, const mA2, const mA3); RanPcNaive::SetYParameterEcm(const mAlpha, const mBeta, const mA2, const mA3, const mA5);
Sets the parameters for the yt equation in equilibrium correction form.
RanPcNaive::SetZParameter(const mC0, const mC1, const mC2);
Sets the parameters for the zt equation.
RanPcNaive::SetZCustom(mCZ);
Installs a custom Z. This is added to Z after generation of Z, but before Z is used in the Y equation.
RanPcNaive::StoreInDatabase(const amYZU, const oDb, const iY0, const iZ0, const iU0, const cTDiscard)
Stores generated data in a database object. If the index is -1, the corresponding variable is not changed in the Database. It is assumed that the Y variables are in a consecutive block, similar for Z and U.
The Sample class stores a time interval, and the frequency, e.g. 1980 (1) -- 1990 (1), with frequency 4 (i.e. quarterly observations). The Sample class is only used to derive from. It requires linking in the database code, and inclusion of database.h. This is most easily done by adding an #import <database> statement at the top of your source code.
Sample::GetFrequency();
Sample::GetIndex(const iYear, const iPeriod);
The index of the specified time point.
Sample::GetPeriod1();
The period of the first observation.
Sample::GetPeriod2();
The period of the last observation.
Sample::GetSize();
The number of observations in the sample.
Sample::GetYear1();
The year of the first observation.
Sample::GetYear2();
The year of the last observation.
Sample::ObsPeriod(iObs);
The period of the observation index.
Sample::ObsYear(iObs);
The year of the observation index.
Sample::Resample(const iFreq, const iYear1, const iPeriod1);
Changes the frequency and start year(period). The sample size is unchanged, so the end year(period) is derived from that.
The Simulator class can be used to set up Monte Carlo experiments. Derive your own simulation experimentation class from this, overriding the virtual functions. Simulator will handle the replications and storage, and print the final results. The type of data it can handle are coefficients, test statistics and p-values of test statistics. The class is used through the header file simula.oxh.
A table is printed at the end, which gives the results, for coefficients:
where M is the number of replications and rmse is the root of the mean squared error.
Note that the functions are documented as belonging to the Simulator class, but are actually mostly in SimulatorBase. The source code of both classes can be found in ox/src.
Simulator succeeds the Simulation class which was used up to Ox 6 (this is still available through simula.oxo and simula.oxh, but now deprecated).
virtual Simulator::Generate(const iRep, const cT, const mxT);
Upon failure, Generate should return an empty matrix or array, or an array wich has integer 0 as the first element.
Upon success, Generate should return an array with four elements:
If the call to the Generate function fails, additional experiments are run in an attempt to reach the required number of replications. The number of rejected replications is reported in the output.
The derived class must override the virtual function. It is called for every replication, and must perform the actual replication.
virtual Simulator::Plot(const iRep, const iT)
Virtual plot function. The default version does nothing.
virtual Simulator::Prepare(const cT, const mxT);
Virtual function which the derived class can override if necessary. It is called just before the replications for sample size cT commence. It can be used to initialize common regressors (e.g.), and is not run in a parallel section.
Simulator::SaveIn7(const sFilename); Simulator::SaveRecIn7(const sFilename);
Saves simulation results to the named file.
SaveIn7 stores the test and coefficient values.
SaveRecIn7 stores: coefficients, MCSE, Bias, RMSE,
test critical values (right tail), rejection frequencies and moments.
Simulator::SetCoefNames(const asNames) Simulator::SetTestNames(const asNames)
Installs the names of tests statistics and coefficients, to determine dimensions of the collected information, and to make the report more readable.
Simulator::SetPlotRep(const iPlotRep); Simulator::SetRecursive(const bRecursive); Simulator::SetStore(const bStore);
Simulator::SetTwoSided(const mIsTwoSided);
Should be called before Prepare is called to indicate which tests are two-sided. Need not be called if all tests are one-sided. The value of st is derived from the call to SetTestNames.
Simulator::Simulate()
This is the core function. It runs the Monte Carlo experiment, and prints the results.
Simulator::Simulator(const mT, const mxT, const cRep, const fCommon, const dSeed, const mPvalue, const mTrueParam);
Constructor function. Calls to SetCoefNames (if coefficients are generated) and/or SetTestNames (if p-values or test statistics are generated) are also required.
Ox version 7.00. © JA Doornik This file last changed .


Hover Style #2
A description of some sort between these tags. I am so cool and awesomely awesome.
Read MoreLogs are nice, I own a few myself.  More words.
Read MoreA description of some sort between these tags. I am so cool and awesomely awesome.
Read More“A description of some sort between these tags. I am so cool ye and awesomely awesome. He was cool.”
Read More


assigned
by None at 2022-11-18 13:03:39.If this looks ok, could you deploy to staging?
thank you!! done testing, would you merge and deploy to prod?
ready_for_review
by None at 2022-11-18 16:43:32.review_requested
by None at 2022-11-18 16:43:42.deployed
by None at 2022-11-18 18:56:21.referenced
by None at 2022-11-18 19:33:03.merged
by None at 2022-11-18 19:33:03.closed
by None at 2022-11-18 19:33:03.head_ref_deleted
by None at 2022-11-18 19:33:04.closed
by None at 2022-11-17 22:45:11.reopened
by None at 2022-11-17 22:45:41.closed
by None at 2022-11-17 22:45:50.assigned
by None at 2022-11-18 12:50:42.referenced
by None at 2022-11-18 21:38:38.closed
by Christina Chortaria at 2022-11-18 21:40:50.referenced
by Christina Chortaria at 2022-11-18 21:40:49.merged
by Christina Chortaria at 2022-11-18 21:40:49.closed
by Christina Chortaria at 2022-11-18 21:40:49.head_ref_deleted
by Christina Chortaria at 2022-11-18 21:40:50.labeled
by Christina Chortaria at 2022-11-18 15:27:11.I'm seeing the viewer still pretty small and pushed to the right of the screen instead of being displayed below the metadata display:
Is this how it's supposed to display?
Also, I see a number of files ending in .bak
— can you delete those?
I got rid of the stray-file detritus. The odd layout of the item pages was the result of poor css grid layout. I've cleaned up the generated HTML a bit, and I've broken out a separate css file, item-pages.css, to govern the layout of those pages. Someone with more css grid-fu than (like Kate) should look at this; we can talk about what we want the final layout to look like.
👍🏻 This looks a lot better. I do see only one viewer on items that should have multiple objects linked, but that can be a separate issue (I created https://github.com/pulibrary/cicognara-static/issues/16 for that).
referenced
by Esmé Cowles at 2022-11-18 15:09:01.merged
by Esmé Cowles at 2022-11-18 15:09:01.closed
by Esmé Cowles at 2022-11-18 15:09:01.head_ref_deleted
by Esmé Cowles at 2022-11-18 15:09:05.closed
by Cliff Wulfman at 2022-11-18 20:00:47.They're all there; that's the list on the left. Click on the + icon to add them to the viewer.
I seem to be pulling the wrong contributor metadata, though: the microfiche should be attributed to the Vatican. I'll create a ticket.
Oh, now I see — I was just not realizing they were there. That is, at best, a Mirador UX issue, so I'll close this.
closed
by Esmé Cowles at 2022-11-18 20:38:43.@hackartisan . asked gabrielle. YUP! that is correct.
mentioned
by None at 2022-11-18 15:27:53.subscribed
by None at 2022-11-18 15:27:53.assigned
by Eliot Jordan at 2022-11-18 16:22:35.assigned
by Shaun Ellis at 2022-11-18 16:23:01.assigned
by None at 2022-11-18 16:23:01.assigned
by Trey Pendragon at 2022-11-18 16:23:01.head_ref_force_pushed
by None at 2022-11-18 16:28:54.head_ref_force_pushed
by None at 2022-11-18 17:36:42.renamed
by None at 2022-11-18 20:40:00.ready_for_review
by None at 2022-11-18 22:23:49.referenced
by None at 2022-11-18 22:23:35.assigned
by None at 2022-11-18 22:24:03.This causes the /user login page to error out.
Error on drupal watchdog User deprecated function: phpCAS autoloader is deprecated. Install phpCAS using composer instead. in require_once() (line 86 of /var/www/friends_of_pul/releases/20221118182052/sites/all/libraries/CAS/CAS/Autoload.php).
deployed
by None at 2022-11-18 18:20:44.convert_to_draft
by Kevin Reiss at 2022-11-18 18:42:27.deployed
by None at 2022-11-18 21:08:32.ready_for_review
by Kevin Reiss at 2022-11-18 21:10:19.referenced
by Christina Chortaria at 2022-11-18 21:12:44.merged
by Christina Chortaria at 2022-11-18 21:12:44.closed
by Christina Chortaria at 2022-11-18 21:12:44.head_ref_deleted
by Christina Chortaria at 2022-11-18 21:12:45.labeled
by Kevin Reiss at 2022-11-18 17:53:00.referenced
by Kevin Reiss at 2022-11-18 18:17:28.closed
by Christina Chortaria at 2022-11-18 21:12:45.referenced
by Christina Chortaria at 2022-11-18 21:12:46.labeled
by Kevin Reiss at 2022-11-18 16:18:27.Closing as duplicate of #150
labeled
by Kevin Reiss at 2022-11-18 16:18:28.closed
by Jane Sandberg at 2022-11-18 16:25:14.Any new Locker Applications that admins create should be in their "home" library, they should not need to select a library.
When the Lewis Patron feature is on: * Students will have a two step Locker Application Process, where they need to do the second step to mark application complete * Admins will have a one step Locker Application Process, where any application they create will be marked as complete
~I think this may be fixed by https://github.com/pulibrary/lockers_and_study_spaces/pull/147~ (edit: not the case)
~I think this is actually a feature - the idea is that half-made applications don't clutter up the administrator's list. We may want to change it, but it was requested.~ (edit: clarified in comment below)
See duplicate bug #157 for more details.
While addressing this, we should make sure not to add any regressions on https://github.com/pulibrary/lockers_and_study_spaces/pull/142 -- particularly when the Lewis Patrons feature flipper is on.
When the Lewis Patron feature is off:
* Any new Locker applications should show in the Locker Applications List (should be marked "complete" - add complete=true
as parameter if the feature flag is off)
When the Lewis Patron feature is on: * Incomplete Locker applications should not show in the Locker Applications List (those with only UID & Library) * Locker applications that are updated should be marked as complete and show on the Locker Applications List
Closed by #153
closed
by Max Kadel at 2022-11-18 17:04:17.Location code that is included in this file https://github.com/pulibrary/bibdata/blob/main/marc_to_solr/translation_maps/holding_library.rb is expected to appear twice in the holding location dropdown in the advanced search. However we need a different ticket in bibdata to update the holding library to Recap for location codes that have remote storage recap_rmt or totally remove the holding library file.
closed
by Christina Chortaria at 2022-11-18 15:09:11.This is not a bug. It displays twice as expected. This ticket has the old recap location code from voyager but the concept is the same . see: https://github.com/pulibrary/orangelight/issues/2744
closed
by Christina Chortaria at 2022-11-18 15:10:55.renamed
by Christina Chortaria at 2022-11-18 15:35:27.Hello @matthewjchandler and @hhkitsune sorry for the delay! I made the changes to ticket #490
[x] Added quotation marks to title phrase inside description.
I left the dc.description.abstract and dc.description the same for now
We already created a ticket for the character encoding error for an apostrophe in "Earth's" (this has also happened with the other xml outputs)
<?xml version="1.0"?>
<resource xsi:schemaLocation='http://datacite.org/schema/kernel-4 http://schema.datacite.org/meta/kernel-4/metadata.xsd' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns='http://datacite.org/schema/kernel-4'>
<identifier identifierType='DOI'>10.34770/xajd-5n64</identifier>
<creators>
<creator>
<creatorName>Baldwin, Jane W</creatorName>
<givenName>Jane W</givenName>
<familyName>Baldwin</familyName>
</creator>
<creator>
<creatorName>Dessy, Jay Benjamin</creatorName>
<givenName>Jay Benjamin</givenName>
<familyName>Dessy</familyName>
</creator>
<creator>
<creatorName>Vecchi, Gabriel A</creatorName>
<givenName>Gabriel A</givenName>
<familyName>Vecchi</familyName>
</creator>
<creator>
<creatorName>Oppenheimer, Michael</creatorName>
<givenName>Michael</givenName>
<familyName>Oppenheimer</familyName>
</creator>
<creator>
<creatorName>Jia, Liwei</creatorName>
<givenName>Liwei</givenName>
<familyName>Jia</familyName>
</creator>
<creator>
<creatorName>Gudgel, Richard G</creatorName>
<givenName>Richard G</givenName>
<familyName>Gudgel</familyName>
</creator>
<creator>
<creatorName>Paffendorf, Karen</creatorName>
<givenName>Karen</givenName>
<familyName>Paffendorf</familyName>
</creator>
</creators>
<titles>
<title>
Supporting data for Baldwin et al 2019 "Temporally Compound Heat
Waves and Global Warming: An Emerging Hazard"
</title>
</titles>
<publisher>Princeton University</publisher>
<resourceType resourceTypeGeneral='Dataset'/>
<publicationYear>2019</publicationYear>
<relatedIdentifiers>
<relatedIdentifier relationType='IsIdenticalTo' relatedIdentifierType='ARK'>ark:/88435/dsp01bz60d033c</relatedIdentifier>
</relatedIdentifiers>
<version>1</version>
<rightsList>
<rights rightsURI='https://creativecommons.org/licenses/by/4.0/' rightsIdentifier='CC BY'>Creative Commons Attribution 4.0 International</rights>
</rightsList>
<descriptions>
<description descriptionType='Other'>
This data is compiled to support a publication in the journal Earth's
Future: Baldwin et al 2019 "Temporally Compound Heat Waves and Global
Warming: An Emerging Hazard". The GCM GFDL CM2.5-FLOR was used to
produce the raw climate model data. The model code for FLOR is freely
available and can be downloaded at
https://www.gfdl.noaa.gov/cm2-5-and-flor/. Code used to calculate the
derived heat wave statistics data and produce figures in the paper is
available at https://github.com/janewbaldwin/Compound-Heat-Waves The heat
wave statistics derived output for only one definition is provided (daily
minimum temperature, 90th percentile threshold, temporal structure 3114)
which is the definition used the most in the paper figures. Statistics for
the other definitions can be created by running the HWSTATS code provided
in the corresponding github folder, which includes python scripts which do
the analysis and PBS job scheduling and submission scripts which show how
to run the python scripts. For more information on this, please see the
github readme. A full description of the structure of the dataset and how
to reproduce the figures in the manuscript are given in the dataset README
file. This dataset is too large to download directly from this item page.
You can access and download the data via Globus at this link:
https://app.globus.org/file-manager?origin_id=dc43f461-0ca7-4203-848c-33a9fc00a464&origin_path=%2Fxajd-5n64%2F (See https://docs.globus.org/how-to/get-started/ for instructions on how to use Globus; sign-in is required).
</description>
</descriptions>
</resource>
ready_for_review
by Tyler Wade at 2022-11-18 20:41:34.referenced
by Kate Lynch at 2022-11-18 17:39:07.merged
by Kate Lynch at 2022-11-18 17:39:07.closed
by Kate Lynch at 2022-11-18 17:39:07.head_ref_deleted
by Kate Lynch at 2022-11-18 17:39:08.closed
by Kate Lynch at 2022-11-18 17:39:08.head_ref_force_pushed
by Francis Kayiwa at 2022-11-18 16:55:55.renamed
by None at 2022-11-18 18:54:23.renamed
by None at 2022-11-18 18:54:31.ready_for_review
by None at 2022-11-18 20:19:22.referenced
by Robert-Anthony Lee-Faison at 2022-11-18 16:05:26.merged
by Robert-Anthony Lee-Faison at 2022-11-18 16:05:26.closed
by Robert-Anthony Lee-Faison at 2022-11-18 16:05:26.head_ref_deleted
by Robert-Anthony Lee-Faison at 2022-11-18 16:05:27.closed
by Kevin Reiss at 2022-11-18 16:07:09.Done.
closed
by Kevin Reiss at 2022-11-18 16:07:35.closed
by Jane Sandberg at 2022-11-18 17:01:04.deployed
by None at 2022-11-18 20:04:15.deployed
by None at 2022-11-18 21:08:33.deployed
by None at 2022-11-18 21:13:46.referenced
by Christina Chortaria at 2022-11-18 21:22:54.merged
by Christina Chortaria at 2022-11-18 21:22:54.closed
by Christina Chortaria at 2022-11-18 21:22:54.head_ref_deleted
by Christina Chortaria at 2022-11-18 21:22:55.labeled
by Kevin Reiss at 2022-11-18 17:52:21.closed
by Christina Chortaria at 2022-11-18 21:22:56.assigned
by None at 2022-11-18 22:24:53.review_requested
by None at 2022-11-18 20:26:17.Reviewed with team; some display issues might be persisting but these can be addressed as separate tickets if needed.
ready_for_review
by Kate Lynch at 2022-11-18 16:14:17.labeled
by Kevin Reiss at 2022-11-18 18:09:13.Interestingly this worked locally on PHP 8.10 in lando.
closed
by Christina Chortaria at 2022-11-18 20:46:15.head_ref_force_pushed
by Christina Chortaria at 2022-11-18 19:49:52.head_ref_force_pushed
by Christina Chortaria at 2022-11-18 19:59:37.deployed
by None at 2022-11-18 20:02:07.head_ref_force_pushed
by Christina Chortaria at 2022-11-18 20:04:11.closed
by Christina Chortaria at 2022-11-18 20:46:31.We deployed this on staging and it's working.
ready_for_review
by Christina Chortaria at 2022-11-18 20:52:44.referenced
by Jane Sandberg at 2022-11-18 21:00:35.merged
by Jane Sandberg at 2022-11-18 21:00:35.closed
by Jane Sandberg at 2022-11-18 21:00:35.head_ref_deleted
by Jane Sandberg at 2022-11-18 21:00:36.labeled
by Kevin Reiss at 2022-11-18 17:53:44.assigned
by Christina Chortaria at 2022-11-18 18:48:34.closed
by Jane Sandberg at 2022-11-18 21:00:36.referenced
by James R. Griffin III at 2022-11-18 15:47:54.merged
by James R. Griffin III at 2022-11-18 15:47:54.closed
by James R. Griffin III at 2022-11-18 15:47:54.head_ref_deleted
by James R. Griffin III at 2022-11-18 15:47:55.referenced
by Chuck McCallum at 2022-11-18 14:49:43.merged
by Chuck McCallum at 2022-11-18 14:49:43.closed
by Chuck McCallum at 2022-11-18 14:49:43.head_ref_deleted
by Chuck McCallum at 2022-11-18 14:49:44.


Ticket ID: 409788
Name:
Parker Seidel
No Active Support
Email:
<EMAIL_ADDRESS>Response Time:
72hours, 62hours left
Last Action:
Never been locked.
Link to public post
Status:
Not answered


Proposals |
| /api/proposals | GET | Get an array of all proposals |
| /api/proposals/meta | GET | Get an array of all proposal metadata |
| /api/proposals/ID | GET | Get a single proposal |
| /api/proposals/count | GET | Get the total number of proposals |
| /api/proposals | POST | Post a new proposal |
| /api/proposals/ID | PUT | Edit an existing proposal |
| /api/proposals/ID | DELETE | Delete a proposal |
Users |
| /api/users/all | GET | Get an array of all users |
| /api/users/ID | GET | Get a single user |
| /api/users/count | GET | Get the total number of users |
| /api/users/register | POST | Register a new user |
| /api/users/login | POST | Authenticate and sign in an existing user - returns a JSON Web Token |
| /api/users/ID | PUT | Edit an existing user |
| /api/users/ID | DELETE | Delete a user |
Attachment management |
| /api/file/all | GET | Get an array of all files |
| /api/file/filename | GET | Download a single file |
| /api/file/upload/attachment-type | POST | Upload a file |
| /api/file/filename | DELETE | Delete a file |
PDF management |
| /api/pdf/proposalID | GET | Generate a PDF from a proposal |
| /api/pdf/merge/proposalID | GET | Merge all attachments in a proposal |


--- layout: post title: no title date: '2013-05-10T13:55:00-07:00' tags: - cooking - food - foodporn - frombrett tumblr_url: http://beekley.xyz/post/50111158960 ---


DXF for Laser
Description
Precisely dimensioned laser cut parts are wonderful to work with.  By using this add-in with a small (or even negative) value for your kerf you can make loose fitting parts for a child's puzzle perhaps. By using an aggressive value (say 0.20 mm - or a value larger than your calculated/measured actual kerf) you can make parts that need to be gently pounded together for no-glue assembly. Then there is the middle ground where parts can be easily dry-fit and disassembled multiple times prior to gluing.
This ADD-IN also supports the creation of multi-layered DXF files, splitting your perimeter and cutouts into their own layers.
Get all of this without modifying your geometry or tediously offsetting and deleting scores of lines and curves - let DXF4Laser do the hard work for you!
General Usage Instructions
Find this add-in under the SKETCH menu as "Save DXF for Laser Cutting"
If you do not see this add-in under the SKETCH menu click: Scripts and Addins >>> Add-ins >>> Select "DXF4Laser" >>> hit "Run"
Set your KERF width in the dialog and pick a plainer face of a body to generate a kerf compensated DXF file for. The higher your Kerf setting the tighter your parts will fit together. Using the 60W epilogue laser I have access to I use 0.20mm kerf for small designs I want to pound together cut from 5mm wood and go down to 0.10mm for larger works I want to be able to dry-fit and disassemble before gluing.
The right kerf setting to use will vary by your material and laser settings. You can either experiment with various settings or cut a test pattern - e.g. cut 10x 5mm wide rectangles, set them side by side and measure the total width then calculate your kerf. I find it helpful to flip every other tile over as laser cuts always have a little bit of a taper to them and this helps average things out. Example: if your total width was 48.5mm then your ‘perfect fit’ kerf is (50 - 48.5) / 10 = 0.15mm
Tip: Use https://a360.autodesk.com/viewer to view your DXF files.
Screenshots
Commands
Installation/Uninstallation
The installer that ran when you downloaded this app/plug-in from Autodesk App Store has already installed the app/plug-in.
OR, simply double-click the MSI to install the app. Uninstall:
You can unload the add-in without uninstalling it by clicking the "Stop" button when the add-in is selected in the list box on the "Add-Ins" tab of the "Scripts and Add-Ins" dialog.
Unchecking "Run on Startup" causes the add-in not to be loaded in future sessions of Autodesk® Fusion 360™.
To uninstall this plug-in, exit the Autodesk product if you are currently running it, simply rerun the installer, and select the "Uninstall" button.
OR, you can uninstall it from 'Control Panel\Programs\Programs and Features' (Windows 7/8/8.1/10), just as you would uninstall any other application from your system.
Additional Information
Known Issues
Non-manifold shapes (ones where cutouts share an edge - e.g. two square cutouts sharing a corner) are not supported.
If the top level componant is not the active componant and you are generating a DXF for a deeply nested, and transformed, componant the generated sketches will not correctly overlay the selected face.
Contact
Author/Company Information
Support Information
I primarily created this script for my own use and it is provided AS-IS WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED and is released under the MIT license. That said, I will continue to improve it to better serve my needs and I'm interested to hear about others experiences, ideas, and any issues encountered. Email me at<EMAIL_ADDRESS>Version History
| Version Number | Version Description |
|---|---|
|
1.1.2 |
Negative kerf values should be well behaved again. - At some point the Fusion 360 API has started supporting negative offsets. This broke the use of negative kerf values by resulting in a double negative in most cases. |
|
1.1.1 |
Updated Version |
|
1.1.0 |
* Changed from SCRIPT to ADD-IN appearing under the SKETCH menu system. * Major performance improvements on the order of 25x to 50x faster! * Added the option to split the perimeter and cutouts into separate layers in the DXF file. This should facilitate higher quality laser cuts by specifying, in your laser cutting software, that cutouts should be cut first and the perimeter last. * Added the option to "cleanup on success" - when set the component that is created containing the sketches will be deleted upon successfully saving the DXF file. * Bodies that were created from spline profiles are now supported. * A warning will be displayed if the selected face exhibits non-manifold properties (the body has multiple features that share an edge). |
|
1.0 |
Initial Release |


Nicole Scherzinger slays Gay Times Honours bash amid Thom Evans romance claims
Nicole Scherzinger is rumoured to be dating X Factor: Celebrity star Thom Evans, after the pair were spotted looking all kinds of cosy.

The 41-year-old slayed as she rocked up to Magazine London on Thursday night, opting for an off-white, cut-out mini dress for the event.
She completed the look with all of the jewellery, and a pair of thigh-high beige boots.
And the Don’t Cha singer debuted her new hairstyle on the red carpet, scooping her hair up into a ponytail to emphasise her snazzy new fringe.
Nicole was joined on the night by her X Factor: Celebrity co-star Kevin McHale, as well as Love Island’s Megan Barton Hanson, Munroe Bergdorf and Vanessa White.
Advertisement Advertisement
Her appearance comes after Thom Evans broke his silence on rumours they are secretly dating – after they were seen together on a romantic night out.
During a stint on Loose Women alongside his Try Star bandmates, the rugby player did absolutely nothing to discourage the rumour mill.
In fact, the 34-year-old got very flustered when questioned about their ‘relationship’.
‘Nicole is lovely and you know, I… But I’ve been concentrating on the bromance… And getting to the final,’ the 34-year-old told the panel who couldn’t contain their giggles over his denial.
‘Who wouldn’t want to date Nicole? She’s lovely and, ermmmm…’
Smooth, hun.
An insider recently claimed Thom was completely smitten with Nicole, and plucked up the courage to ask her out this week.
‘Thom is completely Nicole’s type. And for his part, Thom was smitten early on — he’s always said Nicole is one of the most beautiful women in the world,’ an insider claimed to The Sun.
‘He fancied her long before meeting her on the show. He was initially a bit nervous about starting something up, and ruining his chances on the series, but they had great chemistry from the off.
Advertisement Advertisement
‘And after weeks of texting, Thom finally plucked up the courage to ask her out, and took her for dinner.’
Got a showbiz story?
If you've got a story, video or pictures get in touch with the Metro.co.uk Entertainment team by emailing us<EMAIL_ADDRESS>calling 020 3615 2145 or by visiting our Submit Stuff page - we'd love to hear from you.


Interview 3, Natalie’s Revenge!
Actually her questions are very nice, I just had to come up with a relatively witty title and I’m kinda sleepy this morning.
Here’s my answers to Natalie’s reciprocal questions.
Kirsten:
1. So update us on your New Year’s resolutions that you posted in January. How are you doing with them so far?What? I posted resolutions? Yow! I did! I had completely forgotten about them! OK, here they are, with my current progress (or the adaptation) included.
I will do my very best this year to:
– Run in a race before June
I did the Santa Cruz Super Bowl 3k on Super Bowl Sunday. Then came back to watch the game. Granted, 3k is pretty unimpressive but I was happy with my time. This month on the 20th I’m doing the Emerald Nuts Across the Bay 12K where I will get to run across the Golden Gate bridge.
– Knit a sweater for me (maybe Blaze (but not in orange)
Sheesh. It’s 80 degrees here right now, a sweater sounds kind of dumb. I will adjust this resolution a bit to say ‘knit some kinda shirty thing for me’ since I have a zillion skeins of Noro Lily in this fabulous green color which is going to become a tank top sometime soon.
– Turn all these balls of cotton yarn in to dishcloths from the Dishcloth Boutique
Yeah, well, here’s the thing. I keep *trying* to start dishcloths. They should be cool, right? You start, then a little while later, you’re done. But I start one, do about 2 inches, and then grow unbelievably bored with the thing and frog it. I don’t think I’m a dishcloth girl. I’ll find something else to do with the cotton, I’m sure.
– Eat out for dinner no more than once a week
We’re doing much better with this, although still too much eating out. The extra stuff I’m doing because of my friend’s accident has made me quite stressed and I’m just getting back on my feet from that. But we’re cooking more than eating out! And we implemented an allowance scheme that discourages the gratuitous eating out.
– Take the time to buy and prepare relatively healthful food for myself and my family
Doing this much more – now I go to the Starbucks at the other end of town (it’s a little town) which shares the parking lot with a nice little market, so I can buy stuff in the morning to make for dinner. That works out very well. Tomorrow we (myself and the kids) will go to the farmer’s market after our martial arts classes.
– Attend at least 3 martial arts classes a week
Check! So far I’m doing great with this. This week I’ve been every day (M-Th) and I plan to go tonight and tomorrow as well. My running suffers when I focus on Martial Arts but there’s a tournament next weekend and I’m competing in the forms division and I don’t want to suck!
– Go back to pre-planning at least 48 hours ahead anything that causes me stress (girl scouts, get-togethers, anything where my tummy wrenches when I think about it)
I’m a little better at this. And thank heavens, the other moms in the girl scout troop pretty much took it over when Susan got hurt so that I could focus on helping her and her family… I did get somewhat depressed but am back on wellbutrin and doing much better now! Talk about TMI, eh?
– Move myself closer to zen mastery
Uh, not yet. Maybe I can work on that during the summer 🙂
Pretty good, actually! Not bad considering I completely forgot that I had these goals at all.
- What’s your favorite board game?
Scrabble! I love Scrabble!  But it’s fun!
- You’re a relatively new knitter, so what’s your favorite yarn so far?
Hmm… I really liked working with the tape yarn to make Sherbet, and this self-striping sock yarn is fab, but I’m most looking forward to working with the Fiesta La Luz silk yarn that I got at Stitches West.
- Create a fabulous pretend meal for me (and feel free to provide recipes if you want!).
Since I don’t know what you like, I’ll just cook what *I* like, and I’m in the mood for comfort food right now 🙂
Stir fried sugar snow peas (from How To Cook Everything by Mark Bittleman)
Caesar salad with candied pecans and bleu cheese
Chicken with pan gravy and cornmeal dumplings (one of my favorite main meals, I love this recipe)
Maple-ginger creme brulee
That should do it 🙂
- What’s the next project you will cast on?
It’ll definitely be something for Susan. Either a scarf or wrist warmers with the Manos Cotton Stria I got, or possibly the Hallowig from Knitty in the Fiesta La Luz. I think that’ll be just adorable!
UNCATEGORIZED


--- layout: page title: Portfolio subtitle: A selection of cool stuff I've worked on. description: Project portfolio for Data Science and Software projects I've worked on. ---
An Adaboost classifier to accurately predict whether an individual makes more than $50,000, and identify likely donors for a non-profit organisation.
Statistical and spatial data analysis, including visualizations, for the walkability of Melbourne suburbs.
Capstone project for The University of Melbourne.
Analyzing customer spending data using Unsupervised Learning techniques for discovering internal structure, patterns and knowledge.
Cross language information retrieval system (CLIR) which, given a query in German, searches text documents written in English using Natural Language Processing.
Designing and implementing a Convolutional Neural Network that learns to recognize sequences of digits using synthetic data generated by concatenating images from MNIST.
Analysis of the BRFSS-2013 data set using R, focusing on investigating the relationship between education and eating habits, sleep and mental health, and smoking, drinking and general health of a person.
Skills: R, Descriptive Statistics, ggplot, dplyr
3-way polarity (positive, negative, neutral) classification system for tweets, without using NLTK's sentiment analysis engine.
Skills: Python, NLP, Scikit-learn
Analysing the GSS (General Social Survey) dataset using R to infer if, in the year 2012, were men, of 18 years or above in the United States, more likely to oppose sex education in public schools than women.
Skills: R, Hypothesis Testing, ggplot, dplyr
Creating an optimized Q-Learning driving agent that will navigate a Smartcab through its environment towards a goal.
Skills: Python, PyGame, Q-Learning
Analysis of technology stocks, including change in price over time, daily returns, and stock behaviour prediction.
Skills: Python, Pandas, Seaborn, Financial Analysis
A model to predict the value of a given house in the Boston real estate market using various statistical analysis tools. Identified the best price that a client can sell their house utilizing machine learning.
Skills: Python, Scikit-learn, Decision Tree Regression, Model Complexity Analysis
Exploration of baseball data for the year 2001 using R to look at replacements for key players lost by the Oakland A's in 2001. Inspired by the book/movie: Moneyball.
Skills: R, Exploratory Data Analysis, ggplot, dplyr
Exploratory Data Analysis of the 911 calls dataset hosted on Kaggle. Demonstrates extraction of useful features from different variables.
Skills: Python, Pandas, Seaborn


an object-oriented computer programming language commonly used to create interactive effects within web browsers.
The definition of an operator is a symbol that is used to perform an operation.
A defining variable is a symbol, such as x, used to describe any number. When a variable is used in an function, we know that it is not just one constant number, but that it can represent many numbers. Variables are instrumental in understanding problems relating to graphing.
 Functions are executed when they are called. This is known as invoking a function.


This is a tribute to one of the Founders of DnD Gary Gygax, who sadly passed on recently.
His vision and imagination has given us, the player, many worlds to explore, many characters to play and ultimately enabled a niche market to become a more consolidated force amonst games and gamers.
If it was not for him, then games like NwN, the Elder Scrolls and countless others, both on- and offline would never have been possible.
May your soul find peace and may your D20 roll forever, we salute you.
In memoriam _________________ " -- They give birth astride of a grave, the light gleams an instant, then it's night once more."


I'm using the Razer GameBooster, and always worked perfectly. I turn him and he comes into my Battlelog. but for a while now, every time the BetterBattlelog crashes when I use this GameBooster. Simply hangs and does not enter the Battlelog. Anyone know how to solve this?
RazerGameBooster:
http://www.razerzone.com/gamebooster
Meaurk
Global Moderator
I also use Razer's Gamebooster and I have no problems at all. Which browser + version do you use?
BrainFooLong
Administrator
Em, Gamebooster just enhance the game, not the browser, right?
In this case, i'm sure that BBLog hasn't anything todo with the crash.
Post edited 1 x times, last by
Meaurk
Global Moderator
Meaurk
Global Moderator
Gamebooster enhance the game and 'shut down' all other programs which may interrupt the flow of the game. So yes, it is possible that Gamebooster messes with BBLog.
Topicstarter
CHACALGAMER
i use the last version of Chrome. page of Battlelog crashes, goes blank, and no other site I can open from the browser. just closing and opening again.
BrainFooLong
Administrator
I guess you mean the Battlelog crashes, doesn't matter if you have installed BBLog or not?
ORFK
Global Moderator
Meaurk wrote:
Gamebooster enhance the game and 'shut down' all other programs which may interrupt the flow of the game. So yes, it is possible that Gamebooster messes with BBLog.
so thats mean that gamebooster "shut down" firefox/chrome. that means that his browser is "crashing", not BBLog. for me: nothing todo with our addon. thats a Battlelog/Browser/Gamebooster problem ^^
Dendari
Translator
I've been using Game Booster for ages and never had a similar issue. By default Game Booster closes only Windows related programs, such as "Windows Update", it doesn't close other processes unless you want to. Be sure you haven't checked anything related to the web browser. Example:
test.png
ORFK
Global Moderator
and pls dont forget to add gamebooster.exe to your shut down list too... i'm 100% shure if you shut down this software while you want to play a game you will get some extra RAM ;-P
Topicstarter
CHACALGAMER
this is what happens when I try to run GameBooster
http://imageshack.us/a/img191/6997/939r.png
BrainFooLong
Administrator
Yep, and it's no "Better Battlelog" Problem in any way.


Share Your Story!
Share Your Story!
Home
(current)
kids
Parents
educators
blog
about
This is a place for everyone to chat to and read about other people who have gone through similar experiences.
Loading…


Welcome!
You are one step away, please complete the registration form below
Title
Select...
Full name
Gender
Select...
Business Name
In which industry is your business?
Select...
Company Registration Number
How long has your company been in business for?
Select...
How many people are employed at your company?
Select...
What was the annual revenue for your company last year?
Select...
What is your BEE Score?
Select...
Email
Contact Number
Address
Province
Select...
Enter New Password
Re-Enter New Password
Register


Raising the bar for AI safety, quality and performance in industry
The AI-RFX procurement framework has been put together by a group of domain experts. Its purpose is to ensure best practices in industry during the procurement, design, devleopment and deployment of machine learning systems in industry.
This procurement framework goes beyond the machine learning algorithms. It provides a method to assess the maturity level of the technical infrastructure and processes around the algorithms themselves, by using our Machine Learning Maturity Model.
The Machine Learning Maturity Model
The Machine Learning Maturity Model is a set of criteria which ensures that the core technical infrastructure and the right processes are in place. It provides the ability for key industry practitioners to set a bar for quality, safety and performance when procuring machine learning solutions. You can request to download a copy of the AI-RFX Framework through the contact form below, which contains this document as well.
The model was designed using the Responsible Machine Learning Principles, and consists of the following 8 assessment criteria:


filmcritic.com presents a review from staff member Max Messier. You can find the review with full credits at http://www.filmcritic.com/misc/emporium.nsf/2a460f93626cd4678625624c007f2b46/e38c2528c02ef98c882568b20022a9df?OpenDocument
Treasure Island A film review by Max Messier
It's very refreshing, in today's overexposed and anti-climatic realm of moviemaking, that art still can exist in a medium such as film. It is very refreshing to know that there are still individuals on the fringes, trying their damnedest to re-invent the wheel of cinema. Treasure Island is one of those successful ventures of creating an art film for the sake of taking everything learned about filmmaking, piling it up, and lighting the whole mess on fire.
The story takes place during the second World War in San Francisco. Two intelligence officers are assigned to the duty of creating a false life for a dead man - including family letters, tickets to shows, and love letters from kindred souls - and planting him in Japanese territory to confuse the Japanese military of pending Allied military operations. Naturally, the two officers infuse their own personal letters, hatreds, and family situations into the creation of the life of the dead man. The only problem is that these two officers are the two most fucked-up individuals I have seen since Hopper in Blue Velvet.
Frank, the straightforward officer, leads a triple life of deceit and confusion. Frank is a polygamist with two wives, one Japanese and hiding in Chinatown, and another that could use years of therapy to overcome a series of personal hang-ups. The guy is even on the make for wife #3 on the weekends.   He and his wife cruise the town at night looking for men to satisfy their cravings for threesomes. Add some repressive anger syndrome and you've got one unhappy camper. And remember, kind reader, this is 1943.
Scott King, the director of this emotional roller coaster of fun, brings to the screen the vividness of a noir film shot in the 1950's. The film is shot in black and white with a strange sepia tone that makes it look like film stock that has been degraded by years and years of storage in someone's cellar. King immediately places the viewer in the thick of things and only offers slight narration with location shots of San Francisco Bay Area. The camera angles are tight and each shot gives you a small bit of understanding of each of the main characters' persona. The acting is fueled by unknown stage actors who provide brutal and frank honesty that sometimes brings about discomfort to the audience. King's ability to successfully shoot a period piece, including costume and production design, on an independent budget stands out as determined filmmaking at its finest.
Treasure Island is not a film for everyone (nor is it about the Stevenson book). I wouldn't take my mum to see it. Treasure Island is a film for filmmakers and people that understand that most truthful thing in this world is the words and emotions that people say in silence to one another. Treasure Island is littered with painful convictions, hedonistic intentions, sexual repression, and a general state of confusion about the place one must have in life.
Rating: Four Stars
Writer/Director: Scott King Starring: Lance Baker, Nick Offerman, Jonah Blechman, Pat Healy Producers: Adrienne Gruben, Lisa Papineau
-- Christopher Null -<EMAIL_ADDRESS>- http://www.filmcritic.com
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


Objective Design a book on typography using abstract, vector illustrations and use a single theme to tie the book together conceptually.
Concept Typographic Murmuration uses the idea of a murmuration—a flock of starlings—to demonstrate typographic principles. The illustrations convey the sense of graceful movement and fluidity that is seen in murmurations.
The content starts with the design development of letterforms, then discusses the different categories of typefaces, the design of font families, and the art of setting type. It aims not only to explain the rules of typography, but also to give a sense of the hard work and skill involved in designing typefaces and setting type, and the tradition behind the nuances in the written form of our language.
Visuals The color scheme is limited to a grayscale palette, with white and magenta as bold accent colors to keep the reader’s focus on shape and form, and make the graphics more impactful.
The two typefaces, Meta and Centaur, complement each other with their similar humanist shapes. The combination of the modern sans serif Meta and classically old-fashioned serif Centaur demonstrate the range of different letterforms.
Graceful, arching lines flow across the page, and patterns of parallel solid and dotted lines convey a sense of forward movement. Flocks of Meta letterforms, created using a flocking simulator in Processing, gather along the lines and cover the endpapers. Large, black letterforms bleed into one another in bold illustrations of typographic principles.
Designed and coded by Rebecca Pariser
© 2017 All Rights Reserved


--- layout: post title: Publish a PWA (Progressive Web App) in the Google Play Store date: '2019-11-07T21:29:00.003+05:30' author: Sahil Rajput tags: modified_time: '2019-11-07T21:29:56.720+05:30' blogger_id: tag:blogger.com,1999:blog-5250005448924290719.post-7217705441272585211 blogger_orig_url: https://www.jaadujinn.ml/2019/11/publish-pwa-progressive-web-app-in.html ---


Next: Random-State Operations, Previous: Complex Computations, Up: Number Concepts
The compound type specifier form of the numeric type specifiers in Figure 12–10 permit the user to specify an interval on the real number line which describe a subtype of the type which would be described by the corresponding atomic type specifier. A subtype of some type T is specified using an ordered pair of objects called interval designators for type T.
The first of the two interval designators for type T can be any of the following:
This denotes a lower inclusive bound of N. That is, elements of the subtype of T will be greater than or equal to N.
a number M of type T This denotes a lower exclusive bound of M. That is, elements of the subtype of T will be greater than M.
This denotes the absence of a lower bound on the interval.
The second of the two interval designators for type T can be any of the following:
This denotes an upper inclusive bound of N. That is, elements of the subtype of T will be less than or equal to N.
a number M of type T This denotes an upper exclusive bound of M. That is, elements of the subtype of T will be less than M.
This denotes the absence of an upper bound on the interval.
Next: Random-State Operations, Previous: Complex Computations, Up: Number Concepts


Qualcomm Venture Fest Commercial (Creative Director)
Nations of San Diego with Udita Fusion Arts,2014 (Dancer)
Independence Day with Udita Fusion Arts,2013 (Dancer)
Qualcomm Summer on the Lawn with Dhwani,2013 (Vocalist)
Indian Festival with Nocturnals,2014 (Vocalist)
48 Hr Film Project,2014 (Actor)
Indian Classical Arts - Michigan Sahana,2010 (Vocalist)


---
layout: post
title: My good friend
date: '2007-06-22T04:45:00.002Z'
author: tknv
tags:
- thai
modified_time: '2009-07-09T19:19:35.391Z'
thumbnail: http://2.bp.blogspot.com/_dszryEfCgyA/RntUB1I51QI/AAAAAAAAAE4/21Qr4IAU2To/s72-c/Resize+of+P1010550.JPG
blogger_id: tag:blogger.com,1999:blog-11459759.post-6365609118195592840
blogger_orig_url: http://phichyudebow.blogspot.com/2007/06/my-good-friend.html
---
Always he is there at Mr.Black shop in China town - Bangkok


Make your terminal beep
Useful as an attention grabber e.g. when an error happens.
$ npm install --save beeper
var beeper = require('beeper');
beeper();
// beep one time
beeper(3);
// beep three times
beeper('****-*-*');
// beep, beep, beep, beep, pause, beep, pause, beep
It will not beep if stdout is not TTY or if the user supplies the --no-beep
flag.
Type: number
Default: 1
How many times you want it to beep.
Type: string
Construct your own melody by supplying a string of *
for beep -
for pause.
MIT © Sindre Sorhus


Pitcher
Requirements to post a pitch
Sign up and login to access content
Receive a welcoming email once you sign up
Post a pitch for you or for someone to comment
Comment on a pitch
Vote a pitch
{% extends 'base.html' %} {% import 'macros.html' as macro %}
{% block styles%} {{ super() }} {% endblock %} {% block content %} {% if current_user.is_authenticated %} + pitch {% endif %}{{ item.pitch_statement }}
No comments at the moment
{% endif %}


Login with OAuth2 / OpenId Connect
Login with Github
Login with Google
Login with Facebook
Login with Okta
Login with LinkedIn
Welcome
|
Logout


File Wrangler teaches the basics of files and directories in the Linux command line.
You will use basic navigation commands to view files and directories and to move around between directories. You will also use commands to create new files and directories and commands for renaming, copying, moving and deleting them. Finally, you will use commands to view and change file permissions.
Moving between directories and manipulating files and directories are essential foundations for intermediate and advanced security exercises. This exercise will also introduce you to key commands for managing file and directory-level access control in Linux. The man pages for given commands can help when you are unsure of how to solve a challenge.
Connect to the VM via your instructor's directions, or as displayed on you EduRange account.
Instructions will be displayed in terminal upon logging in. Work on each task and answer the
EduRange questions as directed in the task instructions.
The pwd command will give you the current working directory. This tells you where you are in the Linux file system.
Steps:
The man command outputs the manual entry for a given command. The format is as follows:
man
Steps:
Now that we know where we are, we will want to know what is in this directory. For a simple list of files and directories, you would use the list command.
Steps:
Steps
View the manual entry for the ls command. Notice in the SYNOPSIS, the format of the command is as follows:
ls [OPTION]... [FILE]...
Anything in square brackets is optional. In this case, we can use ls along with one of the options listed with - or -- and we could add a complete file path.
The cd command allows you to change into another directory. The format is as follows:
cd
Steps:
Hidden files begin with a '.' and are not displayed unless you specify an option with the ls command.
Steps:
To go back a directory, you would type the following command:
cd ..
The command pwd, will show you where you are in the Linux file system.
Steps:
You can chain options for a single command. So, for example, you could include both the options for long listing and listing hidden files by simply adding each option after the ls command.
Steps:
Steps:
Renaming files
Copying files
Steps:
Changing permissions
b. Use the chmod command to change the permissions of copied_perm1.txt to:
d. Use the chmod command to change the permissions of copied_perm2.txt to:
Exercise Complete!