This codelab is a continuation of the concepts introduced in Accelerated Mobile Pages Foundations. You should already have completed the previous code lab before starting this lab or at least have a basic understanding AMP's core concepts already.
In this codelab, you'll learn how AMP handles advertising, analytics, video embedding, social media integration, image carousels and more. To achieve this you will build upon the example from the Foundations codelab by adding these features via the various AMP components.
You can either download all the sample code to your computer:
...or clone the GitHub repository from the command line:
$ git clone https://github.com/googlecodelabs/accelerated-mobile-pages-advanced.git
You will download a ZIP file containing several example resources files and the starting
article.html
page.
Unzip the folder and navigate to the directory via the command line on your computer.
In order to test our sample page we need to access the files from a web server. There are several ways to create a temporary local web server for the purposes of testing. For this code lab we will provide instructions for 3 options available:
You can find the "Web Server for Chrome" app at this link on the Chrome Web Store.
After installing the Chrome App you must point the app at a particular folder via the "Choose Folder" button. For this code lab you should select the folder where you unzipped the code lab example files.
Additionally you should tick the "Automatically show index.html" option and set the port to "8000". You will need to restart the the web server for these changes to take effect.
Access this URL via:
http://localhost:8000/article.amp.html
If the above URL loads successfully you can continue to the next section.
If you are interested in exploring our new Firebase static web hosting you can follow the instructions available here to deploy your AMP site to a Firebase hosting URL.
Firebase Hosting is a static hosting provider that you can use to quickly deploy and host a static website and its assets; including HTML, CSS, and JavaScript files. Users benefit from reduced latency because static content is cached in a content delivery network (CDN) with points of presence (PoPs) located around the world.
Lastly, Firebase Hosting is always served via SSL so it's great for AMP and the web in general. If you're more interested in purely focusing on AMP then simply ignore this option.
If you don't use Chrome or you are struggling to install the Chrome extension you can also use Python from the command-line to fire up a local web server.
To run Python's built-in HTTP server from the command line simply execute the following:
python -m SimpleHTTPServer
And access this URL:
http://localhost:8000/article.amp.html
AMP's component system allows us to quickly build efficient and responsive features into our articles with minimal
effort. The core AMP JavaScript library in the

tag includes several core components:
All of the above core components can be used immediately in an AMP document. Our example code already utilises
amp-img
in our page and we explored how it relates to the AMP layout system in the AMP Foundations code lab, so let's
explore
amp-ad
in the next chapter!
Your sample
article.amp.html
page should be as follows:
<!doctype html>

<meta charset="utf-8" />
<meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1">
<link rel="canonical" href="/article.html">
<link rel="shortcut icon" href="amp_favicon.png">
<title>News Article</title>

News Site

Article Name

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam egestas tortor sapien, non tristique ligula accumsan eu.

<amp-img src="mountains.jpg" layout="responsive" width="266" height="150"></amp-img>

The above is a simple page, the most interesting fact of this page is that it passes both AMP validation and the Schema.org search engine meta data validation. If this page were deployed on a news website it would be eligible for inclusion in the new Google search carousel dedicated to AMP content so it's a great starting point for our work.
Before we alter the page let's open up the Chrome Developer Tools. When working on a website (especially a mobile
focused website) it is usually a good idea to simulate a mobile experience when testing in the browser.
Start by opening the
Developer Console in Chrome via
Menu > More Tools > Developer Tools
:
Now inspect the JavaScript output in the developer console. Make sure you have the Console tab selected:
Now click the device simulation button in the developer console. It is represented by a phone and tablet sitting next one another:
In the menu that appears, set the device to "Nexus 5X":
Now we can start working on the page itself. Let's try adding an ad to our AMP article!
All ads in AMP are constructed using the
amp-ad
component. Using this component we can configure our ads in several ways such as the width, height and layout mode.
However, many ad platforms will require additional configuration such as the account ID for the ad network, which
ad should be served or options for targeting the advertising. For
amp-ad
we simply fill in the various options required as HTML attributes.
Take a look at this example of a Double Click ad:
<amp-ad
width="300"
height="250"
type="doubleclick"
data-slot="/35096353/amptesting/image/static">
</amp-ad>
As you can see this is a very simple configuration. Take note of the
type
attribute, this attribute informs the amp-ad component of which ad platform you want to use. In this case we wanted
Double Click's platform and therefore the type value was
doubleclick
.
The
data-slot
attribute is more unique. Any attributes starting with
data-
in amp-ad are vendor specific attributes. This means that not all vendors will necessarily require this particular
attribute nor will they necessarily react if it is supplied. For example, compare the above
Double Click example with a test advertisement from the
A9 platform:
<amp-ad
width="300"
height="250"
type="a9"
data-aax_size="300x250"
data-aax_pubname="test123"
data-aax_src="302">
</amp-ad>
Try
adding both of the above examples into your article just after the

tag.
Refresh the page and you should see two testing ads have appeared:
Let's explore some more options available to use with Double Click. Try adding these two geotargeting ad configurations to your page:
<amp-ad
width="300"
height="250"
type="doubleclick"
data-slot="/35096353/amptesting/geo/uk">

No ad appeared because you're not browsing from the UK!

</amp-ad>
<amp-ad
width="300"
height="250"
type="doubleclick"
data-slot="/35096353/amptesting/geo/us">

No ad appeared because you're not browsing from the US!

</amp-ad>
Unfortunately the geotargeting cannot be controlled from the code of the page itself. However, these test adverts have already been configured in the Double Click dashboard to only show in particular countries, specifically the United Kingdom and the United States of America.
Refresh the page and take a look. The following screenshot was captured from Australia, so neither advert is loading:
The above geotargeting example demonstrates how amp-ad is flexible enough for all sorts of ad platform features.
The following are the currently supported ad networks:
Be sure to check out the documentation page for the AMP Ad component for information on the latest supported ad platforms.
In the next chapter we'll explore more advanced AMP components and how to include them in our AMP documents.
By now you have a basic AMP document with text, an image and even an advertisement embedded on the page -- all key ingredients to telling a story and monetising your content. However, modern websites often include more functionality than simply pictures and text.
So let's take our AMP document to the next level and explore what components are available beyond the core components mentioned earlier.
In this chapter we'll try adding more advanced web functionality that is commonly found on news articles:
Let's try embedding a YouTube video into the document. The following code will embed a video, add it to your page:
<amp-youtube
data-videoid="mGENRKrdoGY"
layout="responsive"
width="480"
height="270">

The video could not be loaded.

</amp-youtube>
Refresh the page and look at the page. You should see this text instead of a video: "The video could not be loaded."
Even if your browser can show YouTube videos without issue you will still receive this error. Why? The video hasn't actually failed to load, rather the component itself failed.
Remember, not all components are included in the core AMP library JavaScript file. We need to include an additional JavaScript request for the YouTube component in particular. All components except for a core set will require these additional JavaScript references.
Add the following request to the

tag:

Refresh the page and you should see the YouTube video:
Once again we have specified the width and height of the video in order for the aspect ratio to be calculated by the AMP layout system. Furthermore the layout type has been set to responsive meaning this video will fill the width of its parent element.
Learn more about the YouTube component.
Embedding preformatted tweets from Twitter is a common feature of news articles. The AMP Twitter component can provide this functionality with ease.
Start by adding the following JavaScript request to the

tag of your document:

Now in your article add this code to embed the tweet itself:
<amp-twitter
width="486"
height="657"
layout="responsive"
data-tweetid="638793490521001985">
</amp-twitter>
The
data-tweetid
attribute is another example of a custom attribute being required by a particular platform vendor. In this case
Twitter recognises the
data-tweetid
attribute as corresponding to a particular tweet to be embedded in the page.
Refresh your browser and take a look at the page. You should see the tweet appear:
Learn more about the Twitter component.
A common element in news articles is to highlight particularly engaging snippets of text from the article. For example, a quotation from a particular source or an important fact might be repeated in a larger font to attract attention from the reader.
However, since not all quotations or snippets of text are necessarily the same length of string characters it can be difficult to balance the larger font size with the amount of space the particular text will consume on the page.
AMP includes another component specifically for this type of situation called amp-fit-text. It allows you to define a fixed width and fixed height element and a maximum font size. The component intelligently scales the font size to fit the quotation's text within the width and height available.
Let's give it a try. Firstly, add the component's library to the  tag:

Add the following to your page:
<amp-fit-text width="400" height="75" layout="responsive" max-font-size="42">
Big, bold article quote goes here.
</amp-fit-text>
Refresh the page and look at the result!
Now experiment further. What happens if the quotation is much shorter?
<amp-fit-text width="400" height="75" layout="responsive" max-font-size="42">
#YOLO
</amp-fit-text>
Or how about a longer quotation?
<amp-fit-text width="400" height="75" layout="responsive" max-font-size="42">
And the Raven, never flitting, still is sitting, still is sitting. On the pallid bust of Pallas just above my chamber door; And his eyes have all the seeming of a demon's that is dreaming, And the lamp-light o'er him streaming throws his shadow on the floor; And my soul from out that shadow that lies floating on the floor. Shall be lifted—nevermore!
</amp-fit-text>
As a last experiment with amp-fit-text, try creating a short piece of text such as #YOLO with a much larger height -- for example, a value of 400 -- and maintaining the max-font-size attribute value of 42. What would the resulting page look like? Does the text center vertically or does the height of the amp-fit-text tag shrink to fit the max font size? Knowing what you know about AMP's layout system try to answer the question before editing the document!
Another common feature in web development is a carousel. AMP includes a generic component designed to fulfil this need. Let's start with a simple example such as a carousel of images.
Remember to include the carousel component library by adding the following JavaScript request to the

tag of your document:

