Copyright (C) 2006 2007 Thomas Becker
Contents
- Overview
- Quick Tutorial
- Supported Compilers
- Download and Installation
- Feedback and Bug Reports
- Acknowledgements
- Appendix
The class template any_iterator is the analog
to boost::function for iterators. It allows you to have a
single variable and assign to it iterators of different types, as long
as these iterators have a suitable commonality.
For a more in-depth view of type erasure in
general and my any_iterator in particular,
see my October 2007 article at The C++ Source.
The class template any_iterator is declared like this:
template<
class Value,
class CategoryOrTraversal,
class Reference = Value&,
class Difference = std::ptrdiff_t
>
class any_iterator;
For the second template argument, you may use the old-style STL
iterator categories such
as std::random_access_iterator_tag , or you may use the
new traversal categories as set forth in the
Boost
iterator library.
Here is an iterator type that can hold
an std::vector<double>::const_iterator as well as
an std::list<double>::const_iterator :
typedef any_iterator<
double const,
boost::bidirectional_traversal_tag
>
any_number_iterator;
any_number_iterator number_iter;
std::vector<double> number_vector(42, 43.0);
number_iter = number_vector.begin();
double d = *number_iter;
std::list<double> number_list(42, 44.0);
number_iter = number_list.begin();
d = *number_iter;
Next, suppose you want the variable number_iter to
hold not only the vector and list iterators, but also a Boost
transform iterator which, upon dereferencing, multiplies by 100.0,
like this:
number_iter = boost::make_transform_iterator(
number_vector.begin(),
boost::bind(std::multiplies<double>(), _1, 100)
);
The any_iterator 's assignment operator is not enabled for
this assignment, and you will get an error message such as
binary '=': no operator found which takes a right-hand operand of
type...
Why is this assignment not allowed? The transform
iterator's operator* returns a double . If we
were to pass that through our number iterator, which currently has a
reference type of double const& , then the number
iterator's operator* would be returning a reference to a
temporary local variable. The solution is to change
the any_iterator 's reference type so that it is no longer
a reference:
typedef any_iterator<
double const, // Value
boost::bidirectional_traversal_tag,
double const // Reference
>
any_number_iterator;
Now all of the assignments above will compile and work. It should be
intuitively clear by now what the rules are for assigning "concrete"
iterators to any_iterator variables. For example,
an any_iterator that's a
bidirectional iterator will not accept something that's a
forward iterator only, like an iterator into a singly linked
list. That would not make sense: a variable whose iterator category is
bidirectional cannot at runtime hold something that is only a forward
iterator. Similarly, our any_number_iterator would not accept
anything that dereferences to something that does not convert to
a double . After such an assignment, dereferencing would
not make sense anymore.
You can find more examples in the
file any_iterator_demo.hpp that comes with the
any_iterator
distribution. The exact, formal rules for assigning "concrete"
iterators to any_iterator variables are stated
below.
Suppose you have two concrete iterators that point into the same sequence
but are of different type:
std::vector<int> int_vector;
std::vector<int>::iterator it = int_vector.begin();
std::vector<int>::const_iterator cit = int_vector.begin();
These two iterators are of course interoperable: the comparison
it == cit
will compile, run, and give the correct answer (true in this case). If, however,
you wrap these two iterators into any_iterator s, then their
interoperability is lost. For example, if you define
typedef any_iterator<int, boost::random_access_traversal_tag, int const &>
random_access_const_iterator_to_int;
random_access_const_iterator_to_int ait_1 = it;
random_access_const_iterator_to_int ait_2 = cit;
then the comparison
ait_1 == ait_2; // bad comparison!
behaves as if you were comparing iterators into different sequences: the behavior is undefined!
(In my implementation, you will get an assertion in debug mode and a null pointer dereferencing
in release mode.)
This behavior is most certainly highly undesirable and extremely dangerous. In fact, it is so bad
that I had at one point decided to declare the idea of the any_iterator infeasible.
But then it occurred to me that this pitfall is not entirely specific to the any_iterator .
It occurs with any type-erasing class that implements binary operators. Therefore, it is perhaps
beneficial to put all this out there and alert people to the problem.
Acknowledgment: I believe the first person to spot this problem with interoperability was
Thomas Witt. The issue was pointed out to me independently by Sergei Politov.
The extra cost of an operation such as dereferencing or incrementing
an any_iterator is one level of indirection and a virtual
function call. Construction and destruction of
an any_iterator object involve one heap access each.
Instantiations of the any_iterator class template are
Standard conforming iterators. Therefore, it would theoretically be
possible to assign an object of one any_iterator type to
a variable of another any_iterator type. However, this
would lead to nesting levels greater than 1. Consequently, the
overhead of using an any_iterator could increase to
several level of indirections and several virtual function
calls. Therefore, assignments that would lead to
nested any_iterator objects are not allowed. Instead,
there are certain conversions between any_iterator types
that behave nicely insofar as they do not cause nesting levels deeper
than 1. The exact rules for these conversions are stated
below.
The constructor that creates an any_iterator object
from a "concrete" iterator is currently explicit. This is an
unfortunate limitation that is caused by a
technicality having to do with an arcane limitation of the
SFINAE principle.
This annoyance will go away
once concepts
will be available in C++.
For now, this means that a "concrete" iterator never converts to
an any_iterator . There are only two ways to get a
"concrete" iterator object into an any_iterator variable:
either by ordinary assignment, as in
std::vector<int> vect;
any_iterator<int, std::forward_iterator_tag> ait;
ait = vect.begin();
or using explicit construction:
std::vector<int>;
any_iterator<
int,
std::forward_iterator_tag
> ait_1(vect.begin()); // fine
any_iterator<
int,
std::forward_iterator_tag
> ait_2 = vect.begin(); // error, requires non-explicit copy ctor
The any_iterator has been tested under Microsoft VC7.1,
Microsoft VC8, Microsoft VC9, gcc 3.2.4, gcc 3.4.2, gcc 4.0.3,
and gcc 4.1.2.
There is a metafunction named make_any_iterator_type which
takes an iterator type as its argument and produces an instantiation
of the any_iterator class template with the same iterator
traits. In other words, it allows you to create
an any_iterator type "by example."
typedef
make_any_iterator_type<
std::vector<int>::iterator
>::type ait;
This has the same effect as
typedef any_iterator<int, std::random_access_iterator_tag> ait;
The any_iterator be downloaded from
here.
The download contains the source code, this HTML documentation, a demo
.cpp file, and regression tests.
The directory any_iterator in the download contains the file
any_iterator.hpp and a subdirectory
named detail . To use the any_iterator , you
must include any_iterator.hpp and make sure the header
files in the subdirectory detail are found
by any_iterator.hpp . The any_iterator
currently lives in the namespace IteratorTypeErasure .
The any_iterator makes ample use of Boost libraries; however, it uses
only header files. Therefore, no Boost binaries are needed. Just make sure that
Boost is in your include path.
If you wish to build and run the regression tests, you will find solution files for
Microsoft VC7.1 and Microsoft VC8 and a makefile for gcc in the corresponding subdirectories
of the directory regression_tests . If you use the makefile, you will of course
have to fix the path variables to match your development environment. The Microsoft
solution files should work out of the box, except for the fact that you have to fix the include
directories so that the Boost headers are found.
Click
to send feedback and bug reports concerning the any_iterator .
I am indebted to Dave Abrahams, Christopher Baus, Fred Bertsch, Don
Harriman, and Thomas Witt for their input to my efforts regarding
iterator type erasure.
Suppose that some_any_iterator is an instantiation of
the any_iterator class template with value type,
traversal tag, reference type, and difference type equal
to AnyItValue , AnyItTraversal ,
AnyItReference , and AnyItDifference ,
respectively. Assume further that some_iterator is an
iterator type with value type, traversal tag, reference type, and
difference type equal
to ItValue , ItTraversal ,
ItReference , and ItDifference , respectively.
Then a variable of type some_any_iterator will accept an
object of type some_iterator if and only if the following
four conditions are met:
-
ItValue converts to AnyItValue .
-
ItTraversal
and AnyItTraversal are equal, or the former is
derived from the latter. This means that
some_iterator 's traversal category is equal to or better than
that of some_any_iterator .
-
The following are all true:
-
ItReference converts
to AnyItReference .
-
If
AnyItReference is a
reference, then so is ItReference .
-
If
AnyItReference and ItReference are
both references, then the following is true: after stripping const
qualifiers and references from AnyItReference
and ItReference , the two are either the same, or the
former is a base class of the latter.
The second and third of the three conditions above ensure that no
situation is allowed where some_any_iterator 's
operator* would return a reference to a
temporary.
-
If
some_any_iterator is a random access iterator, then
ItDifference and AnyItDifference are
convertible to each other both ways. Here, we need convertibility in
both directions because the difference type occurs as an argument type
as well as a result type of iterator operators.
Let ait_source and ait_target be two
different instantiations of the any_iterator class
template. Then there is a conversion from ait_source
to ait_target if and only if either
-
The traversal category of
ait_source is better than or
equal to the traversal category of ait_target , and all
other iterator traits are exactly the same,
or
-
ait_target is a const iterator version of ait_source .
Back to top
|


