{% load i18n static %}
{% load prices_i18n %}
{% load discount_amount_for from prices %}
{% load static %}
Invoice, order ID: {{ group.order.id }}
{% trans "Invoice" context "Order invoice" %}
| {% trans "Shipping Details" %} |
{% trans "Billing Details" %} |
{% with group.order.shipping_address as address %}
{% trans "Shipping address" context "Invoice shipping address" %}
{% include 'dashboard/includes/_address.html' with address=address only %}
{% endwith %}
|
{% with group.order.billing_address as address %}
{% trans "Billing address" context "Invoice billing address" %}
{% include 'dashboard/includes/_address.html' with address=address only %}
{% endwith %}
|
{% trans "Items Ordered" context "Order invoice" %}
{% if group %}
|
{% trans "Item" context "Shipment group table header" %}
|
{% trans "SKU" context "Shipment group table header" %}
|
{% trans "Price" context "Shipment group table header" %}
|
{% trans "Quantity" context "Shipment group table header" %}
|
{% trans "Total" context "Shipment group table header" %}
|
{% for item in group.items.all %}
{{ item.product_name|truncatechars:40 }}
|
{{ item.product_sku }}
|
{% gross item.get_price_per_item html=True %}
|
{{ item.quantity }}
|
{% gross item.get_total html=True %}
|
{% endfor %}
{% if group.shipping_price.gross or group.is_shipping_required %}
|
{% blocktrans trimmed with group_shipping_method_name=group.shipping_method_name context "Shipment group table item column data" %}
Shipping ({{ group_shipping_method_name }})
{% endblocktrans %}
|
{% gross group.shipping_price html=True %}
|
{% endif %}
{% endif %}
|
{% trans "Subtotal" context "Order subtotal" %}
|
{% gross group.order.get_subtotal_without_voucher html=True %}
|
|
{% trans "Total Shipping Price" context "Order totals header" %}
|
{% gross group.order.get_total_shipping html=True %}
|
|
{% trans "Grand total" context "Order totals header" %}
|
{% gross group.get_total html=True %}
|


Please enter a name and an optional description for the current state of the application. Doing so will allow you to restore your current work.


§803-33 Affidavit. A search warrant can be granted in no case but on an affidavit setting forth sufficient facts in the opinion of the magistrate to justify the issuing of the warrant. [PC 1869, c 48, §4; RL 1925, §3961; RL 1935, §5413; RL 1945, §10718; RL 1955, §255-18; HRS §708-33; ren L 1972, c 9, pt of §1]
Case Notes
Necessity of. 3 H. 393 (1872); 4 H. 584 (1883).
Nighttime search requires higher standard than probable cause. 56 H. 366, 537 P.2d 8 (1975).
Probable cause shown by affidavit can rest on hearsay, but some underlying circumstances should be set forth. 60 H. 205, 588 P.2d 909 (1978).


This repository contains an experimental drum machine UI derived from the kenwheeler/hooks-drum-machine project re-written using React4j. The project was used to experiment with newer Arez and React4j features.
This repository contains an experimental drum machine UI derived from the kenwheeler/hooks-drum-machine project re-written using React4j. The project was used to experiment with newer Arez and React4j features.


OTPCL interpreter/evaluator.
OTPCL's interpreter effectively revolves around repeatedly calling 2-arity functions ("commands"), the first argument being the actual list of arguments for that function/command, and the second being the current interpretation state (expressed as a tuple of two maps, one with all command definitions and one with all variable definitions). Each command-backing function in turn returns a tuple with a return value and an updated state.
To illustrate: when OTPCL's parser encounters the command invocation
foo bar baz
and sends the corresponding parse tree to the
interpreter, the interpreter in turn calls {Result, NewState} =
Fun([bar, baz], State)
(where Fun
is the value of the foo
key
in the first element of the State
tuple, Result
is the return
value for that command, and NewState
is the updated state).
This means it's pretty straightforward to define an OTPCL command yourself from within Erlang: simply define a 2-arity function where the first argument is a list and the second argument is a 2-element tuple of maps. A module that defines OTPCL commands can/should specify which functions in that module are "OTPCL-aware" in this fashion like so:
-module(my_otpcl_cmds). -export([foo/2, bar/2, baz/2]). -otpcl_cmds([foo, bar, baz]). % OTPCL-aware funs in the module foo([Thing], State) -> {ok, State}. bar([Thing1, Thing2], State) -> {{Thing1, Thing2}, State}. baz([Name, Val], State) -> otpcl_stdlib:set([Name, Val], State).
The interpreter itself is also an OTPCL-aware function in this sense (albeit with a simplification in that it does not require its first argument to be a list; it can take a parse tree directly). It can thus be invoked from within OTPCL:
otpcl> import otpcl_eval {ok,otpcl_eval} otpcl> eval {set foo "howdy~n"} ok otpcl> print $foo howdy ok otpcl> import otpcl_env ok otpcl> eval { ...> set foo "aloha~n" ...> print $foo ...> } [default_state] aloha [ ... pile of interpreter state ... ] otpcl> print $foo howdy ok
In fact, most OTPCL features are in turn implemented as OTPCL-aware command-backing functions; that is: OTPCL exposes its own functionality as OTPCL commands wherever it's possible/practical to do so.
Of course, one may also do this from any OTP application that uses OTPCL, e.g. one written in Erlang:
erl> State0 = otpcl_env:default_state(). [ ... pile of interpreter state ... ] erl> {ok, State1} = otpcl_stdlib:set([foo, <<"howdy~n">>], State0). [ ... pile of interpreter state ... ] erl> {ok, State2} = otpcl_eval:eval("print $foo", State1). howdy [ ... pile of interpreter state ... ]
column_no() = integer()
eval_error() = {error, reason(), state()}
eval_input() = string() | binary() | [token()]
eval_success() = {ok, state()}
filename() = any()
funs() = map()
level() = atom()
line_no() = integer()
position() = {filename(), line_no(), column_no()}
reason() = atom() | {atom(), any()}
token() = {char(), position()}
tree() = {parsed, level(), [tree()] | [token()]}
vars() = map()
| 'CMD_eval'/2 | |
| 'CMD_eval_file'/2 | |
| 'CMD_interpret'/2 | |
| eval/1 | Evaluate a string with the default OTPCL starting state. |
| eval/2 | Evaluate a string with a custom starting state. |
| eval_file/1 | Evaluate the named file with the default OTPCL starting state. |
| eval_file/2 | Evaluate the named file with a custom starting state. |
| interpret/1 | Interpret the parse nodes with the default OTPCL starting state. |
| interpret/2 | Interpret the parse nodes with a custom starting state. |
| make_atom/1 | Extract an atom from a token string. |
| make_atomic/1 | Extract a float, integer, or atom (in order of preference) from a token string. |
| make_binstring/1 | Extract a binary string from a token string. |
| make_charstring/1 | Extract a character string from a token string. |
'CMD_eval'(X1, State) -> any()
'CMD_eval_file'(X1, State) -> any()
'CMD_interpret'(X1, State) -> any()
eval(Src::eval_input()) -> eval_success() | eval_error()
Evaluate a string with the default OTPCL starting state.
eval(Src::eval_input(), State::state()) -> eval_success() | eval_error()
Evaluate a string with a custom starting state. eval(Src = [Char|_], State) when is_integer(Char) -> eval([Src], State); eval([Src, SubState], State) -> {eval([Src], SubState), State};
eval_file(Filename::filename()) -> eval_success() | eval_error()
Evaluate the named file with the default OTPCL starting state.
eval_file(Filename::filename(), State::state()) -> eval_success() | eval_error()
Evaluate the named file with a custom starting state.
interpret(Nodes::tree() | [tree()]) -> eval_success() | eval_error()
Interpret the parse nodes with the default OTPCL starting state.
interpret(InvalidNode::tree() | [tree()], State::state()) -> eval_success() | eval_error()
Interpret the parse nodes with a custom starting state.
make_atom(Tokens::[token()]) -> atom()
Extract an atom from a token string. This skips any attempt to check if an atom is a number (which means single-quoted atoms might technically be more efficient than unquoted atoms at the moment...).
make_atomic(Tokens::[token()]) -> atom() | integer() | float()
Extract a float, integer, or atom (in order of preference) from a token string.
make_binstring(Tokens::[token()]) -> binary()
Extract a binary string from a token string.
make_charstring(Tokens::[token()]) -> string()
Extract a character string from a token string.
Generated by EDoc


Smart home technology promises tremendous benefits for elderly people living alone. A smart home could notify the resident when it's time to take medicine, alert the hospital if the resident falls and track how much the resident is eating.  One builder estimates that a system like this could cost $20,000, which is less expensive than a full-time nursing home [source: Venkatesh]. It also allows adult children who might live elsewhere to participate in the care of their aging parent. Easy-to-control automated systems would provide similar benefits to those with disabilities or a limited range of movement.
About Smart homes


megnet.layers.graph.base module¶
- A full GN block has the following computation steps
Compute updated edge attributes
Aggregate edge attributes per node
Compute updated node attributes
Aggregate edge attributes globally
Aggregate node attributes globally
Compute updated global attribute
[1] https://arxiv.org/pdf/1806.01261.pdf
-
class
GraphNetworkLayer
(activation=None, use_bias=True, kernel_initializer='glorot_uniform', bias_initializer='zeros', kernel_regularizer=None, bias_regularizer=None, activity_regularizer=None, kernel_constraint=None, bias_constraint=None, **kwargs)[source]¶ Bases:
keras.engine.base_layer.Layer
Implementation of a graph network layer. Current implementation is based on neural networks for each update function, and sum or mean for each aggregation function
- Parameters
activation (str) – Default: None. The activation function used for each sub-neural network. Examples include ‘relu’, ‘softmax’, ‘tanh’, ‘sigmoid’ and etc.
use_bias (bool) – Default: True. Whether to use the bias term in the neural network.
kernel_initializer (str) – Default: ‘glorot_uniform’. Initialization function for the layer kernel weights,
bias_initializer (str) – Default: ‘zeros’
activity_regularizer (str) – Default: None. The regularization function for the output
kernel_constraint (str) – Default: None. Keras constraint for kernel values
bias_constraint (str) – Default: None .Keras constraint for bias values
- Method:
call(inputs, mask=None): the logic of the layer, returns the final graph compute_output_shape(input_shape): compute static output shapes, returns list of tuple shapes build(input_shape): initialize the weights and biases for each function phi_e(inputs): update function for bonds and returns updated bond attribute e_p rho_e_v(e_p, inputs): aggregate updated bonds e_p to per atom attributes, b_e_p phi_v(b_e_p, inputs): update the atom attributes by the results from previous step b_e_p and all the inputs
returns v_p.
rho_e_u(e_p, inputs): aggregate bonds to global attribute rho_v_u(v_p, inputs): aggregate atom to global attributes get_config(): part of keras interface for serialization
-
build
(input_shape)[source]¶ Creates the layer weights.
Must be implemented on all layers that have weights.
- # Arguments
- input_shape: Keras tensor (future input to layer)
or list/tuple of Keras tensors to reference for weight shape computations.
-
call
(inputs, mask=None)[source]¶ This is where the layer’s logic lives.
- # Arguments
inputs: Input tensor, or list/tuple of input tensors. **kwargs: Additional keyword arguments.
- # Returns
A tensor or list/tuple of tensors.
-
compute_output_shape
(input_shape)[source]¶ Computes the output shape of the layer.
Assumes that the layer will be built to match that input shape provided.
- # Arguments
- input_shape: Shape tuple (tuple of integers)
or list of shape tuples (one per output tensor of the layer). Shape tuples can include None for free dimensions, instead of an integer.
- # Returns
An output shape tuple.
-
get_config
()[source]¶ Part of keras layer interface, where the signature is converted into a dict :return:
-
phi_e
(inputs)[source]¶ This is for updating the edge attributes ek’ = phi_e(ek, vrk, vsk, u) :return:
-
phi_v
(b_e_p, inputs)[source]¶ Step 3. Compute updated node attributes v_i’ = phi_v(ar e_i, vi, u) :return:
-
rho_e_u
(e_p, inputs)[source]¶ let V’ = {v’} i = 1:Nv let E’ = {(e_k’, rk, sk)} k = 1:Ne ar e’ = rho_e_u(E’) :return:


Score: 0
Move the mouse to control the flashlight. Left click to spawn a new moth. Moths like light. Shine the flashlight on a
moth to feed it. The moth will try to stay in the light and eat, but don't let it eat too much or it will choke. If it
doesn't get enough light, it will shrivel and starve. Spawn as many moths as you can handle and try to keep them all
fed. The more moths you feed, the faster your score will increase. Click to start.
Oh noes! A moth . Your final score was . Click to play again.


Exposed databases are as bad as data breaches, and they're not going anywhere Hackers don't have to hack when companies make this mistake.
Letter to My Younger Self | Tim Shaw I want to explain to you why it’s so difficult for me to speak — the diagnosis, all of it — and what my life is like now, because one day you’ll be in my shoes, living with the same struggles.
Blue Peter's Christmas makes Why spend a fortune on expensive Christmas decorations and gifts, when you can make your own? Better still, you can rid your home of all those extraneous yoghurt pots, toilet roll holders, coat hangers and pipe cleaners in the process.
Update to Notarization Prerequisites - News - Apple Developer In June, we announced that all Mac software distributed outside the Mac App Store must be notarized by Apple in order to run by default on macOS Catalina. In September, we temporarily adjusted the notarization prerequisites to make this transition easier ...
notochrome.org Say No to Chrome - We can no longer pretend that Google is a positive force in the world.
Level Design Patterns in 2D Games This post discusses six common level design patterns present in 2D videogames that we found from analyzing over thirty 2D games.


