Schematica is a tool for creating diagrams and other images. Schematica aims to require a minimum of specification from the user – by default, Schematica uses its own discretion to decide where to place elements, in accordance with user requirements. Schematica also aims for a maximum of precision and flexibility by allowing the user to write instructions that specify the image, rather than having to fiddle around with a user interface.
Lisk is the programming language in which Schematica users write their code. The name is an abbreviation of "List Sketcher", a nod to the programming language Lisp ("List Processor") which Lisk borrows heavily from (in fact, Lisk is practically a dialect of Lisp rather than its own language).
Though the syntax may look strange at first, there's a reason for it: it really is the simplest and most flexible syntax possible.
There are only three syntax or "grammar" rules that you need to understand how to read and write instructions in Schematica:
+
is the addition function, so (+ 1 2 3)
evaluates to 6
.
(circle (radius: 3) (color: yellow))
. (The only exception are some built-in functions)In addition, there is a rule for how many instructions in a row are to be interpreted:
This eliminates the need for a “return” statement like the one many programming languages are encumbered with.
One of the many beauties of Lisp-style syntax (in addition to many curvy parentheses) is that no semicolons or other statement breaks are required to separate statements, and whitespace does not need to be given any specific importance.
Thus, though it is possible to write out your entire program in one line, feel free to add spaces, line breaks, and indentation wherever and however you wish to make things easier to read.
(The most minimal whitespace requirement can be stated like this: if there’s at least one whitespace character between every pair of adjacent symbols that is not separated by an opening or a closing parentheses, you’re fine. Or, more briefly: don’t worry about whitespace.)
#t
-> “true”#f
-> “false”#u
-> “undefined”. If a function is called without all of its arguments being specified, the unspecified arguments are set to #u
. Also returned in some other cases.This section lists all functions built into the Lisk language (the default functions listed in the next section are also available to the user; as a user, the only difference you have to care about is that built-in functions do not take named arguments).
(let variableName value)
variableName
will now be set to value
let
can be used to both modify existing variables as well as define new ones.(let x 42)
-> sets x
to 42(quote expr)
expr
, without evaluating it (that is, if var
is a variable, (quote var)
returns the symbol var
rather than the value of var
).(1 2 3)
will result in Schematica trying to apply the function 1
to the arguments 2 and 3; to create the list [ 1 2 3 ]
, instead use (quote (1 2 3))
.'var
is equivalent to (quote var)
. No whitespace is allowed between the single quote and the expression to be quoted.'(1 (2 3) 4)
-> returns a list with the elements 1, the list of 2 and 3, and 4.''var
. Use '(quote var)
instead.(if predicate consequent alternative)
predicate
is true, consequent
is evaluated; if predicate
is false, alternative
is evaluated.(if (> x 2) x "<3")
-> if the variable x
is greater than 2, x
is returned; otherwise, the string “<3” is returned.(for loopVar startVal endCondition nextExpr loopExpr)
loopVar
is the name used for the loop variable.startVal
is the first value of the loop variable.endCondition
is a boolean statement. The loop will continue until this expression evaluates to false (a limit for the number of times a loop can loop is set in the code, but don’t rely on this).nextExpr
is evaluated after each time loopExpr
is evaluated to obtain the new value of the loop variable.loopExpr
is any expression; it will be performed however many times the loop runs, in an environment where the loop variable takes successive values based on nextExpr
.(for i 0 (< i 10) (++ i) (print i))
(// a sample comment)
//
will be ignored. This can be used to add comments to code.We have seen how variables can be defined with let
. Functions in Lisk are just another type of variable, though with a special form. As an example, consider the definition:
(let f (! (x y) (+ (* x x) (* y y))))
For clarity, we can add some indentation and line breaks:
(let f (! (x y) (+ (* x x) (* y y))))
This statement can be read as: “Let f
be a function on the arguments x
and y
that returns the sum of x
squared and y
squared.
The form of a function expression is:(! list-of-arguments body-expression-1 body-expression 2 ... body-expression-n)
. All body expressions are evaluated, and the value of the last is returned as the value of the function (this does not matter if the value of the function is not used by anything).
(The keyword lambda
can be used instead of !
. The word “lambda” is used in many Lisp-family languages for historical reasons.)
You do not need to define a function to use it. For instance,
( (! (x) (* 2 x)) 2)
returns 4, just as if you had separately defined a doubling function as (let double (! (x) (* 2 x)))
and then called (double 2)
.
For functions of one variable, a shortcut notation is available; you do not need to have a list of arguments, but can instead write, for example, (let double (! x (* 2 x)))
.
The def
macro makes function definitions a bit more convenient to write and is made available by the SDL; see below for details.
Since functions are just a type of variable, functions can return functions, as well as take functions as arguments:
(let composite (! (f g) (! (x) (f (g x))))) (let f (! (x) (* 2 x))) (let g (! (x) (+ 1 x))) (let f-of-g (composite f g)) (print (f-of-g 3))
The above example would compute (3 + 1) * 2 and hence print 8 to the console.
(function? x)
tests whether x
is a function.
If a function is logged to the console, you will see a list, the first element of which is either primitive
(if the function is a built-in primitive function) or function
, if the function was defined by the user or by the default Schematica library.
(If you wish to test whether func
is a primitive function, use something like this: (= (first func) ´primitive)
- this “hack” currently works because of the way functions are internally represented, but might change in the future.)
Lisk supports closures.
(not x)
x
“is true” (that is, x
is not #f
(false), #u
(undefined), or zero, returns #f
. Otherwise returns #t
.(and b1 b2 b3 ... )
#t
if all arguments are true, #f
otherwise.(or b1 b2 b3 ... )
#t
if at least one argument is true, #f
otherwise.(= x1 x2 x3 ... )
#t
(true) if all arguments are equal, #f
otherwise.(== x1 x2 x3 ...)
These are self-explanatory, except for two notes:
(+ 2 (* 3 2))
instead of 2 + 3 * 2
, and so on.(+ a1 a2 a3 a4)
sums up four values; (> p q1 q2 q3 q4)
tests whether p
is greater than all the other arguments.For equality functions, see the above section.
(number? n)
(integer? n)
(> a b1 b2 b3 ...)
#t
) if a
is greater than all the b-variables; false (#f
) otherwise.(< a b1 b2 b3 ...)
(+ a1 a2 a3 ...)
(- n s1 s2 s3 ...)
(/ n d1 d2 d3 ...)
(* a1 a2 a3 ...)
(mod x y)
(mod 8 5)
returns 3).(exp n)
n
.(pow x y)
x
to the power of y
(ln n)
(equivalent to (log n)
)
n
.(cos angle-in-radians)
sin
, cos
, tan
, asin
, acos
, atan
(min n1 n2 n3 ...)
(max n1 n2 n3 ...)
(list? var)
var
is a list, returns false otherwise.(list el1 el2 el3 ...)
(length lst)
lst
.(nth lst n)
lst
.(set-nth lst n val)
lst
to val
and returns the new list.(first lst)
lst
.car
.(rest lst)
lst
, except without the first item.cdr
.(concat list1 list2 list3 ...)
concat
.(string? str)
str
is a string, false otherwise.(str-concat str1 str2 str3 ...)
(str-slice str start end)
str
that begins from the position start
and extends up to (but not including) the character at position end
.end
is set to the length of the string.(print val)
val
to the Schematica console. Returns val
.(cprint text)
.
val
to the browser’s Javascript console (used for debugging purposes), and returns val
.All primitive draw operations are performed by the draw
function. Users are advised, in most cases, to use the more advanced drawing functions provided in the Schematica library; this function is mainly meant to be used internally.
The draw function returns #u
.
All colours are specified using standard hexadecimal format: a string of the form “#rrggbb”.
(draw type a1 a2 a3 a4 a5 a6 a7)
type
must be one of:
a1
and a2
are the x- and y-coordinates, respectively, of the starting point of the line segment.a3
and a4
are the x- and y-coordinates of the ending point.a5
is the colour of the line
a6
is the thickness of the line
a1
and a2
are the x- and y-coordinates of the centre of the circle.a3
is the radius.a4
is the fill colour.
a5
is the thickness of the circcle’s outline.
a6
is the colour of the circle’s outline.
a1
and a2
are the x- and y-coordinates of the centre of the ellipse.a3
and a4
are the radius along the x-direction and the radius along the y-direction of the ellipse.a5
is the angle at which the ellipse is rotated.a6
is the fill colour.a7
is the outline’s thickness.a8
is the outline’s colour.a1
is a list of coordinates, where each coordinate is a list consisting of an x- and y-value.a2
is the fill colour.a3
is the outline’s thickness.a4
is the outline’s colour.(draw-text content x y style fontSize color fontFamily)
content
is a string containing the text to draw.(x, y)
.style
is a string. The space-separated words “italic”, “bold”, “underline”, and “strikethrough” are picked out (if present), and used to style the text. “Strikethrough” and “underline” are mutually exclusive (for reasons not related to Schematica). The default value is the empty string.fontSize
defaults to 20.color
is a string corresponding to a color - either a word like “red”, or a hexadecimal color string like “#ff0000”.fontFamily
is a string that specifies the font to use. I’d tell you which fonts work, but I honestly have no clue. Defaults to Baskerville.(draw-tex content x y fontSize)
draw-tex
, but instead of rendering plain text, it uses the MathJax library to process content
as LaTeX and (potentially) output beautiful equations. See a LaTeX reference for how to write equations in LaTeX.(eval lst)
lst
in the Lisk evaluator’s global environment.(js-eval expression-str)
expression-str
as Javascript by calling Javascript’s built-in eval
function on it.(debug expr1 expr2 expr3 ... )
Macros can be used to automatically change syntax of a certain form into syntax of a different form.
Macros are defined with an expression of the following type:
(macro (macro-name <syntax-form>) )
After such a macro is defined anywhere in the code, whenever macro-name
occurs at the beginning of an expression, the code defined in
will run instead.
Symbols starting with a “#” in <syntax-form>
will be bound to values based on the macro expression, and any symbols starting with a “#” in
will be replaced with the corresponding value.
For example, say we have this macro:
(macro (set-var (#variable #value) if #set?) (if #set? (set #variable #value)))
Now say we evaluate this expression:
(set-var (x 0) if (< x 3))
The macro parser will compare this expression to our macro expression definition ((set-var (#variable #value) if #set?)
), deduce that x
corresponds to #variable
, 0
corresponds to #value
, and (< x 3)
corresponds to #set?
, and, instead of trying to call a function called set-var
, it will evaluate the following:
(if (< x 3) (set x 0))
Thus, macros allow you to effectively change the language as you need it.
If a macro slot variable ends in “..”, instead of being bound to the corresponding expression in the macro definition, the variable will be bound to a list containing every expression in its position and after. For example, the def
macro in the SDL is defined as follows:
(macro (def (#name #args..) #body..) (eval (list 'let '#name (concat (list '! '#args..) '#body..))))
If we now evaluate:
(def (f x y) (print x) (+ x y))
what will happen is that #args..
will be bound to the list (x y)
, and #body..
to the list containing both body expressions.
Note that the expression that the macro evaluates to makes use of the eval
function. Thus, when the macro is evaluated, the interpreter will evaluate the result of applying eval
to the arguments. The eval
call generates the following list:
(let f (! x y) (print x) (+ x y))
The output of the eval
call is what is evaluated by the interpreter. This technique is useful for constructing more advanced macros.
#T
and true
are set to #t
(the truth-value in Lisk); #F
and #f
are set to #f
. Use whichever you want as your boolean variables.pi
(3.14159…)pi/2
(half of pi; that is, a right angle)tau
(twice pi; a 360-degree angle)e
(2.71828…)canvas-width
(in pixels)canvas-height
(in pixels)canvas-scale
(the smaller of the two above variables)canvas-corners
(a list of four coordinates (each a coord
) at the corners of the canvas, in clockwise order starting from top-left)bound-lines
(a list of four lines (each a line
) that run along the borders of the canvas)(def (function-name arg1 arg2 arg3 ...) body)
(def (square x) (* x x))
; equivalent to (let square (! (x) (* x x)))
.(rep variable default)
variable
is #u
(undefined), variable
will be set to the value of default
.(group group-name prop1 prop2 prop3 ... )
group
macro implements a simple form of this type of object-orientedness.(group stroke-style width (color "black"))
(let ss (stroke-style 4 "red"))
to obtain a function ss
, which works in such a way that if we now call it with some symbol as an argument ((ss 'width)
, for example), it will return the value associated with that symbol (4, in this case).color
is given a default value “black”
in the above; if we omit the second argument specifying the color, (ss 'color)
will return "black"
.group
definition into a function that takes arguments, and returns a dispatch function that spits back those arguments when called with their names later on.group
is just a normal function, and can be called with unordered but named function parameters just like any other non-primitive function: (group (color: "red") (width: 4))
, for example.(prints expr1 expr2 expr3 ... )
(ng x)
x
.(++ x)
/ (-- x)
x
.x
! Use ++!
and --!
for this instead.(++! x)
/ (--! x)
x
to one more / one less than x
.x
is changed inside a function, the interpreter finds the first environment in this stack in which x
is defined, and updates x
s value in that environment - without affecting any other x
s in the enclosing environments! Hence ++!
and --!
are implemented in the SDL as macros, not functions.(deg angle)
/ (rad angle)
(average n1 n2 n3 ...)
/ (average lst)
(append lst el)
el
to the end of the list l
.(last l)
l
.caar
/ cadr
/ cdar
/ cddr
car
and cdr
are just alternative names for the first
and rest
functions, which return the first element and all but the first element, respectively, of a list.(caar x)
is equivalent to (car (car x))
, (cdar x)
to (cdr (car x))
, and so on.(filter op l)
l
, except those for which the function op
, when applied to an element, returns #f
(false).(filter (! x (< x 10)) '(1 7 10 13 2))
returns the list (1 7 2)
.(map op l)
op
onto the list l
el
in list l
with (op el)
.(map (! x (* x x)) '(1 2 3))
returns the list (1 4 9)
.(accumulate l op val)
op
(starting at val
).(accumulate l + 0)
returns the sum of the elements in the list l
.(list-merge a b op)
a
is replaced with the element you get by applying the function op
to the element in a
and the corresponding element in b
.(list-merge '(1 2 3) '(3 2 1) *)
returns the list (3 4 3)
.(pair-adjacents l)
l
.(pair-adjacents '(1 2 3 4))
returns the list ((1 2) (2 3) (3 4))
.bound-lines
list from corner-points
; other uses may be few and far between)(composite fn-list)
fn-list
.(list-col->hex lst)
lst
, a list of three numbers: red, green, and blue amounts, each between 0 and 255 inclusive.(hex-col->list hex)
(color-from-scale n col1 start col2 end)
n < start
, returns col1
. If n > end
, returns col2
. Otherwise returns the color that is a fraction (n - start) / (end - start)
between colors col1
and col2
.coord
scoord
s are used to represent points / coordinates somewhere on the canvas (the name is “coord
” rather than “point
” because the user will likely want to use the name “point
” for variables without overwriting an important function).
A coord
of the point (x, y) is constructed as follows:
(coord x y)
Other functions for constructing coord
s are:
(rand-point)
coord
on the canvas.Functions on coord
s:
(x-of c)
c
.(y-of c)
c
.(coord? c)
#T
if c
is a coord
, #F
otherwise.(in-bounds? c)
#T
if c
is inside the boundaries of the canvas (or exactly on them).(translate-coord c dx dy)
coord
you get when c
is translated dx
in the x-direction and dy
in the y-direction.(over c dist)
/ (under c dist)
/ (left-of c dist)
/ (right-of c dist)
coord
that is a distance dist
up/down/left/right of c
.(average-of-coords coord-list)
/ (average-of-coords coord1 coord2 coord3 ...)
coord
in the list.coord
passed as an argument to average-of-coords
.(distance coord1 coord2)
coord1
and coord2
.(coord+vect c v)
c
, but displaced by the vector v
.vector
sA vector
is constructed as follows: (vector x y z)
(the z
component of the vector defaults to 0 and can be omitted).
The following constructors are also available:
(mag/dir->vect magnitude direction-angle)
converts a length and angle into a vector.(dir->vect angle)
returns a unit vector pointing at a specified angle.(coords->vect x1 y1 x2 y2)
returns a vector from point (x1, y1) to (x2, y2).(points->vect a b)
returns a vector from coord
a
to coord
b
.The vector
function returns a function that tags can be passed to in order to achieve things (see the section below for a more detailed look at how this type of thing is used, or just read on).
If v
is a vector (that is, the function returned by using vector
to construct a vector), then:
(v)
returns a list containing the components of the vector.(v 'x)
/ (v 'y)
/ (v 'z)
can be used to access the x/y/z components of the vector.(v 'set-x)
/ (v 'set-y)
/ (v 'set-z)
can be used to CHANGE the x/y/z components of the vector.(v 'set new-values)
can be used to set the x, y, and z components of v
to the 0th, 1st, and 2nd (defaults to zero) element in the list new-values
.(v '+ w)
returns the sum of vectors v
and w
.(v '* factor)
returns a vector where each component is factor
times larger than in v
.(v 'norm)
returns a unit vector pointing in v
’s direction.(v 'normalize!)
 w)
tests whether vectors v
and w
are parallel to each other.(v 'angle)
returns the angle at which v
points.(v 'rotated angle)
returns the vector you get when v
is rotated by angle
.For the function descriptions below, all arguments are listed in order. Keep in mind that Lisk also allows identifying arguments by name rather than order. The following are equivalent:
(circle 100 200 40) (circle (x: 100) (y: 200) (r: 40)) (circle (r: 40) (x: 100) (y: 200))
All functions here will fill in random or default values for any arguments that you fail to pass.
The functions in this section all return a function, which can be used to retrieve information about the element and/or draw/get new elements.
For instance, if you write (let l (line))
, l
will be bound to the function that the line
function returns. Write (l 'angle)
, and you will get the angle of the line. (l 'draw)
, meanwhile, returns yet another function, which you can pass arguments to in order to draw the line in a specified way.
Note also that because Lisk allows for named functions, you can write things like (line (color: "red") (angle: pi))
and not have to worry about argument order.
stroke-style
stroke-style
is a group
; basically just a function that will spit out preset parameters when passed the right symbols as an argument.
It takes the following arguments:
width
(defaults to 1)color
(defaults to black)style
: either dash
/dashed
, dot
/dotted
, or dash dot
/dot dash
(slash-separated terms are equivalent; there are two to make it harder to forget both). Defaults to a solid stroke if none of these options are specified.The text-style
function is similar (see description of text-related functions below).
Example:
(let red-stroke (stroke-style (color: "red"))) (circle (stroke: red-stroke))
The circle will now be drawn with a red outline.
line
Do not confuse line
s (infinite in length) with lseg
s (line segments).
point
: a coord
on the line (default: a random point on the canvas).angle
: the line’s angle (default: a random value between 0 and 2* pi (tau)).stroke
: a stroke-style
.draw?
: whether to draw the line immediately (default: #T
)draw?
is #T
(which it is by default), the line will be rendered on the canvas immediately.l
is the line
object):
(l 'point)
: returns the point used to define the line.(l 'angle)
: returns the line’s angle.(l 'vector)
: returns a unit vector
pointing in the direction of the line.(l 'intersect j)
: returns the coord
at which line
s l
and j
intersect, or #f
if such a point does not exist.(l 'bound-intersects)
: returns a list of coord
s at which the line intersects the boundaries of the canvas.(l 'y-at-x x)
: returns the y-coordinate of the point on the line for which the x-coordinate is x
, or #f
if such a point does not exist.(l 'x-at-y y)
: same as above, but y/x flipped.(l 'draw)
: returns a function that takes the arguments color
and thickness
that can be used to draw the line (a black line of thickness 1 is the default).The following functions relating to lines are also available:
(cline point angle)
(draw?: #f)
as an argument to the line
function).cline
” can be remembered as an abbreviation of “compute line”; that is, a line used for computing the position of something else rather than being (automatically) drawn on the diagram. (line-from-points x1 y1 x2 y2 color thickness draw?)
(cline-from-points x1 y1 x2 y2)
lseg
“lseg
” is an abbreviation of “line segment”.
start
: a coord
at which the line segment starts (default: a random point on the canvas).end
: a coord?
at which the line segment ends (default: a random point on the canvas).stroke
.draw?
: whether to draw the line immediately (default: #T
)draw?
is #T
(which it is by default), the line segment will be rendered on the canvas immediately.seg
is the lseg
object):
(seg 'start)
/ (seg 'end)
: returns the start/end points of the lseg
.(seg 'length)
: returns the length of the line segment.(seg 'line)
: returns the line
along which the line segment lies (the line is not drawn).(seg 'draw)
: returns a function that takes the arguments color
and thickness
that can be used to draw the line segment (a black line segment of thickness 1 is the default).q-bezier
(quadratic Bezier curve)coord
default to a random one):
start
: a coord
where the curve starts.end
: a coord
where the curve ends.control
: a coord
representing the the control point (towards which the curve will arc as it goes from start
to end
).fill
: fill colour. Defaults to “none”.stroke
: a stroke-style
representing stroke properties.stroke
). For example, if val
is what the function returns, (val 'start)
will give you the value of start
when the function was run.c-bezier
(quadratic Bezier curve)coord
default to a random one):
start
: a coord
where the curve starts.s-control
: a coord
representing the control point of the starting point (the curve will begin by heading in this direction).e-control
: a coord
representing the control point of the ending point (the curve will curve away from this direction as it heads towards end
).end
: a coord
where the curve ends.fill
: fill colour. Defaults to “none”.stroke
: a stroke-style
representing stroke properties.stroke
). For example, if val
is what the function returns, (val 'start)
will give you the value of start
when the function was run.curve
(cubic Bezier curve, drawn from different parameters)coord
default to a random one):
start
: a coord
where the curve starts.end
: a coord
where the curve ends.s-angle
: the angle at which the curve leaves start
. Defaults to a random angle.e-angle
: the angle at which the curve enters end
. Defaults to a random angle.s-size
: how far the curve tends in the direction of s-angle
(the starting control point for the Bezier curve is placed this distance from start
). Defaults to a random value between 0 and the distance between start
and end
.e-size
: from how far the curve tends towards the direction of e-angle
as it approaches the end (the ending control point for the Bezier curve is placed this distance from end
). Defaults to the same random value as s-size
(so unless otherwise specified, s-size = e-size
, and specifying s-size
alone is enough to set e-size
to the same value).fill
: fill colour. Defaults to “none”.stroke
: a stroke-style
representing stroke properties.stroke
). For example, if val
is what the function returns, (val 'start)
will give you the value of start
when the function was run.arc-from-flags
(circular arc)start
: a coord
where the arc starts. Defaults to a random point.end
: a coord
where the arc ends. Defaults to a random point.r
: the radius of the circle that the arc is part of. Defaults to a random value between 0 and canvas-scale
.size-flag
: either true or false. See SVG arc documentation to see how to use it. Defaults to false.sweep-flag
: either true or false. Refer to SVG arc documentation to see how to use it. Defaults to false.fill
: fill colour. Defaults to “none”.stroke
: a stroke-style
representing stroke properties.stroke
). For example, if val
is what the function returns, (val 'start)
will give you the value of start
when the function was run.arc
(circular arc)mid
: a coord
representing the mid point of the circle the arc is part of. Defaults to a random point.r
: the radius of the circle that the arc is part of. Defaults to a random value between 0 and canvas-scale
.a1
: the angle (relative to the circle’s centre) that the arc begins at. Defaults to a random angle.a2
: the angle that the arc ends at. Defaults to a random angle.fill
: fill colour. Defaults to “none”.stroke
: a stroke-style
representing stroke properties.stroke
). For example, if val
is what the function returns, (val 'mid)
will give you the value of mid
when the function was run.arrow
start
andend
, both coords.stroke
: a stroke-style
representing stroke properties. angle
: the angle of the arrow head.size
: the size of the lines on the arrow head. Defaults to 1/6 of the distance between start
and end
.stroke
). For example, if val
is what the function returns, (val 'start)
will give you the value of start
when the function was run.c-arrow
(curved arrow)coord
default to a random one):
start
: a coord
where the curve starts.end
: a coord
where the curve ends.s-angle
: the angle at which the curve leaves start
. Defaults to a random angle.e-angle
: the angle at which the curve enters end
. Defaults to a random angle.s-size
: how far the curve tends in the direction of s-angle
(the starting control point for the Bezier curve is placed this distance from start
). Defaults to a random value between 0 and the distance between start
and end
.e-size
: from how far the curve tends towards the direction of e-angle
as it approaches the end (the ending control point for the Bezier curve is placed this distance from end
). Defaults to the same random value as s-size
(so unless otherwise specified, s-size = e-size
, and specifying s-size
alone is enough to set e-size
to the same value).angle
: the angle of the arrow head.size
: the length of the lines on the arrow head.fill
: fill colour. Defaults to “none”.stroke
: a stroke-style
representing stroke properties.stroke
). For example, if val
is what the function returns, (val 'start)
will give you the value of start
when the function was run.arc-arrow
(arrow along a circular arc)mid
: a coord
representing the mid point of the circle the arc is part of. Defaults to a random point.r
: the radius of the circle that the arc is part of. Defaults to a random value between 0 and canvas-scale
.a1
: the angle (relative to the circle’s centre) that the arc begins at. Defaults to a random angle.a2
: the angle that the arc ends at. Defaults to a random angle.angle
: the angle of the arrow head.size
: the length of the lines on the arrow head.stroke
: a stroke-style
representing stroke properties.stroke
). For example, if val
is what the function returns, (val 'r)
will give you the value of r
when the function was run.circle
x
/ y
: the x/y-coordinates of the centre of the circle (default: randomly selected, but guaranteed to be on the canvas).r
: the circle’s radius.fill
: the colour of the circle’s interior (default: “none”)stroke
.draw?
: whether to draw the circle immediately (default: #T
)draw?
is #T
(which it is by default), the circle will be rendered on the canvas immediately.O
is the circle
object):
(O 'point)
/ (O 'centre)
: returns a coord
representing the centre of the circle.(O 'point-at-angle angle)
: returns the coord
of a point on the circle at an angle of angle
relative to the circle’s centre (angle
defaults to a random angle).(O 'area)
: returns the area of the circle, in square pixels on the canvas.(O 'radial-vect angle)
: returns a vector
from the circle’s centre to a point at angle angle
on its perimeter (angle
defaults to a random value).(O 'tangent angle)
: returns a line
that is tangent to the circle and meets it at a given angle to the circle’s centre (the line is not drawn, and angle
defaults to a random value).(O 'draw)
: returns a function that takes the arguments fill
, outline-width
, and outline-color
that can be used to draw the circle.ellipse
x
/ y
: the x/y-coordinates of the centre of the circle (default: randomly selected, but guaranteed to be on the canvas).rx
/ ry
: the radius of the ellipse in the x- and y-directions, respectively (by default, reasonable random values).angle
: an angle at which the ellipse is to be rotated (0 by default) fill
: the colour of the ellipse’s interior (default: “none”)stroke
.draw?
: whether to draw the ellipse immediately (default: #T
)draw?
is #T
(which it is by default), the ellipse will be rendered on the canvas immediately.O
is the ellipse
object):
(O 'point)
/ (O 'centre)
: returns a coord
representing the centre of the ellipse.(O 'rx)
/ (O 'ry)
/ (O 'angle)
: returns the respective property of the ellipse.(O 'eccentricity)
: calculates the eccentricity of the ellipse.(O 'semi-major)
: returns the length of the ellipse’s semi-major axis (in other words, whichever of rx
and ry
is larger).(O 'semi-minor)
: returns the length of the ellipse’s semi-minor axis (in other words, whichever of rx
and ry
is smaller).(O 'diameter-lseg-x)
/ (O 'diameter-lseg-y)
: returns line segments (which are not rendered) representing the ellipse’s diameter along the x/y axis of the ellipse (the ellipse’s angle does not affect this).(O 'major-axis)
/ (O 'minor-axis)
: the same as above, but automatically selects the larger/smaller of the diameter line segments.(O 'draw)
: returns a function that takes the arguments fill
, outline-width
, and outline-color
that can be used to draw the ellipse.polygon
The most general polygon-drawing function; see below for more specific cases (rectangles, etc.)
vertices
: a list of coord
s specifying where (relative to the polygon’s centre) to place the polygon’s vertices (defaults to a set of three random points on the canvas).centre
: a coord
specifying the centre of the polygon (default: (coord 0 0)
). fill
: the colour of the polygon’s interior (default: “none”)stroke
.draw?
: whether to draw the polygon immediately (default: #T
)draw?
is #T
(which it is by default), the polygon will be rendered on the canvas immediately.P
is the polygon
object):
(O 'point)
/ (O 'centre)
: returns a coord
representing the centre of the polygon.(O 'vertices)
: returns the list of vertices (each a coord
representing the x/y distance from the polygon’s centre) of the polygon.(O 'vertex-coords)
: returns the coordinates (each a coord
) of the polygon’s vertices (that is, where on the canvas they will be drawn, rather than their locations relative to the polygon’s centre).(O 'draw)
: returns a function that takes the arguments fill
, outline-width
, and outline-color
that can be used to draw the polygon.rect
x
/ y
: the coordinates of the top-left corner of the rect
.width
/ height
fill
: the colour of the polygon’s interior (default: “none”)stroke
.draw?
: whether to draw the polygon immediately (default: #T
)draw?
is #T
(which it is by default), the rectangle will be rendered on the canvas immediately.P
is the polygon
object):
(O 'x)
/ (O 'y)
: returns the x/y coordinate of the top-left corner of the rectangle.(O 'h)
/ (O 'height)
: returns the rectangle’s height.(O 'w)
/ (O 'width)
: returns the rectangle’s width. (O 'corners)
/ (O 'vertices)
: returns a vertex list (each a coord
representing the x/y coordinate of a corner of the rectangle).(O 'draw)
: returns a function that takes the arguments fill
, outline-width
, and outline-color
that can be used to draw the rectangle.text
content
: what text to display.loc
: a coord
specifying the position of the top-left corner of where to start drawing the text.style
: a text-style
specifying any stylistic properties (defaults to size 16 black Baskerville text).text-style
is a group
that takes the arguments size
, color
, styling
, and font
.
Example:
(let red-text (text-style (color: red) (styling: "underline"))) (text "Sample text" (coord 100 200) red-text)
This first defines a text-style
, and then draws text at x=100, y=200 with that styling.
tex
content
: the LaTeX code to render.loc
: a coord
specifying the top-left corner from which to start rendering.size
: the font size to use.


DBPatch is an Ant task that brings the state of the target database in sync with the local patches. It is usually run locally as a part of the build process to update a local development database or it can be run before deployment to update a test or production database. Read more about patch creation strategies and including the Antlib here.
DBPatch uses a special database table to track which patches were already applied. Such table is created automatically if it is missing, so it requires no preliminary setup. However if the database user id used to run DB patches does not have enough permissions to create tables in the target table space, a user must take care of setting it up. The default table structure is the following (table and column names can be customized, see parameter definitions for details):
CREATE TABLE patch_tracking( ID INTEGER NOT NULL PRIMARY KEY, PATCH_NAME VARCHAR(100), PATCH_RELEASE_ID VARCHAR(20), APPLIED_TIMESTAMP TIMESTAMP, PATCH_UTILITY_VERSION VARCHAR(20) )
| Attribute | Description | Required |
| patchindex | A text file that contains the names of the patches to run in the order they should be executed, one file per line. Empty lines and lines starting with # or // are skipped. The rest are treated as file names in the directory relative to the patch index file directory. | Yes |
| patchreleaseid | Defines a namespace for patch file names. All patch files must have unique names for a given patch release id. | No - default is empty |
| patchtablename | An attribute that defines the name of the table where patch tracking information is stored. Can contain schema name. E.g. "myschema.mypatchtable". | No - default is 'patch_tracking' |
| driver | Class name of the jdbc driver | Yes |
| url | Database connection url | Yes |
| userid | Database user name | Yes |
| password | Database password | Yes |
| encoding | Encoding of the SQL patch files | No - defaults to default JVM encoding |
| delimiter | String that separates SQL statements | No - default ";" |
| autocommit | Auto commit flag for database connection | No - default "false" |
| showheaders | Print headers for result sets from the statements | No, default "true" |
| showtrailers | Print trailer for number of rows affected | No, default "true" |
| classpath | Classpath used to load driver | No (use system classpath) |
| classpathref | The classpath to use, given as a reference to a path defined elsewhere. | No (use system classpath) |
| delimitertype | Control whether the delimiter will only be recognized on a line by itself. Can be "normal" -anywhere on the line, or "row", meaning it must be on a line by itself | No (default:normal) |
| keepformat | Control whether the format of the sql will be preserved. Useful when loading packages and procedures. | No (default=false) |
| escapeprocessing | Control whether the Java statement
object will perform escape substitution. See Statement's API docs for details. Since Ant 1.6. | No (default=true) |
Running dbpatches listed in "patches/index.txt":
<dbpatch patchIndex="patches/index.txt" patchReleaseId="${version}" driver="com.mysql.jdbc.Driver" url="${db.url}" userid="${db.userid}" password="${db.password}" classpathref="my.drivers.ref"/>


As I still seem to have a completely empty head, as far as prose is concerned, you lot can assuage your lack-of-Hooting-Yard misery with this. It is the second of Outa_Spaceman's revisited and revised settings of the Great Hooting Yard Songbook, following on from this.


--- layout: page title: "404: Page not found" permalink: 404.html ---
That page vanished in the night, and probably never existed in the first place. That's our story, and we're sticking to it. Head back home to try something else.


Table Name: tabBOM
| Sr | Fieldname | Type | Label | Options |
|---|---|---|---|---|
| 1 | item |
Link |
Item
Item to be manufactured or repacked |
Item |
| 2 | item_name |
Data | Item Name | |
| 3 | quantity |
Float |
Quantity
Quantity of item obtained after manufacturing / repacking from given quantities of raw materials |
|
| 4 | inspection_required |
Check | Inspection Required | |
| 5 | quality_inspection_template |
Link | Quality Inspection Template | Quality Inspection Template |
| 6 | cb0 |
Column Break | ||
| 7 | is_active |
Check | Is Active | |
| 8 | is_default |
Check | Is Default | |
| 9 | with_operations |
Check |
With Operations
Manage cost of operations |
|
| 10 | rm_cost_as_per |
Select | Rate Of Materials Based On |
Valuation Rate Last Purchase Rate Price List |
| 11 | buying_price_list |
Link | Price List | Price List |
| 12 | set_rate_of_sub_assembly_item_based_on_bom |
Check | Set rate of sub-assembly item based on BOM | |
| 13 | allow_alternative_item |
Check | Allow Alternative Item | |
| 14 | currency_detail |
Section Break | ||
| 15 | company |
Link | Company | Company |
| 16 | column_break_12 |
Column Break | ||
| 17 | currency |
Link | Currency | Currency |
| 18 | conversion_rate |
Float | Conversion Rate | |
| 19 | operations_section |
Section Break |
Operations
Specify the operations, operating cost and give a unique Operation no to your operations. |
|
| 20 | operations |
Table | Operations | BOM Operation |
| 21 | materials_section |
Section Break | Materials | |
| 22 | items |
Table | Items | BOM Item |
| 23 | scrap_section |
Section Break | Scrap | |
| 24 | scrap_items |
Table | Scrap Items | BOM Scrap Item |
| 25 | costing |
Section Break | Costing | |
| 26 | operating_cost |
Currency | Operating Cost |
currency |
| 27 | raw_material_cost |
Currency | Raw Material Cost |
currency |
| 28 | scrap_material_cost |
Currency | Scrap Material Cost |
currency |
| 29 | cb1 |
Column Break | ||
| 30 | base_operating_cost |
Currency | Operating Cost (Company Currency) |
Company:company:default_currency |
| 31 | base_raw_material_cost |
Currency | Raw Material Cost(Company Currency) |
Company:company:default_currency |
| 32 | base_scrap_material_cost |
Data | Scrap Material Cost(Company Currency) |
Company:company:default_currency |
| 33 | total_cost_of_bom |
Section Break | ||
| 34 | total_cost |
Currency | Total Cost |
currency |
| 35 | column_break_26 |
Column Break | ||
| 36 | base_total_cost |
Currency | Total Cost(Company Currency) |
Company:company:default_currency |
| 37 | more_info_section |
Section Break | ||
| 38 | project |
Link | Project | Project |
| 39 | amended_from |
Link | Amended From | BOM |
| 40 | col_break23 |
Column Break | ||
| 41 | uom |
Link | Item UOM | UOM |
| 42 | section_break_25 |
Section Break | ||
| 43 | description |
Small Text | Item Description | |
| 44 | column_break_27 |
Column Break | ||
| 45 | image |
Attach | Image | |
| 46 | image_view |
Image | Image View |
image |
| 47 | section_break0 |
Section Break | Materials Required (Exploded) | |
| 48 | exploded_items |
Table | Exploded_items | BOM Explosion Item |
| 49 | website_section |
Section Break | Website | |
| 50 | show_in_website |
Check | Show in Website | |
| 51 | route |
Small Text | Route | |
| 52 | website_image |
Attach Image |
Image
Item Image (if not slideshow) |
|
| 53 | thumbnail |
Data | Thumbnail | |
| 54 | sb_web_spec |
Section Break | Website Specifications | |
| 55 | web_long_description |
Text Editor | Website Description | |
| 56 | show_items |
Check | Show Items | |
| 57 | show_operations |
Check | Show Operations |
Inherits from dataent.website.website_generator.WebsiteGenerator
Public API
/api/method/epaas.manufacturing.doctype.bom.bom.get_bom_items
epaas.manufacturing.doctype.bom.bom.get_bom_items (bom, company, qty=1, fetch_exploded=1)
No docs
epaas.manufacturing.doctype.bom.bom.get_bom_items_as_dict (bom, company, qty=1, fetch_exploded=1, fetch_scrap_items=0)
No docs
epaas.manufacturing.doctype.bom.bom.get_boms_in_bottom_up_order (bom_no=None)
No docs
Public API
/api/method/epaas.manufacturing.doctype.bom.bom.get_children
epaas.manufacturing.doctype.bom.bom.get_children (doctype, parent=None, is_root=False)
No docs
epaas.manufacturing.doctype.bom.bom.get_list_context (context)
No docs
epaas.manufacturing.doctype.bom.bom.validate_bom_no (item, bom_no)
Validate BOM No of sub-contracted items


$def with (folders) $:{RENDER("common/stage_title.html", ["Submission Folders", "Settings"])}
Removing a folder will also remove its subfolders. The submissions in each removed folder will be moved to your root folder.


STRICTLY BALLROOM A film review by Evan Hunt Copyright 1993 Evan Hunt
If you're the kind of person who sighs wistfully at the end of SINGIN' IN THE RAIN because they don't make movies like that anymore, rejoice--because they have! STRICTLY BALLROOM is a marvel of a movie, a parody of every musical cliche that amazingly also rejuvenates the genre and makes it fresh and alive again. It is at once sweetly romantic and hilariously funny and somehow makes a film about ballroom dancing which uses old pop songs the most original film musical since BEAUTY AND THE BEAST.
The story of STRICTLY BALLROOM uses elements from every musical ever made, and uses them perfectly. Scott, a young dancer, loses his partner when he breaks the regulations and starts dancing unauthorized steps. Fran, a frumpy beginner at his mothers dance school (marvelously played by Tara Morice), persuades him to follow his dream, with her as his partner. As they learn to dance together, they fall in love--but will Scott be able to stand against the pressure to go back to his old partner and dance to win?
What makes STRICTLY BALLROOM work so well is the utter conviction of the players. Although the extravagant parody is hilarious, the characters are utterly sincere, making you feel for them even as you laugh. The classic falling-in-love-through-dance scenes are blissful--the dancers simply glow with romance.
 If there was an Oscar for "movie that makes you feel real good", this would win.
-- Evan Hunt, Asst. Editor, THE WEB For more information about THE WEB, e-mail to<EMAIL_ADDRESS>.
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


{# templates/voter_guide/voter_guide_list.html #} {% extends "template_base.html" %} {% block title %}Voter Guides{% endblock %} {% block content %} {% load template_filters %} < Back to Admin Home
Jump to: Measures - Offices - Candidates - Politicians - Issues - Organizations - Public Opinions / Positions - Voter Guides - Polling Locations
Create Voter Guide. Don't see a voter guide for this election? Find Voter Guide
{% else %}(no elections found)
{% endif %} {% if voter_guide_list %}| Election | Time Span | Public Positions |
Friends-only Positions |
Last Updated | |||||
| {{ forloop.counter }} | {% if voter_guide.voter_guide_owner_type == voter_guide.ORGANIZATION %}{% if voter_guide.organization %} {% if voter_guide.organization.organization_name %} {{ voter_guide.organization.organization_name }} {% else %}(name missing){% endif %} {% else %} (no org found) {% endif %} | {% elif voter_guide.voter_guide_owner_type == voter_guide.PUBLIC_FIGURE %}Public Figure | {% elif voter_guide.voter_guide_owner_type == voter_guide.VOTER %}Voter | {% else %}?Owner Type? | {% endif %}{{ voter_guide.google_civic_election_id|default_if_none:"" }} | {{ voter_guide.vote_smart_time_span|default_if_none:"" }} | {{ voter_guide.number_of_public_positions|default_if_none:"" }} | {{ voter_guide.number_of_friends_only_positions|default_if_none:"" }} | {{ voter_guide.last_updated }} |
(no voter guides found)
{% endif %} {% endblock %}


---
layout: default
published: true
---
{{ content }}
Note: I've started writing blogs in medium https://medium.com/@sachinkalsi
Latest Posts
{% for post in site.posts%}
-
{% assign date_format = site.cayman-blog.date_format | default: "%b %-d, %Y" %}
{{ post.date | date: date_format }}
{{ post.excerpt | markdownify | truncatewords: 30 }}
{% endfor %}


Your search results will be populated here
Pairing substantial savings in time and money with the ease and reliability of doing it in-house, ever since… we invented it


#include <InGameMenu.hpp>
Definition at line 16 of file InGameMenu.hpp.
◆ InGameMenu()
◆ handleEvent()
| void TouhouFanGame::InGameMenu::handleEvent |
( |
const Input::Event & |
event | ) |
|
|
overridevirtual |
◆ render()
| void TouhouFanGame::InGameMenu::render |
( |
| ) |
|
|
overridevirtual |
◆ switched()
| void TouhouFanGame::InGameMenu::switched |
( |
bool |
isActive | ) |
|
|
overridevirtual |
◆ _game
| Game& TouhouFanGame::InGameMenu::_game |
|
private |
◆ _hud
◆ _map
| Map& TouhouFanGame::InGameMenu::_map |
|
private |
◆ _menu
| MenuMgr& TouhouFanGame::InGameMenu::_menu |
|
private |
◆ _screen
The documentation for this class was generated from the following files:


After a particle accelerator causes a freak storm, CSI Investigator...
Agent Phil Coulson of S.H.I.E.L.D. (Strategic Homeland Intervention...


Adding a Rating
How to rate the content of a Wiki page. Users are restricted to one rating per page which is tracked by computer using a cookie. Note: Ratings may be disabled on some or all pages.
- Navigate to the required page. See "Navigating the Wiki"
- In the Rating section, click inside one of the five radio boxes to select your rating from one to five where one is poor and five is great.
- Click the Rate Content link. Your rating is now added to the rating tally and a message reading "Thank you for rating this Page!" is displayed.
The Rating Thank You Page


UK police arrest man in enquiry over Vietnamese truck deaths
LONDON: British police arrested a 23-year old man from Northern Ireland on Friday (Nov 22) as part of their enquiry into the deaths of 39 Vietnamese people found in the back of a truck near London last month.
"He was arrested on suspicion of conspiracy to traffic people and conspiracy to assist unlawful immigration and remains in custody," Essex Police said in a statement.
The man was arrested on a motorway in Beaconsfield, a town 40km west of London, the statement said.
The victims - 31 males and eight women - were found in a truck container on an industrial estate in Grays, Essex, not far from docks on the River Thames, on Oct 23.
READ: UK police formally identify 39 bodies found in truck, victims confirmed to be Vietnamese
The truck driver, who is also from Northern Ireland, has been charged with 39 counts of manslaughter, conspiracy to traffic people, and money laundering.
A second man has been charged with the same offences and British authorities are trying to extradite him from Dublin.
READ: Three more arrested over 39 dead bodies in truck: UK police
READ: Second man charged over 39 UK truck deaths; Vietnam makes arrests
Police have also been looking for two brothers from Northern Ireland. Police in Vietnam have arrested 10 people there in connection with the deaths.


Home page
Cookies Needed By Location Each Day
Add a new store:
Store location:
Minimum customers per hour:
Maximum customers per hour:
Average cookies per customer:
Add store


Heading of this profile group
This is the description for this profile group. Copied this content from the live site 10.5.17. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Delectus harum obcaecati praesentium! Facilis sequi quisquam aliquid aperiam beatae eaque eveniet harum, maxime in natus deleniti corporis animi quod. Animi, placeat.
-
Captain of the swim team
More InformationThis is the mini bio, it should only show up on the profile index page. Something something something something something something something something something
-
Associate Professor of Business Ethics
Boyer House 206Mon-Wed: 3:00-4:00Thurs-Fri: 5:00-9:00509-522-4400 (work)<PHONE_NUMBER> (cell)Lorem ipsum dolor sit amet, consectetur adipisicing elit. Soluta quaerat, error quia. Nostrum earum quae explicabo repudiandae quia neque, odit et consequuntur laboriosam, obcaecati omnis eaque saepe placeat, tempora odio.
-
Senior Assistant to the President
509-527-5134 -
Administrative Assistant to the President
509-527-5132
Heading of this profile group
-
Director of Creative and Technical Services
Kristen Healy joined Whitman in August of 2013 after relocating from the Denver, Colorado, metro area. She previously worked as a senior engineer at CenturyLink, where she was responsible for creating websites and web applications. Kristen has a bachelor's degree in computer studies from Northwestern University and a Juris Doctor from Loyola University School of Law.
-
Senior Writer and Editor
Daniel Le Ray joined Whitman in August 2013 after five years living in the Boston area. Since graduating from the University of Warwick in the U.K., he has worked in publishing, communications and marketing, including a stint in Berlin as editor of Europe's largest marketing and PR magazine, Communication Director. Most recently, he was marketing manager for Sedo.com, an online company based in Cambridge, Massachusetts. Outside of the Whitman communications office, he enjoys good food and good bourbon, good dogs and good music.
-
Mailing Coordinator
-
Web Developer
Peter Means joined Whitman in 2009. After spending the first four-and-a-half years working in the development office on the alumni database, he joined the communications team in May 2014. As a web developer, most of his work is focused on the continual development and improvement of the Whitman website. Peter graduated from Washington State University in 2007 with a bachelor's degree in physical science, and outside of work his interests include music, art, cycling, board games, wishing he owned a sailboat and spending time with his wife and kids.


If this is set to null, then all elements is be autoclosed.
The indent type used in Scaml markup output.
The indent type used in Scaml markup output. Defaults to two spaces.
The newline separator used in the produced markup output.
The newline separator used in the produced markup output. Defaults
to "\n"
.

 When ugly rendering is enabled, evaluated content is not re-indented and newline preservation is not applied either.


For example, the number 123.4567 has 7 significant digits, but so does the number 0.0001234567. The number 1.234567000 has 10 significant digits, because we count the zeros which aren't leading zeros.


Am a FullStack Software Developer in Nairobi Kenya.
Am a tech enthusiast and I love programming because its a one way of solving problems that exist in our lives today.


{% extends 'base.html' %} {% block maincontent %}
404 - Something went wrong! This is kind of embarrasing!


goscripts.enrichment_stats module¶
@author: Pieter Moris
-
goscripts.enrichment_stats.
annotateOutput
(enrichmentTestResults, GOdict, gafDict, gafSubset)¶ Adds the GO id names to the array with enrichment results.
Parameters: - enrichmentTestResults (dict of dicts) – A dictionary containing dictionaries mapping the GO IDs to their frequency counts for both the interest and background set.
- GOdict (dict) – A dictionary of GO objects generated by importOBO(). Keys are of the format GO-0000001 and map to OBO objects.
- gafDict (dict) – A dictionary that maps the background’s Uniprot ACs to GO IDs.
- gafSubset (dict) – A dictionary that maps the subset’s Uniprot ACs to GO IDs.

Return type: DataFrame
-
goscripts.enrichment_stats.
countGOassociations
(validTerms, gafDict)¶ Counts the number of genes associated with at least one of the provided GO terms.
Parameters: - validTerms (set) – A set of GO terms. Should include the GO id of interest and all of its children.
- gafDict (dict) – A dictionary that maps Uniprot ACs to GO IDs.
Returns: The number of associated genes.
Return type: int
-
goscripts.enrichment_stats.
enrichmentAnalysis
(GOdict, gafDict, gafSubset, minGenes=3, threshold=0.05, propagation=True)¶ Performs a GO enrichment analysis.
First, all GO term IDs associated with the genes in the subset of interest, i.e. those defined in the gafSubset dictionary, will be tested using a one-sided hypergeometric test.
If the test is not significant at the chosen threshold (default = 0.05), the test will recursively be performed for all of the GO term’s parents. NOTE: these p-values are counted for multiple testing correction. If the test is significant, the recursive call will stop the propagation.
NOTE: At the moment, this means the test will be propagated until the top level, but after a certain point it might not be worth testing anymore (e.g. “biological process”). NOTE: Isn’t this cherry picking / p-value manipulation?
If the number of genes associated with a GO term is lower than minGenes, the test will be skipped for this term and its parents will recursively be tested. NOTE: these do not count towards the multiple testing correction limit.
For each test, the number of genes associated with the GO term is found by counting the number of genes associated with the GO term itself or with any of its child terms.
In the end, a dictionary containing the tested GO IDs mapped to p-values is returned. Any term that was not tested will be absent.
Parameters: - GOdict (dict) – A dictionary of GO objects generated by importOBO(). Keys are of the format GO-0000001 and map to OBO objects.
- gafDict (dict) – A dictionary that maps the background’s Uniprot ACs to GO IDs.
- gafSubset (dict) – A dictionary that maps the subset’s Uniprot ACs to GO IDs.
- minGenes (int) – The minimum number of genes that has to be associated with a term, before the test will be performed.
- threshold (float) – The threshold of the hypergeometric test for which the GO term’s parents will not be further recursively tested for enrichment.
- propagation (boolean) – Specifies whether or not tests should propagate upwards through the tree.
Returns: A dictionary of dictionaries mapping GO IDs to p-values and frequencies.
Return type: dict of dicts
-
goscripts.enrichment_stats.
enrichmentOneSided
(subsetGO, backgroundTotal, backgroundGO, subsetTotal)¶ Performs a one-sided (enrichment) hypergeometric test for a given GO term.
k or more successes (= GO associations = subsetGO) in N draws (= subsetTotal) from a population of size M (backgroundTotal) containing n successes (backgroundGO) k or more is the sum of the probability mass functions of k up to N successes since cdf gives the cumulative probability up and including input (less or equal to k successes), and we want P(k or more), we need to calculate 1 - P(less than k) = 1 - P(k-1 or less) sf is the survival function (1-cdf).
Parameters: - subsetGO (int) – The number of genes in the interest subset associated with a GO term.
- backgroundTotal (int) – The total number of genes in the background set.
- backgroundGO (int) – The number of genes in the background set associated with the GO term.
- subsetTotal (int) – The total number of genes in the interest subset.
Returns: The p-value of the one-sided hypergeometric test.
Return type: float
-
goscripts.enrichment_stats.
multipleTestingCorrection
(enrichmentTestResults, testType='fdr_bh', threshold=0.05)¶ Updates the original enrichmentTestResults dictionary of dictionaries by appending an additional dictionary mapping GO ids to corrected p-values.
Parameters: - enrichmentTestResults (dict of dicts) – An dictionary of dictionaries mapping GO ids to p-values and counts.
- testType (str) – Specifies the type of multiple correction. Options include: bonferroni and fdr_bh (Benjamini Hochberg) and any others defined by statsmodels.stats.multitest.multipletests().
- threshold (float) – The significance level to use.
Returns: Modifies the provided enrichmenTestResults dictionary in-place.
Return type: None
-
goscripts.enrichment_stats.
recursiveTester
(GOid, backgroundTotal, subsetTotal, GOdict, gafDict, gafSubset, minGenes, threshold, enrichmentTestResults, propagation)¶ Implements the recursive enrichment tests for the enrichmentAnalysis() function by propagating through parent terms in case of an insignificant result or low gene count.
Parameters: - GOid (str) – The GO term id that is being tested for enrichment.
- backgroundTotal (int) – The total number of genes in the background set.
- subsetTotal (int) – The total number of genes in the subset of interest.
- GOdict (dict) – A dictionary of GO objects generated by importOBO(). Keys are of the format GO-0000001 and map to OBO objects.
- gafDict (dict) – A dictionary mapping the background’s gene Uniprot AC’s to GO IDs.
- gafSubset (dict) – A dictionary that maps the subset’s Uniprot ACs to GO IDs.
- minGenes (int) – The minimum number of genes that has to be associated with
- threshold (float) – The threshold of the hypergeometric test for which the GO term’s parents will not be further recursively tested for enrichment.
- enrichmentTestResults (dict of dicts) – An dictionary of dictionaries that gets passed through the recursion and filled with mappings of GO ids to p-values and frequencies for every enrichment test.
- propagation (boolean) – Specifies whether or not tests should propagate upwards through the tree.
Returns: - Does not return anything, but fills in the passed pValues dictionary (which is nested
- in the enrichmentTestResults dictionary).


|
Crap Engine 2
|
#include <generalallocator.h>
Public Types | |
| typedef pointer_t< void > | pointer_void |
Public Member Functions | |
| CRAP_INLINE | general_allocator (pointer_void start, pointer_void end) |
| constructor using given memory More... | |
| CRAP_INLINE | ~general_allocator (void) |
| destructor More... | |
| CRAP_INLINE pointer_void | allocate (uint32_t size, uint32_t alignment, uint32_t offset) |
| allocate specific amount of bytes More... | |
| CRAP_INLINE void | deallocate (pointer_void address) |
| deallocating memory, by taking header out of list More... | |
| CRAP_INLINE uint32_t | allocation_size (pointer_void address) |
| returning size of allocation More... | |
Definition at line 37 of file generalallocator.h.
| typedef pointer_t<void> crap::general_allocator::pointer_void |
Definition at line 66 of file generalallocator.h.
| crap::general_allocator::general_allocator | ( | pointer_void | start, |
| pointer_void | end | ||
| ) |
constructor using given memory
Definition at line 85 of file generalallocator.h.
| crap::general_allocator::~general_allocator | ( | void | ) |
destructor
Definition at line 98 of file generalallocator.h.
| pointer_t< void > crap::general_allocator::allocate | ( | uint32_t | size, |
| uint32_t | alignment, | ||
| uint32_t | offset | ||
| ) |
allocate specific amount of bytes
Definition at line 104 of file generalallocator.h.
| uint32_t crap::general_allocator::allocation_size | ( | pointer_void | address | ) |
returning size of allocation
Definition at line 165 of file generalallocator.h.
| void crap::general_allocator::deallocate | ( | pointer_void | address | ) |
deallocating memory, by taking header out of list
Definition at line 145 of file generalallocator.h.


--- layout: post title: Build a Website in an Hour date: 2014-11-30 00:59:58.000000000 +00:00 categories: - Digital Marketing tags: [] status: publish type: post published: true meta: _edit_last: '1' _wpas_done_all: '1' _thumbnail_id: '103' _wp_old_slug: build-website-hour _wpas_skip_8772856: '1' _wpas_skip_8772378: '1' _wpt_view_count: '55' _yoast_wpseo_linkdex: '66' hefo_before: '0' hefo_after: '0' _yoast_wpseo_focuskw: build, hour, website author: login<EMAIL_ADDRESS>email<EMAIL_ADDRESS>display_name: Evan first_name: '' last_name: '' excerpt: !ruby/object:Hpricot::Doc options: {} ---
Follow these steps and you can build your website in an hour. Plus, You don't need to know code to build a website. I think everyone should have one. If you have $20, you can build it:
Before You Start, here's a quick break down of why you would want to build a site.
BENEFITS:
COST OF HOSTING A WEBSITE:
CONTACT ME<EMAIL_ADDRESS>- If you need help.
STEP 1 - CHOOSE A NAME (DOMAIN):
Search for a domain name (e.g. http://domain.com) that is not taken and is relatively short. Experts recommend that the domain be no more than 8 characters and easy to spell when heard.
GO DADDY's Search Domain Tool here: http://bit.ly/1vwDGyM
Don't buy the domain until step 3...
STEP 2 - PICK A HOST
Here are my 3 recommendations (pick one):
Cheapest - Nearlyfreespeech.net - Hard to setup, but allows you to pay the minimum. Do this if you do not expect to upload a lot of data and want to make a simple site.
Best - bluehost.com - Easiest setup, but is most expensive. It's great for large sites that have unique content, also better for e-commerce. Makes it easy to create website email addresses and you can host an additional domain on the site.
Alternatives - GoDaddy.com/Hostmonster.com - other alternatives to bluehost.
STEP 3 - PURCHASE DOMAIN AND HOSTING PLAN
For Nearlyfreespeech, Create an Account and put $20 in it. Purchase a $10 domain. Go to 'Sites' and 'create a new site' and add the alias domain of the domain you purchased previously. Select this server type - '[Production] Apache 2.4, PHP 5.5, CGI - $0.01/mb ' (megabyte) and then purchase the plan. After, select the mysql tab above and create a new mysql process and pay for that plan. You will only be charged for domain because you have not started using the other plans.
For bluehost and others, you will have to purchase an annual plan and pay the money up front. This usually costs a minimum of $50 or more. Make sure the plan has PHP and mysql admin access.
STEP 4 - INSTALL WORDPRESS
Wordpress is the easiest platform to manage your site. The technical term for this type of platform is a 'content management system'. These systems simply allow a web administrator to edit the site without using code.
IMPORTANT: Nearlyfreespeech requires many additional steps to install. This could take some time.
Follow these steps: http://www.jamosmith.com/installing-wordpress-at-nearly-free-speech/
and get the wordpress files here
For bluehost, go to 'HOSTING', then on the tab below click 'WEBSITE' and install Wordpress.

STEP 6: PICK A THEME & INSTALL PLUGINS
Must have plugins: Wordfence Security, Ad Injection, AddThis Share (social media buttons), Redirection (for adding a Homepage), Formmaker (for a contact form).
Go to Appearance, themes to search and install a theme of your choice.
Add all your contact and about information.
STEP 7: SHOW OFF YOUR SITE TO YOUR FRIENDs
Use Bit.ly to shorten links to your site and share your site on social media/email/etc.
Remember, you can always contact me
CONTACT<EMAIL_ADDRESS>- If you need help. Happy code-free web design!


Enter in the names of the places you want to search, one per line.
A single input may result in multiple outputs, so each line of output is grouped with its respective input.
The output is formatted as CSV, with values as: "input", "name", latitude, longitude, "address", place_id


McDonald's is bringing back retro Happy Meal toys
Available for a limited time
by Jordan Valinsky, CNN Business(CNN) - McDonald's Happy Meal might be for kids, but officially it's over the hill.
This year marks the 40th anniversary of the company's first Happy Meal, the kids meal that helped McDonald's achieve fast food supremacy. Today, roughly one in every four orders at McDonald's includes a Happy Meal, according to retail data tracker Sense360.
Each Happy Meal contains the option of a hamburger or chicken nuggets, a side like french fries and a drink. And a toy, some of which have become collector's items.
McDonald's is celebrating this milestone by re-releasing some of its most popular toys over the past four decades, including Ty Beanie Babies' Patti the Platypus and the Tamagotchi. Between November 7 through 11, McDonald's will sell a "Surprise Happy Meal" in 90 countries that will include the throwback toys.
It's the latest quick-service restaurant to tap into nostalgia to excite customers. Since fast-food customers are not particularly loyal to any brand, fast-food companies must resort to marketing tactics or wacky food creations to draw in customers.
Here's a brief history of the Happy Meal:
1979
The Circus Wagon Happy Meal, as it was originally known, launched in the United States in June 1979. The meal included a hamburger or cheeseburger, fries and cookies. Some of the early Happy Meal toys included a McDoodler stencil, McWrist wallet and a spinning top. The box became instantly recognizable with the meal.
1982
After becoming a hit in the United States, McDonald's expanded the meal internationally. It debuted first in Latin America before hitting Australia and New Zealand.
1984
McDonald's added McNuggets as a Happy Meal option. The addition inspired a line of Happy Meal toys modeled after the McNuggets.
1991
McDonald's partnered with United Airlines to offer Happy Meals on some of its flights. The deal ended in 2001.
1998
The first-ever global Happy Meal debuted with Disney film "Mulan." The meal had identical packaging and toys across 40 countries.
2012 - 2013
As its customers shifted toward healthier eating habits, McDonald's began overhauling the Happy Meal. In 2012, McDonald's made the french fries portion smaller, and it added fruit as an option. In 2013, it added milk or juice as beverage choices.
2018
McDonald's said it would provide cheeseburgers in Happy Meals only upon request. It removed artificial preservatives from some of its entrees and added bottled water as a drink option. The company said that 3.4 billion fruit, low-fat dairy and water items have been served in Happy Meals in the US since 2013.
2020
Starting next year, McDonald's will add a new reduced-sugar and low-fat chocolate milk option. It has 25% less sugar compared to the previous version.


_Light_It_Up_ (R) ** 1/2 (out of ****)
_Light_It_Up_, written and directed by Craig Bolotin, is different from most urban dramas in that in emphasizes ideas more than violence; in fact, the quantity of the latter is surprisingly low for its genre. But it's too bad that not many other things about the film are quite so distinctive.
Bolotin's setup, however, is rather interesting in its complication. A popular teacher (Judd Nelson) at Lincoln High is put on suspension after taking his class off-campus without permission. His students, led by star b-baller Lester (Usher Raymond) and senior class president Stephanie (Rosario Dawson), confront the principal (Glynn Turman) in protest, indirectly leading to a physical struggle between artist Ziggy (Robert Ri'chard) and the on-campus cop, Dante Jackson (Forest Whitaker). A bullet is fired; Jackson is wounded in the leg; and Lester finds himself with the gun, holding the cop hostage. Soon, Lester, Stephanie, and Ziggy, along with drug dealer Rivers (Clifton Collins Jr.), gang member Rodney (Fredro Starr), and pregnant outcast Lynn (Sara Gilbert)--now dubbed "the Lincoln 6"--find themselves being listened to for the first time.
Neglected but largely well-meaning inner city youths come into a position of power. It's a promising premise, but before long _Light_It_Up_ devolves into cliché. The hostage talks his captor into giving him a drink of water, only to attempt physical harm. The popular girl and the outcast set aside their differences and learn to cooperate. Most annoying, however, is Lester's "dark secret," which points to a deeper personal grudge against the police--as if there needed to be added justification for his rebellion.
Raymond's popularity as an R&B crooner is undoubtedly the justification Bolotin had in casting him as the lead, but that proves to not be a good enough reason. Raymond does a fairly adequate job (though his emotional scenes are rather strained), but he doesn't have the forceful, charismatic presence needed to convince as the ringleader of a group of such headstrong individuals. It's not terribly believable that Raymond's Lester can keep the hotheaded Rodney in check. Dawson has the strongest, most composed presence of the six, and she gives Stephanie a steely yet vulnerable confidence that Raymond's Lester clearly lacks.
Thankfully, Bolotin's wrapup to _Light_It_Up_, while not completely free of convention, resolves the film's issues in a realistic and satisfying manner. There is no idealistic happy ending; hard lessons are learned by all, and through them comes an inspiring sense of hope. If only all of _Light_It_Up_ lived up to that conclusion.
Michael Dequina<EMAIL_ADDRESS>|<EMAIL_ADDRESS>|<EMAIL_ADDRESS>|<EMAIL_ADDRESS>Mr. Brown's Movie Site: http://welcome.to/mrbrown CinemaReview Magazine: http://www.CinemaReview.com on ICQ: #25289934 | on AOL Instant Messenger: MrBrown23
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


Those who have visited this blog before will probably notice a change in appearance. I never cared much for the default WordPress theme, but I browsed through who knows how many alternate themes in the theme gallery and still didn’t find anything to my liking.
Then I decided to check out Ruby on Rails a couple of months ago, so I set up a test blog using Typo because it is one of the best open source examples of a complete Rails application. From there I discovered Packagethief’s Quoted-Printable blog and the Scribbish theme. Here’s a snippet that I posted to my test blog at the time:
I’ve always preferred page designs that are simple and clean, lightweight to load, and yet still pleasing to the eye. Scribbish fits those criteria perfectly. I just wish there was a WordPress-compatible version that I could use on my public blog!
I recently had a little time to kill, so I set out to create the WordPress version myself and ScribbishWP was born. If you’re a WordPress user in search of an awesome theme then check it out, and give a shout out to Packagethief for a great visual design.
[...] WP Theme: Scribbish A nice, two column theme for WordPress with bold titles and attractive/simple headings. Demo and thanks to Quoted-Printable Technorati Tags: Scribbish wordpress theme Related Posts from the Past: [...]
I’m very picky when it comes to themes but I do like this one a lot, thanks for your work. Yesterday I’ve implemented it on my website and am very pleased with it. I’ve made some minor adjustments / additions like a menu-bar on top (which I’m not completly happy with yet) and I’ve widgetized the sidebar for added convenience.
Thanks for a great theme!
Perhaps it’s a good idea to submit it at oswd.org and/or themes.wordpress.net so others can benfit from it as well!
[...] Scribbish theme for WordPress Theme simplecito y bonito para WordPress a 2 columnas (tags: wordpress theme themes template templates) [...]
I have changed the default Scribbish theme a bit and adding a third column with asides. You can check it out at:
http://andreimaxim.ro


|
Search the web using Google! |
||
|
Special Searchs Stanford Search Linux Searc |
Help About Google! Company Info Google Logos |
Get Google! updates monthly: Archive |


The code in this example uses objects (instead of primitives) as
method types.
As a result, given the structure of this code, the only
return type that can be used to declare
method m1, at line 13, is either A or D.
The reason for this is, the return type
of a method that overrides another method
(e.g. the method at line 13 overrides the method at line 8)
, must be
the same
type as the method it overrides (e.g. at line 8) --
or a subclass of that type
(i.e. D is a subclass of A ... at line 4).
Note: If method m1 is declared as type A, at line 13, the return statement at line 14 must
also be of type A (i.e. a D object can be an A, but an A object cannot be a D).
Also, the access modifier of the overriding method can be less restrictive
than the access modifier of the method that it overrides (e.g. protected vs. default). Otherwise,
for overriding to successfully occur,
the access modifiers for both methods (and their method signature) must be exactly the same.


Latitude Analysis
Plots
Temp
Clouds
Humidity
Wind
Comparison
Data
Summary - All the data
Here is the data that was collected from the over 2000 cities, cleaned and de-duplicated.


Car catches fire in Northwest Miami-Dade
by 7 News WSVNNORTHWEST MIAMI-DADE, FLA. (WSVN) - Crews have responded to the scene of a car fire in Northwest Miami-Dade.
7SkyForce hovered above the charred four-door sedan in the area of Northwest 52nd Ave and 173rd Drive, Monday afternoon.
A Miami-Dade Fire Rescue firefighter was seen spraying the vehicle with a water hose.
Officials have not specified whether anyone was injured or transported to the hospital, as they continue to investigate.


The overflow-tooltip
directive can be used to truncate text which may overflow its container, replacing the
overflow with an ellipsis. It is particularly suited for multi-line text where the ellipsis should come on the final
line. The text will always be truncated at the last full word, unless the text is a single word or the text has no spaces,
in which case words may be truncated between letters. The truncation position will be updated when the container resizes
or when the text content changes, and the tooltip will only be shown if the text has been truncated.
The contents of the element to which this directive are applied can also contain HTML in addition to plain text, allowing
complex formatting to be retained. The overflow-tooltip
directive is compatible with the tooltip-placement
attribute described above.
The CSS used in the example above is as follows:


DEVELOPERS: GUOCHUNMING,HUXUHONG,LIUHAIJUN,XIONGKAI,YICHEN,YUSHIMING,ZHOULIANG
IF YOU HAVE ANY QUESTIONS: YUSHIMING@SXIT.COM.CN


Rs. 875
Rs. 327
Rs. 345
It was extremely convenient and relaxing to shop from the website.The prices of essentials are reasonable and affordable. The delivery time and charges too are pretty convenient.
It is available at any time of the day. I am looking forward to shopping more and am extremely satisfied with the service provided as well as the quality of the products delivered.
The prices of essentials are reasonable and affordable. The delivery time and charges too are pretty convenient.It was extremely convenient and relaxing to shop from the website


First ensure the export target is set to "OGR".
OGR supports multiple backends. We export the data as a number of layers within a single datasource.
We recommend you select the following options:
| DriverName | ESRI Shapefile |
| DataSourceName | C:\temp\MasterMapOut |
| LayerName | MM_{0} |
By default, successive files will be overwritten.
To merge a large number of gz files into a single shape file, set "Append To Existing Files" to "True".
To import each input file into a collection of separate output file, set the LayerName to something like "MM_{0}_{1}". {0} will be the layer name, eg 'TopographicArea' and '1' will be the source filename eg 'InitialSupply_47135-SS7886'. Files will then have names like 'MM_TopographicArea_InitialSupply_47135-SS7886-5i1.shp'.
To automatically create directories for each input file, set "OutputEachFileToItsOwnDirectory" to "True".
Note that shape files use 32 bit integer file offsets internally - if you try to create a file more than 2Gb in size, problems will occur.
We recommend you select the following options:
| DriverName | MapInfo File |
| DataSourceName | C:\temp\MasterMapOut |
| LayerName | MM_{0} |
Additional options function as per the SHP file.
| DriverName | GML |
| DataSourceName | C:\temp\MasterMapOut\Map.GML |
| LayerName | MM_{0} |
GML files can contain multiple layers.
Use OutputEachFileToItsOwnDirectory to get each input tile individually.
Use AppendToExistingFiles to merge lots of input files together
| DriverName | KML |
| DataSourceName | C:\temp\MasterMapOut\Map.KML |
| LayerName | MM_{0} |
Options as per KML. Attributes are output in the description. No formatting information is generated.
You can convert data from OS grid references (known as OSGB1936 or EPSG:27700) to Latitude and Logitude systems used by GPS (known as WGS84 or EPSG:4326). To do this, enable the "ConvertToWGS84" option to true and specify the SRID of 4326.
The conversion is different from that available in PostGIS and PostGIS does not include the OSTN02 dataset used by Ordnance Survey. If you're mainly working with WGS84/GPScoordinates, I recommend you use this option. If you're mainly working with data surveyed in the UK then it won't be appropriate. If you get it wrong, the errors in coordinate conversion will be of the order of 7 meters.


Erica Mena Cannot Wait To Give Birth To Her Baby Girl – Check Out Her Recent Post
by Ron CollinsErica Mena seems to be losing her patience, and the gorgeous woman cannot wait to have her baby girl. She keeps posting various pregnancy-related photos, and the latest one seems to hint at the fact that she cannot wait to meet her baby girl.
Fans are in awe, and they keep complimenting her. People are telling Erica that she’s more beautiful than ever since she got pregnant and that she has a special glow.
Here’s Erica’s most recent post on social media:
Someone told Erica: ‘So proud of you!! Do not let them give vitamin K either!!!’ and another follower posted this: ‘Awww come on, princess!!!! We can’t wait to meet you! 💕’
Another fan seemed worried and said: ‘I have seen the love and hip hop trailer please dont make that show break yall up yall should have yall own show.’
A commenter posted this: ‘Wow! Beautiful, baby Samuel’s is ready. Straighttttt!’ and someone else is also happy for Erica and Safaree: ‘So happy for y’all. Y’all experienced enough pain. Congratulations ♥’
One follower said: ‘Birthing a life into this world is one of the most beautiful things a woman does.’
Someone else shared: ‘I can’t wait to see your little Dominican & Jamaican princess. She is going to be so beautiful and precious. GOD BLESS YOUR FAMILY.’
In other news, Erica loves the holidays, and she is definitely getting into the holiday spirit this year.
She just told fans that even though she is in NYC and she already has a Christmas Tree at home, she just got another one here as well.


Performing an 'add' / staging' is the process of updating (but not comitting) the current branch with new or modified files. This command can be performed multiple times before a commit. It only adds the content of the specified file(s) at the time the add command is run.
Adds all files / folders that or have changed. Note: will only add files/folders in the current folder / sub-folder.
Adds changed files that have an extension of 'html'.


Mapping Unmapped Places in OSM
youthmappers, May 22nd
Who is this dude on Zoom?
What is he going to talk about?
Why should I care?
Background
Pascal Neis previously ran a studies in 2010, 2011, and 2016 to identify areas underrepresented (unmapped) in OSM
The most recent study is from January 2020 and has identified hundreds of thousands places in OSM
Methodology
Use every place node of the OSM dataset which has a village-tag (place=village).
Search in a radius of ca. 700 m for a street with one of the following highway-values: residential, unclassified or service.
If no street can be found, mark the place as “unmapped”!
OSM is an ecosystem with many tools and software built around the mapping database.
Some of the tools built off of OSM are:
- The ID and JOSM editors
- OSMCha
- MapRoulette
- ResultsMap
- FieldPapers
- Osmose
OSMCha = OpenStreetMap Changeset Analyzer.
Its a tool that can be used for validation and data quality analysis.
Created by Wille Marcel in 2015 and is hosted by MapBox
What did Rory do?
<
Created a script to join the data with Natural Earth Administrative boundaries using mapshaper
Filtered the "unmapped" areas by country
Created example mapRoulette Projects
Fill out this form if you are interested in creating a mapRoulette Challenge of unmapped places for your chapter


RevupDigital Work Homepage
Search
Customer Relations
Zoho CRM
Zoho Email
Google Voice
...
SEO & Design Tools
SeoQuake (Chrome)
The Web Checker (Geekflare)
What Font (Chrome)
Color Wheel
Outsourcing
Fiverr
Upwork
Freelancer
Guru
Marketing
Cold Emailing
...
...
Campaign URL Builder
Search
!gsch Google Scholar
!a Amazon
!e Ebay
!yt YouTube
Graphic
TinyPNG (5MB size limit)
Kraken.io (1MB size limit)
Pablo
...
Sales & Negotiation
Tonality
Briefcase Technique
Mirroring
Do Not Reveal Prices
Prospecting
...
...
...
...
Front-End
Web Designer Depot
Transparent Textures
Code My UI
W3 Markup Validation


| Total net profit | -43.7 | Gross profit | 23.99 | Gross loss | -67.69 |
| Profit factor | 0.35 | Expected payoff | -0.84 | ||
| Absolute drawdown | -46.19 | Maximal drawdown (%) | 43.77 (-1808.68%) | ||
| Total trades | 52 | Profit trades (% of total) | 20 (38.46%) | Loss trades (% of total) | 32 (61.54%) |
| Long positions (won %) | 26 (42.31%) | Short positions (won %) | 26 (34.62%) | ||
| Largest | profit trade | 5.34 | loss trade | -3.5 | |
| Average | profit trade | 1.2 | loss trade | -2.12 | |
| Minimum | profit trade | 0.06 | loss trade | -0.1 | |
| Maximum | take profit in pips | 72.3 | stop loss in pips | -47.3 | |
| Average | take profit in pips | 20.7 | stop loss in pips | -31.5 | |
| Minimum | take profit in pips | -2.0 | stop loss in pips | -10.2 | |
| Maximum | Reward-Risk | 3.7 | Duration in minutes | 2094 | |
| Average | Reward-Risk | 0.8 | Duration in minutes | 142.3 | |
| Minimum | Reward-Risk | 0.0 | Duration in minutes | 0 | |
| Maximum | consecutive wins (profit in money) | 3.0 (2.83) | consecutive losses (loss in money) | 7.0 (-14.05) | |
| Average | consecutive wins | 1.0 | consecutive losses | 2.0 |
| Total net profit | -21.04 | Gross profit | 12.27 | Gross loss | -33.31 |
| Profit factor | 0.37 | Expected payoff | -0.81 | ||
| Absolute drawdown | -23.53 | Maximal drawdown (%) | 23.28 (-9312.0%) | ||
| Total trades | 26 | Profit trades (% of total) | 11 (42.31%) | Loss trades (% of total) | 15 (57.69%) |
| Largest | profit trade | 2.49 | loss trade | -3.5 | |
| Average | profit trade | 1.12 | loss trade | -2.22 | |
| Minimum | profit trade | 0.06 | loss trade | -0.1 | |
| Maximum | take profit in pips | 50.2 | stop loss in pips | -47.3 | |
| Average | take profit in pips | 19.4 | stop loss in pips | -34.8 | |
| Minimum | take profit in pips | -2.0 | stop loss in pips | -18.3 | |
| Maximum | Reward-Risk | 2.3 | Duration in minutes | 641.0 | |
| Average | Reward-Risk | 0.6 | Duration in minutes | 135.9 | |
| Minimum | Reward-Risk | 0.0 | Duration in minutes | 2.0 | |
| Maximum | consecutive wins (profit in money) | 3.0 (2.3) | consecutive losses (loss in money) | 4.0 (-7.29) | |
| Average | consecutive wins | 2.0 | consecutive losses | 2.0 |
| Total net profit | -22.66 | Gross profit | 11.72 | Gross loss | -34.38 |
| Profit factor | 0.34 | Expected payoff | -0.87 | ||
| Absolute drawdown | -24.22 | Maximal drawdown (%) | 24.29 (34700.0%) | ||
| Total trades | 26 | Profit trades (% of total) | 9 (34.62%) | Loss trades (% of total) | 17 (65.38%) |
| Largest | profit trade | 5.34 | loss trade | -3.1 | |
| Average | profit trade | 1.3 | loss trade | -2.02 | |
| Minimum | profit trade | 0.07 | loss trade | -0.77 | |
| Maximum | take profit in pips | 72.3 | stop loss in pips | -41.9 | |
| Average | take profit in pips | 22.1 | stop loss in pips | -28.2 | |
| Minimum | take profit in pips | 0.9 | stop loss in pips | -10.2 | |
| Maximum | Reward-Risk | 3.7 | Duration in minutes | 2094.0 | |
| Average | Reward-Risk | 1.0 | Duration in minutes | 148.8 | |
| Minimum | Reward-Risk | Duration in minutes | 0.0 | ||
| Maximum | consecutive wins (profit in money) | 2.0 (1.29) | consecutive losses (loss in money) | 6.0 (-11.24) | |
| Average | consecutive wins | 1.0 | consecutive losses | 2.0 |


6 Spatial Clustering
Spatial clustering aims to group of a large number of geographic areas or points into a smaller number of regions based on similiarities in one or more variables. Spatially constrained clustering is needed when clusters are required to be spatially contiguous.
In rgeoda v0.0.3, there are three different approaches explicitly incorporate the contiguity constraint in the optimization process: SKATER, Redcap and Max-p. More more details, please read the lab note that Dr. Luc Anselin wrote: http://geodacenter.github.io/workbook/8_spatial_clusters/lab8.html
For example, to apply spatial clustering on the Guerry dataset, we use the queen weights to define the spatial contiguity and select 6 variables for similarity measure: “Crm_prs”, “Crm_prp”, “Litercy”, “Donatns”, “Infants”, “Suicids”.
The following code is used to get a 2D data list for the selected variables:
6.1 SKATER
The Spatial C(K)luster Analysis by Tree Edge Removal(SKATER) algorithm introduced by Assuncao et al. (2006) is based on the optimal pruning of a minimum spanning tree that reflects the contiguity structure among the observations. It provides an optimized algorithm to prune to tree into several clusters that their values of selected variables are as similar as possible.
The SKATER function in rgeoda:
The parameters distance_method
, bound_vals
, min_bound
and random_seed
are optional.
See Max-p for the usage of bound_vals
and min_bound
.
For example, to create 4 spatially contiguous clusters using skater()
with Guerry dataset, the queen weights and the values of the 6 selected variables:
This skater()
function returns a 2D list, which represents 4 clusters. Each cluster is composed by several contiguity areas, e.g. 15, 74, 16, 55, 60, 39, 68, 33, 17, 82, 81, 0, 2, 40, 20, 80
rgeoda also provides utility functions to compute some descriptive statistics of the clustering results, e.g. to compute the ratio of between to total sum of squares:
betweenss <- between_sumofsquare(guerry_clusters, data)
totalss <- total_sumofsquare( data)
ratio <- betweenss / totalss
cat("The ratio of between to total sum of square:", ratio)
## The ratio of between to total sum of square: 0.3156447
6.2 REDCAP
REDCAP (Regionalization with dynamically constrained agglomerative clustering and partitioning) is developed by D. Guo (2008). Like SKATER, REDCAP starts from building a spanning tree with 3 different ways (single-linkage, average-linkage, and the complete-linkage). The single-linkage way leads to build a minimum spanning tree. Then,REDCAP provides 2 different ways (first‐order and full-order constraining) to prune the tree to find clusters. The first-order approach with a minimum spanning tree is exactly the same with SKATER. In GeoDa and rgeoda, the following methods are provided:
- First-order and Single-linkage
- Full-order and Complete-linkage
- Full-order and Average-linkage
- Full-order and Single-linkage
For example, to find 4 clusters using the same dataset and weights as above using REDCAP with Full-order and Complete-linkage method:
## [[1]]
## [1] 15 74 16 55 60 39 68 33 17 82 81 0 2 40 20 80
##
## [[2]]
## [1] 46 50 34 38 69 47 58 19 32 41 53 26
##
## [[3]]
## [1] 23 79 3 29 61 21 44 11 28 13 30 35 76 77 43 9 27 45 31 78 4 10 66
## [24] 37 5 14 7 63 62
##
## [[4]]
## [1] 49 52 72 84 8 57 56 59 42 1 25 51 48 54 64 75 18 83 73 36 24 71 6
## [24] 67 65 70 22 12
betweenss <- between_sumofsquare(redcap_clusters, data)
totalss <- total_sumofsquare( data)
ratio <- betweenss / totalss
cat("The ratio of between to total sum of square:", ratio)
## The ratio of between to total sum of square: 0.3156447
6.3 Max-p
The so-called max-p regions model (outlined in Duque, Anselin, and Rey 2012) uses a different approach and considers the regionalization problem as an application of integer programming. In addition, the number of regions is determined endogenously.
The algorithm itself consists of a search process that starts with an initial feasible solution and iteratively improves upon it while maintaining contiguity among the elements of each cluster. Like Geoda, rgeoda provides three different heuristic algorithms to find an optimal solution for max-p:
- greedy
- Tabu Search
- Simulated Annealing
Unlike SKATER and REDCAP that one can specify the number of clusters as an input paramter, max-p doesn’t allow to specify the number of clusters explicitly, but a constrained variable and the minimum bounding value that each cluster should reach that are used to find an optimized number of clusters.
For example, to use greedy
algorithm in maxp function with the same dataset and weights as above to find optimal clusters using max-p:
First, we need to specify, for example, every cluster must have population >= 3236.67 thousands people:
Then, we can call the max-p function with “greedy” algorith, the bound values and minimum bound value:
maxp_clusters <- maxp(queen_w, data, bound_vals, min_bound, "greedy")
betweenss <- between_sumofsquare(maxp_clusters, data)
ratio <- betweenss / totalss
cat("The ratio of between to total sum of square:", ratio)
## The ratio of between to total sum of square: 0.5070181
We can also specify using tabu search
algorithm in maxp function with the parameter of tabu length:
maxp_tabu_clusters <- maxp(queen_w, data, bound_vals, min_bound, "tabu", tabu_length=95)
betweenss <- between_sumofsquare(maxp_tabu_clusters, data)
ratio <- betweenss / totalss
cat("The ratio of between to total sum of square:", ratio)
## The ratio of between to total sum of square: 0.5280299
To apply simulated annealing
algorithm in maxp function with the parameter of cooling rate:
maxp_sa_clusters <- maxp(queen_w, data, bound_vals, min_bound, "sa", cool_rate=0.75)
betweenss <- between_sumofsquare(maxp_sa_clusters, data)
ratio <- betweenss / totalss
cat("The ratio of between to total sum of square:", ratio)
## The ratio of between to total sum of square: 0.5260249
We can also increase the number of iterations for local search process by specifying the parameter initial
(default value is 99):
maxp_clusters <- maxp(queen_w, data, bound_vals, min_bound, "greedy", initial=1000)
betweenss <- between_sumofsquare(maxp_clusters, data)
ratio <- betweenss / totalss
cat("Tratio of between to total sum of square:", ratio)
## Tratio of between to total sum of square: 0.5260249


Post edited 1 x times, last by
BrainFooLong
Administrator
Topicstarter
I added the 3.5 file to my extensions and everything, but i still get the same error, I have no idea why
thank you.
Which error ? Which Chrome version do you have ?
Did you try to delete the previous version before installing the last version ?
(Export your BBlog settings for backup before)


as an object, Rules consist of a subject, representing the XML Element, and a statement representing the Rule's logic this class cannot be used alone and is rather subclassed, one for each type of possible XML changes
@param subj [String] NMTOKEN name of element this rule applies to @param _statement [String, Regexp] string statement of rule in DTD declaration form or Regexp
# File lib/duxml/meta/grammar/rule.rb, line 22 def initialize(subj, _statement) @statement = _statement @object = nil super subj end


Jenna G. Tichon, Ph.D.
- Instructor 1, University of Manitoba
Home
About
CV
Blog
Activities
Talk Slides
Resources
{{ content }}


#include "legato.h"
Go to the source code of this file.
Typedefs | |
| typedef struct le_data_RequestObj * | le_data_RequestObjRef_t |
| typedef struct le_data_ConnectionStateHandler * | le_data_ConnectionStateHandlerRef_t |
| typedef void(* | le_data_ConnectionStateHandlerFunc_t) (const char *intfName, bool isConnected, void *contextPtr) |
Functions | |
| void | le_data_ConnectService (void) |
| void | le_data_DisconnectService (void) |
| le_data_ConnectionStateHandlerRef_t | le_data_AddConnectionStateHandler (le_data_ConnectionStateHandlerFunc_t handlerPtr, void *contextPtr) |
| void | le_data_RemoveConnectionStateHandler (le_data_ConnectionStateHandlerRef_t addHandlerRef) |
| le_data_RequestObjRef_t | le_data_Request (void) |
| void | le_data_Release (le_data_RequestObjRef_t requestRef) |
Legato Data Connection include file.
Copyright (C) Sierra Wireless Inc. Use of this work is subject to license.
| typedef void(* le_data_ConnectionStateHandlerFunc_t) (const char *intfName, bool isConnected, void *contextPtr) |
Handler for connection state changes
| intfName | Interface name for the data connection |
| isConnected | State: connected or disconnected |
| contextPtr |
| typedef struct le_data_ConnectionStateHandler* le_data_ConnectionStateHandlerRef_t |
Reference type used by Add/Remove functions for EVENT 'le_data_ConnectionState'
| typedef struct le_data_RequestObj* le_data_RequestObjRef_t |
Reference returned by Request function and used by Release function
| le_data_ConnectionStateHandlerRef_t le_data_AddConnectionStateHandler | ( | le_data_ConnectionStateHandlerFunc_t | handlerPtr, |
| void * | contextPtr | ||
| ) |
Add handler function for EVENT 'le_data_ConnectionState'
This event provides information on connection state changes
| [in] | handlerPtr | |
| [in] | contextPtr |
| void le_data_ConnectService | ( | void | ) |
Connect the current client thread to the service providing this API.
This function must be called before any other functions in this API. Normally, it's automatically called for the main thread, but must be explicitly called for other threads. For details, see Client-specific Functions.
This function is created automatically.
| void le_data_DisconnectService | ( | void | ) |
Disconnect the current client thread from the service providing this API.
Normally, this function doesn't need to be called. After this function is called, there's no longer a connection to the service, and the functions in this API can't be used. For details, see Client-specific Functions.
This function is created automatically.
| void le_data_Release | ( | le_data_RequestObjRef_t | requestRef | ) |
Release a previously requested data connection
| [in] | requestRef | Reference to a previously requested data connection |
| void le_data_RemoveConnectionStateHandler | ( | le_data_ConnectionStateHandlerRef_t | addHandlerRef | ) |
Remove handler function for EVENT 'le_data_ConnectionState'
| [in] | addHandlerRef |
| le_data_RequestObjRef_t le_data_Request | ( | void | ) |
Request the default data connection