Police watchdog recommends criminal charges against Kamloops Mounties
The IIO is recommending charges against three Kamloops officers
B.C.’s police watchdog is recommending criminal charges against three Kamloops RCMP officers.
The Independent Investigations Office announced on Monday that it has forwarded a report to Crown prosecutors recommending assault charges for one Mountie and criminal driving charges relating to the alleged conduct of three officers.
The investigation stems from an early-morning Dec. 8, 2018, collision between an unmarked police car and a stolen pickup truck.
READ MORE: B.C.’s police watchdog investigating Kamloops crash involving alleged speeder
At the time, police told IIO investigators the truck had previously failed to stop.
The truck’s driver was injured during the arrest. It will be up to Crown prosecutors to decide whether any charges will be laid.
READ MORE: Two killed in Kamloops crash were TRU international students


In Practice Mode, card meanings are hidden until you tap the card. Once the meaning is revealed, you can indicate whether you got it right or wrong. If you know the word already, or simply don't like it, you can press bury it - the card will immediately become Learned.
Using the Actions button, you can add the card to other sets (including your starred words), tweet the word, or report a correction.
The first time you get a card right, it moves from Studying to Right 1x. Each time you get it right, it will be promoted to a higher level.
Get it right five times and it will be marked as Learned. The progress pop-up shows detailed results for the current set. Tap the progress bar to display it.
Note that cards that are Learned will still appear - just much less often. Chinese Flash is making sure you haven't forgetten them!
Your goal is to get
each card right 5 times.
Good luck!


4th January 2015
Today we are looking at ruby classes - and we are going to construct a car class. You can think of the class as a way of creating our car and class methods as actions we want our car to do. First up - creating the car
1. Create the basic car
Constructing the car class is as simple as initiliazing it using the class
approach. The code below allows us to create a new class Car and initializes a new instance variable @car. Instance variables can be referenced and accessed by class methods (actions that the class can take) :
class Car
def initialize
@car = ""
end
end
2. Going vroom vroom...
So to have our car do anything we need to create some methods
inside our class which will be accesses by any new car we create ...
class Car
def initialize
@car = ""
@driver =""
end
def type
puts "Please enter your car type here:"
@car = gets.chomp
end
def driver
puts "Please tell me what type of driver you are here:"
@driver = gets.chomp
end
def vroom
puts "My #{@car} likes to go, vroom vroooommm..."
 Watching our car in method action ...
Getting our car to do things is as simple as initializing a new car and calling the methods we created for it. See below for an example of a Toyota car driven by a terrible driver - clearly noone we know ...
my_wheels = Car.new
my_wheels.type // Toyota
my_wheels.driver // terrible
my_wheels.vroom // My Toyota likes to go, vroom vroooommm...
my_wheels.reliability // I drive a Toyota and I am a terrible driver!


USER_NAME
Automation Testing
dashboard
Dashboard
content_copy
Add test scenario
content_copy
List test scenario
Dashboard
Toggle navigation
notifications
Notifications
Add testing scenario
Complete the following fields
Nume scenariu
Add scenario
Configure testing scenario
Complete the following fields
ID scenariu
Add GUI elements (please provide the same name as in the next files)
Add input filled elements (please provide the same name as in the next files)
Add video of scenario
Add cursor
Functions
API Functions:
Pages
Elements location:
Update Profile