Set
is a
Collection
that cannot contain duplicate elements. It models the mathematical set
abstraction. The Set
interface contains only methods
inherited from Collection
and adds the restriction that
duplicate elements are prohibited. Set
also adds a stronger
contract on the behavior of the equals
and hashCode
operations, allowing Set
instances to be compared meaningfully
even if their implementation types differ. Two Set
instances are
equal if they contain the same elements.
The following is the Set
interface.
public interface Set<E> extends Collection<E> { // Basic operations int size(); boolean isEmpty(); boolean contains(Object element); boolean add(E element); //optional boolean remove(Object element); //optional Iterator<E> iterator(); // Bulk operations boolean containsAll(Collection<?> c); boolean addAll(Collection<? extends E> c); //optional boolean removeAll(Collection<?> c); //optional boolean retainAll(Collection<?> c); //optional void clear(); //optional // Array Operations Object[] toArray(); <T> T[] toArray(T[] a); }
Set
implementations:
HashSet
, TreeSet
, and LinkedHashSet
.
HashSet
, which stores its elements in a hash table, is the best-performing
implementation; however it makes no guarantees concerning the order of iteration.
TreeSet
, which stores its elements in a red-black tree,
orders its elements based on their values; it is substantially slower than
HashSet
.
LinkedHashSet
, which is implemented as
a hash table with a linked list running through it, orders its elements based
on the order in which they were inserted into the set (insertion-order).
LinkedHashSet
spares its clients from the unspecified, generally
chaotic ordering provided by HashSet
at a cost that is only
slightly higher.
Here's a simple but useful Set
idiom. Suppose you have a
Collection
, c
, and you want to create another
Collection
containing the same elements but with all
duplicates eliminated. The following one-liner does the trick.
Collection<Type> noDups = new HashSet<Type>(c);
Set
(which, by definition, cannot contain a
duplicate), initially containing all the elements in c
. It uses
the standard conversion constructor described in the
The Collection Interface section.
Here is a minor variant of this idiom that preserves the order of the original collection while removing duplicate element.
Collection<Type> noDups = new LinkedHashSet<Type>(c);
The following is a generic method that encapsulates the preceding idiom, returning a Set
of the same generic type as the one passed.
public static <E> Set<E> removeDups(Collection<E> c) { return new LinkedHashSet<E>(c); }
size
operation returns the number of elements in the
Set
(its cardinality). The isEmpty
method
does exactly what you think it would. The add
method adds the
specified element to the Set
if it's not already present and
returns a boolean indicating whether the element was added.
Similarly, the remove
method removes the specified element from
the Set
if it's present and returns a boolean indicating whether
the element was present. The iterator
method returns an
Iterator
over the Set
.
The following
program
takes the
words in its argument list and prints out any duplicate words, the number of
distinct words, and a list of the words with duplicates eliminated.
import java.util.*; public class FindDups { public static void main(String[] args) { Set<String> s = new HashSet<String>(); for (String a : args) if (!s.add(a)) System.out.println("Duplicate detected: " + a); System.out.println(s.size() + " distinct words: " + s); } }
java FindDups i came i saw i left
Duplicate detected: i Duplicate detected: i 4 distinct words: [i, left, saw, came]
Collection
by its interface
type (Set
) rather than by its implementation type
(HashSet
). This is a strongly recommended programming
practice because it gives you the flexibility to change implementations merely by
changing the constructor. If either of the variables used
to store a collection or the parameters used to pass it around are declared
to be of the Collection
's implementation type rather than its interface type, all such variables and parameters must be changed in order to change its implementation type.
Furthermore, there's no guarantee that the resulting program will work. If the program uses any nonstandard operations present in the original implementation type but not in the new one, the program will fail. Referring to collections only by their interface prevents you from using any nonstandard operations.
The implementation type of the Set
in the preceding example is
HashSet
, which makes no guarantees as to the order of the elements
in the Set
. If you want the program to print the word list in
alphabetical order, merely change the Set
's implementation
type from HashSet
to TreeSet
. Making this trivial
one-line change causes the command line in the previous example to
generate the following output.
java FindDups i came i saw i left Duplicate detected: i Duplicate detected: i 4 distinct words: [came, i, left, saw]
Set
s;
when applied, they perform standard set-algebraic operations. Suppose
s1
and s2
are sets. Here's what bulk
operations do:
s1.containsAll(s2)
— returns true
if
s2
is a subset of s1
.
(s2
is a subset
of s1
if set s1
contains all of the elements in
s2
.)
s1.addAll(s2)
— transforms s1
into the
union of s1
and s2
. (The union of two sets
is the set containing all of the elements contained in either set.)
s1.retainAll(s2)
— transforms s1
into the
intersection of s1
and s2
. (The intersection
of two sets is the set containing only the elements common to both
sets.)
s1.removeAll(s2)
— transforms s1
into the
(asymmetric) set difference of s1
and s2
.
(For example, the set difference of s1
minus s2
is the set containing
all of the elements found in s1
but not in s2
.)
Set<Type> union = new HashSet<Type>(s1); union.addAll(s2); Set<Type> intersection = new HashSet<Type>(s1); intersection.retainAll(s2); Set<Type> difference = new HashSet<Type>(s1); difference.removeAll(s2);
Set
in the preceding
idioms is HashSet
, which is, as already mentioned,
the best all-around Set
implementation in the Java platform.
However, any general-purpose
Set
implementation could be substituted.
Let's revisit the FindDups
program. Suppose you
want to know which words in the argument list occur only once and which
occur more than once, but you do not want any duplicates printed out
repeatedly. This effect can be achieved by generating two sets —
one containing every word in the argument list and the other containing only
the duplicates. The words that occur only once are the set
difference of these two sets, which we know how to compute. Here's how
the resulting program
looks.
import java.util.*; public class FindDups2 { public static void main(String[] args) { Set<String> uniques = new HashSet<String>(); Set<String> dups = new HashSet<String>(); for (String a : args) if (!uniques.add(a)) dups.add(a); // Destructive set-difference uniques.removeAll(dups); System.out.println("Unique words: " + uniques); System.out.println("Duplicate words: " + dups); } }
i came i saw i left
),
the program yields the following output.
Unique words: [left, saw, came] Duplicate words: [i]
Set<Type> symmetricDiff = new HashSet<Type>(s1); symmetricDiff.addAll(s2); Set<Type> tmp = new HashSet<Type>(s1); tmp.retainAll(s2)); symmetricDiff.removeAll(tmp);
Set
s
beyond what they do for any other Collection
.
These operations are described in
The Collection Interface section.


Enter in the form, DayDay/MonthMonth/YearYear. For example, if I was born on January 9th, 2005, I would enter 09/01/05 because the 9th is the 09 day, January is the first month, and I take the last 2 digits of 2005.


| Year | Title | Authors |
|---|---|---|
| 2018 | WiFED: WiFi Friendly Energy Delivery with Distributed Beamforming | Subhramoy Mohanti, Northeastern University Elif Bozkaya, Istanbul Technical University M. Yousof Naderi, Northeastern University Berk Canberk, Istanbul Technical University Kaushik Chowdhury, Northeastern University |
| 2018 | Understanding Ethereum via Graph Analysis | Ting Chen, University of Electronic Science and Technology of China Yuxiao Zhu, Guangdong University of Technology Zihao Li, University of Electronic Science and Technology of China Jiachi Chen, Hong Kong Polytechnic University Xiaoqi Li, Hong Kong Polytechnic University Xiapu Luo, Hong Kong Polytechnic University Xiaodong Lin, Wilfrid Laurier University Xiaosong Zhang, University of Electronic Science and Technology of China |
| 2018 | Optimizing Age of Information in Wireless Networks with Throughput Constraints | Igor Kadota, Massachusetts Institute of Technology Abhishek Sinha, Massachusetts Institute of Technology Eytan Modiano, Massachusetts Institute of Technology |
| 2017 | One Step at a Time: Optimizing SDN Upgrades in ISP Networks | Konstantinos Poularakis, Yale University George Iosifidis, Yale University Georgios Smaragdakis, Massachusetts Institute of Technology Leandros Tassiulas, Yale University |
| 2016 | Heavy-Ball: A New Approach to Tame Delay and Convergence in Wireless Network Optimization | Jia Liu, Ohio State University Atilla Eryilmaz, Ohio State University Ness B. Shroff, Ohio State University Elizabeth Serena Bentley, Air Force Research Laboratory |
| 2015 | The Power of Slightly More than One Sample in Randomized Load Balancing | Lei Ying, Arizona State University R. Srikant, University of Illinois at Urbana-Champaign Xiaohan Kang, Arizona State University |
| 2014 | Joint Static and Dynamic Traffic Scheduling in Data Center Networks | Zizhong Cao, Polytechnic Institute of New York University M. Kodialam, Bell Labs T. V. Lakshman, Bell Labs |
| 2014 | Performance Evaluation and Asymptotics for Content Delivery Networks | Virag Shah & Gustavo de Veciana, University of Texas at Austin |
| 2013 | On the Steady-State of Cache Networks | Elisha J. Rosensweig, University of Massachusetts Amherst Daniel S. Menasche, University of Massachusetts Amherst Jim Kurose, University of Massachusetts Amherst |
| 2012 | Multi-resource allocation: Fairness-efficiency tradeoffs in a unifying framework | Carlee Joe-Wong, Princeton University Soumya Sen, Princeton University Tian Lan, George Washington University Mung Chiang, Princeton University |
| 2011 | Dynamic right-sizing for power-proportional data centers | Minghong Lin, California Institute of Technology Adam Wierman, California Institute of Technology Lachlan Andrew, Swinburne University of Technology Eno Thereska, Microsoft Research |
| 2010 | On the Feasibility and Efficacy of Protection Routing in IP Networks | Kin-Wah Kwong, University of Pennsylvania Lixin Gao, University of Massachusetts Amherst Roch Guérin, University of Pennsylvania Zhi-Li Zhang, University of Minnesota |
| 2009 | Queuing Network Models for Multi-Channel P2P Live Streaming Systems | Di Wu, Polytechnic Institute of New York University Yong Liu, Polytechnic Institute of New York University Keith W. Ross, Polytechnic Institute of New York University |
| 2008 | On the Feasibility of the Link Abstraction in (Rural) Mesh Networks | Dattatraya Gokhal, Indian Navy Sayandeep Sen, University of Wisconsin Kameswari Chebrolu, Indian Institute of Technology Bhaskaran Rama, Indian Institute of Technology |
| 2008 | Theoretical Results on Base Station Movement Problem for Sensor Networks | Yi Shi & Y. Thomas Hou, Virginia Tech |
| 2008 | Understanding the Capacity Region of the Greedy Maximal Scheduling Algorithm in Multi-hop Wireless Networks | Changhee Joo, Ohio State University Xiaojun Lin, Purdue University Ness B. Shroff, Ohio State University |
| 2007 | Disruption free topology reconfiguration in OSPF networks | Pierre Francois, Université catholique de Louvain Mike Shand, Cisco Systems Olicier Bonaventure, Université catholique de Louvain |
| 2006 | Delay and Capacity Trade-offs in Mobile Ad Hoc Networks: A Global Perspective | Gaurav Sharma, Purdue University Ravi Mazumdar, University of Waterloo Ness Shroff, Purdue University |
| 2005 | Perfect Simulation and Stationarity of a Class of Mobility Models | Jean-Yves Le Boude, École Polytechnique Fédérale de Lausanne Milan Vojnović, Microsoft Research |
| 2004 | Throughput-Delay Trade-Off in Wireless Networks | Abbas El Gamal, Stanford University James Mammen, Stanford University Balaji Prabhakar, Stanford University Devavrat Shah, Stanford University |
| 2003 | User-Level Performance of Channel-Aware Scheduling Algorithms in Wireless Data Networks | Sem Borst, Bell Labs |
| 2002 | Priority Service and Max-Min Fairness | Peter Marbach, University of Toronto |
| 2001 | Mobility increases the capacity of ad-hoc wireless networks | Matthias Grossglauser, AT&T Laboratories David Tse, University of California Berkeley |
| 2000 | The Chaotic Nature of TCP Congestion Control | András Veres, Ericsson Miklós Boda, Ericsson Research |
| 1999 | Bandwidth Sharing: Objectives and Algorithms | Laurent Massoulié, Microsoft Research James Robert, France Telecom |
| 1998 | Effective Bandwidths in Wireless Networks with Multiuser Receivers | David Tse, University of California Berkeley Stephen Hanly, University of Melbourne |
| 1996 | An algorithm for multicast tree generation in networks with asymmetric links | Ram Ramanathan, BBN Technologies |


class Larimar::UnknownPropertyException
- Larimar::UnknownPropertyException
- Exception
- Reference
- Object
Overview
describe an error due to inexisting property in a dataset
since version 0.1.0 author : Mead
describe an error due to inexisting property in a dataset
since version 0.1.0 author : Mead


(#) Using Dollar Escapes !!! ERROR: Using Dollar Escapes This is an error. Id : `LintImplDollarEscapes` Summary : Using Dollar Escapes Severity : Error Category : Lint Implementation Issues Platform : JDK Vendor : Android Open Source Project Feedback : https://issuetracker.google.com/issues/new?component=192708 Affects : Kotlin and Java files and test sources Editing : This check runs on the fly in the IDE editor Implementation : [Source Code](https://cs.android.com/android-studio/platform/tools/base/+/mirror-goog-studio-main:lint/libs/lint-checks/src/main/java/com/android/tools/lint/checks/LintDetectorDetector.kt) Tests : [Source Code](https://cs.android.com/android-studio/platform/tools/base/+/mirror-goog-studio-main:lint/libs/lint-tests/src/test/java/com/android/tools/lint/checks/LintDetectorDetectorTest.kt) Copyright Year : 2020 Instead of putting `${"$"}` in your Kotlin raw string literals you can simply use ＄. This looks like the dollar sign but is instead the full width dollar sign, U+FF04. And this character does not need to be escaped in Kotlin raw strings, since it does not start a string template. Lint will automatically convert references to ＄ in unit test files into a real dollar sign, and when pulling results and error messages out of lint, the dollar sign back into the full width dollar sign. That means you can use ＄ everywhere instead of `${"$"}`, which makes the test strings more readable -- especially `$`-heavy code such as references to inner classes. !!! Tip This lint check has an associated quickfix available in the IDE. (##) Example Here is an example of lint warnings produced by this check: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~text src/test/pkg/MyKotlinLintDetectorTest.kt:22:Error: In unit tests, use the fullwidth dollar sign, $, instead of $, to avoid having to use cumbersome escapes. Lint will treat a $ as a $. [LintImplDollarEscapes] println("Value=${"$"}") ------ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Here is the source file referenced above: `src/test/pkg/MyKotlinLintDetectorTest.kt`: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~kotlin linenumbers // Copyright (C) 2021 The Android Open Source Project package test.pkg import com.android.tools.lint.checks.infrastructure.LintDetectorTest import com.android.tools.lint.detector.api.Detector class MyKotlinLintDetectorTest : LintDetectorTest() { override fun getDetector(): Detector { return MyKotlinLintDetector() } fun testBasic() { val expected = """ src/test/pkg/AlarmTest.java:9: Warning: Value will be forced up to 5000 as of Android 5.1; don't rely on this to be exact [ShortAlarm] alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME, 50, 10, null); // ERROR ~~ 0 errors, 1 warnings """ lint().files( kotlin( """ fun test() { println("Value=${"$"}") } """ ), java( "src/test/pkg/AlarmTest.java", """ package test.pkg; import android.app.AlarmManager; @SuppressWarnings("ClassNameDiffersFromFileName") public class AlarmTest { public void test(AlarmManager alarmManager) { alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME, 5000, 60000, null); // OK alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME, 6000, 70000, null); // OK alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME, 50, 10, null); // ERROR alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME, 5000, // ERROR OtherClass.MY_INTERVAL, null); // ERROR } private static class OtherClass { public static final long MY_INTERVAL = 1000L; } } """.trimIndent() ) ).run().expect(expected) } } ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ You can also visit the [source code](https://cs.android.com/android-studio/platform/tools/base/+/mirror-goog-studio-main:lint/libs/lint-tests/src/test/java/com/android/tools/lint/checks/LintDetectorDetectorTest.kt) for the unit tests for this check to see additional scenarios. The above example was automatically extracted from the first unit test found for this lint check, `LintDetectorDetector.testProblems`. To report a problem with this extracted sample, visit https://issuetracker.google.com/issues/new?component=192708. (##) Suppressing You can suppress false positives using one of the following mechanisms: * Using a suppression annotation like this on the enclosing element: ```kt // Kotlin @Suppress("LintImplDollarEscapes") fun method() { expect(...) } ``` or ```java // Java @SuppressWarnings("LintImplDollarEscapes") void method() { expect(...); } ``` * Using a suppression comment like this on the line above: ```kt //noinspection LintImplDollarEscapes problematicStatement() ``` * Using a special `lint.xml` file in the source tree which turns off the check in that folder and any sub folder. A simple file might look like this: ```xml <?xml version="1.0" encoding="UTF-8"?> <lint> <issue id="LintImplDollarEscapes" severity="ignore" /> </lint> ``` Instead of `ignore` you can also change the severity here, for example from `error` to `warning`. You can find additional documentation on how to filter issues by path, regular expression and so on [here](https://googlesamples.github.io/android-custom-lint-rules/usage/lintxml.md.html). * In Gradle projects, using the DSL syntax to configure lint. For example, you can use something like ```gradle lintOptions { disable 'LintImplDollarEscapes' } ``` In Android projects this should be nested inside an `android { }` block. * For manual invocations of `lint`, using the `--ignore` flag: ``` $ lint --ignore LintImplDollarEscapes ...` ``` * Last, but not least, using baselines, as discussed [here](https://googlesamples.github.io/android-custom-lint-rules/usage/baselines.md.html).


COLD COMFORT FARM A film review by James Berardinelli Copyright 1996 James Berardinelli
RATING (0 TO 10): 7.5 Alternative Scale: *** out of ****
United States, 1996 U.S. Release Date: beginning 5/96 (limited) Running Length: 1:44 MPAA Classification: PG-13 (Sexual situations) Theatrical Aspect Ratio: 1.66:1
Cast: Kate Beckinsale, Eileen Atkins, Rufus Sewell, Ivan Kaye, Ian McKellan, Freddie Jones, Maria Miles, Joanna Lumley, Christopher Bowen, Stephen Fry, Sheila Burrell Director: John Schlesinger Screenplay: Malcolm Bradbury based on the novel by Stella Gibbons Cinematography: Chris Seager Music: Robert Lockhart U.S. Distributor: Gramercy Pictures
Over the last several years, director John Schlesinger, who once released fabulous films like MIDNIGHT COWBOY and SUNDAY, BLOODY SUNDAY, has developed an unfortunate tendency to make movies that border on unwatchable (PACIFIC HEIGHTS, EYE FOR AND EYE). With COLD COMFORT FARM, a feature originally produced for British TV, Schlesinger has chosen a lighter, less demanding story that results in one of his most successful productions in recent memory. There's nothing deep or meaningful to be unearthed in this feel-good comedy, but it nevertheless makes for solid entertainment.
Using an almost-apologetically gentle satire, COLD COMFORT FARM parodies Merchant-Ivory films and their ilk. Transpiring in the 1920s, the movie takes us to the dilapidated rural estate of Cold Comfort Farm, where recently-orphaned Flora Poste (Kate Beckinsale) has come to stay with distant relatives. In some way, the Starkadders, who inhabit Cold Comfort, owe a debt to her father, but, while no one will say what it is, they agree to give her free room and board. For her part, Flora intends to organize the untidy farm, as well as the lives of everyone who call it home.
The residents of Cold Comfort Farm are a strange lot. There's Judith Starkadder (Eileen Atkins), a middle-aged widow who continually prophesies disaster for her family. There are her sons, Seth (Rufus Sewell), who loves movies, and Reuben (Ivan Kaye), who loves farming. Judith's brother, Amos (Ian McKellan), is a fire-and-brimstone preacher. Her mother, Ada Doom (Sheila Burrell), the Cold Comfort matriarch, remains locked in her room. Also living in the house are Elfine (Maria Miles), a beautiful-but-flighty young woman who wants to marry a member of the gentry, and Adamsbreath (Freddie Jones), the family's faithful retainer.
With comic efficiency, Flora sets to work giving each member of the Starkadder clan what they want. There are no real characters here -- each member of the cast plays a certain period piece type to good effect. We sympathize with the men and women of Cold Comfort Farm largely because of strong performances, not because they're written with any depth or breadth. As is often true of satire, the people don't matter as much as the situations they're placed in.
COLD COMFORT FARM is not a vicious lampoon. The script cares about its characters and doesn't want to distance the audience. Some of the best satire comes near the end, while the various subplots are reaching happy conclusions. Schlesinger uses "Tara's Theme" from GONE WITH THE WIND to put the hilarious punctuation on a very funny scene. This sequence, the movie's comic highlight, had me nearly doubled over with laughter.
Kate Beckinsale, who made her movie debut as Hero in Kenneth Branagh's MUCH ADO ABOUT NOTHING, sparkles as Flora, bringing life and energy to this one-dimensional ersatz Jane Austen heroine. The supporting performers are all good, with special mention going to Ian McKellan. Here, acting the part of a preacher who speaks of nothing but hellfire and damnation, McKellan is both mesmerizing and undeniably funny.
With its comic refrains, takeoffs on Hollywood happy endings and stuffy British storylines, and feather-light tone, COLD COMFORT FARM is an excellent source of late spring entertainment. As was true of 1992's ENCHANTED APRIL, this is the kind of movie that offers a vacation from the seriousness of reality and other, more "important" motion pictures. There may not be intellectual enrichment forthcoming, but there's undeniable pleasure to be gained from watching Flora bring warmth to COLD COMFORT FARM.
- James Berardinelli e-mail<EMAIL_ADDRESS>web: http://www.cybernex.net/~berardin
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


public interface TaxonomyWriter extends Closeable , TwoPhaseCommit
Notes about concurrent access to the taxonomy:
An implementation must allow multiple readers and a single writer to be active concurrently. Readers follow so-called "point in time" semantics, i.e., a reader object will only see taxonomy entries which were available at the time it was created. What the writer writes is only available to (new) readers after the writer's commit() is called.
Faceted search keeps two indices - namely Lucene's main index, and this taxonomy index. When one or more readers are active concurrently with the writer, care must be taken to avoid an inconsistency between the state of these two indices: When writing to the indices, the taxonomy must always be committed to disk *before* the main index, because the main index refers to categories listed in the taxonomy. Such control can best be achieved by turning off the main index's "autocommit" feature, and explicitly calling commit() for both indices (first for the taxonomy, then for the main index). In old versions of Lucene (2.2 or earlier), when autocommit could not be turned off, a more complicated solution needs to be used. E.g., use some sort of (possibly inter-process) locking to ensure that a reader is being opened only right after both indices have been flushed (and before anything else is written to them).
| Modifier and Type | Method and Description |
|---|---|
int
|
addCategory
(
CategoryPath
categoryPath)
addCategory() adds a category with a given path name to the taxonomy,
and returns its ordinal.
|
int
|
getParent
(int ordinal)
getParent() returns the ordinal of the parent category of the category
with the given ordinal.
|
int
|
getSize
()
getSize() returns the number of categories in the taxonomy.
|
commit
,
commit
,
prepareCommit
,
prepareCommit
,
rollback
int addCategory( CategoryPath categoryPath) throws IOException
Before adding a category, addCategory() makes sure that all its ancestor categories exist in the taxonomy as well. As result, the ordinal of a category is guaranteed to be smaller then the ordinal of any of its descendants.
IOException
int getParent(int ordinal) throws IOException
When a category is specified as a path name, finding the path of its parent is as trivial as dropping the last component of the path. getParent() is functionally equivalent to calling getPath() on the given ordinal, dropping the last component of the path, and then calling getOrdinal() to get an ordinal back.
If the given ordinal is the ROOT_ORDINAL, an INVALID_ORDINAL is returned. If the given ordinal is a top-level category, the ROOT_ORDINAL is returned. If an invalid ordinal is given (negative or beyond the last available ordinal), an ArrayIndexOutOfBoundsException is thrown. However, it is expected that getParent will only be called for ordinals which are already known to be in the taxonomy. TODO (Facet): instead of a getParent(ordinal) method, consider having a
getCategory(categorypath, prefixlen) which is similar to addCategory except it doesn't add new categories; This method can be used to get the ordinals of all prefixes of the given category, and it can use exactly the same code and cache used by addCategory() so it means less code.
IOException
int getSize()
Because categories are numbered consecutively starting with 0, it means the taxonomy contains ordinals 0 through getSize()-1.
Note that the number returned by getSize() is often slightly higher than the number of categories inserted into the taxonomy; This is because when a category is added to the taxonomy, its ancestors are also added automatically (including the root, which always get ordinal 0).


| Usage | Synopsis |
|---|---|
| General | $ tns help [<Command>] |
Opens the command reference for all commands in your browser or shows information about the selected command in the browser.
To list all commands available in the console, run $ tns -h
To print information about a selected command in the console, run $ tns <Command> -h
<Command>
is any of the available commands as listed by $ tns help
or $ tns -h
| Command | Description |
|---|---|
| usage-reporting | Configures anonymous usage reporting for the NativeScript CLI. |
| error-reporting | Configures anonymous error reporting for the NativeScript CLI. |
| autocomplete | Prints your current command-line completion settings. If disabled, prompts you to enable it. |
| doctor | Checks your system for configuration problems which might prevent the NativeScript CLI from working properly. |
| info | Displays version information about the NativeScript CLI, core modules, and runtimes. |


Hello, start by uploading a research paper that you want to look into for prerequisites.
It seems that we can't find the title for the paper. Could you please copy paste it into the box below and press submit.
Sorry but the paper uploaded has no concepts.
Invalid file uploaded. Please upload a different file.
Invalid title, please enter the title again.


The deployment policy based on the sources modification. Two modes:
- on each build. Whatever the sources changes the deployment task is executed (default mode).
- on sources modification. The deployment task is executed if the project sources has been modified.
Note that setting this option overrides individual policies selected above.


enum class Rank
Enum with of all piece ranks
BOMB |
|
MARSHAL |
|
GENERAL |
|
COLONEL |
|
MAJOR |
|
CAPTAIN |
|
LIEUTENANT |
|
SERGEANT |
|
MINER |
|
SCOUT |
|
SPY |
|
FLAG |
count |
number of pieces with this rank val count: Int |
rank |
short title val rank: String |
title |
long title val title: String |
attacks |
fun attacks(rank: Rank): Result |
getDefaultPosition |
fun getDefaultPosition(ownerId: PlayerId): GridPoint2 |


KISS THE GIRLS
A Film Review by James Berardinelli
RATING (0 TO 10): 7.0 Alternative Scale: *** out of ****
United States, 1997 U.S. Release Date: 10/3/97 (wide) Running Length: 2:00 MPAA Classification: R (Violence, profanity, mature themes) Theatrical Aspect Ratio: 2.35:1
Cast: Morgan Freeman, Ashley Judd, Cary Elwes, Tony Goldwyn, Jay O. Sanders, Bill Nunn, Brian Cox, Alex McArthur, Richard T. Jones, Jeremy Piven, William Converse-Roberts, Gina Ravera Director: Gary Fleder Producers: David Brown and Joe Wizan Screenplay: David Klass, based on the novel by James Patterson Cinematography: Aaron Schneider Music: Mark Isham U.S. Distributor: Paramount Pictures
Every time audiences are presented with a reasonably well-made serial killer movie, they line up for it. Why? Human beings are irresistibly fascinated by the lurid, the horrifying, and the depraved, and what could be more attention-grabbing than an individual who murders repeatedly in sick and twisted ways? Of course, serial killers (both real and fictional) have provided material for countless movies, but most of those are artless hack jobs, replacing tension and intelligence with gore and cliches. So, when a movie comes along that's a cut above the usual, it's worth making note of. KISS THE GIRLS is such a film.
I'm not saying that KISS THE GIRLS is a great motion picture, nor am I arguing that it's the best of its kind to come out in recent years. But it features a pair of well-developed characters, the plot contains some clever twists and turns, the dialogue is reasonable, and director Gary Fleder (THINGS TO DO IN DENVER WHEN YOU'RE DEAD) keeps the level of tension and intrigue high. Put together, all of that adds up to a worthwhile motion picture. Fans of SEVEN, COPYCAT, and SILENCE OF THE LAMBS will likely agree that their $8 admission for KISS THE GIRLS is well spent.
KISS THE GIRLS wouldn't be nearly as involving without the two strong performances of the leads. Morgan Freeman, in a role not unlike the one he essayed in SEVEN, plays Dr. Alex Cox, a Washington D.C. forensic pathologist who travels to Durham, N.C., when his niece, Naomi (Gina Ravera), disappears. Freeman plays Alex as an insightful, confident investigator with powerful emotions bubbling just beneath his calm, carefully-controlled exterior. Despite a less-than-enthusiastic greeting by Durham's chief of police, Alex learns that Naomi is the eighth young woman to disappear recently, all of whom fit the same description: intelligent, strong-willed, college-age, attractive, and talented. Three are already dead, but Alex suspects that the primary interest of the killer (who calls himself "Casanova") is not murder. Instead, the doctor sees him as "a collector."
Disappearance #9 is Dr. Kate McTiernan (Ashley Judd), an intern at the Carolina Regional Medical Center. As Kate, Judd adds another impressive performance to a growing resume. The actress plays her character as outwardly-tough and self-sufficient with an inner core of vulnerability.  Nevertheless, vulnerability, whether emotional or physical, is something she has a hard time coping with. One night, Kate is abducted from her house and brought to a lightless room where she is bound and drugged. But, by taking her masked captor unawares, she escapes in what is one of KISS THE GIRLS' best filmed-sequences (it uses a never-stationary camera and a numerous point-of-view shots to convey Kate's anxiety in the midst of a menacing forest that is concealing Casanova as he pursues her). Later, after surviving a fall into a river where she nearly drowns, Kate joins forces with Alex for one purpose: to bring Casanova to justice.
One thing I appreciate about KISS THE GIRLS is its willingness to spend time developing the characters before jumping into the main story. During the first twenty minutes, we gather information about both Alex and Kate. Later, the relationship between these two is developed in an intentionally ambiguous manner. There are times when it manifests itself almost as a father/daughter bond, but, on other occasions, there's a sense of latent romance. However, the film underplays this dynamic to avoid wandering off on a tangent.
Despite being consistently involving, KISS THE GIRLS, based on the best-selling novel by James Patterson, has its share of flaws. On several occasions, the film's blatant ignorance of real-world police procedures strains the viewer's credibility. I found it hard to accept that one man, even if he is a brilliant and respected police psychologist, could carry on an unsanctioned investigation in such a high-profile case (especially considering that a key member of his team, Kate, is a civilian and a witness). I also have a gripe about the end scenes, which are overly familiar.
With one exception, the acting is solid. That exception is Cary Elwes, who has been playing a parody of his previous self ever since starring in Mel Brooks' failed Robin Hood spoof, MEN IN TIGHTS. Although Elwes only portrays a small-town cop, and doesn't steal any scenes, he's never particularly believable, and every time he's on screen, he sticks out like a sore thumb. Other, more effective supporting actors include Brian Cox as Durham's chief detective, Bill Nunn as one of Alex's associates, Jay O. Sanders as the FBI agent in charge of the official investigation, and Tony Goldwyn as a West Coast plastic surgeon who may in some way be involved with the crimes.
The film makers, with a nod to the success of SEVEN, have apparently decided to mimic the grim atmosphere and in-your-face cinematography of that movie (light, darkness, and shadow are used to great effect here). Stylistically, KISS THE GIRLS is very similar, and the presence of Morgan Freeman only heightens the connection. Even though there are vast plot differences between the two, both are well- made and are likely to appeal to the same kind of audience. So, much like SEVEN, KISS THE GIRLS makes for a suspenseful, if somewhat bleak, two hours.
Copyright 1997 James Berardinelli
- James Berardinelli e-mail<EMAIL_ADDRESS>The website has moved!! The new address is: http://movie-reviews.colossus.net/
"The cinema is not an art which films life: the cinema is something between art and life. Unlike painting and literature, the cinema both gives to life and takes from it..."
- Jean-Luc Godard
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Welcome to Psyutils’s documentation!¶
The psyutils
package is a collection of utility functions useful
for generating visual stimuli and analysing the results of psychophysical experiments. It is a work in progress, and changes as I work. It includes various helper functions for dealing with images, including creating and applying various filters in the frequency domain.
It is NOT an experimental display software package. It is intended to compliment something like PsychoPy <http://www.psychopy.org>_.
It is intended only for internal use in my <http://www.tomwallis.info>_ science at this stage. It is provided publicly to facilitate reproducibility of research. Use these functions at your own risk. Everything, including testing, is incomplete and open to change at any time.
Subpackages¶
image
. Theimage
subpackage includes functions for filteringimages and creating filtered noise stimuli, and otherwise interacting with images.
dist
: functions for creating probability distributions over axes. Currently just used to create filters.im_data
. Theim_data
subpackage includes images and data fortesting purposes.*
files
. Contains helper functions for working with directories and file structures.
psydata
: helper functions for working with psychophysical data (binary responses as a function of some stimulus).
misc
. This is a miscellaneous subpackage.
Example Use¶
You could do things like this:
import numpy as np
import psyutils as pu
im = np.random.uniform(size=(256, 256))
filt = pu.image.make_filter_lowpass(im_size, cutoff=8)
im2 = pu.image.filter_image(im, filt)
pu.image.show_im(im2)
Dependencies¶
Psyutils depends on numpy, scipy, scikit-image and the psycircstat package.
Testing¶
You can run unit tests by typing
nosetests -v –with-coverage –cover-package=psyutils
from the command line in the project’s parent directory.
Contributions¶
Thomas Wallis wrote these functions based somewhat on shared code used in Matlab by Peter Bex’s lab at the Schepens Eye Research Institute. I also borrowed some stuff from the scikit-image package. Function abstraction, pythonic niceness and other sweet programming improvements were suggested by David Janssen.
Thanks To¶
Many of these functions are based on Matlab functions originally written by Peter Bex. Tom Wallis also thanks Matthias Kümmerer for Python help and suggestions.


Galvanize Delivers
Order
Menu
Royale with Cheese
$8.99
Add to order
Arugula Pie
$11.99
Add to order
Smoked Swine
$14.99
Add to order
Ice Cream Biscuit
$7.99
Add to order
Order
Item
Price
Subtotal
Tax
Total
account_circle
Name
phone
Telephone
business
Address
Place Order
send


Here we continue to review the example from section 3.2.1. This time we apply Ridge regression to it. For an overview of the methods, please refer to Linear Methods for Regression (section 3.4).
As usual, we first load the relevant libraries
import pandas as pd
import somefunctions as sf
from sklearn.preprocessing import StandardScaler
import matplotlib.pyplot as plt
import numpy as np
from sklearn import linear_model
we then load the dataset and select the training data
url = "https://web.stanford.edu/~hastie/ElemStatLearn/datasets/prostate.data"
names = ['lcavol', 'lweight', 'age', 'lbph', 'svi', 'lcp', 'gleason', 'pgg45', 'lpsa', 'train']
dataset = pd.read_csv(url, delim_whitespace=True, skiprows=[0], names=names)
array = dataset.values[:, :9]
scaler = StandardScaler(with_mean=False).fit(array)
rescaled = scaler.transform(array)
rescaledTrain = rescaled[dataset['train'] == 'T']
X = np.array(rescaledTrain[:, 0:8])
y = np.array(rescaledTrain[:, 8])
and implement the Ridge regression
n_alphas = 200
alphas = np.logspace(-2, 5, num=n_alphas)[::-1]
t = sf.SomeFunctions()
def func(la):
"""Edof."""
res = t.effectiveDofF(X, y, la)
return res
vfunc = np.vectorize(func)
dof = vfunc(alphas)
coefs = []
for a in alphas:
ridge = linear_model.Ridge(alpha=a, fit_intercept=True)
ridge.fit(X, y)
coefs.append(ridge.coef_)
The results are graphed as follows
ax = plt.gca()
lob = ax.plot(dof, coefs)
plt.legend(iter(lob), names[:8])
plt.xlabel('degrees of freedom')
plt.ylabel('coefficients')
plt.title('Ridge coefficients as a function of the degrees of freedom')
plt.axis('tight')
plt.show()


When you become a leader, success is all about growing others."
Jack Welch
We do this by empowering women to refine their definitions of career success and pursue them, whilst embracing personal development activities to be confident, proactive and supportive towards helping others.
We believe in consensus building, and wish to include men in the conversation; We equip both men and women with the right tools for holistic leadership. To build a brighter future, we must be able to listen to each other.
How can women lead men if they cannot garner their respect? And how can a man lead well if he cannot respect women, his peers, in the process?
Our society is a forum for discussion and empowerment, and an avenue for social good in our communities.
We are a world-leading provider of management consulting, technology and outsourcing services and have recently evolved our capabilities through the creation of a new business structure.
Passion to Perform.
At Deutsche Bank this is the way we do business and the type of people we're looking for.
We aspire to be the leading client-centric global universal bank.
Towers Watson is a leading global professional services company that helps organisations improve performance through effective people, risk and financial management. With 16,000 associates around the world, we offer consulting, technology and solutions in the areas of benefits, talent management, rewards, and risk and capital management. Learn more at towerswatson.com
Slaughter and May is widely regarded as one of the most prestigious law firms in the world. We advise on high profile and groundbreaking international transactions and have an excellent and varied client list. We recruit approximately 75-80 trainee solicitors per year and also offer work experience opportunities at Easter, over the summer and in December.
Norton Rose Fulbright is a global legal practice. We provide the world’s pre-eminent corporations and financial institutions with a full business law service. We have more than 3800 lawyers based in over 50 cities across Europe, the United States, Canada, Latin America, Asia, Australia, Africa, the Middle East and Central Asia. Recognised for our industry focus, we are strong across all the key industry sectors: financial institutions; energy; infrastructure, mining and commodities; transport; technology and innovation; and life sciences and healthcare.
Your Career. Your Way.
At J.P. Morgan, we are a core part of the global financial community, helping businesses, markets and communities grow and develop in more than 100 countries. Working with us means you’ll learn from our team of experts in a supportive and collaborative environment and gain the skills to make a direct contribution to a firm with a legacy lasting over 200 years.
We want to see your creativity, communications skills and drive. Whilst your academic achievements are important, we’re also looking to see your individuality and passion as demonstrated by extra curricular activities. We believe that every individual is in charge of their own career path, and we want to help you to fulfil your potential.
Full-time program deadline:
October 18, 2015: Investment Banking
November 9, 2015: Global Investment Management, Global Wealth Management, Risk Management
January 31, 2016: Finance, Human Resources, Operations and Technology
Summer internship program deadline:
November 30, 2015: Global Investment Management, Global Wealth Management, Investment Banking, Investor Services, Risk Management, Sales, Trading & Research and Treasury Services
January 31, 2016: Finance, Human Resources, Operations and Technology
Pre-internship program deadline:
November 30, 2015: Global Investment Management, Global Wealth Management, Investment Banking, Risk Management and Sales, Trading & Research
January 31, 2016: Operations and Technology
To find out more about how you can join us, visit jpmorgan.com/careers
Facebook: jpmorganchasecareers
LinkedIn: j-p-morgan
Twitter: jpmorgan
YouTube: jpmorgan
The Leading Women Society would like to thank our amazing partners and collaborators for being integral to many of our successful events.
If you have any queries, please get in touch with us :)
Our Latest News and Blog posts.
View Our Events CalendarClick the button below for more.
More News


This text should be autosized to 20px computed font size (16 * 400/320), since the position:absolute causes this to be a new cluster.
This text should be autosized to 21px computed font size (16 * 420/320), since the float:left causes this to be a new cluster.
This text should be autosized to 22px computed font size (16 * 440/320), since the perpendicular writing-mode compared to its containing block causes this to be a new cluster. Unfortunately due to
http://webkit.org/b/96557 the height:440px is incorrectly interpreted as constraining the logicalHeight, so it doesn't get autosized.


| 1 | package fr.sii.ogham.sms.sender.impl.cloudhopper.session; | |
| 2 | ||
| 3 | import static fr.sii.ogham.core.retry.NamedCallable.named; | |
| 4 | ||
| 5 | import org.slf4j.Logger; | |
| 6 | ||
| 7 | import com.cloudhopper.smpp.SmppClient; | |
| 8 | import com.cloudhopper.smpp.SmppSession; | |
| 9 | ||
| 10 | import fr.sii.ogham.core.exception.retry.MaximumAttemptsReachedException; | |
| 11 | import fr.sii.ogham.core.exception.retry.RetryException; | |
| 12 | import fr.sii.ogham.core.exception.retry.RetryExecutionInterruptedException; | |
| 13 | import fr.sii.ogham.core.retry.RetryExecutor; | |
| 14 | import fr.sii.ogham.sms.builder.cloudhopper.SmppClientSupplier; | |
| 15 | import fr.sii.ogham.sms.builder.cloudhopper.SmppSessionHandlerSupplier; | |
| 16 | import fr.sii.ogham.sms.sender.impl.cloudhopper.ExtendedSmppSessionConfiguration; | |
| 17 | import fr.sii.ogham.sms.sender.impl.cloudhopper.exception.ConnectionFailedException; | |
| 18 | import fr.sii.ogham.sms.sender.impl.cloudhopper.exception.SmppException; | |
| 19 | ||
| 20 | /** | |
| 21 | * Base class for different session handling strategies. | |
| 22 | * | |
| 23 | * <p> | |
| 24 | * It provides useful methods to initialize a client and a session. It provides | |
| 25 | * a method to connect (bind) to the SMSC with retry handling. It also provides | |
| 26 | * method to cleanup. The implementations can then use this methods as they | |
| 27 | * wish. | |
| 28 | * | |
| 29 | * @author Aurélien Baudet | |
| 30 | * | |
| 31 | */ | |
| 32 | public abstract class BaseSessionHandlingStrategy implements SessionHandlingStrategy { | |
| 33 | protected final Logger logger; | |
| 34 | protected final ExtendedSmppSessionConfiguration configuration; | |
| 35 | protected final SmppClientSupplier clientSupplier; | |
| 36 | protected final SmppSessionHandlerSupplier smppSessionHandlerSupplier; | |
| 37 | protected final RetryExecutor retry; | |
| 38 | protected SmppClient currentClient; | |
| 39 | protected SmppSession currentSession; | |
| 40 | ||
| 41 | public BaseSessionHandlingStrategy(Logger logger, ExtendedSmppSessionConfiguration configuration, SmppClientSupplier clientSupplier, SmppSessionHandlerSupplier smppSessionHandlerSupplier, | |
| 42 | RetryExecutor retry) { | |
| 43 | super(); | |
| 44 | this.logger = logger; | |
| 45 | this.configuration = configuration; | |
| 46 | this.clientSupplier = clientSupplier; | |
| 47 | this.smppSessionHandlerSupplier = smppSessionHandlerSupplier; | |
| 48 | this.retry = retry; | |
| 49 | } | |
| 50 | ||
| 51 | /** | |
| 52 | * Initializes a new session only if session doesn't exist (is | |
| 53 | * {@code null}). | |
| 54 | * | |
| 55 | * <p> | |
| 56 | * A {@link SmppClient} instance must exist (either using | |
| 57 | * {@link #initClient()} or by manually creating it). The same | |
| 58 | * {@link SmppClient} may be used several times for different sessions. | |
| 59 | * | |
| 60 | * <p> | |
| 61 | * The creation of a session is done by calling | |
| 62 | * {@link #connect(SmppClient)}. | |
| 63 | * | |
| 64 | * @throws SmppException | |
| 65 | * when session couldn't be created | |
| 66 | */ | |
| 67 | protected synchronized void initSession() throws SmppException { | |
| 68 |
1
1. initSession : negated conditional → RUN_ERROR |
if (currentSession == null) { |
| 69 | logger.debug("Requesting a new SMPP session"); | |
| 70 | currentSession = connect(currentClient); | |
| 71 | logger.debug("SMPP session bound"); | |
| 72 | } | |
| 73 | } | |
| 74 | ||
| 75 | /** | |
| 76 | * Connect the client to the SMSC using a | |
| 77 | * {@link SmppClient#bind(com.cloudhopper.smpp.SmppSessionConfiguration, com.cloudhopper.smpp.SmppSessionHandler)} | |
| 78 | * request. | |
| 79 | * | |
| 80 | * <p> | |
| 81 | * The configured retry strategy is used to send the bind request to the | |
| 82 | * server i.e. several attempts may be done. | |
| 83 | * | |
| 84 | * @param client | |
| 85 | * the client used to send to bind command | |
| 86 | * @return the created session | |
| 87 | * @throws SmppException | |
| 88 | * when the session couldn't be bound | |
| 89 | */ | |
| 90 | protected synchronized SmppSession connect(final SmppClient client) throws SmppException { | |
| 91 | try { | |
| 92 |
2
1. connect : replaced return value with null for fr/sii/ogham/sms/sender/impl/cloudhopper/session/BaseSessionHandlingStrategy::connect → RUN_ERROR 2. lambda$connect$0 : replaced return value with null for fr/sii/ogham/sms/sender/impl/cloudhopper/session/BaseSessionHandlingStrategy::lambda$connect$0 → RUN_ERROR |
return retry.execute(named("Connection to SMPP server", () -> client.bind(configuration, smppSessionHandlerSupplier.get()))); |
| 93 | } catch (RetryExecutionInterruptedException e) { | |
| 94 |
1
1. connect : removed call to java/lang/Thread::interrupt → NO_COVERAGE |
Thread.currentThread().interrupt(); |
| 95 | throw new ConnectionFailedException("Failed to initialize SMPP session (interrupted)", e); | |
| 96 | } catch (MaximumAttemptsReachedException e) { | |
| 97 | throw new ConnectionFailedException("Failed to initialize SMPP session after maximum retries reached", e); | |
| 98 | } catch (RetryException e) { | |
| 99 | throw new ConnectionFailedException("Failed to initialize SMPP session", e); | |
| 100 | } | |
| 101 | } | |
| 102 | ||
| 103 | /** | |
| 104 | * Create a {@link SmppClient} instance of not existing (is {@code null}). | |
| 105 | */ | |
| 106 | protected synchronized void initClient() { | |
| 107 |
1
1. initClient : negated conditional → RUN_ERROR |
if (currentClient == null) { |
| 108 | logger.debug("Requesting a new SmppClient instance"); | |
| 109 | currentClient = clientSupplier.get(); | |
| 110 | } | |
| 111 | } | |
| 112 | ||
| 113 | /** | |
| 114 | * Send an unbind command to the server to properly close the session, close | |
| 115 | * the session and cleanup everything related to the session. The current | |
| 116 | * session is set to {@code null}. | |
| 117 | */ | |
| 118 | protected synchronized void destroySession() { | |
| 119 |
1
1. destroySession : negated conditional → RUN_ERROR |
if (currentSession != null) { |
| 120 | logger.debug("Closing SMPP session"); | |
| 121 |
1
1. destroySession : removed call to com/cloudhopper/smpp/SmppSession::unbind → RUN_ERROR |
currentSession.unbind(configuration.getUnbindTimeout()); |
| 122 |
1
1. destroySession : removed call to com/cloudhopper/smpp/SmppSession::destroy → RUN_ERROR |
currentSession.destroy(); |
| 123 | currentSession = null; | |
| 124 | } | |
| 125 | } | |
| 126 | ||
| 127 | /** | |
| 128 | * Destroy (cleanup everything) the client. The client is set to | |
| 129 | * {@code null}. | |
| 130 | */ | |
| 131 | protected synchronized void destroyClient() { | |
| 132 |
1
1. destroyClient : negated conditional → RUN_ERROR |
if (currentClient != null) { |
| 133 | logger.debug("Destroying SMPP client"); | |
| 134 |
1
1. destroyClient : removed call to com/cloudhopper/smpp/SmppClient::destroy → RUN_ERROR |
currentClient.destroy(); |
| 135 | currentClient = null; | |
| 136 | } | |
| 137 | } | |
| 138 | } | |
Mutations | ||
| 68 |
1.1 |
|
| 92 |
1.1 2.2 |
|
| 94 |
1.1 |
|
| 107 |
1.1 |
|
| 119 |
1.1 |
|
| 121 |
1.1 |
|
| 122 |
1.1 |
|
| 132 |
1.1 |
|
| 134 |
1.1 |


There's a lot more to learn about building web sites and applications with jQuery than can fit in API documentation. If you're
looking for explanations of the basics, workarounds for common problems, best practices, and how-tos, you're in the
right place!
Slide
There's a lot more to learn about building web sites and applications with jQuery than can fit in API documentation. If you're
looking for explanations of the basics, workarounds for common problems, best practices, and how-tos, you're in the
right place!


This is an EPICS areaDetector driver for the Pilatus pixel array detectors from Dectris.
The interface to the detector is via a TCP/IP socket interface to the camserver server that Dectris provides. The camserver program must be started before the areaDetector software is started, typically by running the camonly script provided by Dectris.
The camserver program saves the data to disk as TIFF or CBF files. The areaDetector software reads these disk files in order to read the data, because camserver does not provide another mechanism to access the data. If camserver is saving TIFF files then the driver reads the TIFFImageDescription tag from the TIFF file. This is a long string that camserver writes to the file containing all of the detector settings, including threshold, energy, etc. The driver adds this information to the NDArray using an NDAttribute called TIFFImageDescription. The NDFileTIFF plugin in ADCore R2-6 was changed to write this complete attribute to the TIFFImageDescription tag in the new TIFF file. It will also be written by the NDFileNetCDF, NDFileHDF5, and NDFileNexus plugins. However these plugins are currently limited to 256 character string attributes, so some of the information will be lost because the string is longer than 256 characters.
This driver inherits from ADDriver. It implements many of the parameters in asynNDArrayDriver.h and in ADArrayDriver.h. It also implements a number of parameters that are specific to the Pilatus detectors.The pilatusDetector class documentation describes this class in detail.
The following table describes how the Pilatus driver implements some of the standard driver parameters.
| Parameter Definitions in pilatusDetector.cpp and EPICS Record Definitions in pilatus.template | ||
| Parameter index variable | EPICS record name | Description |
|---|---|---|
| ADTriggerMode | $(P)$(R)TriggerMode |
The driver redefines the choices for the ADTriggerMode parameter (record $(P)$(R)TriggerMode)
from ADDriver.h. The choices for the Pilatus are:
Exposure ,
ExtEnable , ExtTrigger , and ExtMTrigger respectively.
Alignment mode uses the Exposure command as well, but continuously
takes images into the same temporary file (alignment.tif ). |
| ADAcquireTime | $(P)$(R)AcquireTime | Controls the acquisision time in all modes except External Enable. In External Enable mode the timing is controlled entirely by the external trigger line. However, even in ExternalEnable mode AcquireTime is used by camserver and by the driver to estimate how long the acquisition will take. Hardware timeouts will occur if the actual time to acquire differs significantly from the estimated time based on AcquireTime and AcquirePeriod. |
| ADNumImages | $(P)$(R)NumImages | Controls the number of images to acquire. It applies in all trigger modes except Alignment. |
| ADAcquirePeriod | $(P)$(R)AcquirePeriod | Controls the exposure period in seconds in Internal or External Trigger modes when NumImages >1. In External Enable mode the timing is controlled entirely by the external trigger line. However, even in ExternalEnable mode AcquirePeriod is used by camserver and by the driver to estimate how long the acquisition will take. Hardware timeouts will occur if the actual time to acquire differs significantly from the estimated time based on AcquireTime and AcquirePeriod. |
| ADNumExposures | $(P)$(R)NumExposures | Controls the number of exposures per image. It is most useful in External Enable mode, but it can be set in any mode. |
| ADAquire | $(P)$(R)Acquire | Controls the acquisition. Setting this to 1 starts image acquisition. The driver sets the record to 0 when acquisition is complete. This means an entire acquisition series if NImages >1. Setting this to 0 aborts an acquisition. If the driver was currently acquiring imges then this record will cause the "Stop" and "K" (Kill) commands to be sent to camserver. |
| NDFilePath | $(P)$(R)FilePath | Controls the path for saving images. It must be a valid path for camserver and for the areaDetector driver, which is normally running in an EPICS IOC. If camserver and the EPICS IOC are not running on the same machine then soft links will typically be used to make the paths look identical. |
| NDFileTemplate | $(P)$(R)FileTemplate |
camserver uses the file extension to determine what format to save the files in.
The areaDetector Pilatus driver only supports TIFF and CBF files, so the extension
should be .tif or .cbf. When saving multiple images (NImages>1) camserver has its
own rules for creating the names of the individual files. The rules are as follows.
The name constructed using the algorithm described for NDFileTemplate under
File Saving Parameters is used as a basename. The following examples show
the interpretation of the basename.
Basename Files produced test6.tif test6_00000.tif, test6_00001.tif, ... test6_.tif test6_00000.tif, test6_00001.tif, ... test6_000.tif test6_000.tif, test6_001.tif, ... test6_014.tif test6_014.tif, test6_015.tif, ... test6_0008.tif test6_0008.tif, test6_0009.tif, ... test6_2_0035.tif test6_2_0035.tif, test6_2_0036.tif, ...The numbers following the last '_' are taken as a format template, and as a start value. The minimum format is 3; there is no maximum; the default is 5. The format is also constrained by the requested number of images. |
It is useful to load and enable an NDPluginStats plugin that gets its data from the Pilatus driver. The MaxValue_RBV PV for that plugin can be monitored to make sure that the 20-bit limit of 1,048,575 is not being approached in any pixel.
The Pilatus driver implements the following parameters in addition to those in asynNDArrayDriver.h
and ADDriver.h:. Note that to reduce the width of this table the parameter index
variable names have been split into 2 lines, but these are just a single name, for
example PilatusDelayTime
.
| Parameter Definitions in pilatusDetector.cpp and EPICS Record Definitions in pilatus.template | ||||||
| Parameter index variable | asyn interface | Access | Description | drvInfo string | EPICS record name | EPICS record type |
|---|---|---|---|---|---|---|
|
Pilatus DelayTime |
asynFloat64 | r/w | Delay in seconds between the external trigger and the start of image acquisition. It only applies in External Trigger mode | DELAY_TIME | $(P)$(R)DelayTime | ao |
|
Pilatus Threshold |
asynFloat64 | r/w | Threshold energy in keV. camserver uses this value to set the discriminators in each pixel. It is typically set to the incident x-ray energy ($(P)$(R)Energy), but sometimes other values may be preferable. | THRESHOLD |
$(P)$(R)ThresholdEnergy $(P)$(R)ThresholdEnergy_RBV |
ao ai |
|
Pilatus ThresholdApply |
asynInt32 | r/w | Apply the threshold value. Setting the threshold can be a time consuming operation, so if ThresholdAutoApply is No then ThresholdApply must be processed to actually send the threshold to camserver. | THRESHOLD_APPLY | $(P)$(R)ThresholdAppply | busy |
|
Pilatus ThresholdApply |
asynInt32 | r/w | Apply the threshold value. Setting the threshold can be a time consuming operation, so if ThresholdAutoApply is No then ThresholdApply must be processed to actually send the threshold to camserver. | THRESHOLD_APPLY | $(P)$(R)ThresholdApply | busy |
|
Pilatus ThresholdAutoApply |
asynInt32 | r/w | Automatically apply the threshold value whenever it changes. Setting the threshold can be a time consuming operation, so if ThresholdAutoApply is No then ThresholdApply must be processed to actually send the threshold to camserver. If it is Yes then the threshold value will be sent to camserver whenever it is changed. | THRESHOLD_AUTO_APPLY |
$(P)$(R)ThresholdAutoApply $(P)$(R)ThresholdAutoApply_RBV |
bo bi |
|
Pilatus Energy |
asynFloat64 | r/w | X-ray energy in keV. This is used by camserver to calculate the proper flat field corrrection. If Energy is 0 then the energy value sent to camserver is ThresholdEnergy*2. | ENERGY |
$(P)$(R)Energy $(P)$(R)Energy_RBV |
ao ai |
|
Pilatus GapFill |
asynInt32 | r/w | The value that camserver should write to the data file for the gaps between pixels in the detector. Choices are -2, 0, and -1. | GAP_FILL |
$(P)$(R)GapFill $(P)$(R)GapFill_RBV |
mbbo mbbi |
| N/A | N/A | r/w |
Gain menu. Controls the value of Vrf, which determines the shaping time and gain
of the input amplifiers. The allowed values are:
|
N/A | $(P)$(R)GainMenu | mbbo |
|
Pilatus Armed |
asynInt32 | r/o | Flag to indicate when the Pilatus is ready to accept external trigger signals (0=not ready, 1=ready). This should be used by clients to indicate when it is OK to start sending trigger pulses to the Pilatus. If pulses are send before Armed=1 then the Pilatus may miss them, leading to DMA timeout errors from camserver | ARMED | $(P)$(R)Armed | bi |
|
Pilatus ResetPower |
asynInt32 | r/w | Processing this record sends the "ResetModulePower delayTime" command to camserver. This cycles the high voltage and other detector supply voltages. This is particularly useful with the CdTe detectors when they have been exposed to a very strong signal. Cycling the power can erase the memory effects of oversaturation. The delayTime controls the amount of time to wait after turning off the power before turning it back on again. It is set by the ResetPowerTime record. | RESET_POWER | $(P)$(R)ResetPower | bo |
|
Pilatus ResetPowerTime |
asynInt32 | r/w | This record controls the number of seconds to wait after turning off the power before turning it back on again when the ResetPower record is processed. | RESET_POWER_TIME |
$(P)$(R)ResetPower $(P)$(R)ResetPower_RBV |
bo bi |
|
PilatusImage FileTmot |
asynFloat64 | r/w | Timeout in seconds when reading a TIFF or CBF file. It should be set to several seconds, because there can be delays for various reasons. One reason is that there is sometimes a delay between when an External Enable acquisition is started and when the first external pulse occurs. Another is that it can take some time for camserver processes to finish writing the files. | IMAGE_FILE_TMOT | $(P)$(R)ImageFileTmot | ao |
|
Pilatus BadPixelFile |
asynOctet | r/w |
Name of a file to be used to replace bad pixels. If this record does not point to
a valid bad pixel file then no bad pixel mapping is performed. The bad pixel map
is used before making the NDArray callbacks. It does not modify the data in the
files that camserver writes. This is a simple ASCII file with the following format:
badX1,badY1 replacementX1,replacementY1 badX2,badY2 replacementX2,replacementY2 ...The X and Y coordinates range from 0 to NXPixels-1 and NYPixels-1. Up to 100 bad pixels can be defined. The bad pixel mapping simply replaces the bad pixels with another pixel's value. It does not do any averaging. It is felt that this is sufficient for the purpose for which this driver was written, namely fast on-line viewing of ROIs and image data. More sophisticated algorithms can be used for offline analysis of the image files themselves. The following is an example bad pixel file for a GSECARS detector: 263,3 262,3 264,3 266,3 263,3 266,3 300,85 299,85 300,86 299,86 471,129 472,129 |
BAD_PIXEL_FILE | $(P)$(R)BadPixelFile | waveform |
|
Pilatus NumBadPixels |
asynInt32 | r/o | The number of bad pixels defined in the bad pixel file. Useful for seeing if the bad pixel file was read correctly. | NUM_BAD_PIXELS | $(P)$(R)NumBadPixels | longin |
|
Pilatus FlatFieldFile |
asynOctet | r/w |
Name of a file to be used to correct for the flat field. If this record does not
point to a valid flat field file then no flat field correction is performed. The
flat field file is simply a TIFF or CBF file collected by the Pilatus that is used
to correct for spatial non-uniformity in the response of the detector. It should
be collected with a spatially uniform intensity on the detector at roughly the same
energy as the measurements being corrected. When the flat field file is read, the
average pixel value (averageFlatField) is computed using all pixels with intensities
>PilatusMinFlatField. All pixels with intensity <PilatusMinFlatField in the
flat field are replaced with averageFlatField. When images are collected before
the NDArray callbacks are performed the following per-pixel correction is applied:
ImageData[i] = (averageFlatField * ImageData[i])/flatField[i]; |
FLAT_FIELD_FILE | $(P)$(R)FlatFieldFile | waveform |
|
Pilatus MinFlatField |
asynInt32 | r/w | The mimimum valid intensity in the flat field. This value must be set > 0 to prevent divide by 0 errors. If the flat field was collected with some pixels having very low intensity then this value can be used to replace those pixels with the average response. | MIN_FLAT_FIELD | $(P)$(R)MinFlatField | longout |
|
Pilatus FlatFieldValid |
asynInt32 | r/o | This record indicates if a valid flat field file has been read. 0=No, 1=Yes. | FLAT_FIELD_VALID | $(P)$(R)FlatFieldValid | bi |
|
Pilatus Wavelength |
asynFloat64 | r/w | MX wavelength to write to CBF and TIFF image header. | WAVELENGTH | $(P)$(R)Wavelength | ao |
|
Pilatus EnergyLow |
asynFloat64 | r/w | MX energy range low value to write to CBF and TIFF image header. | ENERGY_LOW | $(P)$(R)EnergyLow | ao |
|
Pilatus EnergyHigh |
asynFloat64 | r/w | MX energy range high value to write to CBF and TIFF image header. | ENERGY_HIGH | $(P)$(R)EnergyHigh | ao |
|
Pilatus DetDist |
asynFloat64 | r/w | MX detector distance to write to CBF and TIFF image header. | DET_DIST | $(P)$(R)DetDist | ao |
|
Pilatus DetVOffset |
asynFloat64 | r/w | MX detector vertical offset to write to CBF and TIFF image header. | DET_VOFFSET | $(P)$(R)DetVOffset | ao |
|
Pilatus BeamX |
asynFloat64 | r/w | MX beam X to write to CBF and TIFF image header. | BEAM_X | $(P)$(R)BeamX | ao |
|
Pilatus BeamY |
asynFloat64 | r/w | MX beam Y to write to CBF and TIFF image header. | BEAM_Y | $(P)$(R)BeamY | ao |
|
Pilatus Flux |
asynFloat64 | r/w | MX flux to write to CBF and TIFF image header. | FLUX | $(P)$(R)Flux | ao |
|
Pilatus FilterTransm |
asynFloat64 | r/w | MX filter transmission to write to CBF and TIFF image header. | FILTER_TRANSM | $(P)$(R)FilterTransm | ao |
|
Pilatus StartAngle |
asynFloat64 | r/w | MX start angle to write to CBF and TIFF image header. When saving multiple images (ADNumImages>1) camserver will automatically increment the field in the image header by PilatusAngleIncr for each image. | START_ANGLE | $(P)$(R)StartAngle | ao |
|
Pilatus AngleIncr |
asynFloat64 | r/w | MX angle increment to write to CBF and TIFF image header. When saving multiple images (ADNumImages>1) camserver will automatically increment the field corresponding to PilatusStartAngle in the image header by this value for each image. | ANGLE_INCR | $(P)$(R)AngleIncr | ao |
|
Pilatus Det2theta |
asynFloat64 | r/w | MX detector 2theta to write to CBF and TIFF image header. | DET_2THETA | $(P)$(R)Det2theta | ao |
|
Pilatus Polarization |
asynFloat64 | r/w | MX polarization to write to CBF and TIFF image header. | POLARIZATION | $(P)$(R)Polarization | ao |
|
Pilatus Alpha |
asynFloat64 | r/w | MX alpha to write to CBF and TIFF image header. | ALPHA | $(P)$(R)Alpha | ao |
|
Pilatus Kappa |
asynFloat64 | r/w | MX kappa to write to CBF and TIFF image header. | KAPPA | $(P)$(R)Kappa | ao |
|
Pilatus Phi |
asynFloat64 | r/w | MX phi to write to CBF and TIFF image header. | PHI | $(P)$(R)Phi | ao |
|
Pilatus PhiIncr |
asynFloat64 | r/w | MX phi increment to write to CBF and TIFF image header | PHI_INCR | $(P)$(R)PhiIncr | ao |
|
Pilatus Chi |
asynFloat64 | r/w | MX chi to write to CBF and TIFF image header. | CHI | $(P)$(R)Chi | ao |
|
Pilatus ChiIncr |
asynFloat64 | r/w | MX chi increment to write to CBF and TIFF image header | CHI_INCR | $(P)$(R)ChiIncr | ao |
|
Pilatus Omage |
asynFloat64 | r/w | MX omega to write to CBF and TIFF image header. | OMEGA | $(P)$(R)Omega | ao |
|
Pilatus OmegaIncr |
asynFloat64 | r/w | MX omega increment to write to CBF and TIFF image header | OMEGA_INCR | $(P)$(R)OmegaIncr | ao |
|
Pilatus OscillAxis |
asynOctet | r/w | MX oscillation axis text, up to 18 characters in length, to write to CBF and TIFF image header. | OSCILL_AXIS | $(P)$(R)OscillAxis | stringout |
|
Pilatus NumOscill |
asynInt32 | r/w | MX number of oscillations to write to CBF and TIFF image header. | NUM_OSCILL | $(P)$(R)NumOscill | longout |
|
Pilatus CbfTemplateFile |
asynOctet | r/w | Template file to be used to obtain all of the MX parameters above. Set the name of this file to "0" to disable the template file. | CBFTEMPLATEFILE | $(P)$(R)CbfTemplateFile | waveform |
|
Pilatus HeaderString |
asynOctet | r/w | Header string to write in the COMMENT field of the CBF file. | HEADERSTRING | $(P)$(R)HeaderString | waveform |
|
Pilatus PixelCutoff |
asynInt32 | r/o | Maximum possible count rate per pixel. | PIXEL_CUTOFF | $(P)$(R)PixelCutOff_RBV | ai |
|
Pilatus ThTemp0 |
asynFloat64 | r/o | Temperature readout 0. | TH_TEMP_0 | $(P)$(R)Temp0_RBV | ai |
|
Pilatus ThTemp1 |
asynFloat64 | r/o | Temperature readout 1. | TH_TEMP_1 | $(P)$(R)Temp1_RBV | ai |
|
Pilatus ThTemp2 |
asynFloat64 | r/o | Temperature readout 2. | TH_TEMP_2 | $(P)$(R)Temp2_RBV | ai |
|
Pilatus ThHumid0 |
asynFloat64 | r/o | Humidity readout 0. | TH_HUMID_0 | $(P)$(R)Humid0_RBV | ai |
|
Pilatus ThHumid1 |
asynFloat64 | r/o | Humidity readout 1. | TH_HUMID_1 | $(P)$(R)Humid1_RBV | ai |
|
Pilatus ThHumid2 |
asynFloat64 | r/o | Humidity readout 2. | TH_HUMID_2 | $(P)$(R)Humid2_RBV | ai |
|
Pilatus TvxVersion |
asynOctet | r/o | Version of TVX and camserver. This record is redundant with the SDKVersion_RBV record added in ADCore R2-6, which should be used instead. | TVXVERSION | $(P)$(R)TVXVersion_RBV | stringin |
| N/A | N/A | N/A |
asyn record to control debugging communication with camserver. Setting the CNCT
field in this record to Disconnect causes the drvAsynIPPort server
to disconnect from camserver. This can be used to allow another program, such as
TVX, to temporarily take control of camserver, without restarting the EPICS IOC.
Set CNCT to Connect to reconnect the IOC to camserver, or simply process
any record which communicates with camserver, because the driver will automatically
reconnect. |
N/A | $(P)$(R)CamserverAsyn | asyn |
The pilatusDetector driver is created with the pilatusDetectorConfig command, either from C/C++ or from the EPICS IOC shell.
int pilatusDetectorConfig(const char *portName, const char *camserverPort, int maxSizeX, int maxSizeY, int maxBuffers, size_t maxMemory, int priority, int stackSize)
For details on the meaning of the parameters to this function refer to the detailed documentation on the pilatusDetectorConfig function in the pilatusDetector.cpp documentation and in the documentation for the constructor for the pilatusDetector class.
There an example IOC boot directory and startup script (iocBoot/iocPilatus/st.cmd) provided with areaDetector.
The following show the MEDM screens that are used to control the Pilatus detector. Note that the general purpose screen ADBase.adl can be used, but it exposes many controls that are not applicable to the Pilatus.
pilatusDetector.adl
is the main screen used to control the Pilatus
driver.
pilatusAncillary.adl
is the screen used to control define the metadata
that will be written to the Pilatus data file.
NDROI4.adl
is used to define the ROIs. In this example there are 3
valid ROIs defined. ROI 1 is the entire detector, ROI 2 is a 300x50 rectangle starting
at [100,60], and ROI 3 is a 50x30 rectangle starting at [220,70].
NDStats5.adl
is used to display the statistics in the ROIs defined
above.
mca.adl or mca_small.adl
can be used to plot the net or total counts
in an ROI when NImages>1. In this example the plot is the net counts in ROI 1 as
the diffractometer chi was scanned +- 1 degree with 1000 points at .02 seconds/point.
This was done with the SPEC command
lup chi -1 1 1000 .02
using trajectory scanning on a Newport kappa diffractometer. This was a compound motor scan with the Newport XPS putting out pulses every .02 seconds. These pulses triggered the Pilatus in External Enable mode. The Pilatus driver read each TIFF file as it was created and updated this plot every 0.2 seconds. The total time to collect this scan with 1000 images was 20.8 seconds.
scan_more.adl
is used to define a scan. In this example the sscan record
is set up to scan the ThresholdEnergy PV and to collect the total counts in ROI2,
which was defined to include the entire detector.
scanDetPlot.adl
is used to plot the results of a scan after it is complete.
In this example the total counts in ROI 1 are plotted as a function of the ThresholdEnergy
as it was scanned from 3000 to 10000 eV in 250 eV steps. The source was Fe55, and
the cut-off is at 6 keV, as expected for the Mn Ka and Mn Kb x-rays that this source
produces.
asynRecord.adl
is used to control the debugging information printed
by the asyn TCP/IP driver for camserver (asynTraceIODriver).
asynOctet.adl
can be used to send any command to camserver and display
the response. It can be loaded from the More menu in asynRecord.adl above.
At the GSECARS beamlines (13-ID-C and 13-BM-C) at the APS we use SPEC to control our Newport diffractometers. We have added and modified SPEC macros to use the pilatusDetector areaDetector driver to treat the Pilatus detector as a SPEC counter. This works in both traditional step-scanning mode, as well as in trajectory scanning mode. Here are some snippets from the SPEC macros for the Pilatus.  # PILATUS_PREFIX detector name i.e. (GSE-PILATUS1:) if ( PILATUS_PREFIX == "") PILATUS_PREFIX = "GSE-PILATUS1:" PILATUS_PREFIX = getsval("Enter PILATUS detector name i.e. GSE-PILATUS1:",PILATUS_PREFIX) # PILATUS_DET_PREFIX is the pv used by areaDetector to identify a specific detector. # When only one detector is used it is usally (cam1:) if ( PILATUS_DET_PREFIX == "") PILATUS_DET_PREFIX = "cam1:" PILATUS_DET_PREFIX = getsval("Enter PILATUS specific detector name i.e. cam1:",PILATUS_DET_PREFIX) # PILATUS_ROI_PREFIX is the pv used by areaDetector to identify a specific a ROI plugin. # When only one ROI plugin is used it is usally (ROI1:) if ( PILATUS_ROI_PREFIX == "") PILATUS_DET_PREFIX = "ROI1:" PILATUS_ROI_PREFIX = getsval("Enter PILATUS ROI plugin name i.e. ROI1:",PILATUS_ROI_PREFIX) if (PILATUS_MOUNT == "") PILATUS_MOUNT = "cars5/Data" PILATUS_MOUNT = getsval("Enter mount point relative to camserver home directory",PILATUS_MOUNT) if (PILATUS_SPEC_MOUNT == "") PILATUS_SPEC_MOUNT = "cars5/Data" PILATUS_SPEC_MOUNT = getsval("Enter mount point relative to spec home directory",PILATUS_SPEC_MOUNT) ... PILATUS_ROI_PV = PILATUS_PREFIX PILATUS_ROI_PREFIX "0:Net_RBV" PILATUS_ROI_ARRAY_PV = PILATUS_PREFIX PILATUS_ROI_PREFIX "0:NetArray" PILATUS_ROI_ARRAY_START_PV = PILATUS_PREFIX PILATUS_ROI_PREFIX "0:NetArrayEraseStart" PILATUS_ROI_ARRAY_NUSE_PV = PILATUS_PREFIX PILATUS_ROI_PREFIX "0:NetArray.NUSE" PILATUS_ROI_ARRAY_ACQ_PV = PILATUS_PREFIX PILATUS_ROI_PREFIX "0:NetArray.ACQG" PILATUS_IMGPATH_PV = PILATUS_PREFIX PILATUS_DET_PREFIX "FilePath" PILATUS_FNAME_PV = PILATUS_PREFIX PILATUS_DET_PREFIX "FileName" PILATUS_FILENUMBER_PV = PILATUS_PREFIX PILATUS_DET_PREFIX "FileNumber" PILATUS_FILEFORMAT_PV = PILATUS_PREFIX PILATUS_DET_PREFIX "FileTemplate" PILATUS_EXPSRTM_PV = PILATUS_PREFIX PILATUS_DET_PREFIX "AcquireTime" PILATUS_NFRAME_PV = PILATUS_PREFIX PILATUS_DET_PREFIX "NumImages" PILATUS_EXPPRD_PV = PILATUS_PREFIX PILATUS_DET_PREFIX "AcquirePeriod" PILATUS_NEXPFRM_PV = PILATUS_PREFIX PILATUS_DET_PREFIX "NumExposures" PILATUS_ACQ_PV = PILATUS_PREFIX PILATUS_DET_PREFIX "Acquire" PILATUS_ARMED_PV = PILATUS_PREFIX PILATUS_DET_PREFIX "Armed" PILATUS_ABORT_PV = PILATUS_PREFIX PILATUS_DET_PREFIX "Acquire" PILATUS_ACQMODE_PV = PILATUS_PREFIX PILATUS_DET_PREFIX "TriggerMode" PILATUS_THRESHOLD_PV = PILATUS_PREFIX PILATUS_DET_PREFIX "ThresholdEnergy" PILATUS_ROI_0_MinX_PV = PILATUS_PREFIX PILATUS_ROI_PREFIX "0:MinX" PILATUS_ROI_0_SizeX_PV = PILATUS_PREFIX PILATUS_ROI_PREFIX "0:SizeX" PILATUS_ROI_0_MinY_PV = PILATUS_PREFIX PILATUS_ROI_PREFIX "0:MinY" PILATUS_ROI_0_SizeY_PV = PILATUS_PREFIX PILATUS_ROI_PREFIX "0:SizeY" PILATUS_ROI_0_BgdWidth_PV = PILATUS_PREFIX PILATUS_ROI_PREFIX "0:BgdWidth" ... def epics_pilatus_count '{ ... # Call macro that creates and set the Pilatus path and filename img_full_filename # Setup exposure time, collection mode and number of frames epics_put(PILATUS_FILENUMBER_PV,NPTS, 1) epics_put(PILATUS_NFRAME_PV, 1, 1) epics_put(PILATUS_ACQMODE_PV,0, 1) # Internal trigger epics_put(PILATUS_EXPSRTM_PV,cnt_time_val, 1) epics_put(PILATUS_NEXPFRM_PV, 1, 1) ... # hit the triggers epics_put(PILATUS_ACQ_PV,1) epics_put(sc_cnt_pv,1) # wait for scaler and Pilatus AQG to finish status = 1 sc_done = FALSE img_done = FALSE data_done = FALSE while(status){ # is the scalar done if (epics_get(sc_cnt_pv)=="Done"){ sc_done = TRUE; #p "scaler done" } # is the pilatus done if (epics_get(PILATUS_ACQ_PV) == "Done"){ img_done = TRUE; #p "image collection done" } if( (sc_done==TRUE) && (img_done==TRUE)) break; sleep(0.01) } # use the get_counts routine to read the scalers # note get_counts also calls user_getcounts # thats where the rois get read. get_counts }' def user_getcounts '{ ... # using image_count routine } else if ( EPICS_COUNT == 4 ) { S[iroi] = 0 S[iroi] = epics_get(PILATUS_ROI_PV)
The following measurements were done to demonstrate the performance that can be obtained with the areaDetector Pilatus driver.
lup chi -1 1 1000 .02This tells SPEC to do a relative scan of the chi axis from -2 degrees to +2 degrees with 1000 points at .015 seconds/point. On our kappa diffractometer this entails a coordinated motion of the phi, kappa and omega axes. The EPICS trajectory scanning software downloads the non-linear trajectory that SPEC computes into the XPS controller, which executes it. As the motors are moving the XPS outputs synchronization pulses at the period of the collection time, .020 seconds in this case. These pulses are used as the external trigger to the Pilatus. The time to execute this scan should be 20.0 seconds. The actual time was 20.8 seconds, measured using camonitor on the Acquire PV. Again, this includes the time for camserver to save all 1000 images to disk (366 MB), and for the Pilatus driver to read each file, correct the bad pixels and flat field, compute the ROIs, and post the ROIs to EPICS. It also posted all of the images to EPICS. The total additional time was less than 0.8 seconds for all 1000 images. As soon as the acquisition was complete SPEC plotted the net counts in the first ROI (containing the Bragg peak) as follows:
For comparison this identical scan was executed in traditional step-scanning mode, where the motors stopped at each point in the scan. The Pilatus was run in Internal mode with NumImages=1. The total time for the scan was 870 seconds (more than 14 minutes), compared to 20.8 seconds in trajectory mode. Most of this overhead is the settling time for the motors, with only a small fraction due to the Pilatus single-exposure mode. The trajectory scanning mode is thus more than 50 times faster to execute the identical SPEC scan.
The Pilatus supports 3 types of external triggering. In External Trigger mode (the camserver ExtTrigger command) the Pilatus uses the programmed values of AcquireTime, AcquirePeriod, NImages and NExposures. It waits for a single external trigger, then waits for Delay seconds and then collects the entire sequence. It is very similar to Internal mode with NImages>1, except that it waits for a trigger to begin collecting the sequence.
In External Enable mode (the camserver ExtEnable command) the Pilatus uses the external signal to control acquisition. Only NImages and NExposures are used, AcquireTime and AcquirePeriod are not used. When the signal is high the detector counts, and on the transition to low it begins its readout.
In External MultiTrigger Mode (the camserver ExtMTrigger command) the Pilatus uses the programmed AcquireTime, in addition to NImages and NExposures. Each external trigger pulse causes the Pilatus to collect one image at the programmed exposure time. This mode works well with a trigger source like the Newport motor controllers or the SIS380x multichannel scaler, that put out a short trigger pulse for each image. One only needs to take care that the time between external trigger pulses is at least 4msec longer than the programmed exposure time, to allow time for the detector to read out before the next trigger pulse arrives.
When using the External Enable mode, we use an inexpensive analog pulse generator to convert the trigger pulses from the MM4005 and XPS to a form suitable for External Enable mode with the Pilatus. This is the solution we have developed that seems to be reliable:
The Tenma TGP110 seems to be currently called a Tenma 72-6860, and lists for about $350 new at Newark.
When we were initially testing the Pilatus in the lab, we had many errors in External Enable mode, where it did not seem to be seeing the external pulses. camserver would get DMA timeouts, and need to be restarted. Dectris said these were happening because the cables on our detector are longer than normal, and the voltage drop from the power supply to the detector was leading to marginal voltage values. They suggested shortening the cables or increasing the supply voltage slightly. When moving the detector to the hutch these problems initially went away. However, they then recurred, and we fixed the problem by increasing the power supply voltage from 4.4 to 4.7 volts at the detector.
Dectris has since informed me that they have increased the power supply voltage on all new Pilatus systems, so this should no longer be an issue.
The following are some current restrictions of the areaDetector Pilatus driver: