Versioning¶
API¶
ONNX Runtime follows Semantic Versioning 2.0 for its public API. Each release has the form MAJOR.MINOR.PATCH, adhering to the definitions from the linked semantic versioning doc.
Current stable release version¶
The version number of the current stable release can be found here.
Release cadence¶
Compatibility¶
Backwards compatibility¶
All versions of ONNX Runtime will support ONNX opsets all the way back to (and including) opset version 7. In other words, if an ONNX Runtime release implements ONNX opset ver 9, it’ll be able to run all models that are stamped with ONNX opset versions in the range [7-9].
Version matrix¶
The following table summarizes the relationship between the ONNX Runtime version and the ONNX opset version implemented in that release. Please note the backward compatibility notes above. For more details on ONNX Release versions, see this page.
ONNX Runtime release version |
ONNX release version |
ONNX opset version |
ONNX ML opset version |
Supported ONNX IR version |
|
|---|---|---|---|---|---|
1.11.992 |
1.10 down to 1.2 |
15 |
2 |
7 |
Windows AI 1.10+ |
1.11.0 |
1.10 down to 1.2 |
15 |
2 |
7 |
Windows AI 1.11+ |
1.10.0 |
1.10 down to 1.2 |
15 |
2 |
7 |
Windows AI 1.10+ |
1.9.0 |
1.10 down to 1.2 |
15 |
2 |
7 |
Windows AI 1.9+ |
1.8.2 |
1.9 down to 1.2 |
14 |
2 |
7 |
Windows AI 1.8+ |
1.8.1 |
1.9 down to 1.2 |
14 |
2 |
7 |
Windows AI 1.8+ |
1.8.0 |
1.9 down to 1.2 |
14 |
2 |
7 |
Windows AI 1.8+ |
1.7.0 |
1.8 down to 1.2 |
13 |
2 |
7 |
Windows AI 1.7+ |
1.6.0 |
1.8 down to 1.2 |
13 |
2 |
7 |
Windows AI 1.6+ |
1.5.3 |
1.7 down to 1.2 |
12 |
2 |
7 |
Windows AI 1.5+ |
1.5.2 |
1.7 down to 1.2 |
12 |
2 |
7 |
Windows AI 1.5+ |
1.5.1 |
1.7 down to 1.2 |
12 |
2 |
7 |
Windows AI 1.5+ |
1.4.0 |
1.7 down to 1.2 |
12 |
2 |
7 |
Windows AI 1.4+ |
1.3.1 |
1.7 down to 1.2 |
12 |
2 |
7 |
Windows AI 1.4+ |
1.3.0 |
1.7 down to 1.2 |
12 |
2 |
7 |
Windows AI 1.3+ |
1.2.0 |
1.6 down to 1.2 |
11 |
2 |
6 |
Windows AI 1.3+ |
1.0.0 |
1.6 down to 1.2 |
11 |
2 |
6 |
Windows AI 1.3+ |
0.5.0 |
1.5 down to 1.2 |
10 |
1 |
5 |
Windows AI 1.3+ |
0.4.0 |
1.5 down to 1.2 |
10 |
1 |
5 |
Windows AI 1.3+ |
0.3.1 |
1.4 down to 1.2 |
9 |
1 |
3 |
Windows 10 2004+ |
0.2.1 |
1.3 down to 1.2 |
8 |
1 |
3 |
Windows 10 1903+ |
0.1.5 |
1.3 down to 1.2 |
8 |
1 |
3 |
Windows 10 1809+ |
Tool Compatibility¶
A variety of tools can be used to create ONNX models. Unless otherwise noted, please use the latest released version of the tools to convert/export the ONNX model. Most tools are backwards compatible and support multiple ONNX versions. Join this with the table above to evaluate ONNX Runtime compatibility.
Tool |
Recommended Version |
Supported ONNX version(s) |
|---|---|---|
1.2-1.6 |
||
ONNXMLTools |
1.2-1.6 |
|
ONNXMLTools |
1.4-1.5 |
|
1.2-1.6 |
||
1.2-1.6 |
||
1.2-1.6 |
||
1.2-1.6 |
||
1.6-1.9 |
||
1.5 |
||
1.4 |


{% include "head.html" %}
Last updated: {{ file_.playbook.time_end | datefmt }}
Ansible version: {{ file_.playbook.ansible_version }}


A framework build for the fastest cloud service provider that allows developers build better apps and grow successfully.
Easy route declaration with a good data-binding experience
Use Modern web platform capabilities to deliver app-like experiences
Firebase made easy with already made functions that models an ORM
Create and use components easily using a sleek methodology


This is a simple json schema viewer built purely on HTML5/JS. Currently it has been tested against various Apache Avro json schema. The search function is working in progress. Please paste the schema below and click on json-viewer button. The UI will indent the data type based on its level and display its data type on the right. Also you can toggle each data type by clicking the "+" or "-" signs on the left.


Welcome to mubosym’s documentation!¶
Contents:
Created on Sat May 16 18:33:20 2015
@author: oliver
-
class
b_splines_interface.
characteristic_line
(filename, tst=False)¶ The main connection between an external force characterized by a number of points and the mubosym After running the initialization the base-functions are setup (by means of optimized coefficients)
Parameters: - filename – the external file with a list of x y - values (table, separation sign is space), if filename is empty the function f11 is taken instead
- tst – if true the result of the optimization is plotted
-
myfunc
(xx)¶ The lambdified force expression after optimizing the coefficients
Parameters: xx – the distance between two bodies (or markers)
-
myfunc_0
(arg)¶ The analytic force expression after optimizing the coefficients
Parameters: xx – the distance between two bodies (or markers)
-
b_splines_interface.
create_knots
(a, b, n, p)¶ Function to create knots for b-spline basis startup. The distribution on the edges are crucial for the behaviour.
Parameters: - a – the left edge
- b – the right edge
- n – the total number of knots
- p – the number of edge knots, the rest is distributed uniformly
-
b_splines_interface.
f11
(xx)¶ Example of a analytic expression replacing the external point number
Parameters: xx – the distance between two bodies (or markers)
one_body_force_model¶
Created on Wed May 27 18:02:53 2015
@author: oliver
-
class
one_body_force_model_interface.
one_body_force_model
¶ a one body force model consists of:
- coordinate trafo generalized coords -> body coordinates (denoted list of) including pos, vel, orientation, and omega
- force calculator given as a python function with input according to our interface
- some preparation function: lambdifier to include symbolic functions into lambdas
-
calc
(inp)¶ the python function which connects some external model calculation with the mbs model e.g. tire-model, rail model
- input list inp are some relevant model coordinates (out of 12 possible): [ x, y, z, nx, ny, nz, x_pt, y_pt, z_pt, omega_x, omega_y, omega_z ] = inp
- output list is force in cartesian coord. world and torque cartesian coord. world
-
force_lam
(w)¶ the model force/torque via lambdified expressions, input parameter here is always the full state vecor t,q,u Output is the force/toque via the model calc-function the nested input for the calc routine is fully possible written out:
- self.lam_t, self.lam_x, self.lam_y, self.lam_z,
- self.lam_nx, self.lam_ny, self.lam_nz,
- self.lam_x_pt, self.lam_y_pt, self.lam_z_pt,
- self.lam_omega_x self.lam_omega_y, self.lam_omega_z
but can be reduced to a subset
-
lambdify_trafo
(generalized_coords)¶ this is the core function to lambdify the coordinate trafos in general the trafos must be explicitely set via set_coordinate_trafo called from MBSCore (see therein)
-
set_coordinate_trafo
(tr)¶ input function for the coordinate trafo expressions (sympy)
-
trafo_lam
(w)¶ just for reference all coordinate trafos as lambdas (not used at the moment)
simple_tire_model_interface¶
Created on Wed May 27 18:02:53 2015
@author: oliver
-
simple_tire_model_interface.
Pacejka_F_lat
(Fz, alpha, camber)¶ lateral force
Parameters: - Fz ((float)) – Force in vertical direction in N
- alpha ((float)) – slip angle in rad
- camber ((float)) – camber angle in rad
-
simple_tire_model_interface.
Pacejka_F_long
(Fz, slip)¶ longitudinal force
Parameters: - Fz ((float)) – Force in vertical direction in N
- slip ((float)) – relative slip fraction (0..1)
-
class
simple_tire_model_interface.
simple_tire_model
(paras=[])¶ A one body force model consists of:
- coordinate trafo generalized coords -> body coordinates (denoted list of) including pos, vel, orientation, and omega
- force calculator given as a python function with input according to our interface
- some preparation function: lambdifier to include symbolic functions into lambdas
-
force_lam
(w)¶ The model force/torque via lambdified expressions, input parameter here is always the full state vecor t,q,u. Output is the force/toque via the model calc-function the nested input for the calc routine is fully possible written out:
- self.lam_t, self.lam_x, self.lam_y, self.lam_z,
- self.lam_nx, self.lam_ny, self.lam_nz,
- self.lam_x_pt, self.lam_y_pt, self.lam_z_pt,
- self.lam_omega_x self.lam_omega_y, self.lam_omega_z
but can be reduced to a subset
Parameters: w – the generalized coords (float numbers) of the final mbs setup, The order has to be equal the one in calc.
-
lambdify_trafo
(generalized_coords)¶ This is the core function to lambdify the coordinate trafos in general the trafos must be explicitely set via set_coordinate_trafo called from MBSCore (see therein)
Parameters: generalized_coords – the generalized coords (symbols) of the final mbs setup (called in kaneify)
-
set_coordinate_trafo
(tr)¶ Input function for the coordinate trafo expressions (sympy).
Parameters: tr – the transformation expressions as given in the mbs setup for the body
-
trafo_lam
(w)¶ Just for reference all coordinate trafos as lambdas (not used at the moment).
Parameters: w – the generalized coords (float numbers) of the final mbs setup
Created on Fri Apr 3 16:20:11 2015
@author: oliver
-
class
vpython_3d.
BoxObject
(state_vec, p, length, *args, **kwargs)¶ Visual element point object.
Parameters: - state_vec – state vector in the order ???
- p – scaling factor
-
set_orient
(v_orient)¶ set orientation to v_orient.
Parameters: v_orient – new orientation of point object
-
update
()¶
-
class
vpython_3d.
PointObject
(state_vec, p, *args, **kwargs)¶ Visual element point object.
Parameters: - state_vec – state vector in the order ???
- p – scaling factor
-
set_orient
(v_orient)¶ set orientation to v_orient.
Parameters: v_orient – new orientation of point object
-
update
()¶
-
class
vpython_3d.
RodConnection
(state_vec, p, myr, *args, **kwargs)¶ simple rod connection derived from vis.cylinder.
Parameters: - state_vec – state vector
- p –
-
class
vpython_3d.
SpringConnection
(state_vec, p, *args, **kwargs)¶ visual representation of spring connection, derived from vis.helix.
Parameters: - state_vec – state vector
- p –
-
update
()¶ update to the spring connection
-
class
vpython_3d.
Tire
(state_vec, p, *args, **kwargs)¶ Visual element point object.
Parameters: - state_vec – state vector in the order ???
- p – scaling factor
-
set_orient
(v_orient)¶ set orientation to v_orient.
Parameters: v_orient – new orientation of point object
-
update
()¶
-
class
vpython_3d.
Vector_dyn
(v_auf, v_orient, txt, p, *args, **kwargs)¶ dynamic Vector, provides update function.
Parameters: - vauf – origin of the vector
- v_orient – orientation of the vector
- txt – text to be passed to the label
- p – scaling of the vector
-
update
()¶
-
class
vpython_3d.
Vector_stat
(v_auf, v_orient, txt, p, *args, **kwargs)¶ static Vector, it will not be modified.
Parameters: - vauf – origin of the vector
- v_orient – orientation of the vector
- txt – text to be passed to the label
- p – scaling of the vector
-
class
vpython_3d.
animation
(scale)¶ Parameters: - state_vec –
- con_vec –
- con_type –
- txt_vec –
- dt –
keyword_args:
Parameters: - p –
- label –