Next we'll embed a simple carousel of images with a responsive layout and a pre-defined width and height. Add the following to your page:
<amp-carousel layout="fixed-height" height="168" type="carousel" >
<amp-img src="mountains-1.jpg" width="300" height="168"></amp-img>
<amp-img src="mountains-2.jpg" width="300" height="168"></amp-img>
<amp-img src="mountains-3.jpg" width="300" height="168"></amp-img>
</amp-carousel>
Refresh your page and you should see a carousel in your page:
The carousel component can be configured in a variety of ways. Try changing the type to
slides
instead and look at the result. Be sure to change the
layout
attribute of the
amp-carousel
and the images inside it to be
responsive
as well.
Now instead of a scrolling list of elements you'll see one element at a time. Try swiping horizontally to move through the elements. If you swipe to the third element you won't be able to swipe any further.
Next,
add the
loop
attribute.
Refresh the page and try swiping to the left immediately. The carousel loops endlessly.
Lastly, let's make this carousel autoplay at a rate of every 2 seconds.
Add the
autoplay
attribute to the page and the delay attribute with a value of 2000 like so:
delay="2000"
.
Your final result should look something like this:
<amp-carousel layout="responsive" width="300" height="168"
type="slides" autoplay delay="2000" loop>
<amp-img src="mountains-1.jpg" width="300" height="168" layout="responsive"></amp-img>
<amp-img src="mountains-2.jpg" width="300" height="168" layout="responsive"></amp-img>
<amp-img src="mountains-3.jpg" width="300" height="168" layout="responsive"></amp-img>
</amp-carousel>
Refresh the page and give it a spin!
Image carousels are great but what if we want more complex content to appear in our carousel? Let's try mixing things up a bit by placing an advert, some text and an image altogether in a single carousel. Can amp-carousel really handle such a mixture all at once? You bet.
First let's add this styling to the page to ensure the amp-fit-text and amp-carousel components work together safely:
amp-fit-text {
white-space: normal;
}
Now try putting the following carousel code into your page:
<amp-carousel layout="fixed-height" height="250" type="carousel" >
<amp-img src="blocky-mountains-1.jpg" width="300" height="250"></amp-img>
<amp-ad width="300" height="250"
type="doubleclick"
data-slot="/35096353/amptesting/image/static">

This advert is still loading.

</amp-ad>
<amp-fit-text width="300" height="250" layout="fixed">
Big, bold article quote goes here.
</amp-fit-text>
</amp-carousel>
Refresh the page and you should see something like this:
Learn more about the Carousel component.
Analytics platforms are commonly integrated into websites via inline JavaScript snippets and function calls which trigger events that are sent back to the analytics system. AMP provides a flexible JSON configuration syntax to replicate this process for several analytics partners.
The following is an example of traditional JavaScript driven Google Analytics tracking which we will rewrite in amp-analytic's JSON format. Firstly the traditional JavaScript approach:

The above is quite simple, it sends a notification for the pageview event to be tracked.
To replicate all of the above in the amp-analytics component, we first include the component library in our document's :

And then we include the component as follows:
<amp-analytics type="googleanalytics">

</amp-analytics>
It may seem more complicated but it's actually a very flexible format for describing several different types of events. Additionally, the JSON format does not include the blob of JavaScript code in the traditional example which could potentially lead to mistakes if accidentally altered.
In the JSON format the triggers key includes a set of keys which represent all event triggers we will track, the keys of those triggers are descriptions of the event, for example "default pageview" in the above. The title key value relates to the name of the page being viewed.
Expanding the above example we can add another trigger "click on #header trigger":
<amp-analytics type="googleanalytics">

</amp-analytics>
This trigger is exactly what it sounds like, by using the DOM selector "#header" we can query for a tag with the id "header" and on the event of it being "clicked" or tapped on the device we send an event action "clicked-header" to the analytics platform with the category label "examples".
If you have a custom tracking platform you wish to integrate with you can still use amp-analytics and define your own
personalised URL endpoints for the tracking information. Read more about the
amp-analytics
component
here!
A common requirement of mobile websites is the inclusion of a site navigation menu. These menus can take many different forms. Here are a few examples of how navigation can be presented on an AMP document:
The simplest way to get your users to access your website's regular navigation options is to just funnel them back to your regular website interface!
Try adding this HTML link to the  tag:

<amp-img class="home-button" src="icons/home.png" width="36" height="36"></amp-img>

News Site

And add this rule to your inline CSS:
.home-button {
float: left;
}
Now
refresh the page. You should see a link in the top-left corner of the page pointing to
homepage.html
- if you click this link you'll quickly discover it doesn't lead anywhere.
This link can be replaced with the URL of your website's homepage to enable your users to navigate to other parts of your site via your regular website's navigation.
As mentioned, this is the simplest approach available -- leveraging your existing website navigation. Next we'll explore two alternatives.
Another approach to this problem is to present your site's navigation menu inside the AMP document. To keep contained to a small section of your page we can use a carousel to present a scrollable menu beneath the site's header.
Since we need the carousel component, be sure to
add the component's JavaScript to the

tag of your page:

Try
adding this HTML snippet just below your

tag:
...

<amp-carousel layout="fixed-height" height="38" type="carousel">
Example 1
Example 2
Longer Named Example 3
Example 4
Example 5
Example 6
</amp-carousel>

...
And add these rules to your inline CSS:
.sub-menu {
background: black;
}
.sub-menu a {
display: block;
background: tomato;
margin: 5px;
padding: 5px;
color: white;
text-decoration: none;
}
Now refresh the page. You should see a menu of links appearing below your article title. This menu can be scrolled horizontally to store many navigation links.
This sub-menu navigation is a great way to store lots of links without consuming too much space on your page.
As discussed earlier there are no external stylesheet requests allowed in AMP documents. However, there is one exception to this rule: fonts.
Fonts are an important part of the article reading experience for web users and since web browsers fetch font files via external stylesheet requests this exclusion in AMP is necessary.
Let's try adding a reference to the Raleway font to the document:
<link rel="stylesheet" type="text/css" href="https://fonts.googleapis.com/css?family=Raleway">
Now update your CSS to include a reference to Raleway:
body {
width: auto;
margin: 0;
padding: 0;
font-family: 'Raleway', sans-serif;
}
Refresh your page and check out your page's new look. Also inspect the validator's output and you will note that there are no complaints with regard to this external request.
You've finished the Advanced AMP code lab and successfully explored many key components of AMP!
Hopefully it's clear to you how amp-ad and amp-analytics can be used to support all sorts of different ad platforms and analytics vendors. Be sure to explore the full list of AMP components available.
The following are some additional topics and links you might want to explore to amplify your skills even further!


Magnus Gudmundsson
CyberDaDa
Form is emptiness, and emptiness is form - The Void. the emptiness of blue-black space, contained in everything.
Peter Matthiessen, The Snow Leopard
Template Driven Forms
Reactive Forms
| Template Driven | Reactive | |
|---|---|---|
| ngModel | FormControl | |
| ngModelGroup /ngForm | FormGroup |
formGroup
formArray
formControl
A form is a formGroup
A formGroup can contain
0:M formGroups
0:M formArrays (which can contain 0:M formControls)
0:M formControls
They represents a single input field. It encapsulates the fields value and state
Additionaly ngModel can by tied to an underlying model, with or without a two way binding
NgModel /FormControl "automatically" watches for changes. Controls have values and a validation state which is determined by an optional validation function
| State | Class (if True) | Class (if false) |
|---|---|---|
| Has been visited | ng-touched | ng-untouched |
| Value changed | ng-dirty | ng-pristine |
| Value valid | ng-valid | ng-invalid |
The value of an Angular form is always a JSON object
Even if you do not have an underlying datamodel
The form always has an implicit datamodel
Why ?
What is needed to make a Custom Form Control from an ordinary component?
A Custom Form Control Uses an Interface
It's called the Control Value Accessor
writeValue ( value:any) {} - Write value to display in view
registerOnChange ( fn: (value:any) => void) {}
registerOnTouched ( fn: () => void): void) {}
setDisabledState ( isDisabled: boolean) {} (not required)
You most also add the NG_VALUE_ACCESSOR as a provider
@Component({
selector: 'app-parameters',
templateUrl: './parameters.component.html',
styleUrls: ['./parameters.component.css'],
providers: [
{ provide: NG_VALUE_ACCESSOR,
useExisting: ParametersComponent,
multi: true
}]
})
A Custom Form Control can also implement Custom Validations
In order to do so it has to implement the Validator interface
And you need to add the NG_VALIDATOR as a provider
validate(ctrl_ AbstractControl)
Validate function should return Null if valid,
Otherwise, a validation error object
The validation error object typically has a property whose name is the validation key,
and whose value is an arbitrary dictionary of values that you could insert into an error message.
A nice way to make packet sent to server smaller, check each custom control for dirtyness, if its not dirty, don't send it
if (this.userForm.controls.information.dirty === true) {
user.information = this.userForm.controls.information.value;
}
if (this.userForm.controls.roles.dirty === true) {
user.roles = this.userForm.controls.roles.value;
}
if (this.userForm.controls.userImage.dirty === true) {
user.userImage = this.userForm.controls.userImage.value;
user.information = this.userForm.controls.information.value;
}
this.userService.post(user);
Angular.io https://angular.io (of course :) look under Fundamentals/Forms)
However, when I looked, there is no information there on Custom Form Components
Kara Ericksons talk on Angular Connect 2017
https://www.youtube.com/watch?v=ZNTsdaZiqP8&t=11164s(it starts at ca 2:35:00)
Kara Ericksons slides about Angular Forms https://docs.google.com/presentation/d/e/2PACX-1vTS20UdnMGqA3ecrv7ww_7CDKQM8VgdH2tbHl94aXgEsYQ2cyjq62ydU3e3ZF_BaQ64kMyQa0INe2oI/pubCustom Form Controls in Angular
https://blog.thoughtram.io/angular/2016/07/27/custom-form-controls-in-angular-2.html
If you want to help out with the group, please reach out.
you can always send me a message on meetup :)
https://ngvikings.org/
March 1 - 2 In Helsinki, Finland


The coroutine package provides classes for making Java threads function somewhat like coroutines. Only one of such threads may execute at any time.


Create blissful memories with unique online gifts, Life is full of varied experiences and experiences count. They help us stride through tough times and make our lives meaningful. Picking a perfect gift is an art . Making the right gift selection takes planning research and personal attention. PANDORA gives you 100% commitment for providing you the best facility, no matter what it takes to get there. Everybody knows the feeling when the occasions and festivals are right around the corner and you still do not know what to buy for your nearest and dearest. What do people do when they feel stressed in 21st century? They Go online!
You need to take into consideration the recipents likes and dislikes , their personality and preferences. Also the gift needs to be thoughtful and user friendly at the same time . When choosing a gift for someone special you need to put in that extra effort to ensure a “wow” moment for the receiver when the wrapping comes off. This is the main reason why we have created this affordable online market PANDORA. Our site not only helps you in finding the right choice for your loved ones but also takes care of your budget. We are small, tight-knit team focused on making PANDORA easy and affordable for customers.
Our success is not only due to the quality of our work, it’s down to our attitude and approach that we take to treat our customers.
Ever wondered what it would be like to have creative and unique gifts delivered to you right in front of your computer screens? Shop online for an ocean of gifts to give your friends and family on their special days with us. We hope you enjoy our products as much as we enjoy offering them to you. If you have any questions or comments, please don't hesitate to contact us.


History
- 0.1: Initial release!
- with Apache2, PostgreSQL and Tool Shed integration
- 0.2: complete new Galaxy stack.
- with nginx, uwsgi, proftpd, docker, supervisord and SLURM
- 0.3: Add Interactive Environments
- IPython in docker in Galaxy in docker
- advanged logging
- 0.4:
- base the image on toolshed/requirements with all required Galaxy dependencies
- use Ansible roles to build large parts of the image
- export the supervisord webinterface on port 9002
- enable Galaxy reports webapp
- 15.07:
install-biojs
can install BioJS visualisations into Galaxy
add-tool-shed
can be used to activate third party Tool Sheds in child Dockerfiles
- many documentation improvements
- RStudio is now part of Galaxy and this Image
- configurable postgres UID/GID by @chambm
- smarter starting of postgres during Tool installations by @shiltemann
- 15.10:
- new Galaxy 15.10 release
- fix bgruening/docker-galaxy-stable#94
- 16.01:
- enable Travis testing for all builds and PR
- offer new yaml based tool installations
- enable dynamic UWSGI processes and threads with
-e UWSGI_PROCESSES=2
and -e UWSGI_THREADS=4
- enable dynamic Galaxy handlers
-e GALAXY_HANDLER_NUMPROCS=2
- Addition of a new
lite
mode contributed by @kellrott
- first release with Jupyter integration
- 16.04:
- include a Galaxy-bare mode, enable with
-e BARE=True
- first release with HTCondor installed and pre-configured
- 16.07:
- documentation and tests updates for SLURM integration by @mvdbeek
- first version with initial Docker compose support (proftpd ✔)
- SFTP support by @zfrenchee
- 16.10:
- HTTPS support by @zfrenchee and @mvdbeek
- 17.01:
- enable Conda dependency resultion by deault
- new Galaxy version
- more compose work (slurm, postgresql)
- 17.05:
- add PROXY_PREFIX variable to enable automatic configuration of Galaxy running under some prefix (@abretaud)
- enable quota by default (just the funtionality, not any specific value)
- HT-Condor is now supported in compose with semi-autoscaling and BioContainers
- Galaxy Docker Compose is completely under Travis testing and available with SLURM and HT-Condor
- using Docker
build-arg
s for GALAXY_RELEASE and GALAXY_REPO


|
|
Converts raw data to values appropriate for accumulation. More...
#include <AccumulationConverter.h>
Public Member Functions | |
| virtual bool | decode (double &value) const |
| Converts storage data containing marker codes etc to natural scale. Returns true if data is valid for use, otherwise false. | |
| virtual bool | decode (double &value, double &weight) const |
| Converts storage data containing marker codes etc to natural scale. Returns true if data is valid for use, otherwise false. | |
| virtual void | encode (double &value, double &weight) const |
| Converts natural-scale data to storage data containing marker codes etc. | |
| virtual void | encodeWeight (double &weight) const |
| Converts natural-scale data to storage data containing marker codes etc. | |
| virtual void | encodeCount (double &weight) const |
| Converts natural-scale data to storage data containing marker codes etc. | |
| virtual void | encodeStdDev (double &stdDev) const |
| virtual void | encodeDiff (double &diff) const |
| When using unsigned types, encoding typically requires adding a positive bias and scaling the data. | |
| double | getNoDataMarker () const |
| Returns the value when weight==0.0. Physically, this relates to results obtained under measurement accuracy. | |
| virtual double | getNoReadingMarker () const |
| virtual std::ostream & | toOstr (std::ostream &ostr) const |
Public Attributes | |
| std::string | type |
| Default output storage data type. | |
Converts raw data to values appropriate for accumulation.


I Thought I Was Experienced...
Lyserg-Saeure-Diaethylamid (Lysergic acid diethylamide-25) - the brainchild of Dr. Albert Hoffman. This was the first drug I've ever taken and I've had about 35 trips of acid since then. Unfortunately, this substance seems to be rarer these days and I haven't seen it around for years! LSD is not available in Malaysia (at least I've never come across it) and even in Melbourne, there's only rumors that acid is around but no one seems to be able to get hold of any.
I recently managed to get in touch with someone who can actually deliver this rare (or so it seems) chemical. The best thing was the price - it's only A$15 for each blotter! It has been 6 years since I've last tripped on acid, and I'm sure glad to see it around, so I bought 3 blotters. The blotter art is a picture of a Buddha with a green face and a blue head piece.
I intended to take a single blotter because it's been a while since I've tripped and these Buddha blotters were said to be strong. I perforated one blotter and put it under my tongue and listened to some psy-trance. My past experiences with LSD were always in raves, but I wanted to take it in a safe environment this time to gauge the strength. It was strong acid alright, and I made the mistake of dropping the other two blotters when I felt the first familiar effects take hold.
I thought I could handle the experience but I haven't taken into account my frame of mind (not so good) at the time. I knew that taking all three blotters was a mistake when things started getting too intense and I had to shut off the music. I've forgotten the utter
mind-fuck that LSD produces and I spent the night reading the
Psychedelic Crisis FAQ [erowid.org].
 :) I'll admit it, I was terrified. I know that everything would go back to normal in 10 hours, but everything was so intense, so unstoppable that I had a bad trip. I was utterly blindsided by the strength of these blotters - taking all 3 was a mistake indeed.
I know that I'm not going insane. It's just the acid, it'll all be good in 10 hours, I tell myself. I know it's impossible to overdose on LSD (the LD-50 is very, very high) but I was scared that I'll be insane forever. I actually seriously considered checking myself into a hospital! Imagine that! What ludicrous thoughts I entertain in my mind while under the influence! I know it's just the drugs, and I'm really glad I had enough experience to stop things from getting
really out of control.
I practically tore apart a blister pack of Xanax (alprazolam) in an effort to calm down. 2.5 mg of Xanax didn?t do anything, so I sedated myself with a further 15 mg of Valium (diazepam). I shut down all the lights (to reduce stimulus) and laid in bed with blankets around me, watching the trails as the blankets moved. Closing my eyes produced repetitively green geometric patterns flowing and morphing through my vision and I was getting auditory hallucinations too. I opened my eyes to see a warped room that I could barely recognize, the proportions were wrong and things were too fluid.
Finally, the benzos did their magic but I still couldn't sleep. It was a weird state of feeling like I was floating to sleep, and then the acid kicks in and I jerk awake into an unfamiliar room. I was pretty much sedated by then though, so I got up and managed to resume the trip report I was trying to keep. Hah! :) I don't remember much after that, but I know I went out to get some food and saw someone and had to avoid eye contact while getting food. That's about the only thing I remembered clearly before managing to eat and sleep.  I'm utterly humiliated by what I wrote in the trip journal, but I'm going to post it anyway, coz it shows how badly strong psychedelics like LSD can mess with your mind. =D It's disjointed and hard to read, but there you go, everything I wrote posted as is. Buddha taught me how to write the word 'respect' that day. Oh well, no harm no foul, and I'm going to treat acid more carefully now.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


What is html5show
html5show is a lightweight library to create animation using Html with little Javascript code, it's for both developers and designers, you just need to write simple Html, then left all other things to the library.
It can be used to create sliders,welcome pages,presentations etc. Really easy to use,hope you will enjoy it!
Let's get started
1. Add stylesheet to the
element of your html.
<link rel="stylesheet" type="text/css" href="{path}/html5show.css">
Put html5show.js to appropriate place (commonly before the
) of your html.
If your want to support the mobile touch events, put hammerjs (Thanks to author:Jorik Tangelder:) before html5show.js:

2. Add a container in which you put the animation pages.

Set the container size,make sure position is relative or absolute,set overflow hidden.
#showBox{ width:500px height:300px; position: absolute; overflow: hidden; }
3. Add animation pages and sprite elements in it,set class:'page' to each page element.

Hello html5show

Amazing

Flexible

Powerful

 ...

4. Now, let's add some magic , add dataset attributes to the elements which set the showtime and animation.

Hello html5show

Amazing

Flexible

Powerful

page2

5. Last Step,using Javascript to create the html5show.

OK, It's done ! Let's check the result.
Hello html5show
Amazing
Flexible
Powerful
Life is beautiful!
Visit our docs page for more details, and demo page to see some advanced usages.
Thanks
html5show is inspired by two CSS3 animation project Animate.css and CSS3 ANIMATION CHEAT SHEET,we strongly recommend you to visit these excellent projects.


