# Test Modes
Lint's unit testing machinery has special support for “test modes”,
where it repeats a unit test under different conditions and makes sure
the test continues to pass with the same test results -- the same
warnings in the same test files.
There are a number of built-in test modes:
* Test modes which makes small tweaks to the source files which
should be compatible, such as
* Inserting unnecessary parentheses
* Replacing imported symbols with fully qualified names
* Replacing imported symbols with Kotlin import aliases
* Replacing types with typealiases
* Reordering Kotlin named arguments
* Replacing simple functions with Kotlin expression bodies
* etc
* A test mode which changes that detectors are correctly handling
Kotlin literal expressions by running them both with and without
the upcoming UiInjectionHost mode which will change the
representation of strings in an upcoming Kotlin version
* A partial analysis test mode which runs the tests in “partial
analysis” mode; two phases, analysis and reporting, with
minSdkVersion set to 1 during analysis and set to the true test
value during reporting etc.
* Bytecode Only: Any test files that specify both source and bytecode
will only use the bytecode
* Source Only: Any test files that specify both source and bytecode
will only use the source code
These are built-in test modes which will be applied to all detector
tests, but you can opt out of any test modes by invoking the
`skipTestModes` DSL method, as described below.
You can also add in your own test modes. For example, lint adds its own
internal test mode for making sure the built-in annotation checks works
with Android platform annotations in the following test mode:
[](https://cs.android.com/android-studio/platform/tools/base/+/mirror-goog-studio-main:lint/libs/lint-tests/src/test/java/com/android/tools/lint/checks/AndroidPlatformAnnotationsTestMode.kt)
## How to debug
Let's say you have a test failure in a particular test mode, such
as `TestMode.PARENTHESIZED` which inserts unnecessary parentheses
into the source code to make sure detectors are properly skipping
through `UParenthesizedExpression` nodes.
If you just run this under the debugger, lint will run through
all the test modes as usual, which means you'll need to skip
through a lot of intermediate breakpoint hits.
For these scenarios, it's helpful to limit the test run to **only** the
target test mode. To do this, go and specify that specific test mode as
part of the run setup by adding the following method declaration into
your detector class:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~kotlin
override fun lint(): TestLintTask {
return super.lint().testModes(TestMode.PARENTHESIZED)
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Now when you run your test, it will run *only* this test mode, so you
can set breakpoints and start debugging through the scenario without
having to figure out which mode you're currently being invoked in.
!!! Warning
Don't forget to remove that override when you're done!
## Handling Intentional Failures
There are cases where your lint check is doing something very
particular related to the changes made by the test mode which means
that the test mode doesn't really apply. For example, there is a test
mode which adds unnecessary parentheses, to make sure that the detector
is properly handling the case where there are intermediate parenthesis
nodes in the AST. Normally, every lint check should behave the same
whether or not optional parentheses are present. But, if the lint check
you are writing is actually parenthesis specific, such as suggesting
removal of optional parentheses, then obviously in that case you don't
want to apply this test mode.
To do this, there's a special test DSL method you can add,
`skipTestModes`. Adding a comment for why that particular mode is
skipped is useful as well.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~kotlin
lint().files(...)
.allowCompilationErrors()
// When running multiple passes of lint each pass will warn
// about the obsolete lint checks; that's fine
.skipTestModes(TestMode.PARTIAL)
.run()
.expectClean()
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
## Source-Modifying Test Modes
The most powerful test modes are those that make some deliberate
transformations to your source code, to test variations of the code
patterns that may appear in the wild. Examples of this include having
optional parentheses, or fully qualified names.
Lint will make these transformations, then run your tests on the
modified sources, and make sure the results are the same -- except for
the part of the output which shows the relevant source code, since that
part is expected to differ due to the modifications.
When lint finds a failure, it will abort with a diff that includes not
just the different error output between the default mode and the source
modifying mode, but the source files as well; that makes it easier to
spot what the difference is.
In the following screenshot for example we've run a failing test inside
IntelliJ, and have then clicked on the Show Difference link in the test
output window (Ctrl+D or Cmd-D) which shows the test failure diff
nicely:
![Figure [fqn]: Screenshot of test failure](fully-qualified-error.png)
This is a test mode which converts all symbols to fully qualified
names; in addition to the labeled output at the top we can see the
diffs in the test case files below the error output diff. The test
files include line numbers to help make it easy to correlate extra or
missing warnings with their line numbers to the changed source code.
### Fully Qualified Names
The `TestMode.FULLY_QUALIFIED` test mode will rewrite the source files
such that all symbols that it can resolve are replaced with fully
qualified names.
For example, this mode will convert the following code:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~kotlin
import android.widget.RemoteViews
fun test(packageName: String, other: Any) {
val rv = RemoteViews(packageName, R.layout.test)
val ov = other as RemoteViews
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
to
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~kotlin
import android.widget.RemoteViews
fun test(packageName: String, other: Any) {
val rv = android.widget.RemoteViews(packageName, R.layout.test)
val ov = other as android.widget.RemoteViews
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
This makes sure that your detector handles not only the case where a
symbol appears in its normal imported state, but also when it is fully
qualified in the code, perhaps because there is a different competing
class of the same name.
This will typically catch cases where the code is incorrectly just
comparing the identifier at the call node instead of the fully
qualified name.
For example, one detector's tests failed in this mode because
it was looking to identify references to an `EnumSet`,
and the code looked like this:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~kotlin
private fun checkEnumSet(node: UCallExpression) {
val receiver = node.receiver
if (receiver is USimpleNameReferenceExpression &&
receiver.identifier == "EnumSet"
) {
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
which will work for code such as `EnumSet.of()` but not
`java.util.EnumSet.of()`.
Instead, use something like this:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~kotlin
private fun checkEnumSet(node: UCallExpression) {
val targetClass = node.resolve()?.containingClass?.qualifiedName
?: return
if (targetClass == "java.util.EnumSet") {
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
As with all the source transforming test modes, there are cases where
it doesn't apply. For example, lint had a built-in check for camera
EXIF metadata, encouraging you to import the androidx version of the
library instead of using the built-in version. If it sees you using the
platform one it will normally encourage you to import the androidx one
instead:
```
src/test/pkg/ExifUsage.java:9: Warning: Avoid using android.media.ExifInterface; use androidx.exifinterface.media.ExifInterface instead [ExifInterface]
android.media.ExifInterface exif = new android.media.ExifInterface(path);
---------------------------
```
However, if you explicitly (via fully qualified imports) reference the
platform one, in that case the lint check does not issue any warnings
since it figures you're deliberately trying to use the older version.
And in this test mode, the results between the two obviously differ,
and that's fine; as usual we'll deliberately turn off the check in this
detector:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~java
@Override protected TestLintTask lint() {
// This lint check deliberately treats fully qualified imports
// differently (they are interpreted as a deliberate usage of
// the discouraged API) so the fully qualified equivalence test
// does not apply:
return super.lint().skipTestModes(TestMode.FULLY_QUALIFIED);
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! Tip
In Kotlin code, you may have code that checks to see if a node is a
`UCallExpression`. But note that if a call is fully qualified, the
node will be a `UQualifiedReferenceExpression` instead, and you'll
need to look at its selector. So watch out for code which does
something like `node as? UCallExpression`.
### Import Aliasing
In Kotlin, you can create an import alias, which lets you refer to
the imported class using an entirely different name.
This test mode will create import aliases for all the import statements
in the file and will replace all the references to the import aliases
instead. This makes sure that the detector handles the equivalent Kotlin
code.
For example, this mode will convert the following code:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~kotlin
import android.widget.RemoteViews
fun test(packageName: String, other: Any) {
val rv = RemoteViews(packageName, R.layout.test)
val ov = other as RemoteViews
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
to
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~kotlin
import android.widget.RemoteViews as IMPORT_ALIAS_1_REMOTEVIEWS
fun test(packageName: String, other: Any) {
val rv = IMPORT_ALIAS_1_REMOTEVIEWS(packageName, R.layout.test)
val ov = other as IMPORT_ALIAS_1_REMOTEVIEWS
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
### Type Aliasing
Kotlin also lets you alias types using the `typealias` keyword.
This test mode is similar to import aliasing, but applied to all
types. In addition to the different AST representations of import
aliases and type aliases, they apply to different things.
For example, if we import TreeMap, and we have a code reference such as
`TreeMap


View Account
Project #1
Project Details
Current Bids
Company
Project Manager
Start Date
Submit New Bid
Submit Bid


The Cloud Imaging Model workgroup developed a standard to support Cloud-based printing and multifunction imaging using the PWG Semantic Model. Further development of the model will continue in the Semantic Model workgroup as needed.
Mailing list<EMAIL_ADDRESS>· Subscribe · Archive
PWG Candidate Standard 5109.1-2015 - Cloud Imaging Requirements and Model (IMAGING)


?The
New
York
copyright
reserved
botanical
Garden
NEW
YORK
BOTANICAL
GARDEN
Plants
of
Hispaniola
Dominican
Republic
12198
Conium
maculatum
L.
Det.
Alain
H.
Liogier,
Jan.
1968
Herb,
erect,
1.5
m
high,
flowers
white.
In
pine
barrens,
near
a
ditch.
Valle
liuevo,
Rocky
mountains
and
pine
forest
Alt.
2000-2100
m.
í
YO^
BOTAMI
C
AL
Bro.
Alain
H.
Liogier
17
1968
Supported
by
funds
from
the
National
Science
Foundation,
01500910
Legend -
Level of confidence that token is an accurately-transcribed word
extremely low
very low
low
undetermined
medium
high
very high


|
Groovy JDK |
| Method Summary | |
|---|---|
MetaClass
|
getMetaClass()
Adds a "metaClass" property to all class objects so you can use the syntax String.metaClass.myMethod = { println "foo" }
|
boolean
|
isCase(Object switchValue)
Special 'Case' implementation for Class, which allows testing for a certain class in a switch statement. |
MetaClass
|
metaClass(Closure closure)
Sets/updates the metaclass for a given class to a closure. |
void
|
mixin(List categoryClasses)
Extend class globally with category methods. |
void
|
mixin(Class categoryClass)
Extend class globally with category methods. |
void
|
mixin(Class[] categoryClass)
Extend class globally with category methods. |
Object
|
newInstance()
Convenience method to dynamically create a new instance of this class. |
Object
|
newInstance(Object[] args)
Helper to construct a new instance from the given arguments. |
void
|
setMetaClass(MetaClass metaClass)
Sets the metaclass for a given class. |
| Method Detail |
|---|
public MetaClass getMetaClass()
String.metaClass.myMethod = { println "foo" }
public boolean isCase(Object switchValue)
switch( obj ) { case List : // obj is a list break; case Set : // etc }
switchValue
- the switch value.public MetaClass metaClass(Closure closure)
closure
- the closure representing the new metaclass.public void mixin(List categoryClasses)
categoryClasses
- a category classes to use.public void mixin(Class categoryClass)
categoryClass
- a category class to use.public void mixin(Class[] categoryClass)
categoryClass
- a category class to use.public Object newInstance()
public Object newInstance(Object[] args)
newInstance(null)
or simply
newInstance()
for the default (no-arg) constructor.args
- the constructor arguments.public void setMetaClass(MetaClass metaClass)
metaClass
- the new MetaClass.
|
Groovy JDK |


I don’t know how I’d even handle a bullrun tbh. I’ve forgotten what it feels like
And I’ll be so confused when to buy the dip, if there even is one, and expecting every reversal to last another year LOL. The December bullrun fucked up my logical thinking
Cryptoon04-Sep-18 12:13 PM
I only just got rid of the habit of checking folio every hour or so
Deleted User04-Sep-18 12:13 PM
Please show us some green this December
Cryptoon04-Sep-18 12:14 PM
I remember december you could check folio one minute, refresh and a minute later it was like 10% difference
blackjok3r04-Sep-18 12:14 PM
I sold before december
LOL
Cryptoon04-Sep-18 12:14 PM
It's called taking one for the team @blackjok3r
blackjok3r04-Sep-18 12:14 PM
haha... this pump started when I sold some aswell
Hollowman900004-Sep-18 12:43 PM
65k KMD Between here and 23k sats
How hungry are you, whale?
Bittersweet04-Sep-18 01:24 PM
I'd say a substantial portion of that is also the whale, if he wants to buy
I think polo was already asked to replace btcd with KMD
but they changed owner recently? if they also changed stuff and had many tickets possible the mail is missing in action
maybe make sense to ask them once a wekk till they do
Bittersweet04-Sep-18 02:46 PM
Is eth ded?
Kitchen Table04-Sep-18 02:48 PM
It will be
siu - Chainmakers04-Sep-18 02:48 PM
They take a year to verify users... i dont know how they will delist a coin
when verifying users is something that bings them money
passcombo.com 🏴☠🏴04-Sep-18 02:49 PM
als bittrex is lower, Asian exchanges rules now
PHBA206104-Sep-18 03:14 PM
Is it a coincidence that btcd & kmd got pumped at the same time ?
ryman11204-Sep-18 04:50 PM
It would be nice to see 2$ kmd here soon. Are we seeing the beginnings of a upward trend in the market? I sure hope so this has gone on long enough lol
Cryptoon04-Sep-18 04:53 PM
Seeing a lot of resistance for btc/usd at 7400
we are knocking at those levels for the past few days
in other news amazon with a new ATH
CHMEX04-Sep-18 05:20 PM
so that's like 4x crypto mcap
Hollowman900004-Sep-18 05:22 PM
wen $500 kmd
Fuck a $2
1
pinkolin04-Sep-18 05:22 PM
We was at $12?
$2 is nothing
But no usage, no potential
50$ is my wet dream, but it’s look NOW impossible
Deleted User04-Sep-18 05:25 PM
Short term : store of value
pinkolin04-Sep-18 05:27 PM
40$ will be very nice
But if we was at 12, why not?
Yassin04-Sep-18 05:29 PM
Hold!!
6
[TPUX] Djith Wattignies04-Sep-18 06:13 PM
Testing upper resistances... but.. sideways or bear can still last a year..
But .. at 500$kmd i buy my farm in south of france and start a solar power farm... getting payed to put electricity on the grid and also mining
Kmd ofcourse..
Sdunbar04-Sep-18 06:36 PM
Can it get anywhere near that when dicos/atomic swaps seem to have proven to be immensely less popular than expected?
I'd be ecstatic if it got back to $5 honestly
1
Cryptoon04-Sep-18 07:25 PM
Ico’s in general dont prove to be as popular as in a bull market
Hollowman900004-Sep-18 07:28 PM
I’ll take controlling my own coins vs sending IDs/home address/SSN/blood sample/stool sample/whatever for some bullshit exchange KYC than praying my withdraws get processed and the exchange doesn’t fold and run
But that’s just me
Sdunbar04-Sep-18 07:30 PM
Yeah there may be some market for it for more infrequent buyers
but day traders/frequent users need to ability to make near instantaneous trades
I'm guessing those users make up the lions share of the volume on centralized exchanges
Shapeshift pivots away from being “the exchange without accounts.”
Account registration will soon be mandatory. #bitcoin #blockchain #crypto
https://t.co/R7im1Kb5e2
KYC is next ?
$500 kmd
soon
Yassin04-Sep-18 07:34 PM
very sad if Shapeshift is KYC, but good For Komodo!!


Planet Sick-Boy: http://www.sick-boy.com "We Put the SIN in Cinema"
© Copyright 2001 Planet Sick-Boy. All Rights Reserved.
Tomb Raider has, at press time, already inhaled over $115 million at the box office, throwing the gauntlet down to this summer's other big videogame-turned-feature-film, Final Fantasy: The Spirits Within. The game is wildly popular, selling over 33 million copies of its nine different versions since 1987. While the film version probably won't be nearly as beloved, it is the first major motion picture to feature computer-generated people who look real (other than the occasional character, like Toy Story and Princess Fiona in Shrek), and that's got to count for something, right? Even if the story is really bad, right?
The story is just as lame as Raider's and any other console-to-screen film, but Raider had a lot more fun reaching its inevitable conclusion than most. Fantasy's game creators, who also have all of their hands in the film, pride themselves on creating new stories and new characters each time out, but neither are anything you haven't seen a bunch of times before. It's frustrating to hear about the detail, time and manpower put into animating the 60,000 hairs on the main character's head when so little thought went into the story.
The film is set in 2065 - several decades after "they" took over, or so a narration tells us.  Fantasy's heroine, scientist/physician Aki Ross (voiced by Ming-Na, ER), has been infected by the aliens and is in search of an environmental treatment that will both cure her and save the planet from total domination. Together with Dr. Sid (Donald Sutherland, Space Cowboys), she has determined that collecting eight "spirits" will do the trick. Aki has six now, and heads to Old New York City to find the other two.
It is here she meets Captain Gray Edwards and the Deep Eyes squadron (which sounds like a kitschy garage band), who protect the few remaining citizens living under the giant protective dome that covers a big chunk of Manhattan. Gray (Cats and Dogs' Alec Baldwin, providing his second "voice" job in the last two weeks) and his crew (Steve Buscemi, Peri Gilpin and Ving Rhames) help Aki and Dr. Sid in their quest to find the missing spirits, which must be done before the evil General Hein (James Woods, Scary Movie 2) unleashes the giant, space-based Zeus Cannon on the alien meteor, which landed in the Caspian Mountains. See? It's good vs. evil, with a whole environmental message thrown in for good measure.
As silly and downright confusing as it is, the story (penned by director and game developer Hironobu Sakaguchi and Apollo 11 scribe Al Reinert) is largely inconsequential. How powerful is the ability of computer animation? It can make Buscemi into an attractive man, for Pete's sake. But seriously, folks, the characters are so frighteningly lifelike (especially Dr. Sid) that it becomes distracting, which I guess actually helps the story in a way. If you look hard enough, you can find plenty of flaws (especially in the mouth movement when the characters talk), but don't bother - this still looks pretty goddamn incredible.
As a side note, the filmmakers should get some credit for not making Aki into an impossibly busted cybervixen (a la Lara Croft). Considering the film's target audience (and the inability to get laid attendant thereto), it's quite a pleasant surprise.
1:53 -PG-13 for sci-fi action violence
========== X-RAMR-ID: 28744 X-RT-AuthorID: 1146 X-RT-TitleID: 1108683
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


A common problem faced by journal reviewers and authors is the question of whether the results of a replication study are consistent with the original published study. One solution to this problem is to examine the effect size from the original study and generate the range of effect sizes that could reasonably be obtained (due to random sampling) in a replication attempt (i.e., calculate a replication interval). If a replication effect size falls outside the replication interval, then that effect likely did not occur due to the effects of sampling error alone. Alternatively, if a replication effect size falls within the replication interval, then the replication effect could have reasonably occurred due to the effects of sampling error alone. This package has functions that calculate the replication interval for the correlation (i.e., r), standardized mean difference (i.e., d-value), and mean. The calculations used in version 2.0.0 and onward differ from past calculations due to feedback during the journal review process. The new calculations allow for a more precise interpretation of the replication interval.
| Version: | 2.0.1 |
| Imports: | ggplot2, MBESS, MASS, stats, pbapply |
| Published: | 2016-05-26 |
| Author: | David Stanley |
| Maintainer: | David Stanley <dstanley at uoguelph.ca> |
| License: | MIT License + file LICENSE |
| NeedsCompilation: | no |
| CRAN checks: | replicationInterval results |
| Reference manual: | replicationInterval.pdf |
| Package source: | replicationInterval_2.0.1.tar.gz |
| Windows binaries: | r-devel: replicationInterval_2.0.1.zip, r-release: replicationInterval_2.0.1.zip, r-oldrel: replicationInterval_2.0.1.zip |
| OS X binaries: | r-release: replicationInterval_2.0.1.tgz, r-oldrel: replicationInterval_2.0.1.tgz |
| Old sources: | replicationInterval archive |
Please use the canonical form https://CRAN.R-project.org/package=replicationInterval to link to this page.


should be false when missing
should be true when is used as boolean attribute(present)
should be true when set to empty string
should be true when set to a truthy string
should be true when set to a computed value (true)
should be false when set to a computed value (false)
should be true when set to an integer
should be false when missing
should be true when is used as boolean attribute(present)
should be true when set to empty string
should be true when set to a truthy string
should be true when set to a computed value (true)
should be false when set to a computed value (false)
should be true when set to an integer


Get to know a little history about us.
Read more
Get to know our team, and talk to us.

Johnton | Janecha ©


|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
public interface HandEval
An interface for Plug-in Hand Evaluation engines. A Hand Evaluator takes as input a poker hand (5 to 7 cards) and returns a unique integer rank for the best poker hand made from those cards, such that any hand that beats another hand is assigned a strictly larger integer. Any hands that tie would be assigned identical integers. Exposes special rankHand calls for specific hand sizes so that special optimizations can be done for each case.
| Method Summary | |
|---|---|
int |
rankHand(Hand h)
Rank the hand |
int |
rankHand5(Hand h)
Rank the 5-card hand |
int |
rankHand6(Hand h)
Rank the 6-card hand |
int |
rankHand7(Hand h)
Rank the 7-card hand |
| Method Detail |
|---|
int rankHand(Hand h)
h
- a poker hand with 5,6, or 7 cards
int rankHand7(Hand h)
h
- a poker hand with exactly 7 cards
int rankHand6(Hand h)
h
- a poker hand with exactly 6 cards
int rankHand5(Hand h)
h
- a poker hand with exactly 5 cards
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |


Between sips of coffee, dawn’s golden and wispy clouds travel across the harbour before us, carried over distant lights in the tight grasp of Wellington’s infamous breath.
Huddled in hills at the bottom of the North Island, Wellington is an extremely elemental city with wind speeding up as it squeezes through the Cook Strait, between the North and South islands. With views right across to the South Island on a clear day, Wellington is made beautiful by the ever-changing elements. All year around, sun, wind, rain, hail, and a tiny bit of snow paint the city and its surrounding landscape.
Bound by the sweeping harbour, green undulating hills, forests, and a stretch of rough, typically emerald ocean, Wellington is an unpredictable treasure. Even on the coldest days, the city has much to offer in the form of its dynamic coffee and culinary scene, exhibitions and events.
As the sun peeks over Mt Victoria, the eastern faces of the hills are emblazoned with orange as the morning light streams into the depths of the CBD. Cuba Street, Wellington’s coffee and cultural spine, is the hub of this compact city that packs in more than most cities its size. It’s said to have more bars and restaurants per capita than New York, and the culinary scene is buzzing with ideas and delectable delicacies. Often known as the culinary capital, Wellington is the place to immerse yourself in the food scene. Cocktails, coffee and endless dining options are all within easy walking distance of the main drags, Courtenay Place and Cuba Street, in the central city.
We start our day at Nikau Cafe at the City Gallery; there’s no better place for brunch according to culture guide Concrete Playground, and that’s saying something in this city of coffee and culinary greats.
With such an abundance of great coffee and eateries, there’s little to stop our optimism as we explore the city and visit the galleries, museums and hidden hotspots locals know and love.
After visiting the latest exhibition at City Gallery, we head to the edge of the city, where a ring of preserved vegetation, forest and wilderness known as the Wellington Town Belt, envelops the central city. This green belt has become a transition point; a route that leads to fresh culinary ideas in the outer city.
We meet John Paul Henderson and Amy Gillies, owners of Brooklyn’s Salty Pidgin restaurant, who believe they have the best of culture, cuisine and nature on their doorstep. The duo have settled into Brooklyn’s thriving community, which includes the Penthouse Cinema and the famous Brooklyn Deli; on the doorstep, various walks into the pine-forested Brooklyn Central Park begin.
There are many walks, biking trails and leafy slices of paradise scattered in and around the city that provide more than just an oasis of calm; these areas are a thriving place of productivity for artists, chefs and writers who utilise the fresh air and open spaces when creating their products and services.
Mount Victoria is part of the green belt and a climb to the top is well worth it. It provides stunning 360-degree views of the city and is accessible by car or via the walking tracks.
Wellington’s rugged South Coast is perhaps one of the most spectacular places to visit. A 30-minute walking track meanders around the coast from Owhiro Bay to the Red Rocks, an area of national significance. The Red Rocks are ancient pillow lava formed around 200 million years ago by undersea volcanic eruptions. Small amounts of iron oxide give the rocks their distinct reddish colour. The walk continues around to Sinclair Head where a New Zealand fur seal colony resides – an unusual sight so close to a major city.
A few minutes from central Wellington by taxi or bus, and you’ll find yourself amongst trees of daunting scale. Some of the city’s oldest trees stand within Otari-Wilson’s Bush, including an 800-year-old Rimu. The reserve is the only public botanic garden in New Zealand dedicated solely to native plants. Here, a treetop canopy walkway runs 18 metres above the native forest, which spans 100 hectares. A nature trail leads through the undergrowth below.
The city’s famous restored historic cable car is another way to explore; it climbs the hill from Lambton Quay to the Botanic Gardens where there are yet more sweeping views of the city, harbour and surrounds.
If you’re venturing to the suburbs, Petone is one of New Zealand’s heritage gems, and is filled with funky eateries, galleries and boutique retailers.
Or, take a stroll along the waterfront and enjoy the sculptural quotations from some of New Zealand’s best-known writers that form the Wellington Writers Walk. Like a series of intriguing pronouncements, the quotes take the form of contemporary stone sculptures.
If you want to explore the harbour, hire a sea kayak and paddle around the picturesque bays. Harbour cruises operate between the city and Matiu Island in the middle of the harbour and Days Bay, where cafes and craft shops line the seaside.
Bound by a sweeping harbour, green undulating hills, forests and a stretch of typically emerald ocean, Wellington is an unpredictable treasure.
There are limitless options for exploring what is arguably one of the world’s coolest capital cities.
Whether it’s taking in a live show, mountain biking through the re-generating native bush of Makara Peak, exploring a local gallery, or enjoying a cocktail on Cuba, Wellington really does have it all.
KiwiRail Scenic Journeys operates The Northern Explorer overland rail service between Auckland and Wellington.
Regular ferry services operate between Wellington and Picton allowing daily vehicular and passenger links between the North and South islands.


Netizens Amused as Ronaldo Reportedly Seeks to Make Peace With Juventus Via 'Reconciliation Dinner'
While some social media users joked about the menu of the upcoming dinner, others suggested a different way for Ronaldo to apologize.
Famous Portuguese football ace Cristiano Ronaldo has apparently come up with a way to reconcile with his teammates at Juventus who were somewhat discomforted by his conduct during the recent match with Milan.
During the game, Ronaldo reportedly called the team manager Maurizio Sarri a "son of a whore" after being substituted, and left the stadium before the match, which Juventus won 1-0, was over.
And now, it seems that the footballer intends to smooth things over by inviting all of his fellow team members to dinner, which will likely take place sometime this week, according to La Repubblica.
CR7 also admitted that he “played at a slightly reduced capacity” during the last three weeks, and that he’s still not "100 percent".
"But when it comes to sacrificing myself for my club and my national team, I do it with pride”, he added.
As news of this development hit social media, some netizens seemed to appreciate Ronaldo’s move.
A number of people cracked jokes about the menu.
And one netizen also suggested a different way for Ronaldo to apologise.


World is full of inequalities. Sometimes, we are the ones who engage in it. At other times, we are the recipients. It exists in various forms like below:
Let's pledge that we will not practice inequality in any form. Let's pledge that we will think about our behavior and be emphatic to others


--- layout: socpage title: Cross my heart and hope to die, the Commitcoin protocol excerpt: Consider the scenario where Alice makes an important discovery. image: feature: ---
Consider the scenario where Alice makes an important discovery.
It is important to her that she receives recognition for her breakthrough, however she would also like to keep it a secret until she can establish a suitable infrastructure for monetizing it. By forgoing publication of her discovery, she risks Bob independently making the same discovery and publicizing it as his own.
Folklore suggests that Alice might mail herself a copy of her discovery and leave the letter sealed, with the postal service’s timestamp intact, for a later resolution time. If Bob later claims the same discovery, the envelope can be produced and opened.
In reality, this approach does not work as (among other shortcomings) most postal services are pleased to timestamp and deliver unsealed empty envelopes that can be retroactively stuffed with “discoveries.”
If Alice can put her commitment value into a Bitcoin transaction, it will be included in the chain of puzzles and the network will provide carbon dating without Alice having to perform the computation herself.
Bob only has to trust that Alice cannot produce a fraudulent block chain, longer than the canonical one and in less time (which would, incidentally, allow Alice to claim all the rewards for the fraudulent portion).
This idea has been considered on the Bitcointalk message board [10] in the context of the distributed network vouching for the timestamp. Our observation is that even if you do not trust the timestamp or any node in the network, the proof of work itself can be used to carbon date the transaction (and thus commitment value).
Alice has control over three parameters in a Bitcoin transaction: her private key(s), her public key(s), and the randomness used in the signature algorithm which, importantly, is ECDSA.
If she sets the receiver’s public key *(technically, the fingerprint of the public key)* to be her commitment value c and sends 1 BTC to it, the 1 BTC will be unrecoverable.
We consider this undesirable for two reasons: (a) it is financially wasteful for Alice and (b) it is not being a good citizen of the Bitcoin community.
By setting c equal to a private key or the signature randomness and following the protocol, c itself will never directly appear in the transcript.
To get around this, Alice sets c to the private key of a new account and then purposely leaks the value of the private key by signing two different transactions with the same randomness.
*(The CommitCoin protocol is given in Protocol 2.)*
Since c is randomized, it has sufficient entropy to function (temporarily) as a secret key. A few bits of the secret key could be used as a pointer (e.g., URL) to a place to post the opening of the commitment.
- 9 http://deepbit.net; http://blockexplorer.com/q/interval
- 10 http://goo.gl/fBNnA
We committed to the title and abstract of this paper and, as proof of concept, inserted it into the Bitcoin block chain on September 15, 2011 (the submission deadline for FC 2012). We used a simplified version of CommitCoin, with c set to be the public key fingerprint. As noted, this effectively burns the money. A proper implementation using c as the private key is forthcoming.
First we ran,
openssl rand -out random.dat 20
creating a file containing a 20 byte random factor. [12] Then we concatenated the randomness to the end of the abstract PDF [13] and hashed it using RIPEMD-160,
cat abstract.pdf random.dat > preimage.dat openssl dgst -ripemd160 preimage.dat
giving us the result:
135e3712334428d4061efe4e5ffd5ff817aeb817
This serves as a basic commitment scheme. We called an online tool [14] to convert this hash into a valid Bitcoin address giving us:
12mQhpvGYdBrvDJq6sFGwEe3GETaqEM4Jk
Finally, we used the Bitcoin Faucet[15] to send BTC0.005 to this address. This transaction ostensibly appeared in the Bitcoin blockchain on 2011-09-16 00:24:32 which can be seen in blockexplorer. [16]
However it may be the case that we actually committed to our abstract long after 2011-09-16 00:24:32 and colluded with blockexplorer or the Bitcoin network to display the wrong timestamp. How can you really be sure?
By the time you are reading this, many more blocks will have been added to the blockchain. Each block that is added is a solution to a moderately hard problem.
Suppose we actually committed to the abstract yesterday. That means we would have had to forge the entire chain from Block 145535 [17] to the current block. [18]
Given each block takes on average 10 minutes for the entire Bitcoin network to solve, we could not have solved that many blocks in a single day even if we controlled the whole network.
- 13 http://people.scs.carleton.ca/~clark/commitcoin/abstract.pdf
- 14 http://blockexplorer.com/q/hashtoaddress/135e3712334428d4061efe4e5ffd5ff817aeb817
- 15 https://freebitcoins.appspot.com/
- 16 http://blockexplorer.com/tx/2993c284f0b6838386ddd286af415384560d93cc4e27d25087fd6534f8e0d276
- 17 http://blockexplorer.com/b/145535
- 18 http://blockexplorer.com/q/getblockcount


Index
A B C D E F G H I K L M N O P R S T U V W Z
All Classes|All Packages
All Classes|All Packages
All Classes|All Packages
V
- VALID_POINTS - Static variable in class it.polimi.vovarini.model.CriticPointsParameterResolver
- VALID_POINTS - Static variable in class it.polimi.vovarini.model.InvalidPointsParameterResolver
- validate(List<Point>, Construction) - Method in class it.polimi.vovarini.model.godcards.GodCard
-
This method computes if a Construction move is valid when compared to the rules of the game
- validate(List<Point>, Movement) - Method in class it.polimi.vovarini.model.godcards.GodCard
-
This method computes if a Movement move is valid when compared to the rules of the game
- validateNickname(String) - Static method in class it.polimi.vovarini.model.Player
-
This method checks if a nickname is valid or not
- ValidationDecider - Class in it.polimi.vovarini.model.godcards.deciders
-
ValidationDecider is an extension of Decider.
- ValidationDecider() - Constructor for class it.polimi.vovarini.model.godcards.deciders.ValidationDecider
- validMovement() - Method in class it.polimi.vovarini.model.godcards.MinotaurTests
- validSecondConstruction(Point, Point, Point, int) - Method in class it.polimi.vovarini.model.godcards.HephaestusTests
- validWinningMovement() - Method in class it.polimi.vovarini.model.godcards.MinotaurTests
- valueOf(String) - Static method in enum it.polimi.vovarini.ClientMode
-
Returns the enum constant of this type with the specified name.
- valueOf(String) - Static method in enum it.polimi.vovarini.model.board.items.Sex
-
Returns the enum constant of this type with the specified name.
- valueOf(String) - Static method in enum it.polimi.vovarini.model.godcards.GodName
-
Returns the enum constant of this type with the specified name.
- valueOf(String) - Static method in enum it.polimi.vovarini.model.Phase
-
Returns the enum constant of this type with the specified name.
- valueOf(String) - Static method in enum it.polimi.vovarini.view.cli.Direction
-
Returns the enum constant of this type with the specified name.
- valueOf(String) - Static method in enum it.polimi.vovarini.view.cli.input.Key
-
Returns the enum constant of this type with the specified name.
- values() - Static method in enum it.polimi.vovarini.ClientMode
-
Returns an array containing the constants of this enum type, in the order they are declared.
- values() - Static method in enum it.polimi.vovarini.model.board.items.Sex
-
Returns an array containing the constants of this enum type, in the order they are declared.
- values() - Static method in enum it.polimi.vovarini.model.godcards.GodName
-
Returns an array containing the constants of this enum type, in the order they are declared.
- values() - Static method in enum it.polimi.vovarini.model.Phase
-
Returns an array containing the constants of this enum type, in the order they are declared.
- values() - Static method in enum it.polimi.vovarini.view.cli.Direction
-
Returns an array containing the constants of this enum type, in the order they are declared.
- values() - Static method in enum it.polimi.vovarini.view.cli.input.Key
-
Returns an array containing the constants of this enum type, in the order they are declared.
- victory - Static variable in class it.polimi.vovarini.view.gui.Settings
- VictoryEvent - Class in it.polimi.vovarini.common.events
-
Signals pointing the winner player to all the others
- VictoryEvent(Object, Player) - Constructor for class it.polimi.vovarini.common.events.VictoryEvent
-
Builds a VictoryEvent
- View - Class in it.polimi.vovarini.view
-
This class represents an abstract View and handles generic View behavior, such as updating the Board, updating the current player, etc.
- View() - Constructor for class it.polimi.vovarini.view.View
-
This method builds an instance of View
- ViewData - Class in it.polimi.vovarini.view
-
Data that is needed by any kind of view.
- ViewData() - Constructor for class it.polimi.vovarini.view.ViewData
-
Builds a new ViewData object
All Classes|All Packages


node-goldwasher
The purpose module is to extract text information from HTML, usually a website, which will often have to be sanitized and filtered to be useful. This module takes a pile of HTML and washes out the parts you need as small, golden nuggets of text and related metadata, the default options referred to as the goldwasher format:
JSON format (see additional formats in the bottom):
{
timestamp:<PHONE_NUMBER>380,
text: "Oak is strong and also gives shade.",
keywords: [
{word: "oak", count: 1},
{word: "strong", count: 1},
{word: "gives", count: 1},
{word: "shade", count: 1}
],
href: "http://www.oakisstrong.com/oak/strong",
tag: "h1",
position: 0,
total: 2,
uuid: "808b7490-f743-11e4-90b2-df723554e9be",
batch: "14eefda0-f762-11e4-a0b3-d5647c4f7651",
source: "http://www.oakisstrong.com"
}
It works by passing it either pure HTML as a string (e.g. from request) or a cheerio object, usually along with a cheerio (jQuery) selector (HTML tags) from which the text should be extracted, along with other options. It will then return an array of nuggets (objects) of information - one per recognized tag. For each nugget, it will try to:
- Get the text of the tag and sanitize it, e.g. remove newlines.
- Optionally discard the nugget, if it matches an array of stop texts.
- Get the exact time of processing.
- Extract a count of each word in the text as keywords.
- Optionally discard keywords that match an array of stop words.
- Optionally discard keywords that match an external array of keywords (see the folder stop_words).
- Extract the nearest URL of the closest link.
- Extract the tag type of the matched target.
- Assign a unique identifier (UUID V1).
- Index the nugget position in the order it was found found.
- Add the total nugget count.
- Add the URL of the original source.
- Assign a unique identifier (UUID V1) that is similar for the entire batch of nuggets.
The returned nuggets include the object properties:
timestamp
- the exact time the tag was processed.text
- a sanitized version of the text of the tag.keywords
- a count of each word in the text, special characters removed.href
- the closest link, the first that matches one of:- Is the tag itself a link?
- Does the tag have a child node that is a link?
- Is there a link if we traverse up the DOM tree?
- Is there an adjecent (sibling) link?
tag
- the type of tag that was processed.position
- the position of the object, indicating the order in which tags were found. 0-based.total
- total number of nuggets in relation to the position. 1-based.uuid
- a unique identifier (UUID V1).batch
- a unique identifier (UUID V1) that is the same for the entire batch of nuggets.source
- a URL that was scraped, also the same for all nuggets.
Alternatively, the output can be configured as XML, Atom or RSS format with the output
option. The reason redundant information is included, such as the source, is that each returned nugget is supposed to be an atomic piece of information. As such, each nugget is to contain the information that "somewhere, at some point in time, something was written (with a link to some place)".
Installation
npm install goldwasher
Options
selector
- cheerio (jQuery) selector, a selection of target tags.search
- only pick results containing these terms. Not case or special character sensitive (sluggified search).limit
- limit number of results.url
- base url of links, for sites that use relative urls.filterTexts
- stop texts that should be excluded.filterKeywords
- stop words that should be excluded as keywords.filterLocale
- stop words from external JSON file (see the folder stop_words).output
- output format (json
,xml
,atom
orrss
).contractAdjecent
- contracts adjecent targets. Useful for sites that split text, e.g.

Hello

World

.
Example
var goldwasher = require('goldwasher');
var html = '
Oak is strong and also gives shade.
';
html += '
Cats and dogs each hate the other.
';
html += '
Some unwanted text.
';
var options = {
selector: 'h1, h2',
url: 'http://www.oakisstrong.com',
filterTexts: ['Some unwanted text.'],
filterLocale: 'en',
filterKeywords: ['also']
}
var result = goldwasher(html, options);
/* result:
[
{
timestamp:<PHONE_NUMBER>380,
text: "Oak is strong and also gives shade.",
keywords: [
{word: "oak", count: 1},
{word: "strong", count: 1},
{word: "gives", count: 1},
{word: "shade", count: 1}
],
href: "http://www.oakisstrong.com/oak/strong",
tag: "h1",
position: 0,
total: 2,
uuid: "808b7490-f743-11e4-90b2-df723554e9be",
batch: "14eefda0-f762-11e4-a0b3-d5647c4f7651",
source: "http://www.oakisstrong.com"
},
{
timestamp:<PHONE_NUMBER>381,
text: "Cats and dogs each hate the other.",
keywords: [
{word: "cats", count: 1},
{word: "dogs", count: 1},
{word: "hate", count: 1}
],
href: "http://www.catsanddogs.com/hate",
tag: "h2",
position: 1,
total: 2,
uuid: "a48fbb30-f743-11e4-96e6-7b423a412011",
batch: "14eefda0-f762-11e4-a0b3-d5647c4f7651",
source: "http://www.oakisstrong.com"
}
]
*/
Output formats
JSON:
{
timestamp:<PHONE_NUMBER>380,
text: "Oak is strong and also gives shade.",
keywords: [
{word: "oak", count: 1},
{word: "strong", count: 1},
{word: "gives", count: 1},
{word: "shade", count: 1}
],
href: "http://www.oakisstrong.com/oak/strong",
tag: "h1",
position: 0,
total: 2,
uuid: "808b7490-f743-11e4-90b2-df723554e9be",
batch: "14eefda0-f762-11e4-a0b3-d5647c4f7651",
source: "http://www.oakisstrong.com"
}
XML:
<?xml version="1.0" encoding="UTF-8"?>
<goldwasher>
<nugget>
<href>/oak/strong</href>
<tag>h1</tag>
<text>Oak is strong and also gives shade.</text>
<position>0</position>
<timestamp>1431296135800</timestamp>
<uuid>14eefda0-f762-11e4-a0b3-d5647c4f7651</uuid>
<total>3</total>
<batch>14eefda0-f762-11e4-a0b3-d5647c4f7651</batch>
<source>http://www.oakisstrong.com</batch>
<keywords>
<keyword>
<word>oak</word>
<count>1</count>
</keyword>
<keyword>
<word>is</word>
<count>1</count>
</keyword>
<keyword>
<word>strong</word>
<count>1</count>
</keyword>
<keyword>
<word>and</word>
<count>1</count>
</keyword>
<keyword>
<word>also</word>
<count>1</count>
</keyword>
<keyword>
<word>gives</word>
<count>1</count>
</keyword>
<keyword>
<word>shade</word>
<count>1</count>
</keyword>
</keywords>
</nugget>
</goldwasher>
Atom:
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>foo title</title>
<link>foo.com</link>
<updated>2015-05-12T16:12:45Z</updated>
<link rel="alternate" href="foo.com"/>
<subtitle>Foo Bar Baz</subtitle>
<generator>Feed for Node.js</generator>
<category term="oak"></category>
<category term="is"></category>
<category term="strong"></category>
<category term="and"></category>
<category term="also"></category>
<category term="gives"></category>
<category term="shade"></category>
<entry>
<title type="html"><![CDATA[Oak is strong and also gives shade.]]></title>
<id>foo.com/oak/strong</id>
<link href="foo.com/oak/strong">
</link>
<updated>2015-05-12T16:12:45Z</updated>
<![CDATA[Oak is strong and also gives shade.]]>
<author>
<name>Baz Barfoo</name>
<uri>foo.com</uri>
</author>
</entry>
</feed>
RSS:
<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>foo title</title>
<description>Foo Bar Baz</description>
<link>foo.com</link>
<lastBuildDate>Tue, 12 May 2015 16:15:03 GMT</lastBuildDate>
<docs>http://blogs.law.harvard.edu/tech/rss</docs>
<generator>Feed for Node.js</generator>
<category>oak</category>
<category>is</category>
<category>strong</category>
<category>and</category>
<category>also</category>
<category>gives</category>
<category>shade</category>
<item>
<title><![CDATA[Oak is strong and also gives shade.]]></title>
<link>foo.com/oak/strong</link>
<guid>foo.com/oak/strong</guid>
<pubDate>Tue, 12 May 2015 16:15:03 GMT</pubDate>
<description><![CDATA[Oak is strong and also gives shade.]]></description>
<content:encoded/>
<author>
<name>Baz Barfoo</name>
<link>foo.com</link>
</author>
</item>
</channel>
</rss>


User’s guide: WaveDec¶
A typical command to run WaveDec looks as follows:
$ WaveDec.py --config_file /path/to/config/file/MyConfig.yaml
As a command line option we specify the path and name of a configuration file. This configuration file contains all the settings that you may wish to specify, including input/output and processing parameters. The syntax of this configuration file is described below.
Input files¶
Configuration file¶
As described in the quick start guide, few parameters can be passed via command line. However you will need to provide a configuration file to specify important processing options.
Remember that all the parameters are optional. If you are unsure about a specific processing option, do not set it and WaveDec will attempt to do its best.
The configuration file is written in YAML. The YAML syntax is simple and it is sufficient to look at the commented example below.
################################
## This is an example configuration file to be used with WaveDec
##
################################
## Input and output options
################################
INPUT: /path/to/input/files # Folder containing input SAC files. Default is current folder <.>
OUTPUT: /path/to/output/files # Folder where output files will be saved. Default is current folder <.>
################################
## Processing options
################################
Twindow: 25 # Duration, of the analysis window, in seconds. Default is <25>
MaxWindows: 50 # Maximum number of time windows to be analyzed. Set <0> for largest possible. Default is <0>
Fmin: 0.5 # Smallest frequency to analyze, in Hertz. Default is <10/Twindow>
Fmax: 15 # Largest frequency to analyze, in Hertz. Default is <min(20, 0.5/Ts)>
Fspacing: lin # Linear <lin> or logarithmic <log> frequency spacing. Default is <lin>
Fnum: 50 # Number of frequencies, between Fmin and Fmax, to be analyzed.
# Default is <50>. Set Fnum: 0 to model all DFT frequencies.
Vmin: 50 # Smallest velocity considered in m/s. May speed up computation. Default is <50>
MaxWaves: 5 # Maximum number of waves to be modeled for each time window at a given frequency. Default is <3>
ModelRayleighWaves: true # Boolean indicating whether to model or not Rayleigh waves. Default is <true>
ModelLoveWaves: true # Boolean indicating whether to model or not Love waves. Default is <true>
ModelNoise: true # Boolean indicating whether to allow or not a window without Rayleigh and Love waves. Default is <true>
################################
## More processing options (less used)
################################
# Tstart: 10 # Ignore the initial Tstart seconds of the recording. Default is <0>.
# Kmax: 0.05 # The largest wavenumber to analyze, in 1/m. Default is inferred from array geometry.
# Kstep: 1e-3 # Step size for grid search along wavenumber axis, in 1/m. Default is inferred from array geometry.
# Estep: 0.1 # Step size for grid search along ellipticity angle axis, in rad. Default is <pi/90>.
# Ts: 0.01 # Sampling time in seconds. This option will override what is found in the SAC headers.
# Gamma: 0.2 # Controls model complexity. (0 for pure ML, 1 for BIC, other values for intermediate strategies). Default is <1>
# ModelVerticalWaves: false # Boolean indicating whether to model or not Vertical-component-only waves. Default is <false>
# If ModelVerticalWaves = true, it will be forced ModelRayleighWaves = ModelLoveWaves = false
# MaxIterations: 5 # The maximum number of iterations for iterative wave estimation. Default is <10>
## End of ExampleConfig.yaml
The example configuration file shown above is available here
.
The frequencies that are actually processed by WaveDec may be different from what you expected. WaveDec will always process discrete Fourier transform (DFT) frequencies. The frequency actually processed are chosen among the possible DFT frequencies in order to loosely match what is requested by the user. The possible DFT frequencies are given, for example, by the Python function numpy.fft.fftfreq(Twindow/Ts, d=Ts).
Warning
The configuration file is case sensitive.
Warning
The syntax of the configration file is not checked properly. Many mistakes will go unoticed eg: F_min
or fmin
instead of Fmin
. Please check info printed when WaveDec starts or the log file to make sure the configuration file is read correctly.
Data¶
The program reads as input binary SAC files, both big- and little-endian. Certain fields of the SAC header must be set with the right values.
In the following table a list of the SAC header fields used by WaveDec.
Field name |
Word |
Value |
Comments |
|---|---|---|---|
DELTA |
0 |
Sampling interval [s] |
Must be the same in all SAC files of the provided input folder
The value found in the header can be overridden within the Configuration file
|
NPTS |
79 |
Number of samples |
Must be the same in all SAC files of the provided input folder
|
USER7 |
47 |
Easting [m] |
coordinate in meters in a Cartesian coordinate system
E.g., Swiss coordinate system, East–West
|
USER8 |
48 |
Northing [m] |
coordinate in meters in a Cartesian coordinate system
E.g., Swiss coordinate system, North-South
|
USER9 |
49 |
Elevation [m] |
coordinate, station elevation. Not in use.
|
KCMPNM |
129 |
Component code |
Valid codes for the components are:
Vertical ():
[Z, UDZ, BHZ, EHZ, HGZ, HHZ, EH1, EH4] East-West ():
[E, EWX, BHE, EHE, HGE, HHE, EH3, EH6] North-South ():
[N, NSY, BHN, EHN, HGN, HHN, EH2, EH5] Rotation around East-West ():
[ROTX, RX] Rotation around North-South ():
[ROTY, RY] Rotation around Vertical ():
[ROTZ, RZ] |
About polarity. On the vertical component a positive sign of the signal implies an upward motion. On the east-west component an eastward motion. On the north-south component a northward motion.
More documentation on the SAC header is found here.
Missing files (e.g., a sensor having recorded only one or two components) are not an issue. If the recording from a specific sensor/component is unusable, simply remove the corresponding file and leave the good ones in the INPUT
folder.
Processing¶
After reading the configuration file and the input files WaveDec will start processing the data. The configuration parameters in use are printed at statup. Check wheather your configuration file was read properly!
An estimate of the processing duration is printed and updated on the console. As soon as the processing of a signal window is completed, estimated parameters are written to file immediately in the OUTPUT
folder. You may check and plot intermediate results at any time.
To terminate the processing prematurely press CTRL+C
. Starting again the processing will overwrite the output files and start the processing from the beginning of the recording.
Model selection: Love wave, Rayleigh wave, or nothing?¶
One strength of WaveDec is the ability to model multiple waves at the same time (See Benefit of joint modeling Rayleigh and Love waves for a motivation). This approach is called wavefield decomposition, hence WaveDec. The algorithm gradually increases the number of waves modeled up to a maximum number specified by MaxWaves
. The number of waves effectively modeled is in general different at different frequencies and in different time windows.
When decomposing the wavefield WaveDec has to choose whether to fit a Love wave, a Rayleigh wave or to stop adding waves. This is a model selection problem. The Bayesian Information Criterion (BIC) is used to make this choice. In a nutshell, the BIC criterion selects the model with smallest BIC value. The BIC value is defined as
where is the model likelihood, is the number of model parameters, and is the number of measurements. The quantity describes the goodness of fit of our model. The quantity is a penalty term related to the complexity of the model.
The algorithm iteratively consider the three following possibilities:
Should a Love wave be added to the current model? (Assuming that
ModelLove: true
)Should a Rayleigh wave be added to the current model? (Assuming that
ModelRayleigh: true
)Should we stop adding additional waves? (Assuming that
ModelNoise: true
) And/or was the maximum number of wavesMaxWaves
reached?
For each of these three possibilities, corresponding to three possible models of the wavefield, the BIC value is computed. The model corresponding to the smallest BIC value is chosen.
When doing model selection, we want to avoid underfitting or overfitting the data.
Setting ModelNoise: false
is not recommended as it may lead to overfitting the data. In fact, WaveDec is forced to model exactly MaxWaves
waves. It will not be able to create a model with less waves.
When WaveDec is allowed to model fewer than MaxWaves
(that is, with the flag ModelNoise: true
–recommended choice) then the result will exhibit less outliers because most of the outliers have been rejected.
However, we observed that in certain circumstances this may lead underfitting and loosing information from weaker waves (e.g., higher modes, high frequencies, especially in active surveys). We therefore introduce another optional parameter enabling a more aggressive model selection strategy.
We introduce the parameter to tune the result to achieve more or less complex models. It is controlled with the parameter Gamma
in the configuration file. The new model selection strategy chooses the model with smallest
A small reduces the penalty for a complex model. Model selection will be more aggressive and favour more complex models (i.e., more waves).
For the ML criterion will be used for model selection. This will lead to greatly overfit the data. For the standard BIC approach is followed. Setting allows a more aggressive strategy compared to pure BIC, thus including more models from weaker waves but also more outliers.
Tip
Our suggestion is to model jointly Love and Rayleigh wave (and the noise model) with the default BIC model selection criterion. Setting MaxWaves
to 3 or 5 appears to work well.
Tip
If your output files are empty or present very few waves, try with a smaller Gamma
(e.g. Gamma: 0.5
, Gamma: 0.1
…). In our experience, this was necessary at very few passive survey sites and at most active survey sites.
Speeding it up¶
While it is recommended that you process multiple waves jointly, you may find it too time consuming. This section is about choosing processing options to obtain results faster. It may be a good idea for a quick preliminary analysis of your data.
Reduce the number of waves. In the configuration file, set
MaxWaves: 1
so that a single wave is fitted for each time window / frequency. This prevents the software from iteratively estimate wave parameters. Still, for each time window / frequency both Love wave and Rayleigh wave fit are attempted and only the best one is kept.
Process different waves separately. Instead of running one processing round modeling both Love waves and Rayleigh waves it may be faster to run two separate runs. You will need to create two separate configuration files.
In the first run, only Love waves are analyzed and the configuration file looks like:
ModelRayleighWaves: false ModelLoveWaves: true ModelNoise: true
In the second run, only Rayleigh waves are analyzed:
ModelRayleighWaves: true ModelLoveWaves: false ModelNoise: true
Output files¶
The output is saved to CSV files in the directory specified in the configuration file by OUTPUT
. The output files can be opened with a spreadsheet or with a simple text editor.
Estimated wavefield parameters¶
Output with the estimated parameters is written to disk after each time window is processed. Therefore you do not need to wait for the end of the elaboration to see partial results.
The output file for Rayleigh waves, RayleighWaves.csv
, looks like this:
# WaveDec output file
# Frequency Amplitude Wavenumber Velocity Azimuth EllipticityAngle
# [Hz] [a.u.] [1/m] [m/s] [rad] [rad]
3.450e+00 2.290e-03 7.072e-03 4.878e+02 2.856e+00 -6.319e-01
3.950e+00 2.637e-03 2.063e-03 1.914e+03 -1.938e+00 4.604e-01
4.199e+00 3.114e-03 1.793e-02 2.342e+02 2.854e+00 2.968e-01
4.699e+00 2.055e-03 2.162e-02 2.173e+02 2.965e+00 6.162e-01
4.899e+00 2.691e-03 2.283e-02 2.146e+02 2.886e+00 5.148e-01
5.149e+00 2.099e-03 7.524e-03 6.844e+02 -5.877e-01 -1.407e+00
5.649e+00 1.697e-03 3.014e-02 1.875e+02 2.278e+00 9.730e-01
Comment lines begin with #
. On each row columns are separated by a tabulation character \t
.
Each column of the CSV file is described in the following table.
Column name |
Unit |
Description |
|---|---|---|
Frequency |
Hertz |
The frequency at which the processing was performed
No matter what the frequency options provided in the configuration file are, the frequencies actually processed always correspond to Discrete Fourier transform (DFT) frequencies, i.e. where is a positive integer and is the sampling interval.
|
Amplitude |
Same unit as input |
The ML estimate of the wave amplitude
The estimated amplitude is always greater than zero .
|
Wavenumber |
1/meter |
The ML estimate of the wavenumber
The estimated wavenumber is always greater than zero .
|
Velocity |
meter/second |
The ML estimate of the velocity of propagation,
|
Azimuth |
radian |
The ML estimate of the azimuth
It is a value in the interval . The azimuth is measured counterclockwise from the (east) axes.
E.g. for east, for north-east, for north.
The wavevector is and points in the direction of propagation (not in the direction of arrival).
|
EllipticityAngle |
radian |
The ML estimate of the ellipticity angle of a Rayleigh wave
It is a value in the interval . Positive for prograde particle motion, negative for retrograde motion.
The ellipticity angle is related to the H/V ratio as .
|
A very similar output file is generated for Love waves (LoveWaves.csv
).
Caution
The name of the output files should not be changed as it is needed by wdPicker.py
when analysing the files.
Resolution limits¶
The file ArrayResolutionLimits.csv
contains the resolutions limits of the array.
The study of resolution limits is an intricate matter. The resolution limits provided here should be considered as approximate and indicative only. Good results may show up outside the resolution limits, and bad results inside the limits. Be wise and use your expertise.
Let and be the smallest and the largest interstation distance within the array stations ( is also known as array aperture).
The smallest and largest resolvable wavenumbers are defined (in 1/meter) as and (As suggested in Asten and Henstridge [1984]).
Tip
The resolution limits are computed as and . The value of and can be changed in the file wdSettings.py
.
Equivalently, in velocity at the frequency the limits are and .
The columns of ArrayResolutionLimits.csv
have the following meaning
Column name |
Unit |
Description |
|---|---|---|
Frequency |
Hertz |
Frequency
|
Kmin |
1/meter |
Smallest resolvable wavenumber
|
Kmax |
1/meter |
Largest resolvable wavenumber
|
Vmin |
meter/second |
Smallest resolvable velocity
|
Vmax |
meter/second |
Largest resolvable velocity
|
Array Layout¶
The file ArrayLayout.csv
contains the coordinates of the sensors.
The columns of ArrayLayout.csv
have the following meaning
Column name |
Unit |
Description |
|---|---|---|
Easting |
meter |
|
Northing |
meter |
|
Elevation |
meter |
Analysis of the output files¶
The script wdPicker.py
allows to visualize and perform some analysis of WaveDec output files. See User’s guide: wdPicker for details.


|
Get faster with the new Speed report in Search Console
Discovering potential user experience problems can be hard, especially on sites with many pages. webmasters.googleblog.com Sion Schori & Amir Rachum
|
|
Getting your sites ready for the new Microsoft Edge
The new Microsoft Edge is built on the Chromium engine, providing best in class compatibility with extensions and web sites, with great support for the latest rendering capabilities and more blogs.windows.com Kyle Pflug
|
|
Video - The State of the Web
In this episode, Rick talks with Doug Sillars about the state of video on the web. Serving video may seem like a daunting task given the array of formats, codecs, browser support, player functionality, and hosting options. www.youtube.com Rick Viscomi
|
|
Do you have a question for the Chrome team?
Well, #AskChrome is coming live to #ChromeDevSummit! Ask us all your Chrome related questions by using #AskChrome, for a chance to have them answered live! www.youtube.com Chrome Team
|
|
What I’ve learned about accessibility in SPAs
In this post, I’d like to share some of the highlights of what I’ve learned, in the hope that it can help others who are trying to learn more about accessibility. nolanlawson.com Nolan Lawson
|


In future, If site's content is messed up anyhow. in that case you can recover this version by clicking on 'Restore Last Safe' option in 'Menu'.
If site's content is messed up anyhow at present [Disaster]. In this case you can recover Last SAFE version. Last SAFE version would have been marked by Editor in Past. If you have not marked any Last Safe earlier, It will effect 'no change'.
If site's content is messed up anyhow at present [Disaster]. In this case you can recover Factory version. Or You want to start all over again. If you have not marked any Last Safe earlier, It will effect 'no change'.


< Basic HTML and Internet Concepts
How the Internet works
The internet is a collection of computers and
servers that are connected to each other
The WEB is a collection of HTML pages
Web browser use HTML as there language to communicate
HTML allows computers to interpret web pages and display then
so users can easily read them
So when users type www.google.com into there web browser the browsers makes a request using HTML
HTML: Hyper Text Mark-up Language
HTML is made up of the following:
Text Content (The plain text you write you actually see)
Mark ups (What it looks like.  They take everything in code literally. When using code you need to make sure you tell the computer exactly what to say for example:
When you use some tags You need to tell the computer when to STOP or else you will keep going like this so I need to remember tags
The most important thing:
Programmers can't remember everything and there is a lot of information on the internet!


Choose mp4 files:
To view this video please enable JavaScript, and consider upgrading to a web browser that supports HTML5 video


{% extends 'ta_app/base.html' %} {% block content %} {% include 'administrators/_menu.html' %}
Other
must be created because this system checks the ID of Other
when students submit their profile.
| ID | Name | Actions |
|---|---|---|
| {{ program.id }} | {{ program.name }} | |
| No programs found. |