History #
2015-02-28, version 1.4.0 #
- Implemented trigonometric functions:
acosh
,acoth
,acsch
,asech
,asinh
,atanh
,acot
,acsc
,asec
. Thanks @BigFav. - Added BigNumber support for functions:
cot
,csc
,sec
,coth
,csch
,sech
. Thanks @BigFav. - Implemented support for serialization and deserialization of math.js data types.
- Fixed the calculation of
norm()
andabs()
for large complex numbers. Thanks @rjbaucells. - Fixed #281: improved formatting complex numbers. Round the real or imaginary part to zero when the difference is larger than the configured precision.
2015-02-09, version 1.3.0 #
- Implemented BigNumber implementations of most trigonometric functions:
sin
,cos
,tan
,asin
,acos
,atan
,cosh
,sinh
,tanh
. Thanks @BigFav. - Implemented function
trace
. Thanks @pcorey. - Faster loading of BigNumber configuration with a high precision by lazy
loading constants like
pi
ande
. - Fixed constants
NaN
andInfinity
not being BigNumber objects when BigNumbers are configured. - Fixed missing parentheses in the
toTex
representation of functionpermutations
. - Some minor fixes in the docs. Thanks @KenanY.
2014-12-25, version 1.2.0 #
- Support for bitwise operations
bitAnd
,bitNot
,bitOr
,bitXor
,leftShift
,rightArithShift
, andrightLogShift
. Thanks @BigFav. - Support for boolean operations
and
,not
,or
,xor
. Thanks @BigFav. - Support for
gamma
function. Thanks @BigFav. - Converting a unit without value will now result in a unit with value,
i.e.
inch in cm
will return2.54 cm
instead ofcm
. - Improved accuracy of
sinh
and complexcos
andsin
. Thanks @pavpanchekha. - Renamed function
select
tochain
. The old functionselect
will remain functional until math.js v2.0. - Upgraded to decimal.js v4.0.1 (BigNumber library).
2014-11-22, version 1.1.1 #
- Fixed Unit divided by Number returning zero.
- Fixed BigNumber downgrading to Number for a negative base in
pow
. - Fixed some typos in error messaging (thanks @andy0130tw) and docs.
2014-11-15, version 1.1.0 #
- Implemented functions
dot
(dot product),cross
(cross product), andnthRoot
. - Officially opened up the API of expression trees:
- Documented the API.
- Implemented recursive functions
clone
,map
,forEach
,traverse
,transform
, andfilter
for expression trees. - Parameter
index
in the callbacks ofmap
andforEach
are now cloned for every callback. - Some internal refactoring inside nodes to make the API consistent:
- Renamed
params
toargs
and vice versa to make things consistent. - Renamed
Block.nodes
toBlock.blocks
. FunctionNode
now has aname: string
instead of asymbol: SymbolNode
.- Changed constructor of
RangeNode
tonew RangeNode(start: Node, end: Node [, step: Node])
. - Nodes for a
BlockNode
must now be passed via the constructor instead of via a functionadd
.
- Fixed
2e
giving a syntax error instead of being parsed as2 * e
.
2014-09-12, version 1.0.1 #
- Disabled array notation for ranges in a matrix index in the expression parser (it is confusing and redundant there).
- Fixed a regression in the build of function subset not being able to return a scalar.
- Fixed some missing docs and broken links in the docs.
2014-09-04, version 1.0.0 #
- Implemented a function
filter(x, test)
. - Removed
math.distribution
for now, needs some rethinking. math.number
can convert units to numbers (requires a second argument)- Fixed some precedence issues with the range and conversion operators.
- Fixed an zero-based issue when getting a matrix subset using an index containing a matrix.
2014-08-21, version 0.27.0 #
- Implemented functions
sort(x [, compare])
andflatten(x)
. - Implemented support for
null
in all functions. - Implemented support for "rawArgs" functions in the expression parser. Raw functions are invoked with unevaluated parameters (nodes).
- Expressions in the expression parser can now be spread over multiple lines, like '2 +\n3'.
- Changed default value of the option
wrap
of functionmath.import
to false. - Changed the default value for new entries in a resized matrix when to zero.
To leave new entries uninitialized, use the new constant
math.uninitialized
as default value. - Renamed transform property from
__transform__
totransform
, and documented the transform feature. - Fixed a bug in
math.import
not applying options when passing a module name. - A returned matrix subset is now only squeezed when the
index
consists of scalar values, and no longer for ranges resolving into a single value.
2014-08-03, version 0.26.0 #
- A new instance of math.js can no longer be created like
math([options])
, to prevent side effects from math being a function instead of an object. Instead, use the functionmath.create([options])
to create a new instance. - Implemented
BigNumber
support for all constants:pi
,tau
,e
,phi
,E
,LN2
,LN10
,LOG2E
,LOG10E
,PI
,SQRT1_2
, andSQRT2
. - Implemented
BigNumber
support for functionsgcd
,xgcd
, andlcm
. - Fixed function
gxcd
returning an Array when math.js was configured as{matrix: 'matrix'}
. - Multi-line expressions now return a
ResultSet
instead of anArray
. - Implemented transforms (used right now to transform one-based indices to zero-based for expressions).
- When used inside the expression parser, functions
concat
,min
,max
, andmean
expect an one-based dimension number. - Functions
map
andforEach
invoke the callback with one-based indices when used from within the expression parser. - When adding or removing dimensions when resizing a matrix, the dimensions are added/removed from the inner side (right) instead of outer side (left).
- Improved index out of range errors.
- Fixed function
concat
not accepting aBigNumber
for parameterdim
. - Function
squeeze
now squeezes both inner and outer singleton dimensions. - Output of getting a matrix subset is not automatically squeezed anymore except for scalar output.
- Renamed
FunctionNode
toFunctionAssignmentNode
, and renamedParamsNode
toFunctionNode
for more clarity. - Fixed broken auto completion in CLI.
- Some minor fixes.
2014-07-01, version 0.25.0 #
The library now immediately returns a default instance of mathjs, there is no need to instantiate math.js in a separate step unless one ones to set configuration options:
// instead of: var mathjs = require('mathjs'), // load math.js math = mathjs(); // create an instance // just do: var math = require('mathjs');
Implemented support for implicit multiplication, like
math.eval('2a', {a:3})
andmath.eval('(2+3)(1-3)')
. This changes behavior of matrix indexes as well: an expression like[...][...]
is not evaluated as taking a subset of the first matrix, but as an implicit multiplication of two matrices.Removed utility function
ifElse
. This function is redundant now the expression parser has a conditional operatora ? b : c
.Fixed a bug with multiplying a number with a temperature,
likemath.eval('10 * celsius')
.Fixed a bug with symbols having value
undefined
not being evaluated.
2014-06-20, version 0.24.1 #
- Something went wrong with publishing on npm.
2014-06-20, version 0.24.0 #
- Added constant
null
. - Functions
equal
andunequal
supportnull
andundefined
now. - Function
typeof
now recognizes regular expressions as well. - Objects
Complex
,Unit
, andHelp
now return their string representation when calling.valueOf()
. - Changed the default number of significant digits for BigNumbers from 20 to 64.
- Changed the behavior of the conditional operator (a ? b : c) to lazy evaluating.
- Fixed imported, wrapped functions not accepting
null
andundefined
as function arguments.
2014-06-10, version 0.23.0 #
- Renamed some functions (everything now has a logical, camel case name):
- Renamed functions
edivide
,emultiply
, andepow
todotDivide
,dotMultiply
, anddotPow
respectively. - Renamed functions
smallereq
andlargereq
tosmallerEq
andlargerEq
. - Renamed function
unary
tounaryMinus
and added support for strings.
- Renamed functions
end
is now a reserved keyword which cannot be used as function or symbol name in the expression parser, and is not allowed in the scope against which an expression is evaluated.- Implemented function
unaryPlus
and unary plus operator. - Implemented function
deepEqual
for matrix comparisons. - Added constant
phi
, the golden ratio (phi = 1.618...
). - Added constant
version
, returning the version number of math.js as string. - Added unit
drop
(gtt
). - Fixed not being able to load math.js using AMD/require.js.
- Changed signature of
math.parse(expr, nodes)
tomath.parse(expr, options)
whereoptions: {nodes: Object.<String, Node>}
- Removed matrix support from conditional function
ifElse
. Removed automatic assignment of expression results to variable
ans
. This functionality can be restored by pre- or postprocessing every evaluation, something like:function evalWithAns (expr, scope) { var ans = math.eval(expr, scope); if (scope) { scope.ans = ans; } return ans; }
2014-05-22, version 0.22.0 #
- Implemented support to export expressions to LaTeX. Thanks Niels Heisterkamp (@nheisterkamp).
- Output of matrix multiplication is now consistently squeezed.
- Added reference documentation in the section /docs/reference.
- Fixed a bug in multiplying units without value with a number (like
5 * cm
). - Fixed a bug in multiplying two matrices containing vectors (worked fine for arrays).
- Fixed random functions not accepting Matrix as input, and always returning a Matrix as output.
2014-05-13, version 0.21.1 #
- Removed
crypto
library from the bundle. - Deprecated functions
Parser.parse
andParser.compile
. Usemath.parse
andmath.compile
instead. - Fixed function
add
not adding strings and matrices element wise. - Fixed parser not being able to evaluate an exponent followed by a unary minus
like
2^-3
, and a transpose followed by an index like[3]'[1]
.
2014-04-24, version 0.21.0 #
- Implemented trigonometric hyperbolic functions
cosh
,coth
,csch
,sech
,sinh
,tanh
. Thanks Rogelio J. Baucells (@rjbaucells). - Added property
type
to all expression nodes in an expression tree. - Fixed functions
log
,log10
,pow
, andsqrt
not supporting complex results from BigNumber input (likesqrt(bignumber(-4))
).
2014-04-16, version 0.20.0 #
- Switched to module
decimal.js
for BigNumber support, instead ofbignumber.js
. - Implemented support for polar coordinates to the
Complex
datatype. Thanks Finn Pauls (@finnp). - Implemented BigNumber support for functions
exp
,log
, andlog10
. - Implemented conditional operator
a ? b : c
in expression parser. - Improved floating point comparison: the functions now check whether values
are nearly equal, against a configured maximum relative difference
epsilon
. Thanks Rogelio J. Baucells (@rjbaucells). - Implemented function
norm
. Thanks Rogelio J. Baucells (@rjbaucells). - Improved function
ifElse
, is now specified for special data types too. - Improved function
det
. Thanks Bryan Cuccioli (@bcuccioli). - Implemented
BigNumber
support for functionsdet
anddiag
. - Added unit alias
lbs
(pound mass). - Changed configuration option
decimals
toprecision
(applies to BigNumbers only). - Fixed support for element-wise comparisons between a string and a matrix.
- Fixed: expression parser now trows IndexErrors with one-based indices instead of zero-based.
- Minor bug fixes.
2014-03-30, version 0.19.0 #
- Implemented functions
compare
,sum
,prod
,var
,std
,median
. - Implemented function
ifElse
Thanks @mtraynham. - Minor bug fixes.
2014-02-15, version 0.18.1 #
- Added unit
feet
. - Implemented function
compile
(shortcut for parsing and then compiling). - Improved performance of function
pow
for matrices. Thanks @hamadu. - Fixed broken auto completion in the command line interface.
- Fixed an error in function
combinations
for large numbers, and improved performance of both functionscombinations
andpermutations
.
2014-01-18, version 0.18.0 #
- Changed matrix index notation of expression parser from round brackets to
square brackets, for example
A[1, 1:3]
instead ofA(1, 1:3)
. - Removed need to use the
function
keyword for function assignments in the expression parser, you can define a function now likef(x) = x^2
. - Implemented a compilation step in the expression parser: expressions are compiled into JavaScript, giving much better performance (easily 10x as fast).
- Renamed unit conversion function and operator
in
toto
. Operatorin
is still available in the expression parser as an alias forto
. Added unitin
, an abbreviation forinch
. Thanks Elijah Insua (@tmpvar). - Added plurals and aliases for units.
- Implemented an argument
includeEnd
for functionrange
(false by default). - Ranges in the expression parser now support big numbers.
- Implemented functions
permutations
andcombinations
. Thanks Daniel Levin (@daniel-levin). - Added lower case abbreviation
l
for unit litre.
2013-12-19, version 0.17.1 #
- Fixed a bug with negative temperatures.
- Fixed a bug with prefixes of units squared meter
m2
and cubic meterm3
.
2013-12-12, version 0.17.0 #
- Renamed and flattened configuration settings:
number.defaultType
is nownumber
.number.precision
is nowdecimals
.matrix.defaultType
is nowmatrix
.
- Function
multiply
now consistently outputs a complex number on complex input. - Fixed
mod
andin
not working as function (only as operator). - Fixed support for old browsers (IE8 and older), compatible when using es5-shim.
- Fixed support for Java's ScriptEngine.
2013-11-28, version 0.16.0 #
- Implemented BigNumber support for arbitrary precision calculations.
Added settings
number.defaultType
andnumber.precision
to configure big numbers. - Documentation is extended.
- Removed utility functions
isScalar
,toScalar
,isVector
,toVector
fromMatrix
andRange
. Usemath.squeeze
andmath.size
instead. - Implemented functions
get
andset
onMatrix
, for easier and faster retrieval/replacement of elements in a matrix. - Implemented function
resize
, handling matrices, scalars, and strings. - Functions
ones
andzeros
now return an empty matrix instead of a number 1 or 0 when no arguments are provided. - Implemented functions
min
andmax
forRange
andIndex
. - Resizing matrices now leaves new elements undefined by default instead of
filling them with zeros. Function
resize
now has an extra optional parameterdefaultValue
. - Range operator
:
in expression parser has been given a higher precedence. - Functions don't allow arguments of unknown type anymore.
- Options be set when constructing a math.js instance or using the new function
config(options
. Options are no longer accessible viamath.options
. - Renamed
scientific
notation toexponential
in functionformat
. - Function
format
outputs exponential notation with positive exponents now always with+
sign, so outputs2.1e+3
instead of2.1e3
. - Fixed function
squeeze
not being able squeeze into a scalar. - Some fixes and performance improvements in the
resize
andsubset
functions. - Function
size
now adheres to the optionmatrix.defaultType
for scalar input. - Minor bug fixes.
2013-10-26, version 0.15.0 #
- Math.js must be instantiated now, static calls are no longer supported. Usage:
- node.js:
var math = require('mathjs')();
- browser:
var math = mathjs();
- node.js:
- Implemented support for multiplying vectors with matrices.
- Improved number formatting:
- Function
format
now support various options: precision, different notations (fixed
,scientific
,auto
), and more. - Numbers are no longer rounded to 5 digits by default when formatted.
- Implemented a function
format
forMatrix
,Complex
,Unit
,Range
, andSelector
to format using options. - Function
format
does only stringify values now, and has a new parameterprecision
to round to a specific number of digits. - Removed option
math.options.precision
, usemath.format(value [, precision])
instead. - Fixed formatting numbers as scientific notation in some cases returning a zero digit left from the decimal point. (like "0.33333e8" rather than "3.3333e7"). Thanks @husayt.
- Function
- Implemented a function
print
to interpolate values in a template string, this functionality was moved from the functionformat
. - Implemented statistics function
mean
. Thanks Guillermo Indalecio Fernandez (@guillermobox). - Extended and changed
max
andmin
for multi dimensional matrices: they now return the maximum and minimum of the flattened array. An optional second argumentdim
allows to calculate themax
ormin
for specified dimension. - Renamed option
math.options.matrix.default
tomath.options.matrix.defaultType
. - Removed support for comparing complex numbers in functions
smaller
,smallereq
,larger
,largereq
. Complex numbers cannot be ordered.
2013-10-08, version 0.14.0 #
- Introduced an option
math.options.matrix.default
which can have valuesmatrix
(default) orarray
. This option is used by the functionseye
,ones
,range
, andzeros
, to determine the type of matrix output. - Getting a subset of a matrix will automatically squeeze the resulting subset, setting a subset of a matrix will automatically unsqueeze the given subset.
- Removed concatenation of nested arrays in the expression parser.
You can now input nested arrays like in JavaScript. Matrices can be
concatenated using the function
concat
. - The matrix syntax
[...]
in the expression parser now creates 1 dimensional matrices by default.math.eval('[1,2,3,4]')
returns a matrix with size[4]
,math.eval('[1,2;3,4]')
returns a matrix with size[2,2]
. - Documentation is restructured and extended.
- Fixed non working operator
mod
(modulus operator).
2013-09-03, version 0.13.0 #
- Implemented support for booleans in all relevant functions.
- Implemented functions
map
andforEach
. Thanks Sebastien Piquemal (@sebpic). - All construction functions can be used to convert the type of variables, also element-wise for all elements in an Array or Matrix.
- Changed matrix indexes of the expression parser to one-based with the upper-bound included, similar to most math applications. Note that on a JavaScript level, math.js uses zero-based indexes with excluded upper-bound.
- Removed support for scalars in the function
subset
, it now only supports Array, Matrix, and String. - Removed the functions
get
andset
from a selector, they are a duplicate of the functionsubset
. - Replaced functions
get
andset
ofMatrix
with a single functionsubset
. - Some moving around with code and namespaces:
- Renamed namespace
math.expr
tomath.expression
(contains Scope, Parser, node objects). - Renamed namespace
math.docs
tomath.expression.docs
. - Moved
math.expr.Selector
tomath.chaining.Selector
.
- Renamed namespace
- Fixed some edge cases in functions
lcm
andxgcd
.
2013-08-22, version 0.12.1 #
- Fixed outdated version of README.md.
- Fixed a broken unit test.
2013-08-22, version 0.12.0 #
- Implemented functions
random([min, max])
,randomInt([min, max])
,pickRandom(array)
. Thanks Sebastien Piquemal (@sebpic). - Implemented function
distribution(name)
, generating a distribution object with functionsrandom
,randomInt
,pickRandom
for different distributions. Currently supportinguniform
andnormal
. - Changed the behavior of
range
to exclude the upper bound, sorange(1, 4)
now returns[1, 2, 3]
instead of[1, 2, 3, 4]
. - Changed the syntax of
range
, which is nowrange(start, end [, step])
instead ofrange(start, [step, ] end)
. - Changed the behavior of
ones
andzeros
to geometric dimensions, for exampleones(3)
returns a vector with length 3, filled with ones, andones(3,3)
returns a 2D array with size [3, 3]. - Changed the return type of
ones
andzeros
: they now return an Array when arguments are Numbers or an Array, and returns a Matrix when the argument is a Matrix. - Change matrix index notation in parser from round brackets to square brackets,
for example
A[0, 0:3]
. - Removed the feature introduced in v0.10.0 to automatically convert a complex value with an imaginary part equal to zero to a number.
- Fixed zeros being formatted as null. Thanks @TimKraft.
2013-07-23, version 0.11.1 #
- Fixed missing development dependency
2013-07-23, version 0.11.0 #
- Changed math.js from one-based to zero-based indexes.
- Getting and setting matrix subset is now zero-based.
- The dimension argument in function
concat
is now zero-based.
- Improvements in the string output of function help.
- Added constants
true
andfalse
. - Added constructor function
boolean
. - Fixed function
select
not accepting0
as input. Thanks Elijah Manor (@elijahmanor). - Parser now supports multiple unary minus operators after each other.
- Fixed not accepting empty matrices like
[[], []]
. - Some fixes in the end user documentation.
2013-07-08, version 0.10.0 #
- For complex calculations, all functions now automatically replace results
having an imaginary part of zero with a Number. (
2i * 2i
now returns a Number-4
instead of a Complex-4 + 0i
). - Implemented support for injecting custom node handlers in the parser. Can be used for example to implement a node handler for plotting a graph.
- Implemented end user documentation and a new
help
function. - Functions
size
andsqueeze
now return a Matrix instead of an Array as output on Matrix input. - Added a constant tau (2 * pi). Thanks Zak Zibrat (@palimpsests).
- Renamed function
unaryminus
tounary
. - Fixed a bug in determining node dependencies in function assignments.
2013-06-14, version 0.9.1 #
- Implemented element-wise functions and operators:
emultiply
(x .* y
),edivide
(x ./ y
),epow
(x .^ y
). - Added constants
Infinity
andNaN
. - Removed support for Workspace to keep the library focused on its core task.
- Fixed a bug in the Complex constructor, not accepting NaN values.
- Fixed division by zero in case of pure complex values.
- Fixed a bug in function multiply multiplying a pure complex value with Infinity.
2013-05-29, version 0.9.0 #
- Implemented function
math.parse(expr [,scope])
. Optional parameter scope can be a plain JavaScript Object containing variables. - Extended function
math.expr(expr [, scope])
with an additional parameterscope
, similar toparse
. Example:math.eval('x^a', {x:3, a:2});
. - Implemented function
subset
, to get or set a subset from a matrix, string, or other data types. - Implemented construction functions number and string (mainly useful inside the parser).
- Improved function
det
. Thanks Bryan Cuccioli (@bcuccioli). - Moved the parse code from prototype math.expr.Parser to function math.parse, simplified Parser a little bit.
- Strongly simplified the code of Scope and Workspace.
- Fixed function mod for negative numerators, and added error messages in case of wrong input.
2013-05-18, version 0.8.2 #
- Extended the import function and some other minor improvements.
- Fixed a bug in merging one dimensional vectors into a matrix.
- Fixed a bug in function subtract, when subtracting a complex number from a real number.
2013-05-10, version 0.8.1 #
- Fixed an npm warning when installing mathjs globally.
2013-05-10, version 0.8.0 #
- Implemented a command line interface. When math.js is installed globally via npm, the application is available on your system as 'mathjs'.
- Implemented
end
keyword for index operator, and added support for implicit start and end (expressions likea(2,:)
andb(2:end,3:end-1)
are supported now). - Function math.eval is more flexible now: it supports variables and multi-line expressions.
- Removed the read-only option from Parser and Scope.
- Fixed non-working unequal operator != in the parser.
- Fixed a bug in resizing matrices when replacing a subset.
- Fixed a bug in updating a subset of a non-existing variable.
- Minor bug fixes.
2013-05-04, version 0.7.2 #
- Fixed method unequal, which was checking for equality instead of inequality. Thanks @FJS2.
2013-04-27, version 0.7.1 #
- Improvements in the parser:
- Added support for chained arguments.
- Added support for chained variable assignments.
- Added a function remove(name) to remove a variable from the parsers scope.
- Renamed nodes for more consistency and to resolve naming conflicts.
- Improved stringification of an expression tree.
- Some simplifications in the code.
- Minor bug fixes.
- Fixed a bug in the parser, returning NaN instead of throwing an error for a
number with multiple decimal separators like
2.3.4
. - Fixed a bug in Workspace.insertAfter.
- Fixed: math.js now works on IE 6-8 too.
2013-04-20, version 0.7.0 #
- Implemented method
math.eval
, which uses a readonly parser to evaluate expressions. - Implemented method
xgcd
(extended eucledian algorithm). Thanks Bart Kiers (@bkiers). - Improved math.format, which now rounds values to a maximum number of digits
instead of decimals (default is 5 digits, for example
math.format(math.pi)
returns3.1416
). - Added examples.
- Changed methods square and cube to evaluate matrices element wise (consistent with all other methods).
- Changed second parameter of method import to an object with options.
- Fixed method math.typeof on IE.
- Minor bug fixes and improvements.
2013-04-13, version 0.6.0 #
- Implemented chained operations via method math.select(). For example
math.select(3).add(4).subtract(2).done()
will return5
. - Implemented methods gcd and lcm.
- Implemented method
Unit.in(unit)
, which creates a clone of the unit with a fixed representation. For examplemath.unit('5.08 cm').in('inch')
will return a unit which string representation always is in inch, thus2 inch
.Unit.in(unit)
is the same as methodmath.in(x, unit)
. - Implemented
Unit.toNumber(unit)
, which returns the value of the unit when represented with given unit. For examplemath.unit('5.08 cm').toNumber('inch')
returns the number2
, as the representation of the unit in inches has 2 as value. - Improved: method
math.in(x, unit)
now supports a string as second parameter, for examplemath.in(math.unit('5.08 cm'), 'inch')
. - Split the end user documentation of the parser functions from the source files.
- Removed function help and the built-in documentation from the core library.
- Fixed constant i being defined as -1i instead of 1i.
- Minor bug fixes.
2013-04-06, version 0.5.0 #
- Implemented data types Matrix and Range.
- Implemented matrix methods clone, concat, det, diag, eye, inv, ones, size, squeeze, transpose, zeros.
- Implemented range operator
:
, and transpose operator'
in parser. - Changed: created construction methods for easy object creation for all data
types and for the parser. For example, a complex value is now created
with
math.complex(2, 3)
instead ofnew math.Complex(2, 3)
, and a parser is now created withmath.parser()
instead ofnew math.parser.Parser()
. - Changed: moved all data types under the namespace math.type, and moved the Parser, Workspace, etc. under the namespace math.expr.
- Changed: changed operator precedence of the power operator:
- it is now right associative instead of left associative like most scripting
languages. So
2^3^4
is now calculated as2^(3^4)
. - it has now higher precedence than unary minus most languages, thus
-3^2
is now calculated as-(3^2)
.
- it is now right associative instead of left associative like most scripting
languages. So
- Changed: renamed the parsers method 'put' into 'set'.
- Fixed: method 'in' did not check for units to have the same base.
2013-03-16, version 0.4.0 #
- Implemented Array support for all methods.
- Implemented Array support in the Parser.
- Implemented method format.
- Implemented parser for units, math.Unit.parse(str).
- Improved parser for complex values math.Complex.parse(str);
- Improved method help: it now evaluates the examples.
- Fixed: a scoping issue with the Parser when defining functions.
- Fixed: method 'typeof' was not working well with minified and mangled code.
- Fixed: errors in determining the best prefix for a unit.
2013-03-09, version 0.3.0 #
- Implemented Workspace
- Implemented methods cot, csc, sec.
- Implemented Array support for methods with one parameter.
2013-02-25, version 0.2.0 #
- Parser, Scope, and expression tree with Nodes implemented.
- Implemented method import which makes it easy to extend math.js.
- Implemented methods arg, conj, cube, equal, factorial, im, largereq, log(x, base), log10, mod, re, sign, smallereq, square, unequal.
2013-02-18, version 0.1.0 #
- Reached full compatibility with Javascripts built-in Math library.
- More functions implemented.
- Some bugfixes.
2013-02-16, version 0.0.2 #
- All constants of Math implemented, plus the imaginary unit i.
- Data types Complex and Unit implemented.
- First set of functions implemented.
2013-02-15, version 0.0.1 #
- First publish of the mathjs package. (package is still empty)


Home
About
Classical
Modern
(current)
Group
Dance Anywhere
Reminder to GET UP, STAND UP in
Countdown
minutes
My absolute favorite
Fight Song from Muana
(~ 2 minutes)
Kid friendly
follow along videos
For kids
(11 minutes)
Jazz dance
Dress for Jazz dance
Short version
(1.40 minutes)
Full version
(12 minutes)


Amka Chain Logistics offers customers the option to purchase space on a per kilo basis. Our experienced staff will advise the most cost effective method of moving your freight. Calculating Charges:
Space is bought on a volume or weight basis, depending on which is greater. Airlines charge per volumetric weight. The formula used is to multiply Length x Width x Depth in centimeters then divide by 6,000. Either the volumetric or actual weight will be charged, whichever is greater. Sidoman can handle all of your airfreight requirements for import and export movements. Our experienced staff members have many years of handling this industry both in East Africa (Kenya, Uganda and Tanzania) and overseas.
Our global network provides you with a complete worldwide transport and distribution solution. We have direct airport to airport flights or transshipment options, depending on what you need and what would suit your requirements. We choose to use only quality service providers to ensure the best services are available to you. Through our complete door
to door service you will experience most of the scope of services on offer, and feel confident in knowing you are in good hands.
Some of our Airfreight services include but are not limited to:


--- layout: page-company title: History history: true ---
“The web is more a social creation than a technical one. I designed it for a social effect — to help people work together — and not as a technical toy.”
Software powers the user experience on computers, mobile and wearable devices, and in the cloud. It starts with design — which is not just about appearance. Design is how it works and this requires designers iterating hand-in-hand with developers to deliver a superior user experience. Next, software is integrated with cloud APIs, refined, instrumented, tested, released and monitored. Currently, there is no end-to-end solution that supports cloud-based application development from design to production.
Montage Studio is based on the MontageJS HTML5 framework developed over time by CEO Benoit Marchant and his team. The technological path toward Montage Studio originated at Apple(1999-2010), where Benoit worked on bringing the ease-of-use of Mac OS X user interfaces to the Web. On this journey, Benoit worked with several talented engineers to build modern, intuitive web applications for the iTunes Store, Apple Retail and apple.com. That group would later become the core of the Montage Studio team.
In the summer of 2010, Benoit left Apple for Motorola Mobility. He was quickly joined there by some of his key engineers to develop a new HTML5 platform for mobile. After 4 years of experience developing their first framework together at Apple, they started over, building a new framework. By applying some of the key strengths of iOS development to HTML5, they created MontageJS, a modern HTML5 framework that simplifies the development of expressive HTML5 mobile applications.
In 2012, Google took over Motorola Mobility and Benoit and his team then developed on a number of Google applications with MontageJS, which was also used for building Google Web Designer. Motorola later chose not to continue the team’s work, but allowed it to be open sourced on GitHub under a BSD license.
Montage Studio was founded with the vision of a true web-native universal SDK, a framework, and authoring combined as one creative, collaborative environment where web designers and developers would work seamlessly together, from start to finish, to deliver rich applications, made with HTML5, across billions of devices.


| Opcode/Instruction | Op/En | 64/32-bit Mode | CPUID Feature Flag | Description |
|---|---|---|---|---|
| 66 0F 38 14 /r BLENDVPS xmm1, xmm2/m128, <XMM0> | RM0 | V/V | SSE4_1 | Select packed single precision floating-point values from xmm1 and xmm2/m128 from mask specified in XMM0 and store the values into xmm1. |
| VEX.128.66.0F3A.W0 4A /r /is4 VBLENDVPS xmm1, xmm2, xmm3/m128, xmm4 | RVMR | V/V | AVX | Conditionally copy single-precision floating-point values from xmm2 or xmm3/m128 to xmm1, based on mask bits in the specified mask operand, xmm4. |
| VEX.256.66.0F3A.W0 4A /r /is4 VBLENDVPS ymm1, ymm2, ymm3/m256, ymm4 | RVMR | V/V | AVX | Conditionally copy single-precision floating-point values from ymm2 or ymm3/m256 to ymm1, based on mask bits in the specified mask register, ymm4. |
| Op/En | Operand 1 | Operand 2 | Operand 3 | Operand 4 |
| RM0 | ModRM:reg (r, w) | ModRM:r/m (r) | implicit XMM0 | NA |
| RVMR | ModRM:reg (w) | VEX.vvvv (r) | ModRM:r/m (r) | imm8[7:4] |
Conditionally copy each dword data element of single-precision floating-point value from the second source operand and the first source operand depending on mask bits defined in the mask register operand. The mask bits are the most significant bit in each dword element of the mask register.
Each quadword element of the destination operand is copied from:
The register assignment of the implicit mask operand for BLENDVPS is defined to be the architectural register XMM0.
128-bit Legacy SSE version: The first source operand and the destination operand is the same. Bits (MAXVL-1:128) of the corresponding YMM destination register remain unchanged. The mask register operand is implicitly defined to be the architectural register XMM0. An attempt to execute BLENDVPS with a VEX prefix will cause #UD.
VEX.128 encoded version: The first source operand and the destination operand are XMM registers. The second source operand is an XMM register or 128-bit memory location. The mask operand is the third source register, and encoded in bits[7:4] of the immediate byte(imm8). The bits[3:0] of imm8 are ignored. In 32-bit mode, imm8[7] is ignored. The upper bits (MAXVL-1:128) of the corresponding YMM register (destination register) are zeroed. VEX.W must be 0, otherwise, the instruction will #UD.
VEX.256 encoded version: The first source operand and destination operand are YMM registers. The second source operand can be a YMM register or a 256-bit memory location. The mask operand is the third source register, and encoded in bits[7:4] of the immediate byte(imm8). The bits[3:0] of imm8 are ignored. In 32-bit mode, imm8[7] is ignored. VEX.W must be 0, otherwise, the instruction will #UD.
VBLENDVPS permits the mask to be any XMM or YMM register. In contrast, BLENDVPS treats XMM0 implicitly as the mask and do not support non-destructive destination operation.
MASK ← XMM0 IF (MASK[31] = 0) THEN DEST[31:0]←DEST[31:0] ELSE DEST [31:0]←SRC[31:0] FI IF (MASK[63] = 0) THEN DEST[63:32]←DEST[63:32] ELSE DEST [63:32]←SRC[63:32] FI IF (MASK[95] = 0) THEN DEST[95:64]←DEST[95:64] ELSE DEST [95:64]←SRC[95:64] FI IF (MASK[127] = 0) THEN DEST[127:96]←DEST[127:96] ELSE DEST [127:96]←SRC[127:96] FI DEST[MAXVL-1:128] (Unmodified)
MASK ← SRC3 IF (MASK[31] = 0) THEN DEST[31:0]←SRC1[31:0] ELSE DEST [31:0]←SRC2[31:0] FI IF (MASK[63] = 0) THEN DEST[63:32]←SRC1[63:32] ELSE DEST [63:32]←SRC2[63:32] FI IF (MASK[95] = 0) THEN DEST[95:64]←SRC1[95:64] ELSE DEST [95:64]←SRC2[95:64] FI IF (MASK[127] = 0) THEN DEST[127:96]←SRC1[127:96] ELSE DEST [127:96]←SRC2[127:96] FI DEST[MAXVL-1:128] ← 0
MASK ← SRC3 IF (MASK[31] = 0) THEN DEST[31:0]←SRC1[31:0] ELSE DEST [31:0]←SRC2[31:0] FI IF (MASK[63] = 0) THEN DEST[63:32]←SRC1[63:32] ELSE DEST [63:32]←SRC2[63:32] FI IF (MASK[95] = 0) THEN DEST[95:64]←SRC1[95:64] ELSE DEST [95:64]←SRC2[95:64] FI IF (MASK[127] = 0) THEN DEST[127:96]←SRC1[127:96] ELSE DEST [127:96]←SRC2[127:96] FI IF (MASK[159] = 0) THEN DEST[159:128]←SRC1[159:128] ELSE DEST [159:128]←SRC2[159:128] FI IF (MASK[191] = 0) THEN DEST[191:160]←SRC1[191:160] ELSE DEST [191:160]←SRC2[191:160] FI IF (MASK[223] = 0) THEN DEST[223:192]←SRC1[223:192] ELSE DEST [223:192]←SRC2[223:192] FI IF (MASK[255] = 0) THEN DEST[255:224]←SRC1[255:224] ELSE DEST [255:224]←SRC2[255:224] FI
BLENDVPS: __m128 _mm_blendv_ps(__m128 v1, __m128 v2, __m128 v3);
VBLENDVPS: __m128 _mm_blendv_ps (__m128 a, __m128 b, __m128 mask);
VBLENDVPS: __m256 _mm256_blendv_ps (__m256 a, __m256 b, __m256 mask);
None
See Exceptions Type 4; additionally
| #UD | If VEX.W = 1. |


All functions |
|
|---|---|
Add two numbers |
|
Add two numbers (with functional test) |
|
Add two matrices |
|
Create functional test output for tool |
|
a foo function |
|
Add two matrices |
|
Make a function available in Galaxy |
|
|
|
Galaxy Parameter Classes |
Class |
|
Class |
|
Class |
|
Change a camelCase name to a friendlier version |
|
Title |
|
Get test parameters for function to make into a Galaxy tool |
|
Convert List to XML |
|
Create a galaxy tool from a function in this package |
|
Get the PFAM and SYMBOL names for a set of Affymetrix probe IDs |
|
Rewrite R script generated by RGalaxy |
|
Rewrite XML generated by RGalaxy |
|
Class |
|
Run the functional test associated with a function. |
|
A variation on functionToGalaxify that takes a multiple-choice option using the GalaxySelectParam class. |
|
A variation on functionToGalaxify that takes a multiple-choice option. |
|
Sends informational, warning, and error messages to the user. |


← Back
NLOC
(Number of lines of code)
34,294
File names
XX = Lines of code
Libraries used
Wisdom Upgrade
- It's hard to do anything, especially write a program, once a day, for a year
- JavaScript is so verbose (I already knew that)
- Trying to force creative programming is both exhausting and exciting
- Beyond discipline and learning, my motives evolved over time, and I learned about myself as a result
- It is fun to do something for the sake of experimentation, but it's not always appropriate to do it in a language not designed for it.
- I have really begun to appreciate long-term projects
- HTML is basically unparseable
- Python is so much more fun to use
- Sometimes sketching an idea or implementation on paper makes all the difference in the world
- Programming while falling asleep becomes a real time vampire
- Ideas are easy, implementations are not
- Math has amazing properties that are undervalued in programming
- d3.js is pretty great
- Visual programs are easy to demo, but do not always provide a useful challenge for continuing your programming skillset
- The zero, one, infinity rule is vital for maintainability
- The right data structure makes all the difference in the world
- You can do a lot in a short amount of time; put another way, Parkinson's Law is very real
- The web needs better ways to syndicate and share data across websites (e.g. cross-domain, parsing, security, consistent representation)
- You'll be amazed at what you can do when you put your mind to it
- Declarative programming is the one-true-way to design APIs
- ... many more!?


--- title: Point Forecasts keywords: fastai sidebar: home_sidebar summary: "Functions to find point forecasts using simulated values from the forecast distribution." description: "Functions to find point forecasts using simulated values from the forecast distribution." nb_path: "nbs/07_point_forecast.ipynb" ---
Forecast samples are the output from dglm.forecast_marginal
, dglm.forecast_path
, and most commonly, analysis
. All of the functions in this module accept an array of forecast samples and produce a series of point forecasts, such as the forecast mean or median.
When using analysis
, the samples are sequentially simulated from the forecast distribution at each specified time step. The forecast samples are placed in a 3 dimensional array, whose axes are nsamps $\times$ forecast length $\times$ k, where:
forecast_start
and forecast_end
in analysis
The point forecast will be calculated over nsamps, meaning that the output will be a 2 dimensional array of size forecast length $\times$ k.
More generally, all of the point forecasts are calculated from an array and assume that random samples are stored along the first dimension.
The mean point forecast is theoretically optimal for minimizing squared error loss, $L = \sum_i (y_i - f_i)^2$.
An example below demonstrates how to use the function:
from pybats.shared import load_us_inflation
from pybats.analysis import analysis
import pandas as pd
data = load_us_inflation()
forecast_start = '2000-Q1'
forecast_end = '2013-Q4'
mod, samples = analysis(Y = data.Inflation.values[1:], X=None, family="normal",
k = 4, prior_length = 12,
forecast_start = forecast_start, forecast_end = forecast_end,
dates=data.Date,
ntrend = 2, deltrend=.99,
nsamps = 5000)
forecast = mean(samples)
forecast.shape
start = data[data.Date == forecast_start].index[0]
end = data[data.Date == forecast_end].index[0] + 1
dates = pd.to_datetime(data[start:end].Date)
forecast = pd.DataFrame(forecast, index=dates)
forecast.columns = ['1-Step Ahead', '2-Step Ahead', '3-Step Ahead', '4-Step Ahead']
forecast.round(2).head()
The forecasts are made on each date before seeing the observation. So the $1-$Step ahead forecast is for the date listed in that row. The $2-$Step Ahead forecast is project the mean for the date listed in the next row, and so on.
This view allows you to easily see the forecasts and how the model projects into the future. Looking across the first row, it is clear that the model has a negative local slope, because the forecasts generally decrease as they go further into the future.
The median point forecast is theoretically optimal for minimizing absolute deviation loss, $L = \sum_i |y_i - f_i|$.
forecast = median(samples)
forecast = pd.DataFrame(forecast, index=dates)
forecast.columns = ['1-Step Ahead', '2-Step Ahead', '3-Step Ahead', '4-Step Ahead']
forecast.round(2).head()
The $\left(-1\right)-$median is theoretically optimal for minimizing absolute percent error, $L=\sum_i |y_i - f_i|/y_i$. It is always lower than the median, and is only defined for non-zero $y$.
We'll use a new example, because the $(-1)-$median can produce strange results when $y_i$ is close to $0$.
from pybats.shared import load_sales_example
data = load_sales_example()
Y = data['Sales'].values
X = data['Advertising'].values
k = 4
forecast_start = 15
forecast_end = 30
mod, samples = analysis(Y, X, family="poisson",
forecast_start=forecast_start, forecast_end=forecast_end,
k=k, prior_length=6,
rho=.5, deltrend=0.95, delregn=0.95)
forecast = m_one_median(samples)
forecast = pd.DataFrame(forecast)
forecast.columns = ['1-Step Ahead', '2-Step Ahead', '3-Step Ahead', '4-Step Ahead']
forecast.round(2).head()


The name of the valueSet must be unique on this server ({{terminologyServer}}. Click the 'Check Name' link
(that will appear after you have entered a name) to confirm. Spaces and quotes should be avoided.That is a valid name! Press the Select button to proceed...


One of the most attention-grabbing religious festivals of India, Ratha Yatra or Chariot Festival is centred on the worship of Lord Jagannath, the saviour of the world. Jagannath, the incarnation of Lord Vishnu is worshipped in Puri in a princely manner. In this festival, the incomplete statues of Lord Jagannath along with his elder brother Balabhadra and younger sister Subhadra is worshipped. Associated with several mysterious folk tales as well as myths, this religious festival has gathered attention of the religious souls living across the world. Here are the details of Puri Rath Yatra:
Read MoreDuring this festival the three deities are taken to the Gundicha Temple which is believed to be the aunt’s house of the trio. Three splendid chariots are decked to carry the deities to the destination. The deities are believed to take rest in their aunt’s house for a period of 9 days during which delicious dishes are offered to them. After 9 days the deities are resumed to the main temple. It is important to note that the designing of the chariot starts from the day of Vasant Panchami (January/February)..
Read MoreDuring the Ratha Yatra festival, the priests chant Vedic Mantras, a huge group of people sing songs, and exclusive musical instruments are played. Around lacs of devotees gather around the temple and they pull the chariots of Lord Jagannath, and Balabhadra along with the chariot of their sister Subhadra. It is believed that the devotees who get a chance to touch the ropes are blessed with divinity. It is during the Ratha Yatra Festival only when Non-Hindus can have a glimpse of the deities. (Usually Non-Hindus are not allowed to enter into the temple of Lord Jagannath). Having a glimpse of Lord Jagannath on chariot or touching the chariot is considered very auspicious.
Read More


Test coverage user interface for C and C++
Here are some screenshots of ggcov in action. Click on the thumbnail images to see larger images.
Presents coverage information as graphically as possible, using bar graphs, colour coding, and a call graph display.
Information is linked together, e.g. double-clicking on a row in the File List window displays the source for that file in a Source window. Information in tabular form is sortable by any column, and all columns can be selectively shown or hidden.
Coverage summaries for various subsets of the source (All the source, a particular source file, a particular function, a range of lines in a file) are only a few clicks away. The summary is presented in a window with both textual and graphical representation.
Source files spread over multiple directories are handled. The File List window can display source files either in a flat list or a tree. Lists of source files show filenames with minimum pathnames from the common ancestor directory.
The --suppress-ifdef WORD flag can be used to suppress source lines inside #ifdef or #if blocks which depend on particular pre-processor symbols. For example --suppress-ifdef TEST,DEBUG will suppress source lines inside #if DEBUG or inside #ifdef TEST. Suppressed lines are not reported in summaries. This feature is useful to avoid having test infrastructure or debugging code spuriously reduce the reported coverage level.
The --suppress-comment WORD flag can be used to suppress source lines which contain the given word in a comment. For example --suppress-comment nocover suppresses any line containing the comment /* nocover */. Similarly the --suppress-comment-between STARTWORD,ENDWORD flag suppresses source lines between a line containing STARTWORD in a comment and the next line containing ENDWORD in a comment.
Handles non-local control transfers, e.g. C++ exceptions or C longjmp.
A .desktop file is provided so that ggcov appears in the GNOME menu structure. New source files (or object files, or executables) can be dragged-n-dropped onto ggcov from Nautilus. Configuration parameters are stored in the gconf database.
ggcov comes with a text mode program tggcov which can be used to provide coverage reports for individual source files or entire programs. tggcov is designed for non-interactive use, e.g. as part of a build process or test suite.
The text mode tggcov program has an option to generate an XML report in the format used by the Cobertura tool. This makes it really easy to use in Continuous Integration servers such as Jenkins, with the Cobertura Plugin.
ggcov also comes with a program git-history-coverage which correlates test coverage data to git commits, printing a coverage summary which shows how well tested recent code changes have been. This is useful for nightly builds and Continuous Integration systems such as Jenkins.
Calculates a call graph of all function calls known at compile time (i.e. excluding calls made through function pointers or C++ virtual function tables) and applies coverage data to this call graph. The result is that you can see how many times a function was called from various other functions. The downside of call graph analysis is that ggcov needs to read and pick apart object files to get the call data. The code exists and works for i386 and x86-64 platforms with ELF format executables only.
New in version 0.10 is ggcov-html, which generates static HTML coverage reports. It has many of the features of the GNOME program, including annotated source with flow diagrams, and works in any modern browser.
There's also an older server-side PHP app which has more functionality but requires more setup (see HOWTO.web)
ggcov is known to work on x86-64/Linux and i386/Linux; other platforms should work except for the call graph feature.


The inverse tan calculation is used to create a function that allows the individual squares to follow the cursor (i.e. let rotateVal = atan2(mouseY - transValY, mouseX - transValX); rotate(rotateVal);). Following the theme of "interpolation" from the previous chapter, the projects in this chapter also integrates the lerpColor() function to further add dynamic aesthetics.
Link to Full Codes
for (let y = 0; y < row; y++) {
for (let x = 0; x < col; x++) {
push();
translate(x * spaceWidth + spaceWidth/2, y * spaceHeight + spaceHeight/2);
let rotateVal = atan2(mouseY - transValY, mouseX - transValX);
rotate(rotateVal);
stroke(lerpColor(fromColour, toColour, x * y / 32));
strokeWeight(5);
strokeCap(ROUND);
fill(lerpColor(fromColour, toColour, x * y / 32));
rect(0, 0, 100, 100);
pop();
}
}


Next: Accessibility of Symbols in a Package, Previous: Internal and External Symbols, Up: Introduction to Packages
Packages can be built up in layers. From one point of view, a package is a single collection of mappings from strings into internal symbols and external symbols. However, some of these mappings might be established within the package itself, while other mappings are inherited from other packages via use-package. A symbol is said to be present in a package if the mapping is in the package itself and is not inherited from somewhere else.
There is no way to inherit the internal symbols of another package; to refer to an internal symbol using the Lisp reader, a package containing the symbol must be made to be the current package, a package prefix must be used, or the symbol must be imported into the current package.


Merges two
if
statements into one if the second statement is located inside the then-branch of the first one.


About Me
Name
Victoria Trzcianowski
Birthday
October 8 1990
Email
<EMAIL_ADDRESS>Mobile
226.448.6885
Address
35 Hayden St, Toronto
Zodiac Sign
Libra
Middle Name
n/a
- celebrity gossip
- music
- travel
- history
- board games
Education
RED Academy
PresentWeb Development Professional Program
Western University
2008-2014 Structural Engineering
- calculus
- teamwork
- modelling
- physics
- design
Work Experience
Starbucks Canada
2016-2017 Shift Supervisor
Starbucks Canada
2013-2016 Shift Supervisor
Starbucks Canada
2007-2013 Barista
- leadership
- problem solving
- communication
- organization
- creativity


My Favroite Place to Vacaion is my room because playing on my computer is fun!
My Favorite Sports Team
My Favorite Sports Team is {null} Because i dont watch sports
My Favroite Video Game
My Favroite Video Game is Fallout 4 because it is fun
My Favroite thing about Birmingham


Amazon Simple Email Service ConfigurationSetEventDestination KinesisFirehoseDestination
The
KinesisFirehoseDestination
property type specifies the delivery stream ARN and the IAM role ARN associated with
an Kinesis Data Firehose event destination for an Amazon SES configuration set.
KinesisFirehoseDestination
is a property of the EventDestination property type.
Syntax
To declare this entity in your AWS CloudFormation template, use the following syntax:
JSON
{ "IAMRoleARN" :
String
, "DeliveryStreamARN" :String
}
YAML
IAMRoleARN:
String
DeliveryStreamARN:String
Properties
IAMRoleARN
-
The ARN of the IAM role under which Amazon SES publishes email sending events to the Amazon Kinesis Data Firehose stream.
Required: Yes
Type: String
Update requires: No interruption
DeliveryStreamARN
-
The ARN of the Amazon Kinesis Data Firehose stream that email sending events should be published to.
Required: Yes
Type: String
Update requires: No interruption
See Also
-
Using Amazon SES Configuration Sets in the Amazon Simple Email Service Developer Guide
-
KinesisFirehoseDestination in the Amazon Simple Email Service API Reference


For the past 4 years, and the four years of university, my main development languages have been the Microsoft languages, i.e. C# and Visual Basic, as well as Objective C recently. They’re very good languages. But for the longest time, I’ve always seen the need to learn new ‘kinds of’ languages. And for some reason, I’ve always had a fascination with Python.
Now arguing over languages is like arguing over sport. Everyone seems to have a justified opinion. The cool ruby guys have their reasons why it should be chosen over other languages. The clever Scala and Clojure guys too have their reasons, but at my level of experience and understanding, they sound like they are speaking in unknown tongues. The ubiquitous PHP guys too speak of the large number of developers and the ease of use. But I choose Python. And I don’t necessarily have a reason for it. I just like it. And I can use Visual Studio.
Like I said in an earlier post, this year I wanted to focus more on TDD, and adding unit testing to my workflows, so while learning the syntax and structure of a language, learning how to test was also a priority of mine. I had also heard about these things called ‘Code Katas’ which my software development celebrities such as Uncle Bob Martin seem to advocate for.
A Code Kata, from my understanding, is simply a small coding exercise where one writes a piece of code, that is meant to fulfill requirements set out. Tests can be used to ensure that the requirements are met by the code. I found a String Calculator code kata online which seemed to be simple enough for getting my head around the new language, while at the same time challenging enough that I don’t get too bored. The process I followed was as follows:
- Create a new Python project in Visual Studio. This included a whole lot of other tasks like adding the Python project templates, and actually installing Python on my machine.
- Add the String Calculator class with the Add method. This is so that my tests actually have something to call.
- Write a test for the first requirement of the kata, calling the Add method created in the previous step. Ensure the add method causes the test to fail.
- Implement the requirement of the kata within the Add method of the StringCalculator class. When it is implemented, the test should pass.
- Refactor the code. This is to make it ‘clean’. The test will be the indicator of whether the refactoring has caused the code to break or not.
- Repeat steps 3 – 5 for the other requirements of the kata.
Overall, the general workflow of writing tests then writing code is enjoyable. The constant feedback that one gets when the green for a passed test shows or when the red for a failed test shows keeps the entire process enjoyable and engaging. For the academics out there, it contributes to the Flow experience as proposed by Mihaly Csikszentmihalyi.
While the theoretical model of TDD makes sense, in practice, there are some deviations from the theory:
- Sometimes the test fails because of an error in the test and not an error in the code. One spends a really long time trying to figure out what’s wrong with the code, then finds that the test actually has a mistake. This probably gets better with experience.
- Sometimes a test written for the first time will be green because the code already fulfills the requirement of the test. But the test should still be written so that after refractoring one can ensure that the requirement is still met.
Overall, it was a fun experience. It took longer than expected and recommended because of the learning of a new language. But overall the experience was fun.
The code from the kata can be found in my Github repository here.


In the frame above, you can enter the two numbers you want to add.
Enter them in bit order, smallest bit first, alternating between the two numbers.
The result will progressively appear on the right.
View the source on GitHub


| Registration & Payment |
To Register for the meeting you need to:
Important: the deadline for registration is March 1st, 2008.
We have negociated the following conditions. Payment will be made directly to Hotel Reiza. More details are forthcoming.
100 Euros/person/day, Full Board, Single room.
70 Euros/person/day, Full Board, Double room.
Reductions :
children 0 - 3 years : euro 15 per day ( baby cot )
children 3 - 5 years : - 30 %
children 6 - 10 years : - 20 %
children 10 - 12 years : - 10 %


After the last question, go to the previous page to save your score.
Score counter:
0
2 times
1 time
5 times
Shower
Coffee
Milk
Vance D.Brand
Jack R.Lousma
Owen K.Garriott
Medical
Bio
Physics
90 days
60 days
21 days
Starfall
Comet Kohoutek
Aurora Borelis
Galileo Galilye
Isak Newton
Gerald P.Carr
Saturn 1B
Apollo CSM
Soyuz spacecraft
Horn
Utah
Canaveral
Previous page
Exit


June Barr loves her cat models. June Barr has three cats. Her oldest is Caleb Napolean Barr. Caleb is a silly cat and very fluffy. Her second oldest is George Washington. George is a cuddler. June's youngest cat is Marth Washington. All of June's cats are available for modeling opportunities.
Martha is small yet fiesty. Sometimes her short disosition makes her overlooked by hersizable brother, but this girls personality wins over hearts. Martha is the alpha cat of the home. Martha loves to talk, eat, and get chin scratched. While she can be a little demanding, Martha loves her snuggle time.
George is the personality of the home. George loves to hunt plastic mice in the middle of the night. George chirps like a bird to throw of his plastic prey. George enjoys sunrises, snoring, and long walks to the food bowl on a breezy summer evening.
Caleb is a beautiful cat. Caleb loves to sleep and will fall asleep instantly wherever he wants, even if it is in your walking path. Caleb's favorite time of the dya is meal time and he will not let you forget it. Caleb enjoys three belly scratches... no more... no less.


|
aecSpace
0.7
Toolkit for creating architectural spaces.
|
Public Member Functions | |
| def | __init__ |
| def | area (self) |
| def | by_level (self) |
| def | count (self) |
| def | indices (self) |
| def | name (self) |
| def | name |
| def | spaces (self) |
| def | spaces |
| def | volume (self) |
| def | add |
| def | clear (self) |
| def | delete (self, index) |
| def | moveBy |
| def | moveTo |
| def | rotate |
| def | scale |
| def | setAlpha |
| def | setColor |
| def | setHeight |
| def | setLevel |
| def | setName |
| def | wrap |
Manages multiple aecSpace instances as a single object, enabling collective editing and reporting.
| def aecSpace.aecSpaceGroup.aecSpaceGroup.area | ( | self, | |
| float | |||
| ) |
Property Returns the total area of all spaces. Return None on failure.
| def aecSpace.aecSpaceGroup.aecSpaceGroup.by_level | ( | self, | |
| List, | |||
| aecSpace | |||
| ) |
Property Returns a list of all spaces sorted by their level, lowest to highest. Return None on failure.
| def aecSpace.aecSpaceGroup.aecSpaceGroup.clear | ( | self, | |
| bool | |||
| ) |
Sets the space list to an empty list. Returns True on success. Returns False on failure.
| def aecSpace.aecSpaceGroup.aecSpaceGroup.count | ( | self, | |
| float | |||
| ) |
Property Returns the count of spaces. Return None on failure.
| def aecSpace.aecSpaceGroup.aecSpaceGroup.delete | ( | self, | |
| index | |||
| ) |
Deletes the space at the specified index of the current list of spaces. Returns True on success. Returns False if the spaces list is empty or on other failure.
| def aecSpace.aecSpaceGroup.aecSpaceGroup.indices | ( | self, | |
| List, | |||
| int | |||
| ) |
Property Returns a list of all indices. Returns None on failure.
| def aecSpace.aecSpaceGroup.aecSpaceGroup.name | ( | self, | |
| str | |||
| ) |
Property Returns the name. Returns None on failure.
| def aecSpace.aecSpaceGroup.aecSpaceGroup.spaces | ( | self, | |
| List, | |||
| aecSpace | |||
| ) |
Property Returns the list of aecSpaces. Returns None on failure.
| def aecSpace.aecSpaceGroup.aecSpaceGroup.volume | ( | self | ) |
Property Returns the aggregate volume of all spaces. Returns None on failure.


Conference talks
- Node.js Diagnostics WG - Open.js World - Virtual (slides)
- Linux Observability Superpowers - The Developers Conference - Porto Alegre (PDF)
- BPF User Tracepoints - Linux Plumbers Conference - Vancouver (PDF)
- bpftrace - Linux Plumbers Conference - Vancouver (PDF)
- llnode 101 - Open.js Conference - Vancouver (PDF)
- Slack chatbots with Python, AWS Lambda and Google Dialogflow - The Developers Conference - Florianopolis (PDF, slides.com)
- ChakraCore and the beginning of a new era on the Node.js community - The Developers Conference - Florianopolis (PDF, slides.com)
- State of Diagnostic Tools - Node Interactive - San Francisco (PDF)
- Debugging Node.js as you never seen before - The Developers Conference - Porto Alegre (PDF, slides.com)


Amplitudes of harmonics of dielectric permittivity perturbation for polarization grating formed in PSLC: ( a) As a function of an angle between polarization vectors of two orthogonally linearly polarized formation beams; ( b) as a function of the ellipticity of the two formation beams with orthogonal elliptical polarization ρ 0 = − ρ 1 .


---
layout: post
authors: ["Greg Wilson"]
title: "August 2013 Lab Meeting"
date: 2013-08-23
time: "09:00:00"
tags: ["Community", "Lab Meeting"]
---
We held another of our semi-regular online lab meetings yesterday,
complete with a
theme song.
We ran the meeting twice to accommodate different time zones;
those present were:
| 11:00 am |
7:00 pm |
- Greg Wilson (Toronto)
- Azalee Bostroem (Baltimore)
- Justin Ely (Baltimore)
- Molly Gibson (St. Louis, MO)
- Ted Kirkpatrick (Vancouver)
- Rohit Mehta (University of Connecticut)
- Paul Wilson (U. Wisconsin)
- Jeramia Ory (Wilkes-Barre, PA)
- Jory Schossau (Michigan State U)
- Lex Nederbragt (Oslo, Norway)
- Lynne Williams (Vancouver)
- Ross Dickson (Dalhousie U.)
- Amy Brown (Toronto)
- Aleksandra Pawlik (SSI)
- Alexis Pyrkosz (Michigan State U)
- R David Murray (Amherst, MA)
- Neal Davis (UIUC)
- Aron Ahmadia (Army Corps of Engineers)
- Neil Chue Hong (SSI)
- Dave Lane (Catalyst IT, NZ)
|
- Greg Wilson (Toronto)
- Preston Holmes (Santa Barbara)
- Amanda Whitlock (Chapel Hill, NC)
- Emily Davenport (Chicago, IL)
- Ian Mitchell (Vancouver, Canada)
- Damien Irving (Melbourne, Australia)
- John Blischak (Chicago)
- Jory Schossau (Michigan State U)
- Philipp Bayer (Brisbane, Australia)
- Promita Bose (Atlanta GA, USA)
- Luke Lee (Houston, TX, USA)
|
There was a lot to announce:
- We're switching web hosting services over the next couple of days—we'll try to minimize disruption, and apologize in advance for any outages.
- We have some new instructors to welcome.
-
We have pulled together a lot of the lesson material
that people have created over the past twelve months
in a form that we hope will be easier to re-use.
-
We also have a new look for bootcamp home pages,
and,
thanks to Preston Holmes,
an illustrated guide for creating them.
We'd be grateful for improvements to the styling of the former,
and for feedback and improvements on the latter.
-
And we've simplified the procedure for building the web site,
which will make it a lot easier for people to contribute to our blog.
-
Amy Brown,
our indefatigable admin,
has updated our operations guide
and created some checklists for hosts, instructors, and other bootcamp roles.
The static pages on our web site are the reference versions;
going forward,
we'll copy these into a Google Doc for each bootcamp
so that the people involved can keep track of what needs to be done.
(We thought about using GitHub tickets for this,
but it's a lot easier for non-technical people to tick off a box in a spreadsheet.)
-
Meanwhile,
thanks to a lot of hard work from Jory Schossau,
we now have some standardized assessment questionnaires.
Again,
the static pages on our web site are for reference;
learners who register through EventBrite will fill out the pre-bootcamp questionnaire there,
and we'll create a Google Form per bootcamp for learners who are registering in other ways.
-
The curriculum for instructor training
has stabilized
(although we'll be adding one more exercise based on discussion last night).
We are also now designating a lead instructor for each bootcamp
who will be responsible for making sure that the curriculum is set,
a teaching schedule is drawn up,
and so on.
And like any good meeting,
this one produced a few to-do items:
-
I'll put "how to get involved" into a top-level menu item to make things more findable.
(The pull request is already in,
and should be merged today.)
-
We'll add a "How to Teach on Windows" section to the operations guide
where advocates of various approaches can write up the pros and cons of
using Cygwin, Git Bash, virtual machines, and SSH'ing to a Linux machine.
(We're never going to converge on a single solution to our problems,
so we'll document what has worked so that instructors can make informed decisions.)
-
I'll ask instructors-in-training to create a mock bootcamp home page
as an exercise to familiarize them with what's available and how to use it
-
We'll write fewer bootcamp summary blog posts in the coming year,
and invite more experience reports,
personal views of the world,
cross-posts from our friends,
etc.
(My personal goal is to write less than 50% of the posts in 2014.)
We hope this will enlarge our audience,
and encourage more people to help steer Software Carpentry.
-
Instructors-in-training will be partnered with someone
who already has an instructor's badge
as a mentor.
-
We'll explore the idea of secondary instructor badges for teaching on Windows,
bioinformatics expertise,
and other special skills.
-
We'll also try to find new ways to encourage people to become bootcamp helpers:
the instructor pipeline is under control,
but we're often short of extras to wander the room and assist during practicals.
A lot of other ideas were kicked around during the two meetings,
and I'll try to summarize those in another post soon.
For now,
though,
I'd like to thank everyone who joined us for yesterday's meeting,
and everyone else who has helped bring Software Carpentry so far in the past twelve months.
Our next lab meeting is tentatively scheduled for Thurdsay, September 26—I
hope to see you all then.


News
Yahoo
MSN
BBC
CNN
ESPN
New York Times
Google News
Buzzfeed
Mail
NHSmail
Gmail
Hotmail
Mail Yahoo
Outlook
Popular
Facebook
YouTube
Wikipedia
Twitter
Instagram
Netflix
Entertainment
IMDb
Wikia
SoundCloud
DailyMotion
9gag
Spotify
Vimeo
imgur
Shopping
Amazon
eBay
AliExpress
Macy's
Nordstrom
Walmart
Target
Etsy
Ikea
H&M
Asos
Tesco
Weather
Accuweather
Weather
Weather.gov
Weather Underground
Business and economy
Business Insider
CNN money
Wall Street Journal
Bloomberg
the Economist
Market Watch
Fortune
Seeking Alpha
Morningstar
Linkedin
Moto
Autoweek
Jalopnik
Autozone
Cars
Auto Blog
Car and Driver
Motor Trend
Maps and trips
Booking.com
Expedia
Google Maps
Airbnb
Sky Scanner
Kayak
MapQuest
Bing Maps
Cinema, movies, TV shows
Fandango
Rotten tomatoes
Netfix
SideReel
IndieWire
Internet, download
Dropbox
Download.com
imgur
Media Fire
Wetransfer
Technology
Cnet
gizmodo
Lifehacker
Wired
Techcrunch
The Verge
PC world
Ars Technica
Digital Trends
Photography
Pixabay
Deviant Art
Flickr
National Geographic
Photography Blog
Behance
Popular Photography
Work
Susi


WELCOME
This a normal div element.
This div element is rotated 180 degrees x axis.
This div element is rotated 180 degrees y axis.
This div element is rotated 180 degrees z axis.


gdaldem
Tools to analyze and visualize DEMs.
Synopsis
gdaldem <mode> <input> <output> <options>
Generate a shaded relief map from any GDAL-supported elevation raster:
gdaldem hillshade input_dem output_hillshade
[-z ZFactor (default=1)] [-s scale* (default=1)]
[-az Azimuth (default=315)] [-alt Altitude (default=45)]
[-alg Horn|ZevenbergenThorne] [-combined | -multidirectional | -igor]
[-compute_edges] [-b Band (default=1)] [-of format] [-co "NAME=VALUE"]* [-q]
Generate a slope map from any GDAL-supported elevation raster:
gdaldem slope input_dem output_slope_map
[-p use percent slope (default=degrees)] [-s scale* (default=1)]
[-alg Horn|ZevenbergenThorne]
[-compute_edges] [-b Band (default=1)] [-of format] [-co "NAME=VALUE"]* [-q]
Generate an aspect map from any GDAL-supported elevation raster, outputs a 32-bit float raster with pixel values from 0-360 indicating azimuth:
gdaldem aspect input_dem output_aspect_map
[-trigonometric] [-zero_for_flat]
[-alg Horn|ZevenbergenThorne]
[-compute_edges] [-b Band (default=1)] [-of format] [-co "NAME=VALUE"]* [-q]
Generate a color relief map from any GDAL-supported elevation raster:
gdaldem color-relief input_dem color_text_file output_color_relief_map
[-alpha] [-exact_color_entry | -nearest_color_entry]
[-b Band (default=1)] [-of format] [-co "NAME=VALUE"]* [-q]
where color_text_file contains lines of the format "elevation_value red green blue"
Generate a Terrain Ruggedness Index (TRI) map from any GDAL-supported elevation raster:
gdaldem TRI input_dem output_TRI_map
[-alg Wilson|Riley]
[-compute_edges] [-b Band (default=1)] [-of format] [-q]
Generate a Topographic Position Index (TPI) map from any GDAL-supported elevation raster:
gdaldem TPI input_dem output_TPI_map
[-compute_edges] [-b Band (default=1)] [-of format] [-q]
Generate a roughness map from any GDAL-supported elevation raster:
gdaldem roughness input_dem output_roughness_map
[-compute_edges] [-b Band (default=1)] [-of format] [-q]
Description
The gdaldem generally assumes that x, y and z units are identical. If x (east-west) and y (north-south) units are identical, but z (elevation) units are different, the scale (-s) option can be used to set the ratio of vertical units to horizontal. For LatLong projections near the equator, where units of latitude and units of longitude are similar, elevation (z) units can be converted to be compatible by using scale=370400 (if elevation is in feet) or scale=111120 (if elevation is in meters). For locations not near the equator, it would be best to reproject your grid using gdalwarp before using gdaldem.
- <mode>
Where <mode> is one of the seven available modes:
hillshade
Generate a shaded relief map from any GDAL-supported elevation raster.
slope
Generate a slope map from any GDAL-supported elevation raster.
aspect
Generate an aspect map from any GDAL-supported elevation raster.
color-relief
Generate a color relief map from any GDAL-supported elevation raster.
TRI
Generate a map of Terrain Ruggedness Index from any GDAL-supported elevation raster.
TPI
Generate a map of Topographic Position Index from any GDAL-supported elevation raster.
roughness
Generate a map of roughness from any GDAL-supported elevation raster.
The following general options are available:
- input_dem
The input DEM raster to be processed
- output_xxx_map
The output raster produced
- -of <format>
Select the output format.
New in version 2.3.0: If not specified, the format is guessed from the extension (previously was GTiff -- GeoTIFF File Format). Use the short format name.
- -compute_edges
Do the computation at raster edges and near nodata values
- -b <band>
Select an input band to be processed. Bands are numbered from 1.
- -co <NAME=VALUE>
Many formats have one or more optional creation options that can be used to control particulars about the file created. For instance, the GeoTIFF driver supports creation options to control compression, and whether the file should be tiled.
The creation options available vary by format driver, and some simple formats have no creation options at all. A list of options supported for a format can be listed with the --formats command line option but the documentation for the format is the definitive source of information on driver creation options. See Raster drivers format specific documentation for legal creation options for each format.
- -q
Suppress progress monitor and other non-error output.
For all algorithms, except color-relief, a nodata value in the target dataset will be emitted if at least one pixel set to the nodata value is found in the 3x3 window centered around each source pixel. The consequence is that there will be a 1-pixel border around each image set with nodata value.
If
-compute_edges
is specified, gdaldem will compute values at image edges or if a nodata value is found in the 3x3 window, by interpolating missing values.
Modes
hillshade
This command outputs an 8-bit raster with a nice shaded relief effect. It’s very useful for visualizing the terrain. You can optionally specify the azimuth and altitude of the light source, a vertical exaggeration factor and a scaling factor to account for differences between vertical and horizontal units.
The value 0 is used as the output nodata value.
The following specific options are available :
- -alg Horn|ZevenbergenThorne
The literature suggests Zevenbergen & Thorne to be more suited to smooth landscapes, whereas Horn's formula to perform better on rougher terrain.
- -z <factor>
Vertical exaggeration used to pre-multiply the elevations
- -s <scale>
Ratio of vertical units to horizontal. If the horizontal unit of the source DEM is degrees (e.g Lat/Long WGS84 projection), you can use scale=111120 if the vertical units are meters (or scale=370400 if they are in feet)
- -az <azimuth>
Azimuth of the light, in degrees. 0 if it comes from the top of the raster, 90 from the east, ... The default value, 315, should rarely be changed as it is the value generally used to generate shaded maps.
- -alt <altitude>
Altitude of the light, in degrees. 90 if the light comes from above the DEM, 0 if it is raking light.
- -combined
combined shading, a combination of slope and oblique shading.
- -multidirectional
multidirectional shading, a combination of hillshading illuminated from 225 deg, 270 deg, 315 deg, and 360 deg azimuth.
New in version 2.2.
- -igor
shading which tries to minimize effects on other map features beneath. Can't be used with -alt option.
New in version 3.0.
Multidirectional hillshading applies the formula of http://pubs.usgs.gov/of/1992/of92-422/of92-422.pdf.
Igor's hillshading uses formula from Maperitive http://maperitive.net/docs/Commands/GenerateReliefImageIgor.html.
slope
This command will take a DEM raster and output a 32-bit float raster with slope values. You have the option of specifying the type of slope value you want: degrees or percent slope. In cases where the horizontal units differ from the vertical units, you can also supply a scaling factor.
The value -9999 is used as the output nodata value.
The following specific options are available :
- -alg Horn|ZevenbergenThorne
The literature suggests Zevenbergen & Thorne to be more suited to smooth landscapes, whereas Horn's formula to perform better on rougher terrain.
- -p
If specified, the slope will be expressed as percent slope. Otherwise, it is expressed as degrees
Ratio of vertical units to horizontal. If the horizontal unit of the source DEM is degrees (e.g Lat/Long WGS84 projection), you can use scale=111120 if the vertical units are meters (or scale=370400 if they are in feet).
aspect
This command outputs a 32-bit float raster with values between 0° and 360° representing the azimuth that slopes are facing. The definition of the azimuth is such that : 0° means that the slope is facing the North, 90° it's facing the East, 180° it's facing the South and 270° it's facing the West (provided that the top of your input raster is north oriented). The aspect value -9999 is used as the nodata value to indicate undefined aspect in flat areas with slope=0.
The following specifics options are available :
- -alg Horn|ZevenbergenThorne
The literature suggests Zevenbergen & Thorne to be more suited to smooth landscapes, whereas Horn's formula to perform better on rougher terrain.
- -trigonometric
Return trigonometric angle instead of azimuth. Thus 0° means East, 90° North, 180° West, 270° South.
- -zero_for_flat
Return 0 for flat areas with slope=0, instead of -9999.
By using those 2 options, the aspect returned by gdaldem aspect should be
identical to the one of GRASS r.slope.aspect. Otherwise, it's identical to
the one of Matthew Perry's aspect.cpp
utility.
color-relief
This command outputs a 3-band (RGB) or 4-band (RGBA) raster with values are computed from the elevation and a text-based color configuration file, containing the association between various elevation values and the corresponding wished color. By default, the colors between the given elevation values are blended smoothly and the result is a nice colorized DEM. The -exact_color_entry or -nearest_color_entry options can be used to avoid that linear interpolation for values that don't match an index of the color configuration file.
The following specifics options are available :
- color_text_file
Text-based color configuration file
- -alpha
Add an alpha channel to the output raster
- -exact_color_entry
Use strict matching when searching in the color configuration file. If none matching color entry is found, the "0,0,0,0" RGBA quadruplet will be used
- -nearest_color_entry
Use the RGBA quadruplet corresponding to the closest entry in the color configuration file.
The color-relief mode is the only mode that supports VRT as output format. In that case, it will translate the color configuration file into appropriate LUT elements. Note that elevations specified as percentage will be translated as absolute values, which must be taken into account when the statistics of the source raster differ from the one that was used when building the VRT.
The text-based color configuration file generally contains 4 columns per line: the elevation value and the corresponding Red, Green, Blue component (between 0 and 255). The elevation value can be any floating point value, or the nv keyword for the nodata value. The elevation can also be expressed as a percentage: 0% being the minimum value found in the raster, 100% the maximum value.
An extra column can be optionally added for the alpha component. If it is not specified, full opacity (255) is assumed.
Various field separators are accepted: comma, tabulation, spaces, ':'.
Common colors used by GRASS can also be specified by using their name, instead of the RGB triplet. The supported list is: white, black, red, green, blue, yellow, magenta, cyan, aqua, grey/gray, orange, brown, purple/violet and indigo.
GMT
.cpt
palette files are also supported (COLOR_MODEL = RGB only).
Note: the syntax of the color configuration file is derived from the one supported by GRASS r.colors utility. ESRI HDR color table files (.clr) also match that syntax. The alpha component and the support of tab and comma as separators are GDAL specific extensions.
For example:
3500 white
2500 235:220:175
50% 190 185 135
700 240 250 150
0 50 180 50
nv 0 0 0 0
To implement a "round to the floor value" mode, the elevation value can be duplicate with a new value being slightly above the threshold. For example to have red in [0,10], green in ]10,20] and blue in ]20,30]:
0 red
10 red
10.001 green
20 green
20.001 blue
30 blue
TRI
This command outputs a single-band raster with values computed from the elevation. TRI stands for Terrain Ruggedness Index, which measures the difference between a central pixel and its surrounding cells.
The value -9999 is used as the output nodata value.
The following option is available:
- -alg Wilson|Riley
Starting with GDAL 3.3, the Riley algorithm (see Riley, S.J., De Gloria, S.D., Elliot, R. (1999): A Terrain Ruggedness that Quantifies Topographic Heterogeneity. Intermountain Journal of Science, Vol.5, No.1-4, pp.23-27) is available and the new default value. This algorithm uses the square root of the sum of the square of the difference between a central pixel and its surrounding cells. This is recommended for terrestrial use cases.
The Wilson (see Wilson et al 2007, Marine Geodesy 30:3-35) algorithm uses the mean difference between a central pixel and its surrounding cells. This is recommended for bathymetric use cases.
TPI
This command outputs a single-band raster with values computed from the elevation. TPI stands for Topographic Position Index, which is defined as the difference between a central pixel and the mean of its surrounding cells (see Wilson et al 2007, Marine Geodesy 30:3-35).
The value -9999 is used as the output nodata value.
There are no specific options.
roughness
This command outputs a single-band raster with values computed from the elevation. Roughness is the largest inter-cell difference of a central pixel and its surrounding cell, as defined in Wilson et al (2007, Marine Geodesy 30:3-35).
The value -9999 is used as the output nodata value.
There are no specific options.
C API
This utility is also callable from C with GDALDEMProcessing()
.
New in version 2.1.
See also
Documentation of related GRASS utilities:
https://grass.osgeo.org/grass79/manuals/r.slope.aspect.html


blog-mining fast_ml knowledge-graph by maker-knowledge-mining
the latest blogs:
1 fast ml-2014-05-26-Yann LeCun's answers from the Reddit AMA
Introduction: On May 15th Yann LeCun answered “ask me anything” questions on Reddit . We hand-picked some of his thoughts and grouped them by topic for your enjoyment. Toronto, Montreal and New York All three groups are strong and complementary. Geoff (who spends more time at Google than in Toronto now) and Russ Salakhutdinov like RBMs and deep Boltzmann machines. I like the idea of Boltzmann machines (it’s a beautifully simple concept) but it doesn’t scale well. Also, I totally hate sampling. Yoshua and his colleagues have focused a lot on various unsupervised learning, including denoising auto-encoders, contracting auto-encoders. They are not allergic to sampling like I am. On the application side, they have worked on text, not so much on images. In our lab at NYU (Rob Fergus, David Sontag, me and our students and postdocs), we have been focusing on sparse auto-encoders for unsupervised learning. They have the advantage of scaling well. We have also worked on applications, mostly to v
2 fast ml-2014-05-08-Impute missing values with Amelia
Introduction: One of the ways to deal with missing values in data is to impute them. We use Amelia R package on The Analytics Edge competition data. Since one typically gets many imputed sets, we bag them with good results. So good that it seems we would have won the contest if not for a bug in our code. The competition Much to our surprise, we ranked 17th out of almost 1700 competitors - from the public leaderboard score we expected to be in top 10%, barely. The contest turned out to be one with huge overfitting possibilities, and people overfitted badly - some preliminary leaders ended up down the middle of the pack, while we soared up the ranks. But wait! There’s more. When preparing this article, we discovered a bug - apparently we used only 1980 points for training: points_in_test = 1980 train = data.iloc[:points_in_test,] # should be [:-points_in_test,] test = data.iloc[-points_in_test:,] If not for this little bug, we would have won, apparently. Imputing data A
3 fast ml-2014-04-30-Converting categorical data into numbers with Pandas and Scikit-learn
Introduction: Many machine learning tools will only accept numbers as input. This may be a problem if you want to use such tool but your data includes categorical features. To represent them as numbers typically one converts each categorical feature using “one-hot encoding”, that is from a value like “BMW” or “Mercedes” to a vector of zeros and one 1 . This functionality is available in some software libraries. We load data using Pandas, then convert categorical columns with DictVectorizer from scikit-learn. Pandas is a popular Python library inspired by data frames in R. It allows easier manipulation of tabular numeric and non-numeric data. Downsides: not very intuitive, somewhat steep learning curve. For any questions you may have, Google + StackOverflow combo works well as a source of answers. UPDATE: Turns out that Pandas has get_dummies() function which does what we’re after. More on this in a while. We’ll use Pandas to load the data, do some cleaning and send it to Scikit-
4 fast ml-2014-04-21-Predicting happiness from demographics and poll answers
Introduction: This time we attempt to predict if poll responders said they’re happy or not. We also take a look at what features are the most important for that prediction. There is a private competition at Kaggle for students of The Analytics Edge MOOC. You can get the invitation link by signing up for the course and going to the week seven front page. It’s an entry-level, educational contest - there’s no prizes and the data is small. The competition is based on data from the Show of Hands , a mobile polling application for US residents. The link between the app and the MOOC is MIT: it’s an MIT’s class and MIT’s alumnus’ app. You get a few thousand examples. Each consists of some demographics: year of birth gender income household status education level party preference Plus a number of answers to yes/no poll questions from the Show of Hands. Here’s a sample: Are you good at math? Have you cried in the past 60 days? Do you brush your teeth two or more times ever
5 fast ml-2014-04-12-Deep learning these days
Introduction: It seems that quite a few people with interest in deep learning think of it in terms of unsupervised pre-training, autoencoders, stacked RBMs and deep belief networks. It’s easy to get into this groove by watching one of Geoff Hinton’s videos from a few years ago, where he bashes backpropagation in favour of unsupervised methods that are able to discover the structure in data by themselves, the same way as human brain does. Those videos, papers and tutorials linger. They were state of the art once, but things have changed since then. These days supervised learning is the king again. This has to do with the fact that you can look at data from many different angles and usually you’d prefer representation that is useful for the discriminative task at hand . Unsupervised learning will find some angle, but will it be the one you want? In case of the MNIST digits, sure. Otherwise probably not. Or maybe it will find a lot of angles while you only need one. Ladies and gentlemen, pleas
6 fast ml-2014-04-01-Exclusive Geoff Hinton interview
Introduction: Geoff Hinton is a living legend. He almost single-handedly invented backpropagation for training feed-forward neural networks. Despite in theory being universal function approximators, these networks turned out to be pretty much useless for more complex problems, like computer vision and speech recognition. Professor Hinton responded by creating deep networks and deep learning, an ultimate form of machine learning. Recently we’ve been fortunate to ask Geoff a few questions and have him answer them. Geoff, thanks so much for talking to us. You’ve had a long and fruitful career. What drives you these days? Well, after a man hits a certain age, his priorities change. Back in the 80s I was happy when I was able to train a network with eight hidden units. Now I can finally have thousands and possibly millions of them. So I guess the answer is scale. Apart from that, I like people at Google and I like making them a ton of money. They happen to pay me well, so it’s a win-win situ
7 fast ml-2014-03-31-If you use R, you may want RStudio
Introduction: RStudio is an IDE for R. It gives the language a bit of a slickness factor it so badly needs. The nice thing about the software, beside good looks, is that it integrates console, help pages, plots and editor (if you want it) in one place. For example, instead of switching for help to a web browser, you have it right next to the console. The same thing with plots: in place of the usual overlapping windows, all plots go to one pane where you can navigate back and forth between them with arrows. You can save a plot as an image or as a PDF. While saving as image you are presented with a preview and you get to choose the image format and size. That’s the kind of detail that shows how RStudio makes working with R better. You can have up to four panes on the screen: console source / data plots / help / files history and workspace Arrange them in any way you like. The source pane has a run button, so you can execute the current line of code in the console, or selec
Introduction: How to represent features for machine learning is an important business. For example, deep learning is all about finding good representations. What exactly they are depends on a task at hand. We investigate how to use available labels to obtain good representations. Motivation The paper that inspired us a while ago was Nonparametric Guidance of Autoencoder Representations using Label Information by Snoek, Adams and LaRochelle. It’s about autoencoders, but contains a greater idea: Discriminative algorithms often work best with highly-informative features; remarkably, such features can often be learned without the labels. (…) However, pure unsupervised learning (…) can find representations that may or may not be useful for the ultimate discriminative task. (…) In this work, we are interested in the discovery of latent features which can be later used as alternate representations of data for discriminative tasks. That is, we wish to find ways to extract statistical structu
9 fast ml-2014-03-06-PyBrain - a simple neural networks library in Python
Introduction: We have already written a few articles about Pylearn2 . Today we’ll look at PyBrain. It is another Python neural networks library, and this is where similiarites end. They’re like day and night: Pylearn2 - Byzantinely complicated, PyBrain - simple. We attempted to train a regression model and succeeded at first take (more on this below). Try this with Pylearn2. While there are a few machine learning libraries out there, PyBrain aims to be a very easy-to-use modular library that can be used by entry-level students but still offers the flexibility and algorithms for state-of-the-art research. The library features classic perceptron as well as recurrent neural networks and other things, some of which, for example Evolino , would be hard to find elsewhere. On the downside, PyBrain feels unfinished, abandoned. It is no longer actively developed and the documentation is skimpy. There’s no modern gimmicks like dropout and rectified linear units - just good ol’ sigmoid and ta
10 fast ml-2014-02-20-Are stocks predictable?
Introduction: We’d like to be able to predict stock market. That seems like a nice way of making money. We’ll address the fundamental issue: can stocks be predicted in the short term, that is a few days ahead? There’s a technique that seeks to answer the question of predictability. It’s called Forecastable Component Analysis . Based on a new forecastability measure, ForeCA finds an optimal transformation to separate a multivariate time series into a forecastable and an orthogonal white noise space. The author, Georg M. Goerg*, implemented it in R package ForeCA . It might be useful in two ways: It can tell you how forecastable time series is. Given a multivariate time series, let’s say a portfolio of stocks, it can find forecastable components. The idea in the second point is similiar to PCA - ForeCA is a linear dimensionality reduction technique. The main difference is that the method explicitly addresses forecastability. It does so by considering an interplay between time and


*** User 2017-04-18 15:42:54.580 ***
15:42:54.580 [info] Disabling blocking sync...
*** User 2017-04-18 15:42:54.585 ***
15:42:54.585 [info] Configured peer_service_manager partisan_default_peer_service_manager on node 'node-1@MBPdeAnneFrance'
*** User 2017-04-18 15:42:56.043 ***
15:42:56.043 [info] Enabling membership...
*** User 2017-04-18 15:42:56.044 ***
15:42:56.044 [info] Disabling blocking sync...
*** User 2017-04-18 15:42:56.049 ***
15:42:56.049 [info] Configured peer_service_manager partisan_default_peer_service_manager on node 'node-2@MBPdeAnneFrance'
*** User 2017-04-18 15:42:57.508 ***
15:42:57.508 [info] Enabling membership...
*** User 2017-04-18 15:42:57.509 ***
15:42:57.509 [info] Disabling blocking sync...
*** User 2017-04-18 15:42:57.514 ***
15:42:57.513 [info] Configured peer_service_manager partisan_default_peer_service_manager on node 'node-3@MBPdeAnneFrance'
*** User 2017-04-18 15:42:57.747 ***
Joining node: 'node-3@MBPdeAnneFrance' to runner@MBPdeAnneFrance at port 53603
*** User 2017-04-18 15:42:57.747 ***
Joining issued: 'node-3@MBPdeAnneFrance' to runner@MBPdeAnneFrance at port 53603
*** User 2017-04-18 15:42:57.748 ***
Joining node: 'node-2@MBPdeAnneFrance' to runner@MBPdeAnneFrance at port 53588
*** User 2017-04-18 15:42:57.748 ***
Joining issued: 'node-2@MBPdeAnneFrance' to runner@MBPdeAnneFrance at port 53588
*** User 2017-04-18 15:42:57.748 ***
Joining node: 'node-1@MBPdeAnneFrance' to runner@MBPdeAnneFrance at port 53577
*** User 2017-04-18 15:42:57.749 ***
Joining issued: 'node-1@MBPdeAnneFrance' to runner@MBPdeAnneFrance at port 53577
*** User 2017-04-18 15:42:57.810 ***
Waiting for join to complete with manager: partisan_default_peer_service_manager
*** User 2017-04-18 15:42:57.812 ***
Finished.
*** CT 2017-04-18 15:42:57.812 *** COVER INFO
Adding nodes to cover test: [runner@MBPdeAnneFrance]
*** CT 2017-04-18 15:42:57.820 *** COVER INFO
Successfully added nodes to cover test: []
*** User 2017-04-18 15:42:58.240 ***
Case finished: union_test
*** User 2017-04-18 15:43:05.279 ***
15:43:05.279 [info] Application lasp exited with reason: stopped
*** User 2017-04-18 15:43:05.280 ***
15:43:05.280 [info] Application partisan exited with reason: stopped
=== Ended at 2017-04-18 15:43:05
=== successfully completed test case
=== Returned value: ok
Test run history
| Top level test index


Theme defaults to:
Dark
Light
Exceptions (default to the opposite of what's listed above):
Each entry should contain a substring of the URL you wish to mark. For example:
google
will match
google.com
and
google.org
google.com
will only match
google.com
and not
google.org
Separate entries with commas or new lines
Darken media (images, videos, embeds)


Home
Trees
Indices
Help
[
hide private
]
[
frames
] |
no frames
]
Identifier Index
[
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V W X Y Z
_
]
A
API_PREFIX
(in
buzz
)
Attachment
(in
buzz
)
B
build_oauth_access_token()
(in
Client
)
build_oauth_consumer()
(in
Client
)
build_oauth_request_token()
(in
Client
)
build_oauth_authorization_url()
(in
Client
)
build_oauth_request()
(in
Client
)
buzz
C
Client
(in
buzz
)
commented_posts()
(in
Client
)
CONFIG_PATH
(in
buzz
)
CLIENT_CONFIG
(in
buzz
)
comments()
(in
Client
)
create_comment()
(in
Client
)
Comment
(in
buzz
)
comments()
(in
Post
)
create_post()
(in
Client
)
D
data
(in
Result
)
DEFAULT_PAGE_SIZE
(in
buzz
)
delete_comment()
(in
Client
)
DEBUG
(in
buzz
)
default_path
(in
buzz
)
delete_post()
(in
Client
)
F
fetch_api_response()
(in
Client
)
fetch_oauth_response()
(in
Client
)
followers()
(in
Client
)
fetch_oauth_access_token()
(in
Client
)
follow()
(in
Client
)
following()
(in
Client
)
fetch_oauth_request_token()
(in
Client
)
follow()
(in
Person
)
FULL_ACCESS_SCOPE
(in
buzz
)
H
http_connection
(in
Client
)
J
JSONParseError
(in
buzz
)
L
like()
(in
Post
)
likers()
(in
Client
)
load_next()
(in
Result
)
like_post()
(in
Client
)
likers()
(in
Post
)
local_index
(in
ResultIterator
)
liked_posts()
(in
Client
)
Link
(in
buzz
)
M
mute()
(in
Post
)
mute_post()
(in
Client
)
N
next()
(in
ResultIterator
)
next_uri
(in
Result
)
O
OAUTH_ACCESS_TOKEN_URI
(in
buzz
)
oauth_http_connection
(in
Client
)
oauth_token_info()
(in
Client
)
OAUTH_AUTHORIZATION_URI
(in
buzz
)
OAUTH_REQUEST_TOKEN_URI
(in
buzz
)
P
people_search()
(in
Client
)
Post
(in
buzz
)
posts()
(in
Person
)
people_search_by_topic()
(in
Client
)
post()
(in
Client
)
public
(in
Post
)
Person
(in
buzz
)
post()
(in
Comment
)
person()
(in
Client
)
posts()
(in
Client
)
R
READONLY_SCOPE
(in
buzz
)
reload()
(in
Result
)
RetrieveError
(in
buzz
)
related_links()
(in
Client
)
Result
(in
buzz
)
related_links()
(in
Post
)
ResultIterator
(in
buzz
)
S
search()
(in
Client
)
share_count()
(in
Client
)
U
unfollow()
(in
Client
)
unlike_post()
(in
Client
)
update_comment()
(in
Client
)
unfollow()
(in
Person
)
unmute()
(in
Post
)
update_post()
(in
Client
)
unlike()
(in
Post
)
unmute_post()
(in
Client
)
use_anonymous_oauth_consumer()
(in
Client
)
_
__init__()
(in
Attachment
)
__package__
(in
buzz
)
_json_output
(in
Post
)
__init__()
(in
Client
)
__repr__()
(in
Attachment
)
_parse_comments()
(in
Result
)
__init__()
(in
Comment
)
__repr__()
(in
Comment
)
_parse_error()
(in
Result
)
__init__()
(in
JSONParseError
)
__repr__()
(in
Link
)
_parse_geocode()
(in
buzz
)
__init__()
(in
Link
)
__repr__()
(in
Person
)
_parse_link()
(in
Result
)
__init__()
(in
Person
)
__repr__()
(in
Post
)
_parse_links()
(in
Result
)
__init__()
(in
Post
)
__str__()
(in
JSONParseError
)
_parse_links()
(in
buzz
)
__init__()
(in
Result
)
__str__()
(in
RetrieveError
)
_parse_people()
(in
Result
)
__init__()
(in
ResultIterator
)
_json_output
(in
Attachment
)
_parse_person()
(in
Result
)
__init__()
(in
RetrieveError
)
_json_output
(in
Comment
)
_parse_post()
(in
Result
)
__iter__()
(in
Result
)
_json_output
(in
Link
)
_parse_posts()
(in
Result
)
__iter__()
(in
ResultIterator
)
_json_output
(in
Person
)
_prune_json_envelope()
(in
buzz
)
Home
Trees
Indices
Help
Generated by Epydoc 3.0.1 on Wed Oct 20 13:13:55 2010
http://epydoc.sourceforge.net


A free web app to take the pain out of transcribing recorded interviews.
Follow @oTranscribe Created by Elliot Bentley. A project of the MuckRock Foundation.
Enter your transcript here...
Protips:
- Ctrl+I adds italic formatting and Ctrl+B adds bold formatting.
- Press ESC to play/pause, and Ctrl+J to insert the current timestamp.


#HMIF
TECH
Registration for event:
...
NIM
Record attendance
Name
False
Correct
Register
Name
Cancel
Register
Okay