Part 3: Conversion to Top-of-Atmosphere (TOA) Reflectance
In Lab Exercise 1, we learned that the metadata file distributed with each Landsat 8 scene contains information needed to convert the raw and uncalibrated digital numbers (DNs) contained in Landsat band images into either radiance or reflectance values. Certain remote sensing applications (e.g. image classification) require the use of calibrated imagery data containing reflectance values, and sometimes, radiance values. Therefore, it is important to know how to transform the raw imagery into calibrated form.
3.1. What are the differences between image DNs, radiance values, and reflectance values? (3 marks)
The process of calibrating raw satellite imagery into reflectance values may include several steps, often including a conversion of DN to radiance, a model for removing the effects of varying illumination within the scene (due to the sun angle, the earth-sun distance, terrain, and clouds and cloud shadows), and an atmospheric correction model. There are varying levels of sophistication that can be used during calibration and exact process will also vary depending on the exact satellite and sensor (Landsat 8 and the OLI sensor in our case). We are going to examine the basic method used to convert Landsat 8 Level 1 DNs into reflectance values. Based on this useful documentation (please read this over), we can see that the basic conversion to top-of-atmosphere reflectance values, including a correction for sun angles, is:
ρ = (M * DN + A) / sin(θSE) (Eq. 1)
where ρ is the transformed reflectance value (at a wavelength), M is the band-specific multiplicative rescaling factor, A is the band-specific additive rescaling factor, and θSE is the sun elevation, in radians. M, A, and θSE can each be found within the metadata file distributed with a Landsat scene and are specific to the geographic location of the scene and the time that it was acquired.
3.2. What is difference between the top-of-atmosphere reflectance and surface reflectance? (2 marks)
Open the metadata file associated with the lab data, LC08_L1TP_018030_20170624_20170713_01_T1_MTL.txt
, using a text editor such as VS Code. Try to locate the sun elevation and each the reflectance rescaling parameters in the file.
3.3. How do the reflectance rescaling parameters compare to the radiance rescaling parameters? What do you think this difference may imply about the pre-processing that was done on the imagery before it was made available? (3 marks)
We could use Eq. 1 above to convert each of the bands within our scene data set manually. However, this would be a tedious task and the opportunities for using the incorrect parameter by accident is fairly high. Instead, we're going to write a script to automatically read the parameters from the metadata file and then apply the DN-to-reflectance transform to each of our bands. Using VS Code, create a Python script in your Lab 2 folder called reflectance.py
. Copy the following code into your script file and run it using the VS Code terminal and don't forget to modify the wbt.work_dir
appropriate for your data location.
from math import radians, sin
import os
from WBT.whitebox_tools import WhiteboxTools
def main():
wbt = WhiteboxTools() # Initialize WhiteboxTools
wbt.work_dir = os.path.join(os.path.dirname(
__file__), "lab2_data") # Update this
wbt.verbose = False # This way the script won't output so many updates about progress
# Open the metadata text file associated with the Landsat scence
metadata = os.path.join(
wbt.work_dir, "LC08_L1TP_018030_20170624_20170713_01_T1_MTL.txt")
fh = open(metadata)
# These two lists will contain the rescaling parameters.
mult_term = []
add_term = []
for line in fh:
# Read the file line-by-line looking for the reflectance transformation parameters
if "REFLECTANCE_MULT_BAND_" in line:
mult_term.append(float(line.split("=")[1].strip()))
elif "REFLECTANCE_ADD_BAND_" in line:
add_term.append(float(line.split("=")[1].strip()))
elif "SUN_ELEVATION" in line:
# We're also getting the sun elevation from the metadata. It has
# to be converted to a float and radians.
sun_elevation = radians(float(line.split("=")[1].strip()))
fh.close() # Be sure to close an open file
# We'll transform the first five bands of the data set
for i in range(0, 5):
# The bands are indexed 1, 2, 3... but the mult_term list is indexed 0, 1, 2...
band_num = i + 1
print("Transforming band {}...".format(band_num))
inFile = "band{}.tif".format(
band_num)
# This is where the DN-to-reflectance transform equation happens.
# It creates two temporary rasters that are continually over-written.
wbt.multiply(inFile, mult_term[i], "tmp1.tif")
wbt.add("tmp1.tif", add_term[i], "tmp2.tif")
# The final transformed raster is called bandX_reflect.tif
wbt.divide("tmp2.tif", sin(sun_elevation),
"band{}_reflect.tif".format(band_num))
# Provide some sort of indication that the job is done.
print("Operation complete!")
main()
This script may take a fair bit of time before completing but it will at least provide you with periodic updates on progress (e.g. Transforming band 1...
). Hopefully, the script runs without issue for you. It is however one of the longest scripts that we've seen so far and because it involves reading and parsing text data, there is the potential for system-specific bugs to occur. If you encounter errors when you run the above script, examine the script carefully to see if you can identify the source of the bug. Once you have gained a full understanding of what the script is doing (see the detailed comments), and have exhausted debugging options (e.g. adding print statements in the script to see how far it progresses, searching the Internet for solutions), then you may approach fellow students or the GTA for assistance.
3.4. Exactly how would you need to alter the above script if you had wanted to transform all 9 bands of the Operational Land Imager (OLI) Landsat 8 imagery available for this data set? Identify which line(s) of the script you would need to alter and how. (1 mark)
3.5. What do you think would happen when you run your script if the sun elevation parameter were set to zero in the metadata file? (1 mark)
Once you have successfully run the script, display each of the five transformed bands using your visualization software. You will notice that they look very similar to the original bands, however, their value range is very different. Each pixel now contains an approximate reflectance value.
3.6. What are the minimum and maximum values within each of the transformed images. Are these value ranges expected for reflectance data? (6 marks)
3.7. Describe the specific ways that you would need to modify the above script if you wanted to perform a DN-to-radiance transformation instead of the DN-to-reflectance we performed. (Hint: be sure to read over the documentation before answering.) (4 marks)


Question Time audience boos and jeers Boris Johnson as he walks onto set
We'll be bringing you the very latest updates, pictures and video on this breaking news story
by Neil MurphyBoris Johnson was booed as he appeared on tonight's BBC Question Time election special.
The Prime Minister made the appearance at the Sheffield studio alongside leaders of UK's political parties.
He is the last of the leaders to answer questions ahead of the upcoming General Election on December 12.
We'll be bringing you the very latest updates, pictures and video on this breaking news story.
Please check back regularly for updates on this developing story here at Mirror.co.uk .
For the latest news and breaking news visit Mirror.co.uk/news .
Get all the big headlines, pictures, analysis, opinion and video on the stories that matter to you.
Follow us on Twitter @DailyMirror - the official Daily Mirror & Mirror Online Twitter account - real news in real time.
We're also on Facebook /dailymirror - your must-see news, features, videos and pictures throughout the day from the Daily Mirror, Sunday Mirror and Mirror Online.


This package contains XSLT testing base classes and utilities, and a generic test driver.
- Author:
-<EMAIL_ADDRESS>- Program(s) Under Test:
- Xalan-J 2.x XSLT Processor
- Xalan-J 1.x XSLT Processor
- Xalan-C 1.x XSLT Processor
This package includes base classes and utilities, as well as several
generic test drivers that use {@link org.apache.qetest.xslwrapper.ProcessorWrapper ProcessorWrappers}
to process stylesheets. Classes in this package must not depend directly
on any Xalan interfaces, only on the ProcessorWrapper interface.
Current utilities include:
- Logging* - implementations of XSLT-related listeners
and the like that log to our Reporter.
- XHTFileCheckService, XHTComparator - checks equivalence of
two File objects by parsing either as XML, HTML, or text. Note
the HTML parsing is unimplemented - we need a good HTML->DOM
parser we can use in Apache - any suggestions?
- XSLTestfileInfo - simple extension of TestfileInfo to
add xmlName member. Should be replaced with StylesheetDatalet
- XSLDirectoryIterator - simple implementation that processes
xsl/xml file pairs from a fileList or over a directory tree,
automatically comparing the result files with a known good
or 'gold' reference tree of outputs. Should be replaced
with StylesheetTestletDriver and various Testlets.
- XSLProcessorTestBase - adds useful XSLT processing
utilities, etc. from FileTestBase: including flags like
-preprocess, -flavor, -category, etc. Most xsl and trax
package Test scripts derive from this class.
Current tests include:
- ConformanceTest - generic test driver, including some
FilenameFilters. This essentially uses the XSLDirectoryIterator
for everything.
Being replaced by StylesheetTestletDriver and
StylesheetTestlet/Datalet
- PerformanceTest - test driver that iterates repeatedly and
reports memory and timing info
Being replaced by StylesheetTestletDriver and
PerformanceTestlet, PerfPreloadTestlet
- CConformanceTest - generic test driver that constructs a
command line and then shells out to execute TestXSLT.exe, which
is from the Xalan-C build. This allows basic comparisons of
results from the Java versions with the C++ versions.
I'd like to replace this with a more generic and configurable
CmdlineTestlet, that can run any sort of command-line interface
like this in a standard way.


Welcome to the BKFighter Website home page
This website is still under development. Most items should work, but pages still being added might not work. Page navigation is on the left of the screen.


An appropriate representation of the requested resource $request_uri could not be found on this server.


Check out these Eyes, and watch them follow you! great for a webpage element!
Explore this Mapping feature and navigate the streets of Chicago!
My Name is Steve Fecteau. This is my first time in a programming environment and I am building out my skill set in the Full stack Class with MIT. Please take a look at these projects that I have spent the last ten weeks building, and learning how to incorporate these new skills!
Explore this Mapping feature and navigate the streets of Chicago!


|
Guild Wars 2 - Elite Insights
2.25+
JSON doc
|
The root of the JSON More...
Classes | |
| class | BuffDesc |
| Describs the buff item More... | |
| class | DamageModDesc |
| Describs the damage modifier item More... | |
| class | SkillDesc |
| Describes the skill item More... | |
Properties | |
| string | EliteInsightsVersion [get] |
| The used EI version More... | |
| int | TriggerID [get] |
| The id with which the log has been triggered More... | |
| string | FightName [get] |
| The name of the fight More... | |
| string | FightIcon [get] |
| The icon of the fight More... | |
| string | ArcVersion [get] |
| The used arcdps version More... | |
| ulong | GW2Build [get] |
| GW2 build More... | |
| string | Language [get] |
| Language with which the evtc was generated More... | |
| byte | LanguageID [get] |
| ID of the language More... | |
| string | RecordedBy [get] |
| The player who recorded the fight More... | |
| string | TimeStart [get] |
| DEPRECATED: use TimeStartStd instead The time at which the fight started in "yyyy-mm-dd hh:mm:ss zz" format The value will be LogData.DefaultTimeValue if the event does not exist More... | |
| string | TimeEnd [get] |
| DEPRECATED: use TimeEndStd instead The time at which the fight ended in "yyyy-mm-dd hh:mm:ss zz" format The value will be LogData.DefaultTimeValue if the event does not exist More... | |
| string | TimeStartStd [get] |
| The time at which the fight started in "yyyy-mm-dd hh:mm:ss zzz" format The value will be LogData.DefaultTimeValue if the event does not exist More... | |
| string | TimeEndStd [get] |
| The time at which the fight ended in "yyyy-mm-dd hh:mm:ss zzz" format The value will be LogData.DefaultTimeValue if the event does not exist More... | |
| string | Duration [get] |
| The duration of the fight in "xh xm xs xms" format More... | |
| bool | Success [get] |
| The success status of the fight More... | |
| bool | IsCM [get] |
| If the fight is in challenge mode More... | |
| List< JsonNPC > | Targets [get] |
| The list of targets More... | |
| List< JsonPlayer > | Players [get] |
| The list of players More... | |
| List< JsonPhase > | Phases [get] |
| The list of phases More... | |
| List< JsonMechanics > | Mechanics [get] |
| List of mechanics More... | |
| string [] | UploadLinks [get] |
| Upload links to dps.reports/raidar More... | |
| Dictionary< string, SkillDesc > | SkillMap = new Dictionary<string, SkillDesc>() [get] |
| Dictionary of skills' description, the key is in "'s' + id" format More... | |
| Dictionary< string, BuffDesc > | BuffMap = new Dictionary<string, BuffDesc>() [get] |
| Dictionary of buffs' description, the key is in "'b' + id" format More... | |
| Dictionary< string, DamageModDesc > | DamageModMap = new Dictionary<string, DamageModDesc>() [get] |
| Dictionary of damage modifiers' description, the key is in "'d' + id" format More... | |
| Dictionary< string, HashSet< long > > | PersonalBuffs = new Dictionary<string, HashSet<long>>() [get] |
| Dictionary of personal buffs. The key is the profession, the value is a list of buff ids More... | |
| List< string > | LogErrors [get] |
| List of error messages given by ArcDPS More... | |
The root of the JSON
Definition at line 14 of file JsonLog.cs.
|
get |
The used arcdps version
Definition at line 147 of file JsonLog.cs.
|
get |
Dictionary of buffs' description, the key is in "'b' + id" format
Definition at line 232 of file JsonLog.cs.
|
get |
Dictionary of damage modifiers' description, the key is in "'d' + id" format
Definition at line 237 of file JsonLog.cs.
|
get |
The duration of the fight in "xh xm xs xms" format
Definition at line 190 of file JsonLog.cs.
|
get |
The used EI version
Definition at line 131 of file JsonLog.cs.
|
get |
The icon of the fight
Definition at line 143 of file JsonLog.cs.
|
get |
The name of the fight
Definition at line 139 of file JsonLog.cs.
|
get |
GW2 build
Definition at line 151 of file JsonLog.cs.
|
get |
If the fight is in challenge mode
Definition at line 198 of file JsonLog.cs.
|
get |
Language with which the evtc was generated
Definition at line 155 of file JsonLog.cs.
|
get |
ID of the language
Definition at line 159 of file JsonLog.cs.
|
get |
List of error messages given by ArcDPS
Definition at line 245 of file JsonLog.cs.
|
get |
|
get |
Dictionary of personal buffs. The key is the profession, the value is a list of buff ids
Definition at line 241 of file JsonLog.cs.
|
get |
|
get |
|
get |
The player who recorded the fight
Definition at line 163 of file JsonLog.cs.
|
get |
Dictionary of skills' description, the key is in "'s' + id" format
Definition at line 227 of file JsonLog.cs.
|
get |
The success status of the fight
Definition at line 194 of file JsonLog.cs.
|
get |
|
get |
DEPRECATED: use TimeEndStd instead
The time at which the fight ended in "yyyy-mm-dd hh:mm:ss zz" format
The value will be LogData.DefaultTimeValue if the event does not exist
Definition at line 175 of file JsonLog.cs.
|
get |
The time at which the fight ended in "yyyy-mm-dd hh:mm:ss zzz" format
The value will be LogData.DefaultTimeValue if the event does not exist
Definition at line 186 of file JsonLog.cs.
|
get |
DEPRECATED: use TimeStartStd instead
The time at which the fight started in "yyyy-mm-dd hh:mm:ss zz" format
The value will be LogData.DefaultTimeValue if the event does not exist
Definition at line 169 of file JsonLog.cs.
|
get |
The time at which the fight started in "yyyy-mm-dd hh:mm:ss zzz" format
The value will be LogData.DefaultTimeValue if the event does not exist
Definition at line 181 of file JsonLog.cs.
|
get |
The id with which the log has been triggered
Definition at line 135 of file JsonLog.cs.
|
get |
Upload links to dps.reports/raidar
Definition at line 222 of file JsonLog.cs.


Know Your Akan Name is a web application that takes your birthday and calculates the day of the week you were born and depending on the gender using Akan Names.
Day
Month
Centuary
Year


Star Wars actor Anthony Daniels: Actors ‘inside suits' finally getting credit
Star Wars actor Anthony Daniels says the people “inside the suits” are finally starting to get the credit they deserve.
Daniels, 73, said that film bosses originally wanted to “pretend” that C-3PO was a real robot.
He told BBC Breakfast: “These days, people are better at acknowledging who is doing voiceover, who is doing motion capture, or whatever.
“Back in the day, they tried to pretend that C-3PO was a real robot and
that was a little difficult to live with.
“Now it’s perfectly normal to say, ‘Basically I was puppeteering’.”
Daniels, who will be back in character in Star Wars: The Rise Of Skywalker, said he worried about being “locked” in his golden, droid suit when he first took on the role, after “realising that I couldn’t get out if anyone got abducted by aliens”.
“It would take half an hour to put back on, so they never wanted to take me out of it,” the British actor said.


Interact with students from across GWU, and find the teammates needed to take a project to the next level.
Gain insights and grow, with the help of a world class network of mentors, professors, and alumni with experience to spare.
Access expert-led workshops, talks, co-working space, funding opportunities, and more in our refurbished machine shop.


This example shows chips in motion.
Inspired from
here
You will have to start from Chip 1 to Chip 8, any other order won't work...
Tap Any Chip Below
Chip 1
Chip 2
Chip 3
Chip 4
Chip 5
Chip 6
Chip 7
Chip 8


The ERConnectionData class stores the data for a single connection
public ERRoad road
The road object attached to this connection
public int marker
The road marker attached to this connection. This can be used for AI purposes. Is the road connected at the start or end.
public int connectionIndex
The connection index to which the road is connected..
|


To start the demo click on start simulation or enter svg_demo into the entry below and hit enter.
Name of module:


Shopping_AbstractResponseType Class Reference
| Inherits from | NSObject |
| Conforms to | PicoBindable |
| Declared in | Shopping_AbstractResponseType.h Shopping_AbstractResponseType.m |
Overview
Base type definition of a response payload that can carry any
type of payload content with following optional elements:
- timestamp of response message
- application-level acknowledgement
- application-level (business-level) errors and warnings
@ingroup ShoppingInterface
Tasks
-
timestamp
This value represents the date and time when eBay processed the
property
request. The time zone of this value is GMT
and the format is the
ISO 8601 date and time format (YYYY-MM-DDTHH:MM:SS.SSSZ).
See the “dateTime” type for information about this
time format and converting to and from the GMT time zone. -
ack
Indicates whether the call was successfully processed by eBay.
property -
errors
A list of application-level errors or warnings (if any) that were raised
property
when eBay processed the request.
Application-level errors occur due to
problems with business-level data on the client side or on the eBay
server side. For example, an error would occur if the request contains
an invalid combination of fields, or it is missing a required field,
or the value of the field is not recognized. An error could also occur
if eBay encountered a problem in our internal business logic while
processing the request.
Only returned if there were warnings or errors. -
build
This refers to the particular software build that eBay used when
property
processing the request and generating the response. This includes the
version number plus additional information. eBay Developer Support may
request the build information when helping you resolve technical issues. -
version
The release version that eBay used to process the request.
property
Note:
This is usually the latest release version, as specified in the
release notes. (eBay releases the API to international sites
about a week after we release it to the US site.)
If a field in the response returns the token “CustomCode”, it usually
means that the field is a code type (a token or enumeration),
and that in your request URL (or HTTP header) you specified a
version that is older than the version in which the token was added
to the call. -
correlationID
If you pass a value in MessageID in a request, we will return the same
property
value in CorrelationID in the response. You can use this for tracking
that a response is returned for every request and to match particular
responses to particular requests. Only returned if MessageID was used. -
any
(public property)
property
Properties
ack
Indicates whether the call was successfully processed by eBay.
@property (nonatomic, retain) NSString *ack
Discussion
Indicates whether the call was successfully processed by eBay.
type: string constant in Shopping_AckCodeType.h
Declared In
Shopping_AbstractResponseType.h
any
(public property)
@property (nonatomic, retain) NSMutableArray *any
Discussion
(public property)
entry type : PicoAnyElement, wrapper for primitive anyelement
Declared In
Shopping_AbstractResponseType.h
build
This refers to the particular software build that eBay used when
processing the request and generating the response. This includes the
version number plus additional information. eBay Developer Support may
request the build information when helping you resolve technical issues.
@property (nonatomic, retain) NSString *build
Discussion
This refers to the particular software build that eBay used when
processing the request and generating the response. This includes the
version number plus additional information. eBay Developer Support may
request the build information when helping you resolve technical issues.
type : NSString, wrapper for primitive string
Declared In
Shopping_AbstractResponseType.h
correlationID
If you pass a value in MessageID in a request, we will return the same
value in CorrelationID in the response. You can use this for tracking
that a response is returned for every request and to match particular
responses to particular requests. Only returned if MessageID was used.
@property (nonatomic, retain) NSString *correlationID
Discussion
If you pass a value in MessageID in a request, we will return the same
value in CorrelationID in the response. You can use this for tracking
that a response is returned for every request and to match particular
responses to particular requests. Only returned if MessageID was used.
type : NSString, wrapper for primitive string
Declared In
Shopping_AbstractResponseType.h
errors
A list of application-level errors or warnings (if any) that were raised
when eBay processed the request.
Application-level errors occur due to
problems with business-level data on the client side or on the eBay
server side. For example, an error would occur if the request contains
an invalid combination of fields, or it is missing a required field,
or the value of the field is not recognized. An error could also occur
if eBay encountered a problem in our internal business logic while
processing the request.
Only returned if there were warnings or errors.
@property (nonatomic, retain) NSMutableArray *errors
Discussion
A list of application-level errors or warnings (if any) that were raised
when eBay processed the request.
Application-level errors occur due to
problems with business-level data on the client side or on the eBay
server side. For example, an error would occur if the request contains
an invalid combination of fields, or it is missing a required field,
or the value of the field is not recognized. An error could also occur
if eBay encountered a problem in our internal business logic while
processing the request.
Only returned if there were warnings or errors.
entry type : class Shopping_ErrorType
Declared In
Shopping_AbstractResponseType.h
timestamp
This value represents the date and time when eBay processed the
request. The time zone of this value is GMT
and the format is the
ISO 8601 date and time format (YYYY-MM-DDTHH:MM:SS.SSSZ).
See the “dateTime” type for information about this
time format and converting to and from the GMT time zone.
@property (nonatomic, retain) NSDate *timestamp
Discussion
This value represents the date and time when eBay processed the
request. The time zone of this value is GMT
and the format is the
ISO 8601 date and time format (YYYY-MM-DDTHH:MM:SS.SSSZ).
See the “dateTime” type for information about this
time format and converting to and from the GMT time zone.
type : NSDate, wrapper for primitive date
Declared In
Shopping_AbstractResponseType.h
version
The release version that eBay used to process the request.
Note:
This is usually the latest release version, as specified in the
release notes. (eBay releases the API to international sites
about a week after we release it to the US site.)
If a field in the response returns the token “CustomCode”, it usually
means that the field is a code type (a token or enumeration),
and that in your request URL (or HTTP header) you specified a
version that is older than the version in which the token was added
to the call.
@property (nonatomic, retain) NSString *version
Discussion
The release version that eBay used to process the request.
Note:
This is usually the latest release version, as specified in the
release notes. (eBay releases the API to international sites
about a week after we release it to the US site.)
If a field in the response returns the token “CustomCode”, it usually
means that the field is a code type (a token or enumeration),
and that in your request URL (or HTTP header) you specified a
version that is older than the version in which the token was added
to the call.
type : NSString, wrapper for primitive string
Declared In
Shopping_AbstractResponseType.h