Time for fungus? Indonesian watchmaker turns to mushroom leather
BANDUNG, Indonesia (Reuters) - A watchmaker in Indonesia’s Bandung city thinks the next step in sustainability is a wristwatch with a strap made out of the complex root structure of a mushroom.
Mycelium leather, as the material is known, is fibrous and tough yet pliable and waterproof, and has been touted as an environmentally-friendly alternative to synthetic products or natural leather made from animal hide.
Erlambang Ajidarma, head of research at Mycotech, the start-up supplying the mycelium leather to make the wrist straps, said his team was inspired by tempeh, a traditional Indonesian savory dish made by fermenting soybeans with fungus.
“Finally we found one mushroom with a mycelium that can be made into binding material,” said Ajidarma, after testing several different types of mushrooms since 2016.
Now, the company grows the fungus on sawdust and then harvests the leather. After scraping off the sawdust, it is dried and then cut to various sizes, depending on the use.
The process is tedious, taking around three weeks to make 10 square meters of material. But Ajidarma thinks it’s worth it.
It costs less to make mycelium leather than to make petroleum-based synthetic leathers, he says, and the mycelium manufacturing process produces a fraction of the carbon dioxide emitted by the cows killed to make real leather.
Ajidarma’s team also uses dyes extracted from leaves, roots and food waste to color the mycelium leather, which they say absorbs dye faster than leather made from animal hide.
Watchmaking company Pala Nusantara cuts and sews the leather into the straps for its watches, which are made with a wooden bezel.
The watches, priced between 900,000 and 1.3 million rupiah ($64 and $93), are mostly sold online, said Andang Maulana Syamsuri, managing director of Pala Nusantara.
And at least one potential customer is interested.
“I would be very interested in a watch made of natural material and plants because I’ve been allergic to a few that I bought in the past,” said Nurcholis Irvan, a customer at a watch shop in Jakarta.


ARCHITECTURE
From the 1920's to present day, Miami has seen an evolving architecture style. To learn more about Architecture in Miami, hover over a card to flip it.
Back to Menu
The Biltmore Hotel
Built in 1926
Designed by Schultze and Weaver and was by John McEntee Bowman and George Merrick as part of the Biltmore hotel chain. When completed it became the tallest building in Florida at 315 feet holding the record until 1928 when the Dade County Courthouse was built.
The Dupont Building
Built in 1925
The Dupont Building was the first skyscraper built after the County courthouse and the bust of 1928. Thus it represents Miami's emergence from the great depression.
The Freedom Tower
Built in 1937
As refugees from Cuba fleeing Fidel Castro's communist regime arrived in Miami during the 1960s, the federal government used the facility to process, document and provide medical and dental services for the newcomers.
The Pink House
Built in 1978
The Pink House brought a new era of architecture to Miami inspired by the Art Deco and Modernist heritage of the city.
Government Center
Built in 1985
Government Center is a skyscraper in the Government Center district of Downtown Miami, Florida, United States. It is the headquarters building of the Miami-Dade County government.
The Colony Hotel
Built in 1935
The Colony, designed in 1935, was one of the early buildings erected during the Art Deco renaissance that revived Miami Beach after the great hurricane of September 1933.
Courtyard Style Apartments
Built through 1910-1930's
Built through the early 1900's, Courtyard Style apartments met the housing demands of the booming city.
Miami Dade College
Built in 1967
Designed by Spillis Candela and Partners, MDC's Kendall Campus empitomizes Mat typology and the raw concrete expressions of Brutalism.
Atlantis
Built in 1982
Atlantus was featured in the opening credits of Miami Vice, the building achieved national fame where it was featured as a set.


Different duration processes in the ready queue, processes have only CPU bursts. A short process arrives later.
| Process | Burst duration (CPU) |
Submission Time |
| P1 | 5 | 0 |
| P2 | 4 | 0 |
| P3 | 7 | 0 |
| P4 | 3 | 0 |
| P5 | 2 | 4 |
All processes arrive in the table order, process "P5" arrives at time 4.
Comments:


To generate proper html code use the template in src/main/mjml with an mjml parser (e.g. use the IntelliJ plugin for MJML or follow the instructions on https://documentation.mjml.io/#usage
Following variables are available:
username: {{username}}
activationUrl: {{activationUrl}}


Why Nepal needs to go to Space
The dream of Space expedition became a reality when the Soviet Union
launched world’s first artificial satellite, the Sputnik 1. Since then, numerous countries
have constantly been trying to develop their space-based infrastructures to an optimum level.
Even for the developing countries like Nepal, Space Exploration shows a huge potential in addressing
the challenges that people stand up which shall help Nepal in acquiring outer space technological
capabilities and speed up its scientific, technical and economic development.


--- layout: post title: pgBadger is moving fast ---
When the pgBadger project started 6 month ago, our primary goal was to build a better performance tool for PostgreSQL. We also wanted it to be an open and dynamic project, built with the help of the Postgres community. So far the result is beyond our expectations : we've received dozens of user requests, bug reports and contributions.
Thanks to this community support, the project goes at a very fast pace ! Today Gilles Darold released pgBadger 2.2. This new version comes with a bunch of exciting new features:
--exclude-user
you can now ignore a user in the generated reports. With --select-only
you generate a report about the read queries...And there's more come ! We're currently working on two major enhancements :
Of course, we will involve the community while working on these two major improvements. If you want to participate and just keep in touch with the project, please join the pgBadger mailing list. In a few week, we will submit the first draft of the new report design.
In a nutshell : If you don't know what pgBadger is, give it a try ! If you already use it, please upgrade to version 2.2 ! And if you've already installed v2.2, stay tuned because version 3 is coming fast !
By the way, we're not alone... The whole postgres community seems to be buzzing with brand new performance tools ! Over the past few weeks, at least 3 interesting projects popped up :
At a personal level, I'm quite happy to see this happening and I bet this is just the beginning of a great move of the community toward better user-friendly tools for the PostgreSQL user base.


I was born in New Jersey, but I moved across the country to Southern California when I was about three years old. After completing two years at my local community college, I transfered to UC Santa Cruz where I where I obtained an undergraduate degree in Cultural Anthropology. I moved to Washington around three years ago and currently live in Seattle with my partner Kinley and our dog Asha.
I am currently enrolled in a six month programming bootcamp at Epicodus where I intend to learn and refine the skills necessary to begin working in the field as soon as I graduate. I chose to enroll because I was unsatisfied with the job opportunities currently available and wanted to persue a more challenging career path where I could continuously hone my skills. Some of the projects that I have created while enrolled are available below. My prior experence with programing has primarily involved working through online courses and books and talking with numerous friends who have persued careers in programming.
In my free time, I like to spend time with my partner and dog, read both fiction (I particularly enjoy mind-bending Philip K. Dick inspired sci-fi and stories with metafiction elements) and nonfiction (typically things that roughly fall into the buckets of history and/or philosophy), play video games(especially the Dark Souls series), and to draw. I also like to go camping in the summer.
A basic website created in html showcasing ordered and unordered lists as well as images and links.
A basic website created in html showcasing ordered and unordered lists as well as images and links.
A basic website created in html about my dog, Asha. It primarily focuses on using lists and images.
A website for a ski resort made in html and css. The site focuses on borders and links to additional pages.
A website for a band created with html and css and showcasing panels, images, and floats.
A website for an animal shelter made in html and css primarily focusing on using grids
A website for a tourist agency made in html, css and Bootstrap to create grids and blockquotes
An attempt at perfectly recreating the Wikipedia homepage using css, html, and Bootstrap.


dBH_mvgauss.Rd
dBH_mvgauss
computes the rejection set of \(dBH_\gamma(\alpha)\) and \(dBH^2_\gamma(\alpha)\), as well as
\(dSU_{\gamma, \Delta}(\alpha)\) and \(dSU^2_{\gamma, \Delta}(\alpha)\) a broad class of step-up procedures for
multivariate z-statistics \(z\sim N(\mu, \Sigma)\). dBH_mvgauss
can handle both one-sided tests
\(H_i: \mu_i \le 0\) or \(H_i: \mu_i \ge 0\), and two-sided tests \(H_i: \mu_i = 0\).
dBH_mvgauss( zvals, Sigma = NULL, Sigmafun = NULL, vars = NULL, side = c("right", "left", "two"), alpha = 0.05, gamma = NULL, niter = 1, tautype = "QC", avals = NULL, avals_type = c("BH", "geom", "bonf", "manual"), geom_fac = 2, eps = 0.05, qcap = 2, gridsize = 20, exptcap = 0.9, is_safe = NULL, verbose = FALSE )
| zvals | a vector of z-values. The marginal variances do not have to be 1. |
|---|---|
| Sigma | the covariance matrix. For very large m, it is preferable to use |
| Sigmafun | the function that takes the row index as the input and outputs the i-th row of the covariance matrix
divided by \(\Sigma_{i, i}\). This is an alternative for |
| vars | the vector of marginal variances \((\sigma_1^2, \ldots, \sigma_m^2)\). Used only with |
| side | a string that takes values in {"right", "left", "two"}, with "right" for one-sided tests \(H_i: \mu_i \le 0\), "left" for one-sided tests, \(H_i: \mu_i \ge 0\), and "two" for two-sided tests \(H_i: \mu_i = 0\). |
| alpha | the target FDR level. |
| gamma | the parameter for the dBH and dSU procedures. The default is |
| niter | the number of iterations. In the current version it can only be 1, for dBH/dSU, or 2, for \(dBH^2\)/\(dSU^2\). |
| tautype | the type of tau function. In the current version, only "QC" (q-value-calibration) is supported with \(\tau(c; X) = cR_{BH}(c) / m\). |
| avals | the a-values in the step-up procedures defined in Appendix C.1. The default is NULL, in which case
|
| avals_type | a string that takes values in {"BH", "geom", "bonf", "manual"}, which determines the type of thresholds in the step-up procedures. See Details. |
| geom_fac | a real number that is larger than 1. This is the growing rate of thresholds when
|
| eps | a real number in [0, 1], which is used to determine \(t_{hi}\) discussed in Section 4.2. |
| qcap | a real number that is larger than 1. It is used to filter out hypotheses with q-values above
|
| gridsize | an integer for the size of the grid used when |
| exptcap | a real number in [0, 1]. It is used by \(dBH^2\)/\(dSU^2\) to filter out hypotheses with
\(g_i*(q_i | S_i)\) below |
| is_safe | a logical or NULL indicating whether the procedure is taken as safe. DON'T set |
| verbose | a logical indicating whether a progress bar is shown. |
a list with the following attributes
rejs
: the indices of rejected hypotheses (after the randomized pruning step if any);
initrejs
: the indices of rejected hypotheses (before the randomized pruning step if any);
cand
: the set of candidate hypotheses for which \(g_i^{*}(q_i | S_i)\) is evaluated;
expt
: \(g_i^{*}(q_i | S_i)\) for each hypothesis in cand
;
safe
: TRUE iff the procedure is safe;
secBH
: TRUE iff the randomzied pruning step (a.k.a. the secondary BH procedure) is invoked;
secBH_fac
: a vector that gives \(\hat{R}_i / R_{+}\) that is defined in Section 2.2. It only shows up
in the output if secBH = TRUE
.
dBH_mvgauss
supports two types of inputs for the covariance matrix.
When the covariance matrix fits into the memory, it can be inputted through Sigma
. The diagonals do not
have to be 1. In this case, Sigmafun
and vars
should be left as their default;
When the covariance matrix does not fit into the memory, it can be inputted through Sigmafun
and
vars
. Sigmafun
should be a function with a single input i
that gives the row index and a vector output \(\Sigma_{i, }/\Sigma_{i, i}\) where \(\Sigma_{i, }\) is the i-th row of \(\Sigma\). The
marginal variances \((\Sigma_{1, 1}, \ldots, \Sigma_{m, m})\) are inputted through vars
. If all marginal
variances are 1, vars
can be left as its default.
dBH_mvgauss
can handle all dSU procedures that are defined in Appendix C.1. with
$$\Delta_{\alpha}(r) = \frac{\alpha a_{\ell}}{m}, r\in [a_{\ell}, a_{\ell + 1}), \ell = 0, 1, \ldots, L$$
for any set of integer a-values \(1\le a_1 < \ldots < a_L\le m\) (with \(a_0 = 0, a_{L+1} = m+1\)). There are two-ways to input the a-values.
(Recommended) use avals_type
while leave avals
as its default. Three types of avals_type
are supported.
When avals_type = "BH"
, the BH procedure is used (i.e. \(a_\ell = \ell, \ell = 1, \ldots, m\));
When avals_type = "geom"
, the geometrically increasing a-values that are defined in Appendix C.1.
are used with the growing rate specified by geom_fac
, whose default is 2;
When avals_type = "bonf"
, the Bonferroni procedure is used (i.e. \(a_1 = 1, L = 1\)).
(Not recommended) use avals
while set avals_type = "manual"
. This option allows any set of
increasing a-values. However, it can be much slower than the recommended approach.
# Generate mu and Sigma for an AR process n <- 100 rho <- 0.8 Sigma <- rho^(abs(outer(1:n, 1:n, "-"))) mu1 <- 2.5 nalt <- 10 mu <- c(rep(mu1, nalt), rep(0, n - nalt)) # Generate the z-values set.seed(1) zvals <- rep(NA, n) zvals[1] <- rnorm(1) for (i in 2:n){ zvals[i] <- zvals[i - 1] * rho + rnorm(1) * sqrt(1 - rho^2) } zvals <- zvals + mu # Run dBH_1(\alpha) for one-sided tests alpha <- 0.05 res <- dBH_mvgauss(zvals = zvals, Sigma = Sigma, side = "right", alpha = alpha, gamma = 1, niter = 1, avals_type = "BH") # Run dBH_1(\alpha) for two-sided tests res <- dBH_mvgauss(zvals = zvals, Sigma = Sigma, side = "right", alpha = alpha, gamma = 1, niter = 1, avals_type = "BH") # Run dBH^2_1(\alpha) for one-sided tests alpha <- 0.05 res <- dBH_mvgauss(zvals = zvals, Sigma = Sigma, side = "right", alpha = alpha, gamma = 1, niter = 2, avals_type = "BH") # Run dBH^2_1(\alpha) for one-sided tests res <- dBH_mvgauss(zvals = zvals, Sigma = Sigma, side = "right", alpha = alpha, gamma = 1, niter = 2, avals_type = "BH") # Run dSU_1(\alpha) with the geometrically increasing a-values for one-sided tests res <- dBH_mvgauss(zvals = zvals, Sigma = Sigma, side = "right", alpha = alpha, gamma = 1, niter = 1, avals_type = "geom", geom_fac = 2) # Run dBY(\alpha) for one-sided tests res <- dBH_mvgauss(zvals = zvals, Sigma = Sigma, side = "right", alpha = alpha, gamma = NULL, niter = 1, avals_type = "BH") # Run dBY^2(\alpha) for one-sided tests res <- dBH_mvgauss(zvals = zvals, Sigma = Sigma, side = "right", alpha = alpha, gamma = NULL, niter = 2, avals_type = "BH") # Input the covariance matrix through \code{Sigmafun} Sigmafun <- function(i){ rho^(abs(1:n - i)) } vars <- rep(1, n) res1 <- dBH_mvgauss(zvals = zvals, Sigmafun = Sigmafun, vars = vars, side = "right", alpha = alpha, gamma = NULL, niter = 1, avals_type = "BH") res2 <- dBH_mvgauss(zvals = zvals, Sigma = Sigma, side = "right", alpha = alpha, gamma = NULL, niter = 1, avals_type = "BH") identical(res1, res2)#> [1] TRUE


Used GHB or Gee Bee's as we called it here for a good 12 months on a regular basis. Seen many occasions of OD's and been through a few myself.
My first embarrassing event on this drug was in combination with alcohol while at a club in my then hometown Canberra. Having already consumed some amount before reaching the place, I with a friend consumed another dose right before entering the venue. Once inside and with a drink in one hand the later dose kicked in and suddenly I was swaying everywhere and making a total fool of myself. I remember the full glass of Bourbon and coke slipping from my grasp and in slow motion falling to the ground and shattering at my feet. After that I only remember falling over tables and taking other peoples drinks before the rest of the night became a blur.
 He then drove me home
[Erowid Note: Driving while intoxicated or tripping is dangerous and irresponsible because it endangers other people. Don't do it!] in my nice Subaru via a football oval where he decided to take my car to do a few AWD donuts with me in the passenger seat although I remember none of this. At his place he let me sleep on the bathroom floor and decided it would be funny to video me and throw glasses of water at me when I jumped up in shock then swayed and fell unconscious again. This lasted a couple hours before I woke up and felt good and clear headed. I then watched his home video and then saw my car covered in grass and mud.  This is a classic G overdose.
Ive since then had many occasions of too much. I've passed out in my car while holding a hamburger to wake up some hours later still holding the burger still with burger in my mouth and wearing the seatbelt (foolish).
I've seen others pass out too. I witnessed a friend measure a 25ml dose out of a bottle finish the dose then to accidentally wash it down with the bottle it came from. Ive seen 'hero's' that had never done it before insist they can handle a big dose to then be sleeping on the patio 10 minutes later for the next 4 hours.
In short it can be dangerous in the wrong environment but the drug is very enjoyable. It enhances the effects of other drugs well and is great with mdma.  Used in public you may embarrass yourself and be in danger but no much worse than alcohol. I really like GHB and would be happy to do it again. I haven't done it for over a year now or any other drug really but it will show up again some day.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


Choose ID Type
ID type
Please select
Prepare to take your ID photo
· Make sure the ID is right side up
· Make sure ID is clear and readable
· Avoid flash or glare


Parses and converts LaTeX math formulas to R's plotmath expressions, used to enter mathematical formulas and symbols to be rendered as text, axis labels, etc. throughout R's plotting system.
| Version: | 0.4.0 |
| Imports: | stringr, magrittr |
| Suggests: | testthat, knitr, ggplot2, plyr, rmarkdown |
| Published: | 2015-11-30 |
| Author: | Stefano Meschiari [aut, cre] |
| Maintainer: | Stefano Meschiari <stefano.meschiari at gmail.com> |
| BugReports: | https://github.com/stefano-meschiari/latex2exp/issues |
| License: | MIT + file LICENSE |
| URL: | http://github.com/stefano-meschiari/latex2exp |
| NeedsCompilation: | no |
| In views: | ReproducibleResearch |
| CRAN checks: | latex2exp results |
| Reference manual: | latex2exp.pdf |
| Vignettes: |
Vignette Title |
| Package source: | latex2exp_0.4.0.tar.gz |
| Windows binaries: | r-devel: latex2exp_0.4.0.zip, r-release: latex2exp_0.4.0.zip, r-oldrel: latex2exp_0.4.0.zip |
| OS X binaries: | r-release: latex2exp_0.4.0.tgz, r-oldrel: latex2exp_0.4.0.tgz |
| Old sources: | latex2exp archive |
| Reverse imports: | dsmodels, dynr, ggtern, pubh |
| Reverse suggests: | lolR |
Please use the canonical form https://CRAN.R-project.org/package=latex2exp to link to this page.


1 Kings 22:38
And one washed the chariot in the pool of Samaria; and the dogs licked up his blood; and they washed his armor; according unto the word of the LORD which he spake.


Your browser does not support the audio element.
I NEED TO GET AWAY
Continue
I cannot do this anymore.
I will be fine. I'll get back to work in a second.
I think I need the day off.


Audiogram
ALPHA
Unsupported Browser
Unfortunately this prototype is only supported in Chrome versions ≥ 46.


Simplified Search | Advanced Search | Documentation
This documentation outlines the functions provided by the simplified search.
Below the single parts of the simplified search are listed and illustraited.
The simplified search page consists of three parts. The upper part merely states the project name, but also offers a link to the simplified search, the ANNIS search tool, and this documentation page.
The middle part consists of a large query box in which a query can be entered. More information about this box is provided below under "Query box" and "Search area".
At the bottom of the page, tickboxes allow the user to constrain the query in the query box to a number of categories. More information on these meta-categories is provided below under "Meta constraints".
The query box is set up to parse the input that it receives in such a way that a more complex ANNIS query can be written. You may enter a single word or multiple word queries.
The parser of the query box also automatically resolves diacritics to the form that occurs in the corpora.
Finally, it is possible to use simple regular expressions in the query box.
The search area specifies how your query is interpreted.
You can choose between a word form search and a lemma search. The word form is the form the word occurs in the text. As word forms there are used simplified forms generated from the transcription.
A lemma is a generalized word form. For example a lemma entry in REM is bruoder (brother). The lemma bruoder can be realized as different word forms, e.g. identical as bruoder, but also as bruder, brvder, pruder or even brudir. Of course the word forms highly depend on the time of their text creation and dialect areas. But it is always the same lemma bruoder represented.
If you are not sure which word forms could possibly occur in the texts or if you do not want to restrict your query on concrete word forms, you should use the lemma search. Of course you still have to know the exact Middle High German lemma entries. A good start for getting these lemma entries is the Middle High German lexicon of Matthias Lexer (in German).
Furthermore you have the option to let your query be part of another word. Choose "Whole word" to simply search your query as typed in. For example if you enter mit in the query box by choosed "Whole word", the string mit is searched and all occurrences of mit are found. If you enter mit into the query box and choose "Word starts with query" (and a word form search), the search finds mit, but also e.g. mite (a word form of the lemma mit(e)), or mitte and mitten (word forms of the lemma mitte). Choose "Word ends on query" to find e.g. goumit (lemma: goumen) or urumit (lemma: vrumen). In all cases also mit will be found.
The meta categories provide constraints on the text search:
If no constraint is set, all texts are searched. Every checked tickbox constrains the searched texts. If you check "12th century", "14th century", "religion" and "East Middle German", only East Middle German texts dating from the 12th and 14th century with religion as their topic are searched through your query.
If you want to formulate more complex and specific queries, you should use the ANNIS search tool directly. This simple search redirects to the ANNIS search tool, but secretly formulates a formal query ANNIS can work up (you can see this query in ANNIS on the left side, if you ran a query with the simplified search).
Every user can formulate such a formal query and let ANNIS search with it. The used formal language is called AQL (ANNIS Query Language). For further information on AQL and its structure see http://annis-tools.org/aql.html.
A number of things that can be typed in for your inspiration:


The "Vertical and Horizontal Inheritance Consistence Analysis" method is described in the following publication: "VHICA: a new method to discriminate between vertical and horizontal transposon transfer: application to the mariner family within Drosophila" by G. Wallau. et al. (2016) <doi:10.1093/molbev/msv341>. The purpose of the method is to detect horizontal transfers of transposable elements, by contrasting the divergence of transposable element sequences with that of regular genes.
| Version: | 0.2.4 |
| Suggests: | ape, plotrix, parallel, seqinr, gtools |
| Published: | 2016-04-05 |
| Author: | Arnaud Le Rouzic |
| Maintainer: | Arnaud Le Rouzic <lerouzic at egce.cnrs-gif.fr> |
| License: | GPL-2 |
| NeedsCompilation: | no |
| CRAN checks: | vhica results |
| Reference manual: | vhica.pdf |
| Package source: | vhica_0.2.4.tar.gz |
| Windows binaries: | r-devel: vhica_0.2.4.zip, r-release: vhica_0.2.4.zip, r-oldrel: vhica_0.2.4.zip |
| OS X binaries: | r-release: vhica_0.2.4.tgz, r-oldrel: vhica_0.2.4.tgz |
Please use the canonical form https://CRAN.R-project.org/package=vhica to link to this page.


{% extends "bootstrap/base.html" %} {% block content %}
Verify Email OTP to access your online wallet
Can't complete email OTP? Use TypingDNA verification instead


|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
public interface NativeJavaCodeGenerator
The NativeJavaCodeGenerator
is the interface used to generate code
of user defined clasess with methods working usually as proxies
of DLL methods
JNIEasy.getJavaCodeGenerator()
| Method Summary | |
|---|---|
void |
generate(java.lang.String filePath,
java.lang.String outputDir)
Generates the code of the user defined native capable classes specified in the XML file located with the filePath parameter. |
void |
generate(java.lang.String filePath,
java.lang.String outputDir,
java.lang.String[] includeImports,
java.lang.String[] excludeImports)
Generates the code of the user defined classes specified in the XML file located with the filePath parameter. |
| Method Detail |
|---|
void generate(java.lang.String filePath, java.lang.String outputDir, java.lang.String[] includeImports, java.lang.String[] excludeImports)
filePath
parameter. The XML file is a XML generation descriptor.
The resulting classes will be saved in the directory specified with the
There is no name convention to XML generation descriptor files,
but is recommended to keep symmetry with the enhancing format:
For instance, if the XML file specified by
In the code generation process, native information of related native
capable classes (parameter or member field types etc), is needed by
the framework, they must be enhanced on filesystem or enhanced
on load: if
Code generation is recommended when mapping C methods of dynamic link libraries
with many exported methods and only a few of them are used in the program.
outputDir
parameter, this directory is the starting point to
resolve relative paths used in XML descriptors.
SimpleClassName.jnieasy.gen.xml
because a generated class can be enhanced (if needed as a native capable class)
and needs a XML enhancement descriptor too.
filePath
includes other XML descriptor file in a relative subdirectory named "mysubdir", then
a described class in this XML, named MyClass
, will be saved on
outputDir + "/mysubdir/MyClass.java"
includeImports
is not null
the on load enhancement is enabled before code generation invoking the method
NativeEnhancer.enableOnLoad(String[],String[])
passing
includeImports
and excludeImports
as parameters, this way related classes not need be enhanced on filesystem.
If includeImports
is null
excludeImports
is ignored.
filePath
- the location of XML file listing the classes to generateoutputDir
- the directory root to save generated filesincludeImports
- the classes to enhance on load if needed. Can be null.excludeImports
- the classes to exclude of enhancing on load. Can be null.
void generate(java.lang.String filePath, java.lang.String outputDir)
filePath
parameter. The XML file is a XML generation descriptor.
Current implementation is:
return generate(filePath,outputDir,null,null);
filePath
- the location of XML file listing the classes to generateoutputDir
- the directory root to save generated filesgenerate(String,String,String[],String[])
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |


Bolivian President Evo Morales has announced his resignation amid unrest over a disputed election...
by EndPlayLA PAZ, Bolivia - LA PAZ, Bolivia (AP) - Bolivian President Evo Morales has announced his resignation amid unrest over a disputed election he had claimed to win.


Chapter 12 Merging Data
12.1 Packages Used in This Chapter
12.2 Relational Databases
Modern databases are huge - think about the amount of information stored at Amazon in the history of each transation, the database where Google logs every single search from every person around the world, or Twitter’s database of all of the tweets (millions each day).
When databases become large, flat spreadsheet style formats are not useful because they create a lot of redundant information, are large to store, and are not efficient to search. Large datasets are instead stored in relational databases - sets of tables that contain unique IDs that allow them to be joined when necessary.
For example, consider a simple customer database. We don’t want to store customer info with our transactions because we would be repeating their name and street address every time they make a new purchase. As a result, we store customer information and transaction information separately.
Customer Database
| CUSTOMER.ID | FIRST.NAME | LAST.NAME | ADDRESS | ZIP.CODE |
|---|---|---|---|---|
| 178 | Alvaro | Jaurez | 123 Park Ave | 57701 |
| 934 | Janette | Johnson | 456 Candy Ln | 57701 |
| 269 | Latisha | Shane | 1600 Penn Ave | 20500 |
Transactions Database
| CUSTOMER.ID | PRODUCT | PRICE |
|---|---|---|
| 178 | video | 5.38 |
| 178 | shovel | 12 |
| 269 | book | 3.99 |
| 269 | purse | 8 |
| 934 | mirror | 7.64 |
If we want to make the information actionable then we need to combine these datasets. For example, perhaps we want to know the average purchase amount from an individual in the 57701 zip code. We cannot answer that question with either dataset since the zip code is in one dataset, and the price is in another. We need to merge the data.
merge( customer.info, purchases )
### CUSTOMER.ID FIRST.NAME LAST.NAME ADDRESS ZIP.CODE PRODUCT PRICE
### 1 178 Alvaro Jaurez 123 Park Ave 57701 video 5.38
### 2 178 Alvaro Jaurez 123 Park Ave 57701 shovel 12.00
### 3 269 Latisha Shane 1600 Penn Ave 20500 book 3.99
### 4 269 Latisha Shane 1600 Penn Ave 20500 purse 8.00
### 5 934 Janette Johnson 456 Candy Ln 57701 mirror 7.64
full.dat <- merge( customer.info, purchases )
full.dat$PRICE[ full.dat$ZIP.CODE == "57701" ]
### [1] 5.38 12.00 7.64
mean( full.dat$PRICE[ full.dat$ZIP.CODE == "57701" ] )
### [1] 8.34
In reality, each purchase would have a purchase ID that is linked to shipping addresses, customer complaints, seller ratings, etc. Each seller would have their own data table with info. Each purchase would be tied to a payment type, which has its own data table. The system gets quite complex, which is why it is important to pay attention to the details of putting the data back together again.
We will cover a few details of data merges that will help you avoid common and very subtle mistakes that can lead to incorrect inferences.
12.3 Set Theory
In order to merge data correctly you need to understand some very basic principles of set theory.
12.3.1 Set Theory Functions
Let’s assume we have two sets: set1=[A,B], set2=[B,C]. Each element in this set represents a group of observations that occurs in the dataset. So B represents people that occur in both datasets, A represents people that occur only in the first dataset, and C represents people that only occur in the second dataset.
We can then describe membership through three operations:
| Operation | Description |
|---|---|
| union: X OR Y | The universe of all elements across all both sets: [A,B,C] |
| intersection: X & Y | The elements shared by both sets: [B] |
| difference: X & ! Y | The elements in my first set, not in my second [A] or [C] |
Let’s see how this might work in practice with an example of members of a study:
| name | group | gender |
|---|---|---|
| frank | treat | male |
| wanda | treat | female |
| sanjay | control | male |
| nancy | control | female |
For this example let’s define set 1 as the treatment group, and set 2 as all women in the study. Note that set membership is always defined as binary (you are in the set or out), but it can include multiple criteria (the set of animals can contains cats, dogs, and mice).
treated <- name[ group == "treat" ]
treated
### [1] "frank" "wanda"
females <- name[ gender == "female" ]
females
### [1] "wanda" "nancy"
Now we can specify group belonging using some convenient set theory functions: union(), setdiff(), and intersect().
union( treated, females )
### [1] "frank" "wanda" "nancy"
intersect( treated, females )
### [1] "wanda"
setdiff( treated, females )
### [1] "frank"
setdiff( females, treated )
### [1] "nancy"
It is very important to note that union() and intersect() are symmetric functions, meaning intersect(x,y) will give you the same result as intersect(y,x). The setdiff() function is not symmetric, however.
12.3.2 Set Theory Using Logical Operators
Typically you will define your groups using logical operators, which perform the exact same funciton as set theory functions but are a little more expressive and flexible.
Let’s use the same example above where x=“treatment” and y=“female”, then consider these cases:
Who belongs in each group?
| name | group | gender |
|---|---|---|
| frank | treat | male |
| wanda | treat | female |
| sanjay | control | male |
| nancy | control | female |
# x
name[ group == "treat" ]
### [1] "frank" "wanda"
# x & y
name[ group == "treat" & gender == "female" ]
### [1] "wanda"
# x & ! y
name[ group == "treat" & gender != "female" ]
### [1] "frank"
# x | y
name[ group == "treat" | gender == "female" ]
### [1] "frank" "wanda" "nancy"
Who belongs in these groups?
- !x & !y
- x & ! ( x & y )
- ( x | y ) & ! ( x & y )
12.4 Merging Data
The Merge Function
The merge function joins two datasets. The function requires two datasets as the arguments, and they need to share a unique ID variable. Recall the example from above:
merge( customer.info, purchases )
### CUSTOMER.ID FIRST.NAME LAST.NAME ADDRESS ZIP.CODE PRODUCT PRICE
### 1 178 Alvaro Jaurez 123 Park Ave 57701 video 5.38
### 2 178 Alvaro Jaurez 123 Park Ave 57701 shovel 12.00
### 3 269 Latisha Shane 1600 Penn Ave 20500 book 3.99
### 4 269 Latisha Shane 1600 Penn Ave 20500 purse 8.00
### 5 934 Janette Johnson 456 Candy Ln 57701 mirror 7.64
The important thing to keep in mind is that the default merge operation uses the intersection of the two datasets. It will drop all elements that don’t occur in both datasets. We may want to fine-tune this as to not lose valuable data and potentially bias our analysis. As an example, no illegal immigrants will have social security numbers, so if you are merging using the SSN, you will drop this group from the data, which could impact your results.
With a little help from the set theory examples above, we can think about which portions of the data we wish to drop and which portions we wish to keep.
| Argument | Usage |
|---|---|
| all=F | DEFAULT - new dataset contains intersection of X and Y (B only) |
| all=T | New dataset contains union of X and Y (A, B & C) |
| all.x=T | New dataset contains A and B, not C |
| all.y=T | New dataset contains B and C, not A |
Here is some demonstrations with examples adapted from the R help file.
authors
### surname nationality deceased
### 1 Tukey US yes
### 2 Tierney US no
### 3 Ripley UK no
### 4 McNeil Australia no
### 5 Shakespeare England yes
books
### name title
### 1 Tukey Exploratory Data Analysis
### 2 Venables Modern Applied Statistics
### 3 Ripley Spatial Statistics
### 4 Ripley Stochastic Simulation
### 5 McNeil Interactive Data Analysis
### 6 R Core Team An Introduction to R
# adding books to the author bios dataset ( set B only )
merge(authors, books, by.x = "surname", by.y = "name")
### surname nationality deceased title
### 1 McNeil Australia no Interactive Data Analysis
### 2 Ripley UK no Spatial Statistics
### 3 Ripley UK no Stochastic Simulation
### 4 Tukey US yes Exploratory Data Analysis
# adding author bios to the books dataset ( set B only )
merge(books, authors, by.x = "name", by.y = "surname")
### name title nationality deceased
### 1 McNeil Interactive Data Analysis Australia no
### 2 Ripley Spatial Statistics UK no
### 3 Ripley Stochastic Simulation UK no
### 4 Tukey Exploratory Data Analysis US yes
# keep books without author bios, lose authors without books ( sets A and B )
merge( books, authors, by.x = "name", by.y = "surname", all.x=T )
### name title nationality deceased
### 1 McNeil Interactive Data Analysis Australia no
### 2 R Core Team An Introduction to R <NA> <NA>
### 3 Ripley Spatial Statistics UK no
### 4 Ripley Stochastic Simulation UK no
### 5 Tukey Exploratory Data Analysis US yes
### 6 Venables Modern Applied Statistics <NA> <NA>
# keep authors without book listed, lose books without author bios ( sets B and C )
merge( books, authors, by.x = "name", by.y = "surname", all.y=T )
### name title nationality deceased
### 1 McNeil Interactive Data Analysis Australia no
### 2 Ripley Spatial Statistics UK no
### 3 Ripley Stochastic Simulation UK no
### 4 Shakespeare <NA> England yes
### 5 Tierney <NA> US no
### 6 Tukey Exploratory Data Analysis US yes
# dont' throw out any data ( sets A and B and C )
merge( books, authors, by.x = "name", by.y = "surname", all=T )
### name title nationality deceased
### 1 McNeil Interactive Data Analysis Australia no
### 2 R Core Team An Introduction to R <NA> <NA>
### 3 Ripley Spatial Statistics UK no
### 4 Ripley Stochastic Simulation UK no
### 5 Shakespeare <NA> England yes
### 6 Tierney <NA> US no
### 7 Tukey Exploratory Data Analysis US yes
### 8 Venables Modern Applied Statistics <NA> <NA>
Also note that the order of your datasets in the argument list will impact the inclusion or exclusion of elements.
merge( x, y, all=F ) EQUALS merge( y, x, all=F )
merge( x, y, all.x=T ) DOES NOT EQUAL merge( y, x, all.x=T )
12.4.1 The by.x and by.y Arguments
When you use the default merge() function without specifying the variables to merge upon, the function will check for common variable names across the two datasets. If there are multiple, it will join the shared variables to create a new unique key. This might be problematic if that was not the intent.
Take the example of combining fielding and salary data in the Lahman package. If we are not explicit about the merge variable, we may get odd results. Note that they two datasets share four ID variables.
intersect( names(Fielding), names(Salaries) )
### [1] "playerID" "yearID" "teamID" "lgID"
# merge id
int <- intersect( names(Fielding), names(Salaries) )
paste( int[1],int[2],int[3],int[4], sep="." )
### [1] "playerID.yearID.teamID.lgID"
To avoid problems, be explicit using the by.x and by.x arguments to control which variable is used for the merge.
head( merge( Salaries, Fielding ) )
### yearID teamID lgID playerID salary stint POS G GS InnOuts PO A E DP
### 1 1985 ATL NL barkele01 870000 1 P 20 18 221 2 9 1 0
### 2 1985 ATL NL bedrost01 550000 1 P 37 37 620 13 23 4 3
### 3 1985 ATL NL benedbr01 545000 1 C 70 67 1698 314 35 4 1
### 4 1985 ATL NL campri01 633333 1 P 66 2 383 7 13 4 3
### 5 1985 ATL NL ceronri01 625000 1 C 91 76 2097 384 48 6 4
### 6 1985 ATL NL chambch01 800000 1 1B 39 27 814 299 25 1 31
### PB WP SB CS ZR
### 1 NA NA NA NA NA
### 2 NA NA NA NA NA
### 3 1 9 65 24 1
### 4 NA NA NA NA NA
### 5 6 20 69 29 1
### 6 NA NA NA NA NA
head( merge( Salaries, Fielding, by.x="playerID", by.y="playerID" ) )
### playerID yearID.x teamID.x lgID.x salary yearID.y stint teamID.y
### 1 aardsda01 2010 SEA AL 2750000 2009 1 SEA
### 2 aardsda01 2010 SEA AL 2750000 2015 1 ATL
### 3 aardsda01 2010 SEA AL 2750000 2006 1 CHN
### 4 aardsda01 2010 SEA AL 2750000 2008 1 BOS
### 5 aardsda01 2010 SEA AL 2750000 2013 1 NYN
### 6 aardsda01 2010 SEA AL 2750000 2012 1 NYA
### lgID.y POS G GS InnOuts PO A E DP PB WP SB CS ZR
### 1 AL P 73 0 214 2 5 0 1 NA NA NA NA NA
### 2 NL P 33 0 92 0 1 1 0 NA NA NA NA NA
### 3 NL P 45 0 159 1 5 0 1 NA NA NA NA NA
### 4 AL P 47 0 146 3 6 0 0 NA NA NA NA NA
### 5 NL P 43 0 119 1 5 0 0 NA NA NA NA NA
### 6 AL P 1 0 3 0 0 0 0 NA NA NA NA NA
12.5 Non-Unique Observations in ID Variables
In some rare instances, you will need to merge to datasets that have non-singular elements in the unique key ID variables, meaning each observation / individual appears more than one time in the data. Note that in this case, for each occurance of an observation / individual in your X dataset, you will merge once with each occurance of the same observation / individual in the Y dataset. The result will be a multiplicative expansion of the size of your dataset.
For example, if John appears on four separate rows of X, and three seperate rows of Y, the new dataset will contain 12 rows of John (4 x 3 = 12).
dataset X contains four separate instances of an individual [ X1, X2, X3, X4 ]
dataset Y contains three separate instances of an individual [ Y1, Y2, Y3 ]
After the merge we have one row for each pair:
X1-Y1
X1-Y2
X1-Y3
X2-Y1
X2-Y2
X2-Y3
X3-Y1
X3-Y2
X3-Y3
X4-Y1
X4-Y2
X4-Y3
For example, perhaps a sales company has a database that keeps track of biographical data, and sales performance. Perhaps we want to see if there is peak age for sales performance. We need to merge these datasets.
bio <- data.frame( name=c("John","John","John"),
year=c(2000,2001,2002),
age=c(43,44,45) )
performance <- data.frame( name=c("John","John","John"),
year=c(2000,2001,2002),
sales=c("15k","20k","17k") )
# correct merge
merge( bio, performance, by.x=c("name","year"), by.y=c("name","year") )
### name year age sales
### 1 John 2000 43 15k
### 2 John 2001 44 20k
### 3 John 2002 45 17k
# incorrect merge
merge( bio, performance, by.x=c("name"), by.y=c("name") )
### name year.x age year.y sales
### 1 John 2000 43 2000 15k
### 2 John 2000 43 2001 20k
### 3 John 2000 43 2002 17k
### 4 John 2001 44 2000 15k
### 5 John 2001 44 2001 20k
### 6 John 2001 44 2002 17k
### 7 John 2002 45 2000 15k
### 8 John 2002 45 2001 20k
### 9 John 2002 45 2002 17k
It is good practice to check the size (number of rows) of your dataset before and after a merge. If it has expanded, chances are you either used the wrong unique IDs, or your dataset contains duplicates.
12.5.1 Example of Incorrect Merge
Here is a tangible example using the Lahman baseball dataset. Perhaps we want to examine the relationship between fielding position and salary. The Fielding dataset contains fielding position information, and the Salaries dataset contains salary information. We can merge these two datasets using the playerID field.
If we are not thoughtful about this, however, we will end up causing problems. Let’s look at an example using Kirby Pucket.
kirby.fielding <- Fielding[ Fielding$playerID == "puckeki01" , ]
head( kirby.fielding )
### playerID yearID stint teamID lgID POS G GS InnOuts PO A E DP
### 83848 puckeki01 1984 1 MIN AL OF<PHONE_NUMBER> 438 16 3 4
### 85157 puckeki01 1985 1 MIN AL OF<PHONE_NUMBER> 465 19 8 5
### 86489 puckeki01 1986 1 MIN AL OF<PHONE_NUMBER> 429 8 6 3
### 87896 puckeki01 1987 1 MIN AL OF<PHONE_NUMBER> 341 8 5 2
### 89264 puckeki01 1988 1 MIN AL OF<PHONE_NUMBER> 450 12 3 4
### 90685 puckeki01 1989 1 MIN AL OF<PHONE_NUMBER> 438 13 4 3
### PB WP SB CS ZR
### 83848 NA NA NA NA NA
### 85157 NA NA NA NA NA
### 86489 NA NA NA NA NA
### 87896 NA NA NA NA NA
### 89264 NA NA NA NA NA
### 90685 NA NA NA NA NA
nrow( kirby.fielding )
### [1] 21
kirby.salary <- Salaries[ Salaries$playerID == "puckeki01" , ]
head( kirby.salary )
### yearID teamID lgID playerID salary
### 280 1985 MIN AL puckeki01 130000
### 917 1986 MIN AL puckeki01 255000
### 1610 1987 MIN AL puckeki01 465000
### 2244 1988 MIN AL puckeki01 1090000
### 2922 1989 MIN AL puckeki01 2000000
### 3717 1990 MIN AL puckeki01 2816667
nrow( kirby.salary )
### [1] 13
kirby.field.salary <- merge( kirby.fielding, kirby.salary, by.x="playerID", by.y="playerID" )
head( select( kirby.field.salary, yearID.x, yearID.y, POS, G, GS, salary ) )
### yearID.x yearID.y POS G GS salary
### 1 1984 1985 OF<PHONE_NUMBER>00
### 2 1984 1986 OF<PHONE_NUMBER>00
### 3 1984 1987 OF<PHONE_NUMBER>00
### 4 1984 1988 OF<PHONE_NUMBER>000
### 5 1984 1989 OF<PHONE_NUMBER>000
### 6 1984 1990 OF<PHONE_NUMBER>667
nrow( kirby.field.salary )
### [1] 273
21*13
### [1] 273
What we have done here is taken each year of fielding data, and matched it to every year of salary data. We can see that we have 21 fielding observations and 13 years of salary data, so our resulting dataset is 273 observation pairs.
This merge also makes it difficult to answer the question of the relationship between fielding position and salary if players change positions over time.
The correct merge in this case would be a merge on a playerID-yearID pair. We can create a unique key by combining playerID and yearID using paste():
head( paste( kirby.fielding$playerID, kirby.fielding$yearID, sep=".") )
### [1] "puckeki01.1984" "puckeki01.1985" "puckeki01.1986" "puckeki01.1987"
### [5] "puckeki01.1988" "puckeki01.1989"
But there is a simple solution as the merge function also allows for multiple variables to be used for a merge() command.
12.6 The %in% function
Since we are talking about intersections and matches, I want to briefly introduce the %in% function. It is a combination of the two.
The intersect() function returns a list of unique matches between two vectors.
data(Salaries)
data(Fielding)
intersect( names(Salaries), names(Fielding) )
### [1] "yearID" "teamID" "lgID" "playerID"
The match() function returns the position of matched elements.
The %in% function returns a logical vector, where TRUE signifies that the element in y also occurs in x. In other words, does a specific element in y belong to the intersection of x,y.
This is very useful for creating subsets of data that belong to both sets.
12.7 The Match Function
Often times we do not need to merge data, we may just need sort data in one dataset so that it matches the order of another dataset. This is accomplished using the match() function.
Note that we can rearrange the order of a dataset by referencing the desired position.
x <- c("Second","Third","First")
x
### [1] "Second" "Third" "First"
x[ c(3,1,2) ]
### [1] "First" "Second" "Third"
The match() function returns the positions of matches of its first vector to the second vector listed in the arguments. Or in other words, the order that vector 2 would need to follow to match vector 1.
x <- c("A","B","C")
y <- c("B","D","A")
cbind( x, y )
### x y
### [1,] "A" "B"
### [2,] "B" "D"
### [3,] "C" "A"
match( x, y )
### [1] 3 1 NA
match( y, x) # not a symmetric operation!
### [1] 2 NA 1
# In the y vector:
#
# [3]=A
# [1]=B
# [NA]=D (no match)
order.y <- match( x, y )
y[ order.y ]
### [1] "A" "B" NA
We can see that match() returns the correct order to put y in so that it matches the order of x. In the re-ordered vector, the first element is the original third element A, the second element is the original first element B, and there is no third element because D did not match anything in x.
Note the order of arguments in the function:
match( data I want to match to , data I need to re-order )
We can use this position information to re-order y as follows:
x <- sample( LETTERS[1:15], size=10 )
y <- sample( LETTERS[1:15], size=10 )
cbind( x, y )
### x y
### [1,] "M" "K"
### [2,] "G" "L"
### [3,] "E" "F"
### [4,] "O" "B"
### [5,] "C" "D"
### [6,] "B" "I"
### [7,] "N" "M"
### [8,] "I" "E"
### [9,] "K" "O"
### [10,] "F" "N"
order.y <- match( x, y )
y.new <- y[ order.y ]
cbind( x, y.new )
### x y.new
### [1,] "M" "M"
### [2,] "G" NA
### [3,] "E" "E"
### [4,] "O" "O"
### [5,] "C" NA
### [6,] "B" "B"
### [7,] "N" "N"
### [8,] "I" "I"
### [9,] "K" "K"
### [10,] "F" "F"
# Note the result if you confuse the order or arguments
order.y <- match( y, x )
y.new <- y[ order.y ]
cbind( x, y.new )
### x y.new
### [1,] "M" "O"
### [2,] "G" NA
### [3,] "E" "N"
### [4,] "O" "I"
### [5,] "C" NA
### [6,] "B" "E"
### [7,] "N" "K"
### [8,] "I" "F"
### [9,] "K" "B"
### [10,] "F" "M"
This comes in handy when we are matching information between two tables. For example, in GIS the map regions follow a specific order but your data does not. Create a color scheme for levels of your data, and then re-order the colors so they match the correct region on the map. In this example, we will look at unemployment levels by county.
library( maps )
data( county.fips )
data( unemp )
map( database="county" )
# assign a color to each level of unemployment, red = high, gray = medium, blue = low
color.function <- colorRampPalette( c("steelblue", "gray70", "firebrick") )
color.vector <- cut( rank(unemp$unemp), breaks=7, labels=color.function( 7 ) )
color.vector <- as.character( color.vector )
head( color.vector )
### [1] "#B28282" "#B28282" "#B22222" "#B25252" "#B28282" "#B22222"
# doesn't look quite right
map( database="county", col=color.vector, fill=T, lty=0 )
# what went wrong here?
# our unemployment data (and thus the color vector) follows a different order
cbind( map.id=county.fips$fips, data.id=unemp$fips, color.vector )[ 2500:2510 , ]
### map.id data.id color.vector
### [1,] "48011" "47149" "#B28282"
### [2,] "48013" "47151" "#B22222"
### [3,] "48015" "47153" "#B22222"
### [4,] "48017" "47155" "#B28282"
### [5,] "48019" "47157" "#B28282"
### [6,] "48021" "47159" "#B22222"
### [7,] "48023" "47161" "#B25252"
### [8,] "48025" "47163" "#B3B3B3"
### [9,] "48027" "47165" "#B28282"
### [10,] "48029" "47167" "#B25252"
### [11,] "48031" "47169" "#B25252"
# place the color vector in the correct order
this.order <- match( county.fips$fips, unemp$fips )
color.vec.ordered <- color.vector[ this.order ]
# colors now match their correct counties
map( database="county", col=color.vec.ordered, fill=T, lty=0 )
title( main="Unemployment Levels by County in 2009")
Note that elements can be recycled from your y vector:
x <- c("A","B","C","B")
y <- c("B","D","A","F")
cbind( x, y )
### x y
### [1,] "A" "B"
### [2,] "B" "D"
### [3,] "C" "A"
### [4,] "B" "F"
match( x, y )
### [1] 3 1 NA 1
order.y <- match( x, y )
y.new <- y[ order.y ]
cbind( x, y.new )
### x y.new
### [1,] "A" "A"
### [2,] "B" "B"
### [3,] "C" NA
### [4,] "B" "B"


What is the legal name of your practice?:
Your Resource List
Helpers
Helpers not available in the demo
Computers
Add one Computer
Mobile Devices
Mobile Devices not available in the demo
Office Equipment
Add one File Cabinet
Cloud Services
Cloud Services not available in the demo
Your Computer
Name this computer:
Computer Type: Pull-down laptop or desktop
Computer Brand: Pull-down Apple or MS
Full-Disk Encryption?: yes/no options
Anti-Virus/Anti-Malware Software?: Updating pull-down depending on brand choice
Firewall Active?: yes/no options
Your File Cabinet
Coming soon
Coming soon


an elegant and modern git repository viewer
GitList is actively maintained by many developers around the world. You can fork the project on GitHub and start contributing yourself. The project is continuously integrated, so we can improve code quality and build effortlessly.
The GitList mailing list is where you can find support and where we discuss the development of the project.
This is a list of developers who have contributed to GitList. Thank you! :)


--- layout: post title: How to Be Silicon Valley date: 2006-10-07 00:00:00 categories: business personal ---
How to Be Silicon Valley: "I think you only need two kinds of people to create a technology hub: rich people and nerds"
Brighton has lots of nerds. And quite a few rich people. Hmm...


 Find design inspiration right here! Whether you are looking for Kitchen tiles, Bathroom tiles or tiles to spruce up your living room, your search ends here. Explore a wide variety of tile designs that suit your requirements.
Walls can strengthen the entire theme of a space, particularly with the perfect wall tiles. Tiles are not just fashionable; they also prevent walls from retaining stains and splashes. So if you are planning on revamping your house, browse through NITCO's impressive designer wall tiles collection.
Glazed vitrified tiles are durable and high on functionality. Due to their shine, they also look aesthetically pleasing. They can easily enhance the appeal of any room as they come in various designs, finishes, and textures like wood, stone, slate and more.
If you are looking at redoing your house, flooring is one of the most critical aspects involved. Floor tiles can completely transform the entire look and vibe of a space. Fromvitrified flooring to ceramic floor tiles, numerous types of floor tiles are available at NITCO.
Introducing NITCO Cut to Size! With over 300 natural marble designs, pick your choice of slab With no wastage of time and material, this is one of the most sought-after services in the industry. We will ensure to use the maximum area of marble to minimize any wastage.
Ceramic tiles are one of the most used materials for floors as well as walls. These tiles can be used extensively in kitchens, bathrooms, bedrooms and even living rooms or commercial spaces. Their popularity is attributable to the characteristics of ceramic - durable, adaptable, various colours and textures and different finishes
When looking at refurbishing a house or office, it is always advisable to explore the options of ceramic floor and ceramic wall tiles. Their application is relatively easy, and these are also among the tiles that are easiest to maintain. Ceramic tiles can be used extensively in living rooms, kitchens, bathrooms, bedrooms, or even commercial spaces.
Introducing our all-new range of marble window sills and door frames, that serve as accent pieces in every space. Not only are they functional, sturdy support structures to your windows and doors, but they also add to the detail and décor of a space. Available in both standard and custom sizes, these items come ready-to-fit for you!
NITCO has a range of commercial tiles that can adorn spaces like restaurants, hospitals, malls, hotels and other public places. With tiles that can uplift the look of all spaces and that are functional, the brand covers a wide variety of options that are suitable for different purposes. NITCO's commercial tiles give your space a fresh and elegant look.
The bedroom should be with some of the most remarkable designs as you put your heart and soul into making this space look beautiful in your way. NITCO offers many bedroom tiles for you to select and create your space look drop-dead gorgeous. Browse through our varied options of bedroom tiles design as well as those that are a treat for those who love minimalism.
With more than 60 years of design, tech and innovation expertise, NITCO Tiles & Marble is a trusted name in the tile manufacturer industry. From designer bathroom tiles and designer kitchen tiles to outdoor tiles and commercial tiles, NITCO caters to all your needs. NITCO's pan-India presence is facilitated through 9 exclusive display centres, 380 active dealers and 1800 active sub dealers, we offer an unmatched sales experience as our foundation lies in product quality and impeccable customer service. Since our inception in 1953, we have remained rooted in our core values of Innovation, Product Quality and Customer First, making us one of the best tile companies in India. With our exhaustive collection of wall tiles, floor tiles & marble, we have expanded our customer base overseas and have a sizable clientele in various other countries. Our vision is to improve the quality and design of products continuously and to increase customer focus. NITCO easily ranks higher in the list of best tile brands in India.
Visit Company Website


On Week 9, I did some fun electronic experiments with the Arduino electronics kit. I followed instructions from the guide and here are some of the experiments that I did.


- The third piece of news.The third piece of news.The third piece of news.


Quickstart will generate a resource protected by an access policy based on standard GA4GH visa types – ControlledAccessGrants and ResearcherStatus, for controlled access or access by institutional affiliation, respectively. Policies of the two types, ControlledAccessGrants and ResearcherStatus, are shared between all Quickstart resources.
Resources generated by this form are unique (and can be freely edited in the advanced settings).


WATCH | Beast 'arm wrestles' Whitey Basson as Boks braai with Johann Rupert and friends
by Riaan Grobler and Sharlene RoodFormer Shoprite executive and billionaire Whitey Basson got a taste of the strength of Tendai "Beast" Mtawarira as the two arm wrestled at a braai celebrating the 2019 Rugby World Cup champions, hosted by Richemont chairperson Johann Rupert on his farm L'Ormarins near Franschhoek on Saturday.
In a video Rupert posted on Twitter, Mtawarira and Basson can be seen "wrestling" things out on a table as bystanders chant "Whitey! Whitey!"
"You're winning, you're winning..." Mtawarira encourages the former business mogul.
Basson then "beats" the mighty Beast, who sports a huge smile throughout the affair.
Rupert jokingly told News24 that "Beast was wonderful - he could have put Whitey in hospital".
"After 2007 [when John Smit's team won the World Cup], we hosted a braai for the Boks at L’Ormarins. The 2019 team had asked if they could also have a braai if they won. That was last weekend, but unfortunately [Springbok captain] Siya [Kolisi] and [Springbok coach] Rassie [Erasmus] could not be there - they had to attend an awards event in Durban," Rupert said.
Rupert posted a series of pictures of the braai on his Twitter feed, at one point remarking: "Die manne is GROOT" (these guys are huge), and "Now I know what poor England had to face" as he poses between locks RG Snyman and Eben Etzebeth, who tower head and shoulders above the businessman.
Rupert also sent this picture of a thrilled Mtawarira and Springbok fly-half Handrè Pollard after they were congratulated by American football quarterback Tom Brady via Facetime.
"Brady is an old friend," Rupert said.