RecipeScape is an interface for analyzing cooking processes at scale with three main visualization components: (a) RecipeMap provides clusters of recipes with respect to their structural similarities (b) RecipeDeck provides in-depth view and pairwise comparisons of recipes (c) RecipeStat provides usage patterns of cooking actions and ingredients.
Computational Pipeline that uses Part-of-Speech tagger and human annotation to convert recipe text into a tree representation, and calculates pairwise distance to visualize the similarities.
Data Gathering: In the data gathering step, we crawl all search results for a
queried dish, like chocolate chip cookie and tomato pasta, from recipe websites that use
the schema.org’s Recipe scheme.
Parsing: We use off the shelf POS tagger and human annotation to parse tokens of the
crawled recipes. More detail is provided in the section below on annotation interface.
Similarity Comparison: In order to obtain similarities between the recipes, we use a
tree edit distance, a commonly used technique for comparing tree structures. However,
to incorporate the semantic difference between individual cooking actions and ingredients
in capturing the structural difference, we dynamically adjust the weights associated with
the relabel operations.
These weights are calculated using the cosine similarities of words from a pre-trained word
embedding model.
Distance Matrix: This similarity information is stored in a pairwise distance
matrix, where each element is the tree edit distance between the corresponding recipes. The
distance matrix is then converted into x,y coordinates using the Gram matrix.
Hierarchical Clustering: We used hierarchical clustering to group recipes with
procedural similarities.
Please cite our work if you use our annotated data!
recipes from "Chocolate Chip Cookie" query
recipes from "Tomato Pasta" query
Poster for HCI @ KAIST 2018 Winter Workshop
@inproceedings{chang2018recipescape, title={RecipeScape: An Interactive Tool for Analyzing Cooking Instructions at Scale}, author={Chang, Minsuk and Guillain, L{\'e}onore V and Jung, Hyeungshik and Hare, Vivian M and Kim, Juho and Agrawala, Maneesh}, booktitle={Proceedings of the 2018 CHI Conference on Human Factors in Computing Systems}, pages={451}, year={2018}, organization={ACM} }
While our most recent paper is getting ready for publication, you can access our previous exploration here - Link to LBW Paper. The interface and the computational details have changed, but the overall approach is similar.
Slides for HCI@KAIST Workshop - 2017.02.02
@inproceedings{chang2017recipescape, title={Recipescape: Mining and analyzing diverse processes in cooking recipes}, author={Chang, Minsuk and Hare, Vivian M and Kim, Juho and Agrawala, Maneesh}, booktitle={Proceedings of the 2017 CHI Conference Extended Abstracts on Human Factors in Computing Systems}, pages={1524--1531}, year={2017}, organization={ACM} }


This was my summer project in 2013 done while my training in hp. This project is aimed at creating a web application that focuses on lodging complains by victims. The systems will maintain a secure data base where data can stored or fetched from. These systems enhance the ability of law professionals to coordinate care by providing a victim’s case information and visit history at the place and time that it is needed.
This website is an integrated crime management system that is deployed on a 2 tier architecture methodology. This includes a GUI where the users are provided with there respective activities and a physical layer consisting of the database.The basic designing is done by HTML, CSS and Javascript whereas the backend is a combination of PHP-Mysql.
The functional requirements included points like First Information Report, Missing Person Report, Anonymous Report, Check case status, Admin Login.
While the non-functional requirements included points like Minimum Speed of 144Kbps, Backend password protected, Compatible with any O.S with internet connectivity, New modules can be easily incorporated.
According to the function and non-functional requirements mentioned earlier, we proceeded with the project. We were a team of five and as the team leader, i divided the workfore for the swift completion of the project. This project was capable of storing information provided by the victims, according to the forms provided by the website, so that it can be accessed by the police officers on the administrater's side.


Chapter 4 Histograms
Histograms (and their variants, such as density plots and dot plots) serve as a useful tool for understanding the distribution of a single variable. For a histogram to work well, the variable of interest should take on enough values to require “binning” or lumping several values into the same column of the figure. This usually works for variables that we think of as continuous, such as income, age, effective number of political parties, GDP, number of casualties, etc.
4.1 NOMINATE Data
To see how histograms work, let’s work with estimates of the ideology of the U.S. House of Representatives. These data are called DW-NOMINATE Scores and are available at voteview.com. The cleaned data set nominate.csv
includes the 100th through the 114th Congresses and contains a variable called ideology
that captures a representative’s ideology.
These data are at the legislator-Congress level, so that each row in the data set represents an individual legislator in a particular Congress. More negative values indicate a more liberal representative. More positive values indicate a more conservative representative. For example, Ron Paul is one of the most conservative representatives in the data set with a score of about 0.86. Dennis Kucinich is among the most liberal and has a score of about -0.58.
To get started, let’s load the cleaned data.
# load packages
library(tidyverse)
# load data
nominate <- read_csv("data/nominate.csv")
# note: make sure the file 'nominate.csv' is in the 'data' subdirectory
We can use the glimpse()
function (part of tidyverse) to check that we properly load the data and get a quick overview. It shows us the variable names, the types of variables we’re working with (e.g., character, integer, double), and the first few values.
## Rows: 7,080
## Columns: 7
## $ congress <dbl> 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, …
## $ chamber <chr> "House", "House", "House", "House", "House", "House", "House…
## $ state <chr> "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AK", "AZ", "AZ", …
## $ district <dbl> 2, 4, 3, 5, 6, 1, 7, 1, 2, 3, 5, 4, 1, 3, 1, 4, 2, 36, 10, 2…
## $ party <chr> "Republican", "Democrat", "Democrat", "Democrat", "Democrat"…
## $ name <chr> "DICKINSON, William Louis", "BEVILL, Tom", "NICHOLS, William…
## $ ideology <dbl> 0.398, -0.213, -0.042, -0.175, -0.060, 0.373, -0.085, 0.279,…
I’ve given the variables very descriptive names, but if you need more information, look in my codebook.
4.2 Histograms: geom_histogram()
Now let’s try a histogram.
To do this, we’ll use R package ggplot2, which is part of tidyverse. When we ran library(tidyverse)
, it automatically loaded ggplot2. If we hadn’t already run library(tidyverse)
, we could run library(ggplot2)
.
Though ggplot2 is a complex package, we’ll get some sense of how it works this semester. It is well-documented online, so feel free to read about it as much as you want or need.
4.2.1 The Three Critical Components
There are three critical components to each plot created using ggplot2, which we’ll refer to as a “ggplot.”
- the data: a formal data frame in R.
- the aesthetics: the relationship between the variables in the data set and the aesthetics of the plotted objects–location, color, size, shape, etc.
- the geometry: the type of plot.
There are other components, such as scales, statistics, and coordinate systems, but these the three critical components usually provide what we need.
4.2.2 Drawing a Histogram
- data: the first argument to
ggplot()
. Because the variable we want to plot,ideology
is contained in the data framenominate
, we usenominate
as the first argument. - aesthetic: the second argument to
ggplot()
. Because we want to create a histogram, we wantideology
to correspond to the location along the horizontal-axis. To create this correspondence, we useaes(x = ideology)
as the second argument. - geometry: added to
ggplot()
with+
. Because we want a histogram, we usegeom_histogram()
. (It’s weird to add a function to another function with+
. And it is unusual. Nothing else in R works quite like this. It’s how ggplot2 works, though.)
# specify data and aesthetic, then add the geometry
ggplot(nominate, aes(x = ideology)) + geom_histogram()
This histogram makes sense. We have a grouping of Democrats (presumably) on the left and a grouping of Republicans (again, presumably) on the right. You could probably come up with a model that explains why there are few politicians in the center.
There are three subtle points that I should emphasize about the line ggplot(nominate, aes(x = ideology)) + geom_histogram()
.
- The first argument supplied to
ggplot()
is the data. The second argument is the aesthetics. - The second argument,
aes(...)
is itself a function. This function just creates the “aesthetic mapping,” a link between the variables in the data set and space, color, size, shape, etc, in the chart. geom_histogram()
is also a function, but it is added to the plot using+
. We’ll see several other functions that can be added to the plot.
Review Exercises
- List and describe the three critical components of a ggplot.
- In the following snippet of code, label the data, the aesthetics, and the geometry:
ggplot(nominate, aes(x = ideology)) + geom_histogram()
. - In this section, we’ve seen three new functions:
ggplot()
,aes()
, andgeom_histogram()
. Describe what each one does and how to use it.
4.2.3 But geom_histogram()
uses counts!
FPP uses density on the vertical-axis, not counts. geom_histogram()
uses counts by default.
This is important, because if the bin widths of the histograms are not equal, then counts create a misleading histogram. However, if the bin widths are equal, then counts and densities produce identically shaped histograms. (The vertical axis has a different scale, though.)
Because we tend to use equal bin widths in practice, it often doesn’t matter whether we use counts or densities.
If you want to change the default behavior, add y = ..density..
to the aesthetics. (By default, geom_histogram()
sets y = ..count..
.)
4.3 Filtering: filter()
Above, I plot the distribution of ideology scores for 15 different Congresses (the 100th through the 114th) in the same histogram.
Let’s create a histogram for the 100th Congress only.
To do this, first create a data set that contains only cases from the 100th Congress
To create a subset of nominate
that only contains the 100th Congress, use the filter()
function (part of tidyverse). The first argument to filter()
is the data frame to be filtered and the second argument is a logical statement that identifies the cases to keep.
# filter the 100th congress
nominate100 <- filter(nominate, congress == 100)
# quick look
glimpse(nominate100)
## Rows: 441
## Columns: 7
## $ congress <dbl> 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, …
## $ chamber <chr> "House", "House", "House", "House", "House", "House", "House…
## $ state <chr> "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AK", "AZ", "AZ", …
## $ district <dbl> 2, 4, 3, 5, 6, 1, 7, 1, 2, 3, 5, 4, 1, 3, 1, 4, 2, 36, 10, 2…
## $ party <chr> "Republican", "Democrat", "Democrat", "Democrat", "Democrat"…
## $ name <chr> "DICKINSON, William Louis", "BEVILL, Tom", "NICHOLS, William…
## $ ideology <dbl> 0.398, -0.213, -0.042, -0.175, -0.060, 0.373, -0.085, 0.279,…
Use this new data frame to draw the histgram.
Repeat that process, but for the 114th Congress.
# subset data to only 114th congress
nominate114 <- filter(nominate, congress == 114)
# quick look
glimpse(nominate114)
## Rows: 441
## Columns: 7
## $ congress <dbl> 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, …
## $ chamber <chr> "House", "House", "House", "House", "House", "House", "House…
## $ state <chr> "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AK", "AZ", "AZ", …
## $ district <dbl> 3, 7, 2, 5, 1, 6, 4, 1, 8, 3, 1, 4, 6, 9, 2, 7, 5, 1, 3, 2, …
## $ party <chr> "Republican", "Democrat", "Republican", "Republican", "Repub…
## $ name <chr> "ROGERS, Mike Dennis", "SEWELL, Terri", "ROBY, Martha", "BRO…
## $ ideology <dbl> 0.338, -0.390, 0.367, 0.600, 0.544, 0.779, 0.361, 0.279, 0.7…
Review Exercises
- Explain what the
filter()
function does and how to use it. What are the first and second arguments? What type of object does it return? Usehelp(filter)
for the details.
4.4 Faceting: facet_wrap()
Let’s investigate this divergence in the parties more carefully.
Is the left hump actually Democrats? Is the right hump actually Republicans?
Apply a facet to the histogram. A facet simply breaks the data frame into subsets and draws one histogram per subset.
Create a facet by adding the function facet_wrap()
to the plot. You’ll have to specify the faceting variable as an argument to the facet_wrap()
function. In this case, we’ll do it by party
, adding + facet_wrap(vars(party))
(i.e., “create a facet by the variable party”) to the ggplot we’ve been using.
# build histogram
ggplot(nominate100, aes(x = ideology)) +
geom_histogram() +
facet_wrap(vars(party))
Indeed, the left hump is Democrats and the right hump is Republicans.
Review Exercises
- What does a facet do to a plot?
- Explain what the
facet_wrap()
function does and how to use it. - Suppose I added
+ facet_wrap(party)
. Would that work? What is missing? - Suppose you
+ facet_wrap(vars(state))
toggplot(nominate100, aes(x = ideology)) + geom_histogram()
. What would happen? facet_grid()
offers an alternative method to faceting. How is it different fromfacet_wrap()
? You might find this documentation helpful. With an example, show how to usefacet_grid()
.
4.5 Density Plots: geom_density()
FPP sometimes uses a rough sketch of a histogram using a smooth curve rather than a complete histograms with vertical bars.
For our purposes, a density plot is a smooth curve that approximates a histogram.
We can easily create a density plot rather than a histogram by using geom_density()
as the geometry rather than geom_histogram()
.
Review Exercises
- How is a density plot similar to and different from a histogram? The proceedure for estimating the density is actually complicated and there are several ways to do it. I care about the intuition.
- What does the function
geom_density()
do and how do you use it?
4.6 Color and Fill
4.6.1 Color
A density plot has the advantage it uses less ink. Because of this, we could use color rather than faceting to distinguish Republicans and Democrats.
To distinguish Republicans and Democrats with color, add color = party
to the aesthetics.
This look really good! Since we are most interested in the overlap between the parties, I think this density plot makes more sense for us, so let’s stick with it.
4.6.2 Fill
Instead of coloring the lines differently, you can “fill” the density with different colors. While the color aesthetic represents the color of the line itself, the fill aesthetic represents the fill inside the line.
To distinguish between the parties using fill, add fill = party
to the aesthetics.
4.6.3 Alpha
Notice that the Republican fill (blue-green) completely covers the Democrat fill (orange-red). But here’s a hint. The alpha
argument to geom_density()
controls the transparency. alpha = 0
is completely transparent. alpha = 1
is not transparent at all.
# build density plot
ggplot(nominate100, aes(x = ideology, fill = party)) +
geom_density(alpha = 0.5)
This slight transparency makes both distributions visible, even when the two overlap.
Review Questions
- Explain the difference between the color and fill aesthetics for density plots.
- Use color to show the separate distributions of ideology scores for all 15 Congresses. It this useful?
- Explain how alpha transparency works and why you might use it. Suppose I used
alpha = 0.1
instead ofalpha = 0.5
in the plot above. How would the plot change?
4.7 Labels: labs()
By default, ggplot()
uses the variable names to label the axes and legend. By default, there is no title, subtitle, or caption.
You will usually want to improve the axis labels and legends. You will sometimes want to add a title, subtitle, and/or caption. Make these changes by adding the labs()
function to the plot.
To the labs()
function, supply one argument per aesthetic, such as x
, y
, color
, or fill
. You can also supply arguments for title
, subtitle
, or caption
if you wish. These argument are character strings (surrounded by quotes), such as "Ideology Score"
or "A Density Plot of Ideology Scores for the 100th Congress"
.
# build density plot
ggplot(nominate, aes(x = ideology, fill = party)) +
geom_density(alpha = 0.5) +
labs(x = "Ideology Score",
y = "Density",
fill = "Party",
title = "A Density Plot of Ideology Scores for the 100th Congress",
subtitle = "There Are Few Moderates in Congress",
caption = "Data Source: DW-NOMINATE from voteview.com")
This plot looks pretty nice.
Review Exercises
- By default, how does
ggplot()
label the axes and legends? - How can you change the default labels? How can you add a title, subtitle, or caption?
- Explain what the
labs()
function does and how to use it. - Explain, in as much detail as you can, what each part the last block of code above does.
4.8 Themes: theme_bw()
and Others
Use themes to control the overall look of our ggplots. The theme controls elements such as the color of the background, the font family and size, the color and size of the grid, etc.
There are the six themes provided with ggplot2.
| Theme | Description |
|---|---|
theme_grey() |
The signature ggplot2 theme with a grey background and white gridlines, designed to put the data forward yet make comparisons easy. |
theme_bw() |
The classic dark-on-light ggplot2 theme. May work better for presentations displayed with a projector. |
theme_linedraw() |
A theme with only black lines of various widths on white backgrounds, reminiscent of a line drawings. Serves a purpose similar to theme_bw() . |
theme_light() |
A theme similar to theme_linedraw() but with light grey lines and axes, to direct more attention towards the data. |
theme_minimal() |
A minimalist theme with no background annotations. |
theme_classic() |
A classic-looking theme, with x and y axis lines and no gridlines. |
Notice what happens when you add theme_bw()
(my favorite!) to the plot.
# build density plot
ggplot(nominate100, aes(x = ideology, fill = party)) +
geom_density(alpha = 0.5) +
theme_bw()
If you are interested, the ggthemes
package includes several other themes.
| Theme | Description |
|---|---|
theme_economist() |
based on the Economist |
theme_economist_white() |
based on the Economist |
theme_excel() |
based on Excel |
theme_few() |
based on Few’s “Practical Rules for Using Color in Charts” |
theme_fivethirtyeight() |
based on fivethirtyeight.com plots |
theme_gdocs() |
based on Google docs |
theme_igray() |
inverse grey |
theme_pander() |
based on the pander package |
theme_solarized() |
based on the Solarized palette |
theme_solarized_2() |
based on the Solarized palette |
theme_stata() |
based on default Stata graphics |
theme_tufte() |
based on Tufte–minimum ink, maximum data |
theme_wsj() |
based on Wall Street Journal |
Try the the infamous (famously ugly) Excel theme.
# load packages
library(ggthemes) # for additional themes and even more fun!
# build density plot
ggplot(nominate100, aes(x = ideology, fill = party)) +
geom_density(alpha = 0.5) +
theme_excel()
Review Exercises
- What are themes in ggplot2? What do they control/change?
- How do you change the theme of a ggplot?
- What are a few theme options from ggplot2? From ggthemes?
- Try a few different themes from both ggplot2 and ggthemes. What is your favorite and why?
4.9 Putting It All Together
We’ll add two things back in. First, we’ll put out nice labels back in. Second, let’s go back to the nominate
data frame (we’ve been using nominate100
) and facet by Congress.
# build density plot
ggplot(nominate, aes(x = ideology, fill = party)) +
geom_density(alpha = 0.5) +
facet_wrap(vars(congress)) +
labs(x = "Ideology Score",
y = "Density",
fill = "Party",
title = "A Density Plot of Ideology Scores for the 100th Congress",
subtitle = "There Are Few Moderates in Congress",
caption = "Data Source: DW-NOMINATE from voteview.com") +
theme_bw()
4.10 Saving Plots: ggsave()
It is quite easy to save a ggplot as a .png
or some other file. You just use the function ggsave()
, which, by default, saves the last plot you created.
- Create the plot you want.
- Decide the file type you want to save your figure as.
.png
is a fine choice for our purposes. - Choose where you want to save your figure. This should be somewhere in your working directory. I use
doc/figs/
. - Choose a compact, descriptive name for your figure. For our final density plot, perhaps use
ideology-by-congress.png
. - Use
ggsave()
.
There are three important arguments to ggsave()
.
filename
: This is the first argument toggsave()
. This is the file path. Given the choices above, it’s"doc/figs/ideology-density-by-congress.png"
.height
: Explicitly name this argument. It controls the height of the figure (in inches, by default).height = 4
is a good starting point, but experiment.width
: Explicitly name this argument. It controls the width of the figure (in inches, by default).width = 5
is a good starting point, but experiment.
# save last plot as png
ggsave("doc/figs/ideology-density-by-congress.pdf", height = 5, width = 8)
Just to review and wrap up, here is the fill R script that I might use to create and save this figure.
# load packages
library(tidyverse) # loads readr, ggplot2, and others
# load data
nominate <- read_csv("data/nominate.csv") # data are in the data/ subdirectory
# quick look at the data
glimpse(nominate)
# build plot
ggplot(nominate, aes(x = ideology, fill = party)) +
geom_density(alpha = 0.5) +
facet_wrap(vars(congress)) +
labs(x = "Ideology Score",
y = "Density",
fill = "Party",
title = "A Density Plot of Ideology Scores for the 100th Congress",
subtitle = "There Are Few Moderates in Congress",
caption = "Data Source: DW-NOMINATE from voteview.com") +
theme_bw()
# save last plot as png to the figs subfolder of the doc subfolder
ggsave("doc/figs/ideology-density-by-congress.pdf", height = 5, width = 8)
Review Exercises
- Explain how to save a ggplot. Be sure to discuss each of the five steps.
- Identify and describe each of the three arguments we usually supply to
ggsave()
. - Explain, in as much detail as you can, what each part the last block of code above does.


| Number of Classes | Line Coverage | Mutation Coverage | Test Strength | Mutation Score |
|---|---|---|---|---|
| 3 | 99% | 52% | 69% | 98%
Killed: 57
Uncertain: 0
|
| Name | Line Coverage | Mutation Coverage | Test Strength | Mutation Score |
|---|---|---|---|---|
| DefaultMessagingConfigurer.java | 100% |
50% |
67% |
100%
Killed: 21
Uncertain: 0
|
| MessagingConfigurerAdapter.java | 100% |
57% |
72% |
80%
Killed: 4
Uncertain: 0
|
| SendMessageRetryablePredicates.java | 89% |
52% |
70% |
100%
Killed: 32
Uncertain: 0
|


This is to test the position property. If the following text is positioned to the left and down, the test passes.
This is to test the position property. If the following text is positioned below and to the left, the test passes.
This is to test the position property. If the following text is positioned below, the test passes.


Contains general {@link javax.xml.bind.annotation.adapters.XmlAdapter XmlAdapter} implementations.
@author Andras Belicza


Example 1: A bare bones sample app that contains multiple surfaces, multiple screen factories, and screens that show themselves after a delay. See sample-app.js for the app.
Example 2: A single surface app that allows you to page through a slide show. See slideshow.js for the code.
Example 3: An example using un-compiled code with a pre-compiled bundle, using the externed interface. View source to see the code.


Book Club Meetings
Welcome As, to the Book Club Meetings Page. Here you can find upcoming Book Club meetings, that users have created. These meetings are a great place to share your thoughts and opinions (I can already hear you) about your favourite books and hopefully others will join you in celebreating your favourite authors! Or get together and tear down a poorly written piece... It happens..
How this works; so you can either find an upcoming book club meetin gthat you would like to take part in, these are held over whichever video conferencing call software is flavour of the month at the times specified. Click the date and time and meeting type to reveal further information and join the meeting.
You can also create and edit your own Book Club meeting. Simply, sign up or be an existing member and the options will be there for you to add a Book club meeting. We do advise that you give people enough time to either re-read the book you wish to talk about or to plan time into their busy calenders. Either way you are in control of your own book Club meeting. The meetings below are due to take place in the coming weeks days and months.
Meetings
You need to be logged in to add a new Book club meeting
-
assignmentCatch 22 book discussion - Jun 09, 2020 - 12:00 PMMeeting Description: A good olde chat about the classic book
Meeting Added By: Darren
Meeting add on: 10 June 2020
-
assignmentThe Expanse Book Meeting - Jun 30, 2020 - 10:25 PMMeeting Description: Reschuled due to rain
Meeting Added By: Darren
Meeting add on: 10 June 2020
-
assignmentThe Lord of The Rings - Sep 18, 2020 - 05:36 PMMeeting Description: chat about all things tolkien
Meeting Added By: Darren
Meeting add on: 10 June 2020
-
assignmentMurder She Wrote fan group - Jul 25, 2020 - 10:18 PMMeeting Description: General fan group chat about the series we all love
Meeting Added By: Pysched
Meeting add on: 11 June 2020
-
assignmentDoctor Who fan club - Jul 25, 2020 - 03:20 PMMeeting Description: Who is your favourite doctor!! Let the time war begin
Meeting Added By: Pysched
Meeting add on: 11 June 2020
-
assignmentLee Child Fan CLub - Jun 26, 2020 - 07:24 PMMeeting Description: Die trying is the book we are reviewing this time
Meeting Added By: Darren
Meeting add on: 13 June 2020
-
assignmentJohn Sandford's Lucas Davenport - Jun 01, 2020 - 09:45 AMMeeting Description: Talk about character evolution and context of technology advances through the series
Meeting Added By: Malia
Meeting add on: 14 June 2020


|
| Value |
Description |
Notes |
|
| 01 |
Early notification |
Use for a complete record issued earlier than approximately six months before publication |
| 02 |
Advance notification (confirmed) |
Use for a complete record issued to confirm advance information approximately six months before publication; or for a complete
record issued after that date and before information has been confirmed from the book-in-hand
|
| 03 |
Notification confirmed on publication |
Use for a complete record issued to confirm advance information at or just before actual publication date; or for a complete
record issued at any later date
|
| 04 |
Update (partial) |
In ONIX 3.0 only, use when sending a ‘block update’ record. In previous ONIX releases, ONIX updating has generally been by
complete record replacement using code 03, and code 04 is not used
|
| 05 |
Delete |
Use when sending an instruction to delete a record which was previously issued. Note that a Delete instruction should NOT
be used when a product is cancelled, put out of print, or otherwise withdrawn from sale: this should be handled as a change
of Publishing status, leaving the receiver to decide whether to retain or delete the record. A Delete instruction is only
used when there is a particular reason to withdraw a record completely, eg because it was issued in error
|
| 08 |
Notice of sale |
Notice of sale of a product, from one publisher to another: sent by the publisher disposing of the product |
| 09 |
Notice of acquisition |
Notice of acquisition of a product, by one publisher from another: sent by the acquiring publisher |
| 12 |
Update – SupplyDetail only |
ONIX Books 2.1 supply update – <SupplyDetail> only (not used in ONIX 3.0) |
| 13 |
Update – MarketRepresentation only |
ONIX Books 2.1 supply update – <MarketRepresentation> only (not used in ONIX 3.0) |
| 14 |
Update – SupplyDetail and MarketRepresentation |
ONIX Books 2.1 supply update – both <SupplyDetail> and <MarketRepresentation> (not used in ONIX 3.0) |
| 88 |
Test update (Partial) |
ONIX 3.0 only. Record may be processed for test purposes, but data should be discarded. Sender must ensure the <RecordReference>
matches a previously-sent Test record
|
| 89 |
Test record |
Record may be processed for test purposes, but data should be discarded. Sender must ensure the <RecordReference> does not
match any previously-sent live product record
|
|


Abhinav Doe
Full stack developer
Account Setting
email address
password
change your password
Location
choose ...
USA
France
Spain
UK
India
Personal info:
first name
last name
user name
Bio
Social:
LinkedIn
Github
Twitter
StackOverflow
Website
Facebook
Update


post_title: 'NewsTicker – A' author: Claudius Weinberger post_excerpt: "" layout: page permalink: /newsticker-2 sslider_nolink: - "1" ---
Foxx, ArangoDB’s JS application framework, comes in handy for applications where most of the business logic is done by the frontend (like a mobile app). Foxx lets you set up a lean secure backend in very short time.


HOW TO MAKE AN AMERICAN QUILT A film review by Christopher Null Copyright 1995 Christopher Null
I am dumbfounded about where to begin writing about this experiment-in-filmmaking-gone-terribly-wrong, HOW TO MAKE AN AMERICAN QUILT. Some of the best actresses working in film (Anne Bancroft, Ellen Burstyn, Winona Ryder, Jean Simmons, Lois Smith, Samantha Mathis, and Claire Danes, to name a few) appear in this movie. And I can't begin to imagine how such a wide array of talents agreed to appear in such a dreadful picture.
Ryder plays the cheeky Finn, a precocious grad student pondering a marriage proposal. Having second thoughts, she decides to spend the summer with a gaggle of quilting relatives and their friends, just to sort things out. Well, we see right off the bat that this probably wasn't such a great idea, because each and every one of these people is completely insane.
For some bizarre, sadistic motive, each of the ladies begins to tell Finn the warped story of her life, wherein we have the luxury of viewing cutesy flashbacks which inevitably include adultery, self-pity, insecurity, more adultery, pathetic whining, and/or a lot of just plain bad advice. And get this: all this so-called "wisdom" is the "theme" for the latest quilt they're working on--Finn's wedding quilt.
 When she feels bad about it later, one of the quilters (don't even bother trying to keep them straight, as some 8 zillion characters are introduced in the first 5 minutes) advises her to *never* tell her fiancee about the affair. Well, how comforting.
Maybe I didn't get it because I'm just a guy. Maybe I just don't understand "quilt humor." But this film is simply awful. The way I see it, there's nothing wrong with the acting; it's the story and the actresses' parts. (I do give Bancroft and Smith a few kudos for making me laugh ... twice.) Director Jocelyn Moorhouse and especially screenwriter Jane Anderson should both be blacklisted.
Be warned, stay away from this one. If this is really how to make an American quilt, I'll just sleep on the floor covered with a burlap sack.
RATING: *1/2
\-------------------------------\ |* Unquestionably awful | |** Sub-par on many levels | |*** Average, hits and misses | |**** Good, memorable film | |***** Perfection | \-------------------------------\
-Christopher Null /<EMAIL_ADDRESS>-E-mail request to join the movie review mailing list
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


menu
Portfolio
Home
Portfolio
Contact
Contact Me
email
Email
local_phone
Call Me -<PHONE_NUMBER>
file_download
Resume
Visit Me


This website requires JavaScript.
Click anywhere on the website first to active the script that prevents closing.


Circular Graph Examples
Contents
1. Adjacency matrix of 1s and 0s
Create an example adjacency matrix made up of ones and zeros.
rng(0); x = rand(50); thresh = 0.93; x(x > thresh) = 1; x(x <= thresh) = 0;
Call CIRCULARGRAPH with only the adjacency matrix as an argument.
circularGraph(x);
Click on a node to make the connections that emanate from it more visible or less visible. Click on the 'Show All' button to make all nodes and their connections visible. Click on the 'Hide All' button to make all nodes and their connections less visible.
2. Supply custom properties
Create an example adjacency matrix made up of various values and supply custom properties.
rng(0); x = rand(20); thresh = 0.93; x(x > thresh) = 1; x(x <= thresh) = 0; for i = 1:numel(x) if x(i) > 0 x(i) = rand(1,1); end end
Create custom node labels
myLabel = cell(length(x)); for i = 1:length(x) myLabel{i} = num2str(round(1000000*rand(1,1))); end
Create custom colormap
figure; myColorMap = lines(length(x)); circularGraph(x,'Colormap',myColorMap,'Label',myLabel);


This file contains PM Module utility functions. More...
#include <ti/drv/pm/include/prcm/pmhal_prcm.h>
Macros | |
| #define | PM_UTIL_VSIZE_TYPE(vec, type) (sizeof (vec) / sizeof (type)) |
| Macro to find the size of the vector. | |
Functions | |
| void | PMUtilsMinDelayUS (uint32_t timeUS) |
| Provide a delay of at least the given time in micro seconds. In most cases this function provides more delay than the specified time; the goal is to guarantee delay of at least the given amount of time. More... | |
| void | PMUtilsMinDelayMS (uint32_t timeMS) |
| Provide a delay of at least the given time in ms. In most cases this function provides more delay than the specified time; the goal is to guarantee delay of at least the given amount of time. More... | |
| pmhalPrcmCdId_t | PMUtilsGetCdId (pmhalPrcmModuleId_t modId) |
| Utils function to get the clock domain ID in which the module is. More... | |
| pmhalPrcmPdId_t | PMUtilsGetPdId (pmhalPrcmCdId_t cdId) |
| Utils function to get the power domain ID in which the clock domain is. More... | |
| uint32_t | PMUtilsGetNumModsInCd (pmhalPrcmCdId_t cdId) |
| Utils function to get the number of modules in a clock domain. More... | |
| pmhalPrcmModuleId_t | PMUtilsGetModuleIdinCd (pmhalPrcmCdId_t cdId, uint32_t iter) |
| Utils function to get the module ID saved in index. More... | |
| uint32_t | PMUtilsGetNumCdsInPd (pmhalPrcmPdId_t pdId) |
| Utils function to get the number of clock domains in a power domain. More... | |
| pmhalPrcmCdId_t | PMUtilsGetClockDomInPd (pmhalPrcmPdId_t pdId, uint32_t iter) |
| Utils function to get the clock domain ID saved in index. More... | |
| pmErrCode_t | PMUtilsIsResetIdValid (pmhalPrcmResetGroupId_t rstId, pmhalPrcmPdId_t pdId) |
| Utils function to report if the reset domain is a part of the power domain. More... | |
| pmhalPrcmModuleId_t | PMUtilsGetModuleId (pmhalPrcmModuleId_t x) |
| PMUtilsGetModuleId returns the module id idx. More... | |
| pmhalPrcmNodeId_t | PMUtilsGetDpllId (pmhalPrcmNodeId_t x) |
| PMUtilsGetDpllId returns the dpll id idx. More... | |
| pmhalPrcmNodeId_t | PMUtilsGetMuxId (pmhalPrcmNodeId_t x) |
| PMUtilsGetMuxId returns the Mux id idx. More... | |
| pmhalPrcmNodeId_t | PMUtilsGetDivId (pmhalPrcmNodeId_t x) |
| PMUtilsGetDivId returns the Divider id idx. More... | |
| pmhalPrcmNodeId_t | PMUtilsGetVidpllId (pmhalPrcmNodeId_t x) |
| PMUtilsGetVidpllId returns the videopll id idx. More... | |
| pmhalPrcmVdId_t | PMUtilsGetVdId (pmhalPrcmPdId_t pdId) |
| Utils function to get the voltage domain ID in which the power domain is. More... | |
| pmhalPrcmCpuId_t | PMUtilsGetCpuId (pmhalPrcmModuleId_t modId) |
| Get the CPUID if the module passed is a CPU. More... | |
| pmhalVmOppId_t | PMUtilsGetOppFromClkRate (pmhalPrcmCpuId_t cpuId, uint32_t rate) |
| Return the OPP that can support the given rate. More... | |
| pmhalPrcmVdId_t | PMUtilsGetCpuVdId (pmhalPrcmModuleId_t modId) |
| Get the Voltage domain for the given CPUID. More... | |
| pmhalPrcmModuleId_t | PMUtilsGetModIdForCpuId (pmhalPrcmCpuId_t cpuId) |
| Get the Module ID for the given CPUID. More... | |
This file contains PM Module utility functions.
| pmhalPrcmCdId_t PMUtilsGetCdId | ( | pmhalPrcmModuleId_t | modId | ) |
Utils function to get the clock domain ID in which the module is.
| modId | Module ID of the module to be checked. Refer pmhalPrcmModuleId_t for details. |
| pmhalPrcmCdId_t PMUtilsGetClockDomInPd | ( | pmhalPrcmPdId_t | pdId, |
| uint32_t | iter | ||
| ) |
Utils function to get the clock domain ID saved in index.
| pdId | Power Domain ID of the PD to be checked. Refer pmhalPrcmPdId_t for details. |
| iter | Iteration index which is to be returned. |
| pmhalPrcmCpuId_t PMUtilsGetCpuId | ( | pmhalPrcmModuleId_t | modId | ) |
Get the CPUID if the module passed is a CPU.
| modId | The MODULE ID Refer Enum pmhalPrcmModuleId_t for values. |
| CPUID | of the module. |
| pmhalPrcmVdId_t PMUtilsGetCpuVdId | ( | pmhalPrcmModuleId_t | modId | ) |
Get the Voltage domain for the given CPUID.
| modId | The mod ID |
| pmhalPrcmNodeId_t PMUtilsGetDivId | ( | pmhalPrcmNodeId_t | x | ) |
PMUtilsGetDivId returns the Divider id idx.
| x | DIV ID to be extracted |
| pmhalPrcmNodeId_t PMUtilsGetDpllId | ( | pmhalPrcmNodeId_t | x | ) |
PMUtilsGetDpllId returns the dpll id idx.
| x | DPLL ID to be extracted |
| pmhalPrcmModuleId_t PMUtilsGetModIdForCpuId | ( | pmhalPrcmCpuId_t | cpuId | ) |
Get the Module ID for the given CPUID.
| cpuId | The cpu ID |
| pmhalPrcmModuleId_t PMUtilsGetModuleId | ( | pmhalPrcmModuleId_t | x | ) |
PMUtilsGetModuleId returns the module id idx.
| x | Module ID of the MOD ID to be transformed. Refer pmhalPrcmModuleId_t for details. |
| pmhalPrcmModuleId_t PMUtilsGetModuleIdinCd | ( | pmhalPrcmCdId_t | cdId, |
| uint32_t | iter | ||
| ) |
Utils function to get the module ID saved in index.
| cdId | Clock Domain ID of the CD to be checked. Refer pmhalPrcmCdId_t for details. |
| iter | Iteration index which is to be returned. |
| pmhalPrcmNodeId_t PMUtilsGetMuxId | ( | pmhalPrcmNodeId_t | x | ) |
PMUtilsGetMuxId returns the Mux id idx.
| x | MUX ID to be extracted |
| uint32_t PMUtilsGetNumCdsInPd | ( | pmhalPrcmPdId_t | pdId | ) |
Utils function to get the number of clock domains in a power domain.
| pdId | Power Domain ID of the PD to be checked. Refer pmhalPrcmPdId_t for details. |
| uint32_t PMUtilsGetNumModsInCd | ( | pmhalPrcmCdId_t | cdId | ) |
Utils function to get the number of modules in a clock domain.
| cdId | Clock Domain ID of the CD to be checked. Refer pmhalPrcmCdId_t for details. |
| pmhalVmOppId_t PMUtilsGetOppFromClkRate | ( | pmhalPrcmCpuId_t | cpuId, |
| uint32_t | rate | ||
| ) |
Return the OPP that can support the given rate.
| cpuId | The CPU ID |
| rate | The Clock rate in Hz |
| pmhalPrcmPdId_t PMUtilsGetPdId | ( | pmhalPrcmCdId_t | cdId | ) |
Utils function to get the power domain ID in which the clock domain is.
| cdId | Clock Domain ID of the CD to be checked. Refer pmhalPrcmCdId_t for details. |
| pmhalPrcmVdId_t PMUtilsGetVdId | ( | pmhalPrcmPdId_t | pdId | ) |
Utils function to get the voltage domain ID in which the power domain is.
| pdId | Power Domain ID of the PD to be checked. Refer pmhalPrcmPdId_t for details. |
| pmhalPrcmNodeId_t PMUtilsGetVidpllId | ( | pmhalPrcmNodeId_t | x | ) |
PMUtilsGetVidpllId returns the videopll id idx.
| x | Video ID to be extracted |
| pmErrCode_t PMUtilsIsResetIdValid | ( | pmhalPrcmResetGroupId_t | rstId, |
| pmhalPrcmPdId_t | pdId | ||
| ) |
Utils function to report if the reset domain is a part of the power domain.
| rstId | Reset Domain ID to be checked. |
| pdId | Power Domain ID to be checked. |
| void PMUtilsMinDelayMS | ( | uint32_t | timeMS | ) |
Provide a delay of at least the given time in ms. In most cases this function provides more delay than the specified time; the goal is to guarantee delay of at least the given amount of time.
| timeMS | Time in ms |
| void PMUtilsMinDelayUS | ( | uint32_t | timeUS | ) |
Provide a delay of at least the given time in micro seconds. In most cases this function provides more delay than the specified time; the goal is to guarantee delay of at least the given amount of time.
| timeUS | Time in micro seconds |


Syntax Data Types
The data types are used to bridge the gap between the semantic concepts expressed by the MIxS descriptors and their possible technical implementation. The data types define the allowed value domain for the content, and any additional information components (attributes) needed in order to ensure its precise interpretation.
Please note that not all data types fit into generic programming or database data types (such as {unit}), and are specific for MIxS checklists purposes.
All data types defined in this document may also be combined in composite types to express the values of more complex MIxS descriptors.
- [...|...]: denotes an enumerated descriptor and its controlled vocabulary of values
- {boolean}: represents the values true and false
- {dna}: DNA or RNA sequence, can contain all IUPAC nucleic acid sequence characters
- {DOI}: persistent identifier or handle used to uniquely identify objects, consists of alphanumeric characters
- {duration}: duration of an event expressed in ISO 8601 duration syntax; PnYnMnDTnHnMnS. The P character marks this as a duration. This is followed by (optionally specified) sets of numbers (n) and units: nY for number of years, nM for number of months, and so on. If a set of numbers and units is missing, it is assumed to be zero
- {float}: variable unlimited length of single or double precision numeric type, expressed as a decimal number
- {integer}: signed or unsigned whole numbers
- {NCBI taxid}: NCBI taxonomy ID, consists only of numeric characters
- {percentage}: a number or ratio that represents a fraction of 100, no unit or symbol given
- {PMID}: unique identifier number used in PubMed, consists only of numeric characters
- {Rn/start_time/end_time/duration}: a (repeating) time interval and duration. R is a character that marks this as a recurring pattern. The first n is an optional number that limits the number of recurrences. Start and end times are expressed as a ISO 8601 timestamp. Duration is expressed as ISO 8601 duration syntax; PnYnMnDTnHnMnS
- {term}: An ontology term (i.e. a class), identified by the class label and its unique ID in CURIE format (i.e. "[namespace:[numericCode]]". For example:
soil biocrust [ENVO:01000910]. Multiple terms should be pipe separated: anoxic water [ENVO:01000173]|eutrophic water [ENVO:00002224]
- {text}: variable unlimited length of alphanumeric strings
- {timestamp}: time, date, time and time, with or without time zone, conforms to ISO 8601 format:
- Dates - [YYYY]-[MM]-[DD] > 1981-04-05
- Times - [hh]:[mm]:[ss] > 13:47:30
- Time zones - [hh]:[mm]:[ss]Z if in UTC (coordinated universal time) > 14:45:15Z OR [hh]:[mm]:[ss]+-[hh]:[mm] if has offset from UTC > 22:30+04
- Date and time - [YYYY]-[MM]-[DD]T[hh]:[mm] > 2007-04-05T14:30
- {unit}: indicates the unit of a measurement value, in accordance with SI, can contain alphanumeric characters
- {URL}: a reference to a web resource that specifies its location on a computer network and a mechanism for retrieving it
Different data types can be combined with a "semicolon (;)" to create composite data types (i.e. {text};{float} {unit};[qPCR|ATP|MPN|other]) or with a "vertical bar (|)" to indicate one or the other data type should be chosen (i.e. {PMID}|{DOI}|{URL}|{text}).


use Red; unit model Red::Driver::SQLite::SQLiteMaster is table<sqlite_master>; has Str $.type is column; has Str $.name is id; has Str $.table is column{:name<tbl_name>, :references(*.name), :model-name(::?CLASS.^name)}; has Int $.root-page is column<rootpage>; has Str $.sql is column; has ::?CLASS @.children is relationship{ .table } method tables(::?CLASS:U:) { self.^all.grep: *.is-table } multi method indexes(::?CLASS:U:) { ::?CLASS.^all.grep: *.is-index } multi method indexes(::?CLASS:D:) { self.children.grep: *.is-index } method is-table { self.type eq "table" } method is-index { self.type eq "index" } method find-table(::?CLASS:U: Str $name) { self.tables.first: *.name eq $name } method find-index(::?CLASS:U: Str $name) { self.indexes.first: *.name eq $name }


Toggle navigation
Angels&Scooters
Home
About
Contest
Winners
Contact
Our Story
Speed, romance and class - that’s why we fell in love with scooters. We love to share our moments.
Hey angels - come and join us!
New Competition
Take your helmet and camera and head to the sunset. Submit your photos by the 18th of February.
We have prizes for the best ones!
Winners of Urban with Scooters
TRAVEL STICKERS
by Anna
CALM PARK
by Rea
AT THE SHOP
by Alex
Contact
GarageONE
Long Road 32
New Napoli
CX


I'm a young creative from Anaheim, California currently working as a graphic designer at the University of Southern California as well as pursuing a B.F.A. in Design there. I take inspiration from everyday life and incorporate it into my designs.
I'm a visual storyteller, a crafter of interfaces and someone who brings imagination to life, a future unicorn, a learner, a dreamer - and me. When I'm not designing, I'm traveling, taking photos of everything I find beautiful, and spending time with the ones I love.


Saint Valentine’s day?
Valentine, Valentine,
How come you’re so pretentious?
What makes you think I want you?
Your packaged dreams?
Your quantified emotions?
Your bottled eroticism?
Valentine, Valentine…
What makes you think she wants you?
Your fabricated hopes?
Your industrialized tastes?
Your capitalized love?
Valentine, Valentine…
We have our planet, moon, days…
And today’s like any other…

A Happy Valentine’s Day card?
Valentine, Valentine…
It’s like…Boom Bang Zap Pow…
We control gravity.
What else could we want?