| DOSE: |
3 Tbsp |
oral |
Nutmeg |
(ground / crushed) |
My friend told that nutmeg can get you pretty high, almost like weed. Having nothing better to do on my Saturday I figured.. why not? We each took 3 *heaping* tablespoons full, around 4 in the afternoon. When we went to some local bars around 7. I was starting to feel some effects, I felt pretty relaxed, almost felt like how it feels right before I start rolling.
Around 10 the effects were still pleasent, but I was starting to feel detatched from reality, I could'nt really concentrate on anything. We went home around 11, I started feeling nautious but was able to crash out on his couch. I woke up in the middle of the night covered in sweat, I felt like I was burning up. I was very confused. I hardly knew where I was, but somehow stumbled into the bathroom where I dry heaved in the toilet.
The next thing I knew, I woke up with my arm IN the toilet! I have no idea how long I had been passed out. I heard some friends outside on the front lawn. I went outside to say I needed help, but every few steps I took, I would pass out. Whenever I stood up I would get dizzy and fall over. I dry heaved again and finally *crawled* my way from the driveway to the lawn, where my 2 friends were.
I hardly knew which way was up; I fell over sideways on the lawn, yelling at them that I needed help. They thought it was hilarious, but I seriously thought I was going to die. Anyhow they calmed me down and I sat outside with them for a few minutes. My friend who I took the nutmeg with, said he was alright and didn't feel sick. The cool air made me feel a little better, and calmed me down.
I went back to sleep and woke up around 7. I still felt sick and detatched from reality, but knew I was going to be okay. It took me a full day to feel normal again. My friend found his toilet paper holder broken the next day! I guess I broke it when I passed out.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


Flip switch: Off On Checkboxes, vertical controlgroup: Cheetos Doritos Fritos Sun Chips Radio buttons, vertical controlgroup: Cat Dog Hamster Lizard Text Input: Textarea: Choose shipping method: Standard: 7 day Rush: 3 days Express: next day Overnight Date: File: Password:


| 076:021 Khan | : |
Their garments will be of fine green silk, and gold embroidery. They will be adorned with bracelets of silver, and their Lord will give them a pure drink. |
| 076:021 Maulana | : |
On them are garments of fine green silk and thick brocade, and they are adorned with bracelets of silver, and their Lord makes them to drink a pure drink. |
| 076:021 Pickthal | : |
Their raiment will be fine green silk and gold embroidery. Bracelets of silver will they wear. Their Lord will slake their thirst with a pure drink. |
| 076:021 Rashad | : |
On them will be clothes of green velvet, satin, and silver ornaments. Their Lord will provide them with pure drinks. |
| 076:021 Sarwar | : |
They will have fine green silk and brocade, and they will be decked with bracelets of silver. Their Lord will provide them with a drink of pure wine. |
| 076:021 Shakir | : |
Upon them shall be garments of fine green silk and thick silk interwoven with gold, and they shall be adorned with bracelets of silver, and their Lord shall make them drink a pure drink. |
| 076:021 Sherali | : |
On them will be garments of fine green silk and thick brocade. And they will be made to wear bracelets of silver. And their Lord will give them to drink a pure beverage. |
| 076:021 Yusufali | : |
Upon them will be green Garments of fine silk and heavy brocade, and they will be adorned with Bracelets of silver; and their Lord will give to them to drink of a Wine Pure and Holy. |
Concepts/Themes Covered: الإيمان > الغيب > الجنة > أصحاب الجنة Faith> The Unseen World> The Paradise> The Companions of the Garden الإيمان > الغيب > الجنة > صفات الجنة Faith> The Unseen World> The Paradise> Characteristics of Paradise العمل > العمل الصالح > العمل المفضي إلى البر Action(Work)> The Good Deeds>Action which leads to Righteousness
This tool uses eight English parallel translations for the Holy Quran imported from Mr. Clay Smith. You can also visit Qurany Concepts for browsing the Quran themes or topics. If you want to search the Holy Quran for keywords, please visit Qurany Keywords.


There have been a number of articles about the AI TA for a class at Georgia Tech. I find these fascinating because I took this class in the summer 2016 session.
I’ve considered ways to use this approach to facilitate online learning in other environments as well and I’d like to look into it more in the future. Nothing definite now, but I’ve had a few preliminary discussions. Let’s hope they bear fruit.
Stay tuned!


Our Products
We are a manufacturer of Aluminum Roll-on Pilfer-proof (R.O.P.P.) closures for clients in the pharmaceutical, agricultural and veterinary sectors. We produce the following sizes for Roll-on Pilfer-proof caps:
- 18mm cap – for 15 ml standard bottles
- 20mm cap – for 30 and 60 ml standard bottles
- 22mm cap – for 120 ml standard bottles
- 24mm cap – for 250 ml standard bottles
- 25mm cap – for 60 ml standard wide mouth bottles
- 28mm cap – for other customized bottles
Product Samples
To request more information about our products, visit our contact page or email us at .


Command Summary
- add (a): Adds a contact to ContactHub.
Format: add n/NAME p/PHONE... e/EMAIL... a/ADDRESS b/BIRTHDAY [m/MODULE]...
- edit (e): Edits the details of the contact identified by the index number used in the last contact listing. Existing values will be overwritten by the input values.
Format: edit INDEX [n/NAME] [p/PHONE]... [e/EMAIL]... [a/ADDRESS] [b/BIRTHDAY] [m/MODULE]...
- find (f): Finds contacts whose names contain any of the given keywords.
Format: find KEYWORD [MORE_KEYWORDS]...
- findmodule (fm): Finds modules whose names contain any of the given keywords.
Format: findmodule MODULE_NAME [MORE_MODULE_NAMES]...
- getmodule (gm): Shows NUSMods module information in browser.
Format: getmodule MODULE_NAME
- listmodules (lm): Shows a list of all modules in ContactHub.
- delete (d): Deletes the specified contact from ContactHub.
Format: delete INDEX
- select (sl): Selects the contact identified by the index number used in the last contact listing.
Format: select INDEX
- addphoto (ap): Adds a photo to a contact using the index of the contact in the latest listing.
Format: addphoto INDEX u/IMAGE_URL
- addtask (at): Adds a task to the task list.
Format: addtask t/APPOINTMENT d/DATE s/START_TIME
- edittask (et): Edits the details of the task identified by the index number.
Format: edittask INDEX [t/APPOINTMENT] [d/DATE] [s/STARTTIME]
- deletetask (dt): Deletes the task identified by the index number in the task list.
Format: deletetask INDEX
- summary (sm): Opens the ContactHub Command Summary.
- venue (v): Shows NUSMods venue information.
- bus (b): Opens the NUS bus routes.
- map (m): Opens the NUS map.
- help (hp): Opens the User Guide.
- history (h): Shows the commands that were previously entered.
- list (l): Shows a list of all contacts.
- clear (c): Clears ALL contact entries.
- undo (u): Restores ContactHub to the state before the previous undoable command was executed.
- redo (r): Reverses the most recent undo command.
- exit (x): Exits the program.
Keyboard Shortcuts
- Escape: Clears the whole command box.
- Alt: Relocates text cursor to the right completely.
- Delete: Deletes a chunk of words or chunk of whitespace on the left of the text cursor.
- Insert: Fills the command box with the AddCommand parameters.


Feature improvements
- Added dictionary.efficientip, dictionary.alcatel-lucent-aaa
- Allow zero length DN strings in rlm_ldap.
- If Password-With-Header has no header, assume it is
Cleartext-Password.
Bug Fixes
- Make the server build when DHCP is enabled
- Don't crash if there's no Post-Proxy-Type Reject.
- Use correct fields for X509 attributes in certificates
- Install threads.h making it possible to link against the
installed headers again.
- Initialize SSL once in "main", instead of rlm_eap_tls.
Some client libraries may need SSL.


If this checkbox is selected, then the files on the built-in server running on the specified port are accessible from another computer.
If this checkbox is cleared (by default), then the debugger listens only to local connections.


Most of CCore declarations are enclosed in the namespace CCore. There are several inner namespaces, like Meta, Net, Math, Sys, Crypton, DDL.
Source code is split into several major parts: Simple, Fundamental, Applied, HCore, XCore and Target. First five are located in the same named directories in the CCore root. Last one is located in the directory Target/<TargetName>. Tools are located in the directory tools.
Source code parts consist of three directories : inc, src, and test. So to include a CCore header write
#include <CCore/inc/...>
Each CCore .h file has a correspondent .cpp file, even if it defines nothing.
Each target is either HCore or XCore target, so it includes only one part: HCore or XCore.
HCore targets are host targets, XCore targets are device targets.
To create a CCore-based project select a directory for it. Then place in this directory (or in subdirectories) a source code. Two source files must not have the same name, even if they are in different subdirectories. You may use files with extension ".cpp" for C++ source files ans ".s" for assembler source files. Create the Makefile. Select and create a subdirectory for object files (and other intermediate files), usually .obj. Then issue the command make from the Cygwin console. If you change the source file set, then issue the command make list. You may also erase dependency files using the command make dep (sometimes required).
Here is an example of Makefile.
CCORE_ROOT = ../.. CCORE_TARGET = WIN32 OBJ_PATH = .obj TARGET = Application.exe include $(CCORE_ROOT)/Target/Makefile.app run: $(TARGET) $(TARGET)
You have to define the following variables.
CCORE_ROOT is the path to the CCore root directory.
CCORE_TARGET is the target name.
OBJ_PATH is the path to the object file directory. This variable can be omitted, in this case the default value ".obj" is used.
TARGET is the application file name. This variable can be omitted, in this case the default value "main.exe" is used.
The following "magic line" must follow:
include $(CCORE_ROOT)/Target/Makefile.app
For your convenience you may include optional make targets like run above.
There are additional optional variables you may define.
SRC_PATH_LIST — the list of source file directories. It is "." by default.
CCOPT_EXTRA — additional options for the C++ compiler. It is empty by default.
LDOPT_EXTRA — additional options for the linker. It is empty by default.
If you want to build a libray, not an executable, then use another "magic line":
include $(CCORE_ROOT)/Target/Makefile.lib
All global entities have capitalized names. I.e. class names, global objects etc. Local object names, non-static members and method names start from lowercase letters.
Here is an example of the class definition:
class SomeClass { int item_count; public: int getItemCount() const { return item_count; } void setItemCount(int item_count_) { item_count=item_count_; } };
The private part goes first, the public is last. Members are decorated like "item_count". Methods like "getItemCount()". Getters like "getItemCount()" and setters like "setItemCount()". The argument, used to initialize the member "item_count", named as "item_count_".
Suffixes are used to name variants:
struct MemBase; struct MemBase_nocopy;
Sections are used to group members:
class Sem : public Funchor_nocopy { .... public: // constructors explicit Sem(ulen count=0); explicit Sem(TextLabel name,ulen count=0); ~Sem(); // give void give(); void give_many(ulen dcount); // take bool try_take(); void take(); bool take(MSec timeout); bool take(TimeScope time_scope); // functions Function<void (void)> function_give() { return FunctionOf(this,&Sem::give); } };
The popular words are: "count", "len", "obj", "try...", "zstr", "d..." to designate a delta value.
A loop for example:
for(ulen i=0,count=....; i<count ;i++) { .... }
Another example:
for(ulen i=count; i-- ;) { .... }
There are many types, which have a special state — "null" state. Usually for such types the default constructor creates a "null" object. CCore often defines the Nothing-constructor to do the same. And two operators: operator + and operator ! can be used to check, if the object is "null".
class SomeClass { public: SomeClass(); // set the object into the "null" state SomeClass(NothingType); // set the object into the "null" state too boolable operator + () const; // return true, if the object is not "null" bool operator ! () const; // return true, if the object is "null" };


I AM A BANKER BY PROFESSION FROM BURKINA FASO IN WEST AFRICA AND CURRENTLY HOLDING THE POST OF FOREIGN REMITTANCE DIRECTOR IN OUR BANK,AFRICAN DEVELOPMENT BANK(ADB).I HAVE THE OPPORTUNITY OF TRANSFERING THE LEFT OVER FUNDS ($25.5MILLION) OF ONE OF MY BANK CLIENTS. MR. ANDREAS SCHRANNER,WHO DIED ALONG WITH HIS ENTIRE FAMILY ON 31 JULY 2000 IN A PLANE CRASH,LIVING NOBODY BEHIND TO CLAIM HIS LEFT OVER FUND WITH MY BANK.  HAVE A GREAT DAY. YOURS FIATHFULLY, MOHAMMED HASSAN FOREIGN REMITTANCE DIRECTOR AFRICAN DEVELOPMENT BANK (ADB). ¡Miles de amigos con tus mismas aficiones! http://www.latinchat.com ¡Miles de amigos con tus mismas aficiones! http://www.latinchat.com


Hey hey,
I'm techtolentino, and I've been working in the tech industry as a web and software developer, mainly focusing on front end.
In terms of dev, my primary interests are in React, Vue, design systems, and developer processes and efficiencies.
Feel free to reach out if you have any questions!


Give a name to the new instance of the algorithm.
You are about to change the name of your running instance.


| Package | Description |
|---|---|
| org.tensorflow.distruntime | |
| tensorflow.eager |
| Modifier and Type | Method and Description |
|---|---|
ServerDef.Builder |
ServerDef.Builder.addRepeatedField(org.nd4j.shade.protobuf.Descriptors.FieldDescriptor field,
Object value) |
ServerDef.Builder |
ServerDef.Builder.clear() |
ServerDef.Builder |
ServerDef.Builder.clearCluster()
The cluster of which this server is a member.
|
ServerDef.Builder |
ServerDef.Builder.clearDefaultSessionConfig()
The default configuration for sessions that run on this server.
|
ServerDef.Builder |
ServerDef.Builder.clearField(org.nd4j.shade.protobuf.Descriptors.FieldDescriptor field) |
ServerDef.Builder |
ServerDef.Builder.clearJobName()
The name of the job of which this server is a member.
|
ServerDef.Builder |
ServerDef.Builder.clearOneof(org.nd4j.shade.protobuf.Descriptors.OneofDescriptor oneof) |
ServerDef.Builder |
ServerDef.Builder.clearProtocol()
The protocol to be used by this server.
|
ServerDef.Builder |
ServerDef.Builder.clearTaskIndex()
The task index of this server in its job.
|
ServerDef.Builder |
ServerDef.Builder.clone() |
ServerDef.Builder |
CreateWorkerSessionRequest.Builder.getServerDefBuilder()
Defines the configuration of a TensorFlow worker.
|
ServerDef.Builder |
ServerDef.Builder.mergeCluster(ClusterDef value)
The cluster of which this server is a member.
|
ServerDef.Builder |
ServerDef.Builder.mergeDefaultSessionConfig(ConfigProto value)
The default configuration for sessions that run on this server.
|
ServerDef.Builder |
ServerDef.Builder.mergeFrom(org.nd4j.shade.protobuf.CodedInputStream input,
org.nd4j.shade.protobuf.ExtensionRegistryLite extensionRegistry) |
ServerDef.Builder |
ServerDef.Builder.mergeFrom(org.nd4j.shade.protobuf.Message other) |
ServerDef.Builder |
ServerDef.Builder.mergeFrom(ServerDef other) |
ServerDef.Builder |
ServerDef.Builder.mergeUnknownFields(org.nd4j.shade.protobuf.UnknownFieldSet unknownFields) |
static ServerDef.Builder |
ServerDef.newBuilder() |
static ServerDef.Builder |
ServerDef.newBuilder(ServerDef prototype) |
ServerDef.Builder |
ServerDef.newBuilderForType() |
protected ServerDef.Builder |
ServerDef.newBuilderForType(org.nd4j.shade.protobuf.GeneratedMessageV3.BuilderParent parent) |
ServerDef.Builder |
ServerDef.Builder.setCluster(ClusterDef.Builder builderForValue)
The cluster of which this server is a member.
|
ServerDef.Builder |
ServerDef.Builder.setCluster(ClusterDef value)
The cluster of which this server is a member.
|
ServerDef.Builder |
ServerDef.Builder.setDefaultSessionConfig(ConfigProto.Builder builderForValue)
The default configuration for sessions that run on this server.
|
ServerDef.Builder |
ServerDef.Builder.setDefaultSessionConfig(ConfigProto value)
The default configuration for sessions that run on this server.
|
ServerDef.Builder |
ServerDef.Builder.setField(org.nd4j.shade.protobuf.Descriptors.FieldDescriptor field,
Object value) |
ServerDef.Builder |
ServerDef.Builder.setJobName(String value)
The name of the job of which this server is a member.
|
ServerDef.Builder |
ServerDef.Builder.setJobNameBytes(org.nd4j.shade.protobuf.ByteString value)
The name of the job of which this server is a member.
|
ServerDef.Builder |
ServerDef.Builder.setProtocol(String value)
The protocol to be used by this server.
|
ServerDef.Builder |
ServerDef.Builder.setProtocolBytes(org.nd4j.shade.protobuf.ByteString value)
The protocol to be used by this server.
|
ServerDef.Builder |
ServerDef.Builder.setRepeatedField(org.nd4j.shade.protobuf.Descriptors.FieldDescriptor field,
int index,
Object value) |
ServerDef.Builder |
ServerDef.Builder.setTaskIndex(int value)
The task index of this server in its job.
|
ServerDef.Builder |
ServerDef.Builder.setUnknownFields(org.nd4j.shade.protobuf.UnknownFieldSet unknownFields) |
ServerDef.Builder |
ServerDef.toBuilder() |
| Modifier and Type | Method and Description |
|---|---|
CreateWorkerSessionRequest.Builder |
CreateWorkerSessionRequest.Builder.setServerDef(ServerDef.Builder builderForValue)
Defines the configuration of a TensorFlow worker.
|
| Modifier and Type | Method and Description |
|---|---|
ServerDef.Builder |
EagerServiceOuterClass.CreateContextRequest.Builder.getServerDefBuilder()
Identifies the full cluster, and this particular worker's position within.
|
| Modifier and Type | Method and Description |
|---|---|
EagerServiceOuterClass.CreateContextRequest.Builder |
EagerServiceOuterClass.CreateContextRequest.Builder.setServerDef(ServerDef.Builder builderForValue)
Identifies the full cluster, and this particular worker's position within.
|
Copyright © 2020. All rights reserved.


Dark
Light
Welcome, {{ username }}
VK music
Connect to VK
ЛСП - Больше денег
Speech-to-text
Test
Speech rate:
1
Pitch:
1
Volume:
1
Questions
Events


import com.sleepycat.db.*;public DbLock get(int locker, int flags, Dbt obj, int lock_mode) throws DbException;
The DbLockTab.get method gets a lock, as defined by the values of locker, obj and mode. The locker argument is an unsigned 32-bit integer quantity. It represents the entity requesting or releasing the lock.
The flags value must be set to 0 or the following value:
A reference to the acquired lock is returned. (This reference is invalidated by any call to DbLock.put that releases the lock.)


The minimum-norm current estimates¶
This page describes the mathematical concepts and the
computation of the minimum-norm estimates needed
in order to obtain the linear inverse operator using
mne.minimum_norm.make_inverse_operator()
.
Its usage is presented in the tutorial Source localization with MNE/dSPM/sLORETA/eLORETA.
Contents
Minimum-norm estimates¶
This section describes the mathematical details of the calculation of minimum-norm estimates. In Bayesian sense, the ensuing current distribution is the maximum a posteriori (MAP) estimate under the following assumptions:
The viable locations of the currents are constrained to the cortex. Optionally, the current orientations can be fixed to be normal to the cortical mantle.
The amplitudes of the currents have a Gaussian prior distribution with a known source covariance matrix.
The measured data contain additive noise with a Gaussian distribution with a known covariance matrix. The noise is not correlated over time.
The linear inverse operator¶
The measured data in the source estimation procedure consists of MEG and EEG data, recorded on a total of N channels. The task is to estimate a total of M strengths of sources located on the cortical mantle. If the number of source locations is P, M = P for fixed-orientation sources and M = 3P if the source orientations are unconstrained. The regularized linear inverse operator following from the Bayesian approach is given by the \(M \times N\) matrix
where G is the gain matrix relating the source strengths to the measured MEG/EEG data, \(C\) is the data noise-covariance matrix and \(R'\) is the source covariance matrix. The dimensions of these matrices are \(N \times M\), \(N \times N\), and \(M \times M\), respectively. The \(M \times 1\) source-strength vector is obtained by multiplying the \(N \times 1\) data vector by \(M\).
The expected value of the current amplitudes at time t is then given by \(\hat{j}(t) = Mx(t)\), where \(x(t)\) is a vector containing the measured MEG and EEG data values at time t.
Note
For computational convenience, in MNE-Python the linear inverse operator is not computed explicitly. See Computation of the solution for mathematical details, and Calculating the inverse operator for a detailed example.
Regularization¶
The a priori variance of the currents is, in practise, unknown. We can express this by writing \(R' = R/ \lambda^2\), which yields the inverse operator
where the unknown current amplitude is now interpreted in terms of the regularization parameter \(\lambda^2\). Small \(\lambda^2\) corresponds to large current amplitudes and complex estimate current patterns while a large \(\lambda^2\) means the amplitude of the current is limited and a simpler, smooth, current estimate is obtained.
We can arrive in the regularized linear inverse operator also by minimizing the cost function
where the first term consists of the difference between the whitened measured data (see Whitening and scaling) and those predicted by the model while the second term is a weighted-norm of the current estimate. It is seen that, with increasing \(\lambda^2\), the source term receive more weight and larger discrepancy between the measured and predicted data is tolerable.
Whitening and scaling¶
The MNE software employs data whitening so that a ‘whitened’ inverse operator assumes the form
where \(\tilde{G} = C^{-^1/_2}G\) is the spatially whitened gain matrix. The expected current values are \(\hat{j} = Mx(t)\), where \(x(t) = C^{-^1/_2}x(t)\) is a the whitened measurement vector at t. The spatial whitening operator is obtained with the help of the eigenvalue decomposition \(C = U_C \Lambda_C^2 U_C^T\) as \(C^{-^1/_2} = \Lambda_C^{-1} U_C^T\). In the MNE software the noise-covariance matrix is stored as the one applying to raw data. To reflect the decrease of noise due to averaging, this matrix, \(C_0\), is scaled by the number of averages, \(L\), i.e., \(C = C_0 / L\).
As shown above, regularization of the inverse solution is equivalent to a change in the variance of the current amplitudes in the Bayesian a priori distribution.
Convenient choice for the source-covariance matrix \(R\) is such that \(\text{trace}(\tilde{G} R \tilde{G}^T) / \text{trace}(I) = 1\). With this choice we can approximate \(\lambda^2 \sim 1/SNR\), where SNR is the (power) signal-to-noise ratio of the whitened data.
Note
The definition of the signal to noise-ratio/ \(\lambda^2\) relationship given above works nicely for the whitened forward solution. In the un-whitened case scaling with the trace ratio \(\text{trace}(GRG^T) / \text{trace}(C)\) does not make sense, since the diagonal elements summed have, in general, different units of measure. For example, the MEG data are expressed in T or T/m whereas the unit of EEG is Volts.
See Computing a covariance matrix for example of noise covariance computation and whitening.
Regularization of the noise-covariance matrix¶
Since finite amount of data is usually available to compute an estimate of the noise-covariance matrix \(C\), the smallest eigenvalues of its estimate are usually inaccurate and smaller than the true eigenvalues. Depending on the seriousness of this problem, the following quantities can be affected:
The model data predicted by the current estimate,
Estimates of signal-to-noise ratios, which lead to estimates of the required regularization, see Regularization,
The estimated current values, and
The noise-normalized estimates, see Noise normalization.
Fortunately, the latter two are least likely to be affected due to regularization of the estimates. However, in some cases especially the EEG part of the noise-covariance matrix estimate can be deficient, i.e., it may possess very small eigenvalues and thus regularization of the noise-covariance matrix is advisable.
Historically, the MNE software accomplishes the regularization by replacing a noise-covariance matrix estimate \(C\) with
where the index \(k\) goes across the different channel groups (MEG planar gradiometers, MEG axial gradiometers and magnetometers, and EEG), \(\varepsilon_k\) are the corresponding regularization factors, \(\bar{\sigma_k}\) are the average variances across the channel groups, and \(I^{(k)}\) are diagonal matrices containing ones at the positions corresponding to the channels contained in each channel group.
See How should I regularize the covariance matrix? for details.
Computation of the solution¶
The most straightforward approach to calculate the MNE is to employ expression for the original or whitened inverse operator directly. However, for computational convenience we prefer to take another route, which employs the singular-value decomposition (SVD) of the matrix
where the superscript \(^1/_2\) indicates a square root of \(R\). For a diagonal matrix, one simply takes the square root of \(R\) while in the more general case one can use the Cholesky factorization \(R = R_C R_C^T\) and thus \(R^{^1/_2} = R_C\).
With the above SVD it is easy to show that
where the elements of the diagonal matrix \(\Gamma\) are
With \(w(t) = U^T C^{-^1/_2} x(t)\) the expression for the expected current is
where \(\bar{v_k} = R^C v_k\), \(v_k\) being the \(k\) th column of \(V\). It is thus seen that the current estimate is a weighted sum of the ‘modified’ eigenleads \(v_k\).
It is easy to see that \(w(t) \propto \sqrt{L}\). To maintain the relation \((\tilde{G} R \tilde{G}^T) / \text{trace}(I) = 1\) when \(L\) changes we must have \(R \propto 1/L\). With this approach, \(\lambda_k\) is independent of \(L\) and, for fixed \(\lambda\), we see directly that \(j(t)\) is independent of \(L\).
Note
This is computed using mne.minimum_norm.make_inverse_operator()
and its usage is illustrated in Calculating the inverse operator.
Noise normalization¶
The noise-normalized linear estimates introduced by Dale et al. require division of the expected current amplitude by its variance. Noise normalization serves three purposes:
It converts the expected current value into a dimensionless statistical test variable. Thus the resulting time and location dependent values are often referred to as dynamic statistical parameter maps (dSPM).
It reduces the location bias of the estimates. In particular, the tendency of the MNE to prefer superficial currents is eliminated.
The width of the point-spread function becomes less dependent on the source location on the cortical mantle. The point-spread is defined as the MNE resulting from the signals coming from a point current source (a current dipole) located at a certain point on the cortex.
In practice, noise normalization requires the computation of the diagonal elements of the matrix
With help of the singular-value decomposition approach we see directly that
Under the conditions expressed at the end of Computation of the solution, it follows that the t-statistic values associated with fixed-orientation sources) are thus proportional to \(\sqrt{L}\) while the F-statistic employed with free-orientation sources is proportional to \(L\), correspondingly.
Note
A section discussing statistical considerations related to the noise normalization procedure will be added to this manual in one of the subsequent releases.
Note
The MNE software usually computes the square roots of the F-statistic to be displayed on the inflated cortical surfaces. These are also proportional to \(\sqrt{L}\).
Predicted data¶
Under noiseless conditions the SNR is infinite and thus leads to \(\lambda^2 = 0\) and the minimum-norm estimate explains the measured data perfectly. Under realistic conditions, however, \(\lambda^2 > 0\) and there is a misfit between measured data and those predicted by the MNE. Comparison of the predicted data, here denoted by \(x(t)\), and measured one can give valuable insight on the correctness of the regularization applied.
In the SVD approach we easily find
where the diagonal matrix \(\Pi\) has elements \(\pi_k = \lambda_k \gamma_k\) The predicted data is thus expressed as the weighted sum of the ‘recolored eigenfields’ in \(C^{^1/_2} U\).
Cortical patch statistics¶
use_cps
parameter in
mne.convert_forward_solution()
, and
mne.minimum_norm.make_inverse_operator()
controls whether to use cortical patch statistics (CPS) to define normal orientations
or not (see Cortical surface reconstruction with FreeSurfer).
The CPS contain for each vertex of the cortical surface the information
about the source space point closest to it as well as the distance
from the vertex to this source space point. The vertices for which
a given source space point is the nearest one define the cortical
patch associated with with the source space point. Once these data
are available, it is straightforward to compute the following
for each source location \(d\):
The average over the normals of at the vertices in a patch, \(\bar{n_d}\),
The areas of the patches, \(A_d\), and
The average deviation of the vertex normals in a patch from their average, \(\sigma_d\), given in degrees.
The orientation constraints¶
The principal sources of MEG and EEG signals are generally believed to be postsynaptic currents in the cortical pyramidal neurons. Since the net primary current associated with these microscopic events is oriented normal to the cortical mantle, it is reasonable to use the cortical normal orientation as a constraint in source estimation. In addition to allowing completely free source orientations, the MNE software implements three orientation constraints based of the surface normal data:
Source orientation can be rigidly fixed by specifying
fixed=True
when callingmne.minimum_norm.make_inverse_operator()
. In such case, the dipole orientations are fixed to be orthogonal to the surface of the cortex, pointing outwards. If cortical patch statistics are available the average normal over each patch, \(\bar{n_d}\), are used to define the source orientation. Otherwise, the vertex normal at the source space location is employed. See Fixed dipole orientationsA location independent or fixed loose orientation constraint (fLOC) can be employed by specifying
fixed=False
andloose=1.0
when callingmne.minimum_norm.make_inverse_operator()
. In this approach, a source coordinate system based on the local surface orientation at the source location is employed. By default, the three columns of the gain matrix G, associated with a given source location, are the fields of unit dipoles pointing to the directions of the x, y, and z axis of the coordinate system employed in the forward calculation (usually the MEG head coordinate frame). For LOC the orientation is changed so that the first two source components lie in the plane normal to the surface normal at the source location and the third component is aligned with it. Thereafter, the variance of the source components tangential to the cortical surface are reduced by a factor defined by theloose
parameter. See Loose dipole orientationsA variable loose orientation constraint (vLOC) can be employed by specifying
fixed=False
andloose
parameters when callingmne.minimum_norm.make_inverse_operator()
. This is similar to fLOC except that the value given with theloose
parameter will be multiplied by \(\sigma_d\), defined above. See Limiting orientations, but not fixing them
Depth weighting¶
The minimum-norm estimates have a bias towards superficial currents. This tendency can be alleviated by adjusting the source covariance matrix \(R\) to favor deeper source locations. In the depth weighting scheme employed in MNE analyze, the elements of \(R\) corresponding to the \(p\) th source location are be scaled by a factor
where \(g_{1p}\), \(g_{2p}\), and \(g_{3p}\) are the three columns
of \(G\) corresponding to source location \(p\) and \(\gamma\) is
the order of the depth weighting.
The maximal amount of depth weighting can be adjusted with depth
parameter in
mne.minimum_norm.make_inverse_operator()
.
Effective number of averages¶
It is often the case that the epoch to be analyzed is a linear combination over conditions rather than one of the original averages computed. As stated above, the noise-covariance matrix computed is originally one corresponding to raw data. Therefore, it has to be scaled correctly to correspond to the actual or effective number of epochs in the condition to be analyzed. In general, we have
where \(L_{eff}\) is the effective number of averages. To calculate \(L_{eff}\) for an arbitrary linear combination of conditions
we make use of the the fact that the noise-covariance matrix
which leads to
An important special case of the above is a weighted average, where
and, therefore
Instead of a weighted average, one often computes a weighted sum, a simplest case being a difference or sum of two categories. For a difference \(w_1 = 1\) and \(w_2 = -1\) and thus
or
Interestingly, the same holds for a sum, where \(w_1 = w_2 = 1\). Generalizing, for any combination of sums and differences, where \(w_i = 1\) or \(w_i = -1\), \(i = 1 \dotso n\), we have