| ShinyDriver {shinytest} | R Documentation |
This class starts a Shiny app in a new R session, along with a phantom.js
headless browser that can be used to simulate user actions. This provides
a full simulation of a Shiny app so that you can test user interactions
with a live app.
new()
ShinyDriver$new( path = ".", loadTimeout = NULL, checkNames = TRUE, debug = c("none", "all", shinytest::ShinyDriver$debugLogTypes), phantomTimeout = 5000, seed = NULL, cleanLogs = TRUE, shinyOptions = list(), renderArgs = NULL, options = list() )
path
Path to a directory containing a Shiny app, i.e. a
single app.R
file or a server.R
-ui.R
pair.
loadTimeout
How long to wait for the app to load, in ms. This includes the time to start R. Defaults to 5s when running locally and 10s when running on CI.
checkNames
Check if widget names are unique?
debug
Start the app in debugging mode? In debugging mode debug messages are printed to the console.
phantomTimeout
How long to wait when connecting to phantomJS process, in ms
seed
An optional random seed to use before starting the application. For apps that use R's random number generator, this can make their behavior repeatable.
cleanLogs
Whether to remove the stdout and stderr logs when the Shiny process object is garbage collected.
shinyOptions
A list of options to pass to shiny::runApp()
.
renderArgs
Passed to rmarkdown::run()
for interactive .Rmd
s.
options
A list of base::options()
to set in the driver's child
process.
finalize()
Stop app and clean up logs.
ShinyDriver$finalize()
stop()
Stop the app, the terminate external R process that runs the app and the phantomjs instance.
ShinyDriver$stop()
getValue()
Finds a widget and queries its value. See the getValue()
method of
Widget for more details.
ShinyDriver$getValue(name, iotype = c("auto", "input", "output"))
name
Name of a shiny widget.
iotype
Type of the Shiny widget. Usually shinytest finds the widgets by their name, so this is only needed if you use the same name for an input and output widget.
setValue()
Finds a widget and sets its value. It's a shortcut for findElement()
plus setValue()
; see the Widget documentation for more details.
ShinyDriver$setValue(name, value, iotype = c("auto", "input", "output"))
name
Name of a shiny widget.
value
New value.
iotype
Type of the Shiny widget. Usually shinytest finds the widgets by their name, so this is only needed if you use the same name for an input and output widget.
Self, invisibly.
click()
Find a widget and click it. It's a shortcut for findElement()
plus click()
; see the Widget documentation for more details.
ShinyDriver$click(name, iotype = c("auto", "input", "output"))
name
Name of a shiny widget.
iotype
Type of the Shiny widget. Usually shinytest finds the widgets by their name, so this is only needed if you use the same name for an input and output widget.
getAllValues()
Returns a named list of all inputs, outputs, and export values.
ShinyDriver$getAllValues(input = TRUE, output = TRUE, export = TRUE)
input, output, export
Either TRUE
to return all
input/output/exported values, or a character vector of specific
controls.
sendKeys()
Sends the specified keys to specific HTML element. Shortcut for
findWidget()
plus sendKeys()
.
ShinyDriver$sendKeys(name, keys)
name
Name of a shiny widget.
keys
Keys to send to the widget or the app. See webdriver::key for how to specific special keys.
Self, invisibly.
setWindowSize()
Sets size of the browser window.
ShinyDriver$setWindowSize(width, height)
width, height
Height and width of browser, in pixels.
Self, invisibly.
getWindowSize()
Get current size of the browser window, as list of integer scalars
named width
and height
.
ShinyDriver$getWindowSize()
getDebugLog()
Query one or more of the debug logs.
ShinyDriver$getDebugLog(type = c("all", ShinyDriver$debugLogTypes))
type
Log type: "all"
, "shiny_console"
, "browser"
,
or "shinytest"
.
enableDebugLogMessages()
Enable/disable debugging messages
ShinyDriver$enableDebugLogMessages(enable = TRUE)
enable
New value.
logEvent()
Add event to log.
ShinyDriver$logEvent(event, ...)
event
Event name
...
Addition data to store for event
getEventLog()
Retrieve event log.
ShinyDriver$getEventLog()
getUrl()
Get current url
ShinyDriver$getUrl()
getTitle()
Get page title
ShinyDriver$getTitle()
getSource()
Get complete source of current page.
ShinyDriver$getSource()
goBack()
Return to previous page
ShinyDriver$goBack()
Self, invisibly.
refresh()
Refresh the browser
ShinyDriver$refresh()
Self, invisibly.
takeScreenshot()
Takes a screenshot of the current page and writes it to a PNG file or shows on current graphics device.
ShinyDriver$takeScreenshot(file = NULL, id = NULL, parent = FALSE)
file
File name to save the screenshot to. If NULL
, then
it will be shown on the R graphics device.
id
If not-NULL
, will take a screenshot of element with this id.
parent
If TRUE
, will take screenshot of parent of id
; this
is useful if you also want to capture the label attached to a Shiny
control.
Self, invisibly.
findElement()
Find an HTML element on the page, using a CSS selector, XPath expression,
or link text (for
tags). If multiple elements are matched, only
the first is returned.
ShinyDriver$findElement( css = NULL, linkText = NULL, partialLinkText = NULL, xpath = NULL )
css
CSS selector to find an HTML element.
linkText
Find
HTML elements based on exact innerText
partialLinkText
Find
HTML elements based on partial innerText
xpath
Find HTML elements using XPath expressions.
findElements()
Find all elements matching CSS selection, xpath, or link text.
ShinyDriver$findElements( css = NULL, linkText = NULL, partialLinkText = NULL, xpath = NULL )
css
CSS selector to find an HTML element.
linkText
Find
HTML elements based on exact innerText
partialLinkText
Find
HTML elements based on partial innerText
xpath
Find HTML elements using XPath expressions.
A list of webdriver::Elements.
waitFor()
Waits until a JavaScript expr
ession evaluates to true
or the
timeout
is exceeded.
ShinyDriver$waitFor(expr, checkInterval = 100, timeout = 3000)
expr
A string containing JavaScript code. Will wait until the
condition returns true
.
checkInterval
How often to check for the condition, in ms.
timeout
Amount of time to wait before giving up (milliseconds).
TRUE
if expression evaluates to true
without error, before
timeout. Otherwise returns NA
.
waitForShiny()
Waits until Shiny is not busy, i.e. the reactive graph has finished
updating. This is useful, for example, if you've resized the window with
setWindowSize()
and want to make sure all plot redrawing is complete
before take a screenshot.
ShinyDriver$waitForShiny()
TRUE
if done before before timeout; NA
otherwise.
waitForValue()
Waits until the input
or output
with name name
is not one of
ignore
d values, or the timeout is reached.
This function can be useful in helping determine if an application has initialized or finished processing a complex reactive situation.
ShinyDriver$waitForValue( name, ignore = list(NULL, ""), iotype = c("input", "output", "export"), timeout = 10000, checkInterval = 400 )
name
Name of a shiny widget.
ignore
List of possible values to ignore when checking for updates.
iotype
Type of the Shiny widget. Usually shinytest finds the widgets by their name, so this is only needed if you use the same name for an input and output widget.
timeout
Amount of time to wait before giving up (milliseconds).
checkInterval
How often to check for the condition, in ms.
listWidgets()
Lists the names of all input and output widgets
ShinyDriver$listWidgets()
A list of two character vectors, named input
and output
.
checkUniqueWidgetNames()
Check if Shiny widget names are unique.
ShinyDriver$checkUniqueWidgetNames()
executeScript()
Execute JS code
ShinyDriver$executeScript(script, ...)
script
JS to execute.
...
Additional arguments to script.
Self, invisibly.
executeScriptAsync()
Execute JS code asynchronously.
ShinyDriver$executeScriptAsync(script, ...)
script
JS to execute.
...
Additional arguments to script.
Self, invisibly.
findWidget()
Finds the a Shiny input or output control.
ShinyDriver$findWidget(name, iotype = c("auto", "input", "output"))
name
Name of a shiny widget.
iotype
Type of the Shiny widget. Usually shinytest finds the widgets by their name, so this is only needed if you use the same name for an input and output widget.
A Widget.
expectUpdate()
It performs one or more update operations via the browser, thens
waits for the specified output(s) to update. The test succeeds if
all specified output widgets are updated before the timeout
.
For updates that involve a lot of computation, increase the timeout.
ShinyDriver$expectUpdate( output, ..., timeout = 3000, iotype = c("auto", "input", "output") )
output
Name of output control to check.
...
Name-value pairs used to update inputs.
timeout
Amount of time to wait before giving up (milliseconds).
iotype
Type of the Shiny widget. Usually shinytest finds the widgets by their name, so this is only needed if you use the same name for an input and output widget.
setInputs()
Sets input values.
ShinyDriver$setInputs( ..., wait_ = TRUE, values_ = TRUE, timeout_ = 3000, allowInputNoBinding_ = FALSE, priority_ = c("input", "event") )
...
Name-value pairs, name1 = value1, name2 = value2
etc.
Enput with name name1
will be assigned value value1
.
wait_
Wait until all reactive updates have completed?
values_
If TRUE
, will return final updated values of inputs.
timeout_
Amount of time to wait before giving up (milliseconds).
allowInputNoBinding_
When setting the value of an input, allow it to set the value of an input even if that input does not have an input binding.
priority_
Sets the event priority. For expert use only: see https://shiny.rstudio.com/articles/communicating-with-js.html#values-vs-events for details.
Returns updated values, invisibly.
uploadFile()
Uploads a file to a file input.
ShinyDriver$uploadFile(..., wait_ = TRUE, values_ = TRUE, timeout_ = 3000)
...
Name-path pairs, e.g. name1 = path1
. The file located at
path1
will be uploaded to file input with name name1
.
wait_
Wait until all reactive updates have completed?
values_
If TRUE
, will return final updated values of download
control.
timeout_
Amount of time to wait before giving up (milliseconds).
snapshotInit()
Download a snapshot. Generally, you should not call this function
yourself; it will be generated by recordTest()
as needed.
ShinyDriver$snapshotInit(path, screenshot = TRUE)
path
Directory to save snapshots.
screenshot
Take screenshots for each snapshot?
snapshot()
Take a snapshot. Generally, you should not call this function
yourself; it will be generated by recordTest()
as needed.
ShinyDriver$snapshot(items = NULL, filename = NULL, screenshot = NULL)
items
Elements to include in snapshot
filename
Filename to use
screenshot
Take a screenshot? Overrides value set by
$snapshotInit()
snapshotCompare()
Deprecated
ShinyDriver$snapshotCompare(...)
...
Ignored
snapshotDownload()
Snapshot a file download action. Generally, you should not call this
function yourself; it will be generated by recordTest()
as needed.
ShinyDriver$snapshotDownload(id, filename = NULL)
id
Output id of shiny::downloadButton()
/shiny::downloadLink()
filename
File name to save file to. The default, NULL
,
generates an ascending sequence of names: 001.download
,
002.download
, etc.
getAppDir()
Directory where app is located
ShinyDriver$getAppDir()
getAppFilename()
App file name, i.e. app.R
or server.R
. NULL
for Rmds.
ShinyDriver$getAppFilename()
getTestsDir()
Directory where tests are located
ShinyDriver$getTestsDir()
getRelativePathToApp()
Relative path to app from current directory.
ShinyDriver$getRelativePathToApp()
getSnapshotDir()
Directory where snapshots are located.
ShinyDriver$getSnapshotDir()
isRmd()
Is this app an Shiny Rmd document?
ShinyDriver$isRmd()
clone()
The objects of this class are cloneable with this method.
ShinyDriver$clone(deep = FALSE)
deep
Whether to make a deep clone.


Smart Network, Powerful Solutions
See what is possible with PopAds, re-discover potential
PopAds is simply the best paying advertising network specialized in popunders on the Internet.  Just register and see for yourself. Prepare to be astonished!
PopAds the new breed
Now it's your chance to experience an ad network that pays well and takes good care of its members.
Join us now and start bringing top quality visitors to your website as an advertiser or simply become a publisher and monetize your website's traffic with high quality ads which appear as popunders. Our services are guaranteed to be fast, efficient and secure. There is no other ad network on the market that processes payment requests daily for publishers and there is no ad network on the market that can promote your website as efficient as we do for advertisers.
Dynamic Market
It is you who choose the prices!
Perfect Support
We offer one of the fastest support in the industry.
Fast Payments
Withdrawal requests are handled daily.
High Security
Our panel uses SSL technology, just like your bank.


Elizabeth Sass is a web designer who specializes in visual branding, user experience, and hand-coding websites. She has a keen eye for fluid layouts and easy-to-use development. You have a vision and idea for your corner of the internet, and she will make it just as beautiful as you expected! When not coding, Elizabeth enjoys riding horses, hiking, and volunteering with trail maintenance crews. She also loves D&D and vegan bacon. With a husband in the military, Elizabeth travels around the world. They currently reside in Colorado Springs, CO, USA with their cat, Maxwell.
Don't need an entire overhaul? Elizabeth is also available for visual design audits and website audits.


Moise Kean: Father claims striker's transfer to Everton was a 'mistake'
Moise Kean's father claims the striker's transfer to Everton was a "mistake" and he wants him to return to Italy as soon as possible.
The Italy under-21 international moved to Goodison Park in a £27m transfer in the summer, but Kean's father Jean believes the 19-year-old is unhappy on Merseyside and should return to Serie A as soon as possible.
The striker has struggled to feature under Everton boss Marco Silva, making just nine appearances and failing to score a single goal for the Toffees.
Speaking to Centro Suono Sport Kean senior, said: 'Sending my son to England was a mistake, because he's still too young, he's not feeling good at Everton, I didn't like this transfer.
"I hope he can come back to Italy as soon as possible, I hope he goes to Rome, but the important thing is that he comes back here."
Jean has also hit out at super-agent Mino Raiola who handles his son's affairs, saying: "I don't have a relationship with Raiola, I have never met him, I don't think he even wants to see me.
"He demanded my son's power of attorney when he was 14 and together with my ex-wife he wanted to take him to England.
"At Everton, where he is playing now, he is not settling in well. I think he was supposed to wait a few more years before he had an experience abroad.
"If there is a possibility for him to come back to Italy, I hope he can do that, so as not to ruin him."
Jean also claims Juventus still owe him two tractors from a deal they made with him when they signed his son as a 14-year-old.
"The story of the tractors? I believe in God and I believe in promises," he added.
"But if their word was a lie I can't trust them anymore. They promised me two tractors and they still haven't been given to me."


Pistache
Pistache
is a C++ REST framework written by Mathieu Stefani at Datacratic.
It is written in pure C++11 with no external dependency and provides a low-level HTTP abstraction.
Pistache
provides both an HTTP client and server that can be used to create and query complex web and REST APIs.
It’s completly free and Apache-licensed.
Modern API
Playing with Pistache and its modern API is fun and easy
What’s in the box
- A multi-threaded http server to build your APIs
- An asynchronous http client to request APIS
- An HTTP router to dispatch requests to C++ functions
- A REST description DSL to easily define your APIs
- Type-safe headers and MIME types implementation
Use it
- Clone it on github
- Start with the quickstart
- Read the full user’s guide
- Have issues with it ? Fill an issue


{% extends "layout.html" %} {% block title %} Government Departments {% endblock title %} {% block article %}
“The truth is always an abyss. One must — as in a swimming pool — dare to dive from the quivering springboard of trivial everyday experience and sink into the depths, in order to later rise again — laughing and fighting for breath — to the now doubly illuminated surface of things.”
― Franz Kafka
{% for label in entry["labels"] %} {{ label }} {% endfor %}


| Home | Trees | Index | Help |
|
|---|
| Package openid :: Package yadis :: Module etxrd |
|
| Function Summary | |
|---|---|
Take a service element and expand it into an iterator of: ([type_uri], uri, service_element) | |
Take a sorted iterator of service elements and expand it into a sorted iterator of: ([type_uri], uri, service_element) | |
| unicode or None |
Return the CanonicalID from this XRDS document. |
Get the priority of this element | |
Get the priority of this element. | |
Return the XRD element that should contain the Yadis services | |
Is this document an XRDS document? | |
Return an iterable over the Service elements in the Yadis XRD | |
basestring -> basestring | |
nsTag(ns,
t)
| |
Parse the given text as an XRDS document. | |
Sort a list of elements that have priority attributes |
| Function Details |
|---|
expandService(service_element)Take a service element and expand it into an iterator of: ([type_uri], uri, service_element) |
expandServices(service_elements)Take a sorted iterator of service elements and expand it into a sorted iterator of: ([type_uri], uri, service_element) There may be more than one item in the resulting list for each service element if there is more than one URI or type for a service, but each triple will be unique. If there is no URI or Type for a Service element, it will not appear in the result. |
getCanonicalID(iname, xrd_tree)Return the CanonicalID from this XRDS document.
|
getPriority(element)Get the priority of this element Returns Max if no priority is specified or the priority value is invalid. |
getPriorityStrict(element)Get the priority of this element. Raises ValueError if the value of the priority is invalid. If no priority is specified, it returns a value that compares greater than any other value. |
getYadisXRD(xrd_tree)Return the XRD element that should contain the Yadis services |
isXRDS(xrd_tree)Is this document an XRDS document? |
iterServices(xrd_tree)Return an iterable over the Service elements in the Yadis XRD sorted by priority |
mkXRDTag(t)basestring -> basestring Create a tag name in the XRD 2.0 XML namespace suitable for using with ElementTree |
parseXRDS(text)Parse the given text as an XRDS document.
|
prioSort(elements)Sort a list of elements that have priority attributes |
| Home | Trees | Index | Help |
|
|---|
| Generated by Epydoc 2.1 on Wed Apr 22 16:14:20 2009 | http://epydoc.sf.net |


OSSL_QUIC_client_method, OSSL_QUIC_client_thread_method, OSSL_QUIC_server_method - Provide SSL_METHOD objects for QUIC enabled functions
#include <openssl/quic.h>
const SSL_METHOD *OSSL_QUIC_client_method(void);
const SSL_METHOD *OSSL_QUIC_client_thread_method(void);
const SSL_METHOD *OSSL_QUIC_server_method(void);
The OSSL_QUIC_client_method(), OSSL_QUIC_client_thread_method(), and OSSL_QUIC_server_method() functions provide methods for the SSL_CTX_new_ex(3) function to provide QUIC protocol support.
The OSSL_QUIC_client_thread_method() uses threads to allow for a blocking mode of operation and avoid the need to return control to the OpenSSL library for processing time based events. The OSSL_QUIC_client_method() does not use threads and depends on nonblocking mode of operation and the application periodically calling SSL functions.
The OSSL_QUIC_server_method() is currently experimental and unsupported. It is provided for testing purposes. It does not provide a QUIC server implementation compliant with the QUIC specification.
These functions return pointers to the constant method objects.
OSSL_QUIC_client_method(), OSSL_QUIC_client_thread_method(), and OSSL_QUIC_server_method() were added in OpenSSL 3.2.
Copyright 2022 The OpenSSL Project Authors. All Rights Reserved.
Licensed under the Apache License 2.0 (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html.


You can now email me at<EMAIL_ADDRESS>Dear Friend,
I know this email will come to you in an odd manner as you have not receive
any prior communication from me before now.
But be that as it may, my name is Mr. Donald Peters and I was
privileged to be the account officer of my deceased client who lost his life
Sometime ago. In the process of review of the financial report by my bank, I
Discovered that both of you have a similar last name, hence I contacted you
so that I can give you further briefing on my intention and how to disburse the
Estate he left behind.
I will most acknowledge your prompt response as that
Would enable us to start something immediately.
Sincerely,
Donald Peters.
- DONALD PETERS


Zarina Restaurant
Toggle navigation
Zarina's Kitchen
Reserve a table
Check status
Owner
Contact
Edit Restaurant Details
Name:
Email:
Phone:
Address:
Timings
Auto Assign:
On
Off
Cancel
Update


| Main index | Chapter 1: Money Markets | About author |
PRICING MONEY: A Beginner's Guide to Money, Bonds, Futures and Swaps is an introduction to the fixed-income markets. It explains the purpose and design of the most important financial instruments, including deposits, bonds, futures and swaps, and how these instruments are used by the various players in the financial system. The book is for new recruits and potential new recruits in financial markets (consider reading it before rather than after the interview), as well as accountants, lawyers, and those wishing to understand finance. The style is engaging, accessible and non-mathematical, and hence comprehensible by those with no prior financial knowledge.
Pricing Money can be purchased from Amazon.co.uk, Amazon.com, Buy.com, Amazon.fr, Amazon.de, Amazon.co.jp, B&N (same day delivery in Manhattan), as well as other bookshops: cite ISBN 0-471-48700-7.
Below is the Table of Contents, made available at jdawiseman.com with the permission of the publisher, Wiley; the usual disclaimer applies. Also available on the web is the Chapter 1: Money Markets.
| Part 1: A Beginner's Toolkit | |
| Chapter 1: Money markets What is money?; Why there is a money market?; Choosing a maturity; Repo; Central-bank money-market operations; Two money markets; The euro; Writing money; Settlement details; Summary. | |
| Chapter 2: Government bonds Introduction; The concept of yield; Example yield calculations; Coupon and yield; The yield curve; Primary dealers; Government bond markets; Repo as part of the government-bond market; Accrued interest; STRIPS; Other tradable government debt; Non-government debt; Rating agencies; Summary. | |
| Chapter 3: Futures The gold miner's problem; The gold miner's solution; Contract specification; Credit and margin; Cash settlement; Cash-settling other contracts; The fixings; The 3-month interest rate future; Price action; The strip and TED spreads; Arbitrage; Some trading jargon; Summary. | |
| Chapter 4: Swaps Introduction; An example; Asset swaps; A typical swap in detail; Credit risk in swaps; Trading jargon; Swaps and interest rate futures; Myth and reality; Summary. | |
| Chapter 5: Options Introduction; Puts and calls; What is the option worth?; Combinations; Underlyings; Embedded options; Implied volatility; Summary. | |
| Chapter 6: Foreign exchange The basic rationale; Size and conventions; Forwards; Shake the dice; Summary. | |
| Chapter 7: Players Governments; Pseudo-government issuers; Non-financial corporations; Pension funds; Insurers; Mutual funds; Hedge funds; Commercial banks; Mortgage lenders; Central banks; Private investors; Summary. | |
| Chapter 8: People Introduction; Proprietary traders; Market makers; Brokers; Salespeople; Researchers; Back office and middle office; Investment bankers; Summary. | |
| Chapter 9: Price action Why do prices move?; Necessity never made a good bargain; Stability and leverage; Fixed-income prices; A stylised crash in fixed income; Forwards, zeros and par yields; Trading the crash; Market irrationality; Summary. | |
| Part 2: More detail | |
| Chapter 10: Swaps revisited Introduction; Credit risk in swaps; Reducing the credit risk; Cross-currency basis swaps; The price of a basis swap; A cross-currency issue; Reducing credit risk in basis swaps; Forward rate agreements; Summary. | |
| Chapter 11: Non-government issuance Introduction; Bringing a deal to market; The syndicate; Book-building: taking orders; Pricing a swapped deal; Pricing an unswapped deal; Some legal details; Free to trade; An example issue; Opportunistic reopenings; Summary. | |
| Chapter 12: Yield, duration, repo and forward bond prices Measuring risk; Yields: compounding frequencies; Duration continued; Definition of DV01; How coupon affects duration and DV01; An example yield curve; A 3s10s flattener; A flattener generates cash; A forward flattener; What happens if nothing happens?; Weighting the forward flattener; A barbell; Carry and slide; Summary. | |
| Chapter 13: Bond futures Introduction; Specification; Delivery day; The delivery process; Cheapest to deliver: at par; Cheapest to deliver: far from par; CTD calculations before delivery; Delivery tail; Summary. | |
| Chapter 14: Basic fixed-income arithmetic The proportion of a year; Yield to price and price to yield; Semi to annual: halve and square; Forward yield; Forward asset swap; Summary. | |
| Index |
| Main index | Top | About author |


|
Timer
2.1
|
#include <Timer.h>
Public Member Functions | |
| Timer (TimerAdapter *adapter=0, bool isRecurring=false, unsigned int timeMillis=0) | |
| virtual | ~Timer () |
| void | attachAdapter (TimerAdapter *adapter) |
| TimerAdapter * | adapter () |
| void | startTimer (unsigned int timeMillis) |
| void | startTimer () |
| void | cancelTimer () |
| bool | isTimerExpired () |
| bool | isRunning () |
| void | tick () |
Static Public Attributes | |
| static const bool | IS_NON_RECURRING = false |
| static const bool | IS_RECURRING = true |
Protected Member Functions | |
| Timer * | next () |
| void | setNext (Timer *timer) |
Private Member Functions | |
| void | internalTick () |
| void | startInterval () |
| Timer & | operator= (const Timer &src) |
| Timer (const Timer &src) | |
Private Attributes | |
| bool | m_isRecurring |
| bool | m_isExpiredFlag |
| Timer mode flag, true: timer will automatically restart after expiration. More... | |
| unsigned long | m_currentTimeMillis |
| Timer expiration flag. More... | |
| unsigned long | m_triggerTimeMillis |
| interval time measurement base, updated every internalTick(), called either by tick() or by isTimerExpired() More... | |
| unsigned long | m_triggerTimeMillisUpperLimit |
| unsigned long | m_delayMillis |
| TimerAdapter * | m_adapter |
| Timer * | m_next |
Friends | |
| class | TimerContext |
Universal Timer.
Features:
Integration:
(shown on the basis of a simple application toggling the Arduino board's built-in LED)
#include "Timer.h"
const unsigned int BLINK_TIME_MILLIS = 200;
class BlinkTimerAdapter : public TimerAdapter { public: void timeExpired() { digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN)); } };
//The setup function is called once at startup of the sketch void setup() { pinMode(LED_BUILTIN, OUTPUT); new Timer(new BlinkTimerAdapter(), Timer::IS_RECURRING, BLINK_TIME_MILLIS); }
// The loop function is called in an endless loop void loop() { yield(); }
| Timer::Timer | ( | TimerAdapter * | adapter = 0 , |
| bool | isRecurring = false , |
||
| unsigned int | timeMillis = 0 |
||
| ) |
Timer constructor.
| adapter | TimerAdapter, is able to emit a timer expired event to any specific listener, default: 0 (no event will be sent) |
| isRecurring | Operation mode, true: recurring, false: non-recurring, default: false |
| timeMillis | Timer interval/timeout time [ms], >0: timer starts automatically after creation, others: timer stopped after creation, default: 0 |
|
virtual |
Timer destructor. Will detach itself from TimerContext.
|
private |
| TimerAdapter * Timer::adapter | ( | ) |
Timer Adapter accessor method.
| void Timer::attachAdapter | ( | TimerAdapter * | adapter | ) |
Attach specific TimerAdapter, acts as dependency injection.
| adapter | Specific TimerAdapter |
| void Timer::cancelTimer | ( | ) |
Cancel the timer and stop. No time expired event will be sent out after the specified time would have been elapsed. Subsequent isTimerExpired() queries will return false.
|
private |
Internal tick method, evaluates the expired state.
| bool Timer::isRunning | ( | ) |
Indicates whether the timer is currently running.
| bool Timer::isTimerExpired | ( | ) |
Poll method to get the timer expire status, recalculates whether the timer has expired before. This method could be used in a pure polling mode, where tick() has not to get called (by the TimerContext::handleTick() method), but also a mixed operation in combination with calling tick() periodically is possible. Subsequent isTimerExpired() queries will return false after the first one returned true, as long as the time did not expire again in case of a recurring timer.
|
protected |
|
protected |
|
private |
Starts time interval measurement, calculates the expiration trigger time. Manages to avoid Arduino millis() overflow issues occurring around every 50 hours.
| void Timer::startTimer | ( | unsigned int | timeMillis | ) |
Start or restart the timer with a specific time out or interval time.
| timeMillis | Time out or interval time to be set for the timer [ms]; 0 will cancel the timer, |
| void Timer::startTimer | ( | ) |
Start or restart the timer. If the timer has been canceled before, this will have no effect - in order to start the timer again, the startTimer(timeMillis) method with specific time value parameter has to be used instead.
| void Timer::tick | ( | ) |
Kick the Timer. Recalculates whether the timer has expired.
|
friend |
|
static |
Constant for isRecurring parameter of the constructor (
|
static |
Constant for isRecurring parameter of the constructor (
|
private |
|
private |
Timer expiration flag.
|
private |
|
private |
Timer mode flag, true: timer will automatically restart after expiration.
|
private |
|
private |
|
private |
interval time measurement base, updated every internalTick(), called either by tick() or by isTimerExpired()
|
private |


Oman weather: Missing man found dead
by Times News ServiceMuscat: A citizen who was missing from Al Batinah governorate has been found, Royal Oman Police announced.
Rescue teams received a report on Sunday, after he was swept away in a flooded wadi in Rustaq.
ROP said in an online statement: "The citizen who was missing yesterday as a result of drifting his vehicle in the course of the wadi in wilayat Al Rustaq was found dead."


THE THIN RED LINE (director: Terrence Malick; cast: Sean Penn, Adrien Brody, Jim Caviezel, Ben Chaplin, John Cusack, Woody Harrelson, Elias Koteas, Nick Nolte, John C. Reilly, Miranda Otto, Arie Verveen, Dash Mihok, John Savage, John Travolta, George Clooney, 1998)
Interestingly enough, during the same year, SAVING PRIVATE RYAN and THE THIN RED LINE, two epic films about WW11 have come out, each with a different perspective on the war, a different way of telling it, telling about a war whose heroes are fading fast in the memories of a country's conscience, as these men: presumably our dads and grandfathers, the old gentlemen we might have had a drink or two with, our old boss, or the fellow who never could quite tell us what happened back then or told us what happened and we could only refer back to the old-style WW11 movie for a point of reference. Some of these fellows who are still with us, are now well into their 70s, 80s, or 90s. They have seen America as it was and as it is, and now their story seems well-yearned for by the generations that came after and by the old-timers themselves, as they try to collect their thoughts and jar their memories, and put back the pieces of their life that they might never have done before, knowing full well this may be their last chance to get their story down while they are still alive to authenticate their experiences of WW11, the experiences that historians need in order to enliven their subjects, especially after so much history and changes to the American landscape has taken place.
The questions remain: are we still the same people? What about our values, are they the same or have they changed? And, of course, we ask our politicians, can this country afford to be the policeman for the world? Just what are our attitudes about war? Both films have tried to find answers to some of these imponderable questions, but in different ways. One by trying to paint a realistic picture in our mind of the horrors of war by showing in detail the bloodshed and sacrifices the men had to make when trying to comprehend what war was supposed to be like, as they landed on Omaha Beach during the D-Day invasion, with the director, Spielberg, not getting side-tracked with the bigger philosophical questions, there was no controversy over his film's statements that war is hell; while the other director, Malick, takes a broader view of things, for the most part, he depersonalizes the infantrymen fighting in the Guadalcanal war zone, he does it by trying to be more philosophical and more artistic in his approach to understanding how mankind is driven into war and forced into shedding blood.
It seems to me, that Malick tries to do too much and fails to meet his aims, while Spielberg's safer approach, using the more plain arguments against war, easily meets his goals. Therefore, which is the better film? I would be forced to say Spielberg's. But with all its flaws and pretensions and trying not to define one war but all wars, Malick takes more risks, and even if he does not make the better film, he has made the more interesting one, the one that has a greater "mythos" to it, and he should be rewarded, somehow, for being the more ambitious filmmaker.
Terrence Malick has a unique set of career moves to his credits, having graduated from Harvard and been a Rhodes scholar at Oxford, then becoming a journalist, then teaching philosophy at M.I.T., and subsequently studying at the American Film Institute. He wrote Pocket Money (72), and wrote and directed Badlands (73). His last film was made 20 years ago, Days of Heaven (78). All these films were critically successful. Why he didn't make another film in that time span, I have no idea. But this film was certainly being looked forward to by the many cinephiles who have followed his career, perhaps, allowing his long departure from films to give him too much of an air of mystery for his own good.
This film is adapted from the James Jones novel, it is close to three-hours long. In many ways it seems like a discourse on philosophy that a company of infantrymen in Guadalcanal on August of '42, acting as if they were college students analyzing the war being fought, coming out with the most trite twaddle imaginable, and preposterously doing all this in the middle of a war zone.
The director also seems to be motivated to record the beauty of nature with his magnificent camera footage of the area. Very odd, indeed, for a war film. But then, again, I'm partial to those who think like philosophers and to the splendors of nature, so I actually loved seeing the blades of grass blow in the breeze of the azure sky and the wild flowers abound. I thought the picture was so beautiful to watch, that I was hypnotized by the lush forests, the wounded hens and the perched owl and the parrots (I mean the real parrots, not the soldiers parroting the director's messages). Unfortunately, there were parts of this film that were so pretentious and out of place, it seemed like it was a film within a film, a film from another generation placed onto a film of this generation; perhaps a silent movie, a tribute to the great German director, Murnau, as the critic Jonathan Rosenbaum suggests. A film that allows the state of nature to be a pure state undamaged by civilization, that stays that way until civilized nations bring about their infectious wars.
I loved this film for being so grandiose and not having to follow the traditional linear travails of one soldier, but of following the collective psyches of Charlie Company, as the men in Charlie became interchangeable with each other, as well as melting into the landscape. I appreciate Malick for not caring what any one else might think of how he filmed it. This was the way Malick was going to make the picture, and that's that. And I bought into that, for the most part, until I realized the film ran out of purpose, after its second hour it lost its rhythm and flow, it had nowhere to go, there were just too many generalizations to ponder. What I eventually dug out from all the rubble and killing and messages delivered throughout the film, was that, if there was one thing you can do in life, it is to find what you want to do, then make an island for yourself and do what you have to do.This message was delivered very close to the end of the film, and it seemed like it took an eternity in coming.
The opening scene, the one which showed a crocodile going into the green slimy water (Is that supposed to symbolize... Viet-Nam? ... or, a reminder for us that nature can also be dangerous?) Anyway, some AWOL soldiers are taken off an ideal Melanesian village in the Solomon Islands and returned to their military companies so that they can fight the oncoming war, and so the film takes off from nature's heavenly state and what ensues are epic battle scenes and a living hell.
The title of the picture signifies that the thin red line is the crossing point between sanity and madness. And here is where Malick picks up the story, trying to explain and understand the evil that results from war, by use of idyllic imagery (no mosquitoes in this film version of Guadalcanal), and by using the men who he has depersonalized and, only, humanizing them by allowing us to hear their thinking process as it is being said aloud to us.
I thought the soldier reading a "Dear John" type of letter was very emotionally moving, bringing home the point that most of the soldiers really just want to survive, to get on home. But this film, also, brings on some pretty heady stuff for these nondescript soldiers to say about why they are fighting a war and it is all done, for the most part, in general terms. A voice-over, with a rich Southern accent sets the tone for the director's ruminations about war, this is done by either Pvt.Witt (Caviezel) or Bell (Ben Chaplin), it is hard to tell one voice from the other, as the voice waxes poetic about the bloody action going down, adding further to the absurdity of what is happening by rambling on, saying the most philosophical of things, such as, "What keeps us from reachin' out and graspin' the glory?" I must confess, you really had to like this film to listen to that sappy sort of dribble and not bust a gut.
The juiciest role in the film is reserved for Nolte, who plays a gung-ho West Point lieutenant Colonel Tall, distraught that he has been passed over for promotion to general, while younger, less experienced officers than him get promoted. He justifies his love for this war, by saying that it is made for him, it is "his" war, it is his chance to get promoted after all the years of eating shit from all the higher-ups, and that he is going to do nothing to ruin it, even if it requires his men to take a hill that will result in tremendous casualties. And the taking of the hill is the focal point of the film, with its action scenes being bloody and stupefying. The film also gets caught-up in the grips of politically motivated reasons why things are done a certain way, as the C-Company Captain, James Staros (Elias Koteas), questions the colonel's decision to charge the hill and take its machine gun fortified bunker that is firing down on his men, saying he has to disobey the order because he is afraid that it will be a hopeless suicidal bloodbath.
Sean Penn gives an understated performance as the hardened but compassionate veteran sergeant of C-Company, in a part that many actors could have played. But he is good in this role, proving he has a wide range of talent. The screen seems to favor him when he is on it, he seems to catch our eye, there always seems to be something going on in his thought process and we want to observe him, we seem to sense that he is where the action is.
Private Witt is an AWOL soldier in adoration of the native culture and as a future hero, brought back to the war by Sergeant Welsh (Penn). Private Bell plays the part of a soldier who only wishes to return safely to his beautiful wife (Miranda Otto).Travolta has a cameo, that he is either wrongly cast for or plays it like it should be played, with an uncomfortable tension, sporting a sleazy moustache, as a young general full of hubris and political know-how, playing mind games with the subservient Colonel Tall aboard a transport ship heading for Guadalcanal. My vote is that he is just right for the part.
This is an easy film to criticize, it has many faults in it, too many to overcome and make an argument that this film is the ultimate war film Malick hoped it to be. That it is not. But it is a better film than its many apparent faults make it seem to be (sappy dialogue and force-feeding the audience with its self-righteousness and poor pacing are its worst detractions). I'm always suspicious of films that pontificate about things they are against and then justify their bloodiest and goriest parts that draw for them their audience, by stating that their aims are so lofty that the violence in their films are artistically justified. This film is no exception, except that I genuinely felt that there was something strong embedded in this film that got lost in all its great action scenes and grandeur and philosophizing, something that creeps up on you as you start thinking about what was happening to the men in the film, and why they are fighting a bloody war. What Malick has given us, is a flawed film, that is visually beautiful and arty, that also allows us to think of war in its most simple terms, reminding us that we better know what it means to go to war, or else we will be doomed to keep repeating our past mistakes. He seems to take no sides, Japanese or American, they both got caught in a bad deal.
A 1964 b/w film, director Andrew Marton's The Thin Red Line, used the same book and title for its film, but you would never know it. Malick's movie is truly original filmmaking artistry. This film will be long remembered as a personal film, one that will be well-thought of despite its flaws. It is a darn shame that it couldn't have been edited better so that it would make sense for the entire picture, not just for three-quarters of it.
REVIEWED ON 2/4/99 GRADE: B+
Dennis Schwartz: "Ozus' World Movie Reviews"
http://www.sover.net/~ozus
© ALL RIGHTS RESERVED DENNIS SCHWARTZ
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


[gecode-users] Sets difference
Guido Tack
tack at ps.uni-sb.de
Fri Feb 29 18:13:57 CET 2008
Mauricio Toro wrote:
> I am trying to make a little program for set's difference.
> I found some info at sudoko's example.. but I have not
> been able to make the difference work :(
>
> I have this code:
>
> SetVar a = SetVar(this);
> SetVar b = SetVar(this);
> SetVar c = SetVar(this);
> SetVarArray answer = SetVarArray(this,2);
>
> dom (this, a, SRT_EQ , 1, 5);
> dom (this, b, SRT_EQ , 3, 10);
>
> //c = a - b
> // answer = c ??
> rel (this, a, SOT_MINUS, b, SRT_EQ, c);
> rel (this, SOT_UNION, answer, c);
>
>
>
>
> //SET_VAR_MIN_CARD With smallest unknown set.
> //SET_VAL_MIN Select smallest value in unknown set
> branch(this, answer, SET_VAR_NONE, SET_VAL_MIN);
As a is {1,2,3,4,5} and b is {3,4,5,6,7,8,9,10}, the difference is
{1,2}, and answers should be constrained to two sets answers[0] and
answers[1] such that their union is {1,2}. What exactly is your
question?
Guido
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.ps.uni-sb.de/pipermail/users/attachments/20080229/12fa6503/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 2436 bytes
Desc: not available
URL: <http://www.ps.uni-sb.de/pipermail/users/attachments/20080229/12fa6503/attachment.bin>
More information about the gecode-users
mailing list


6 references to s_updating
System.Management.Automation (6)
engine\interpreter\Utilities.cs (6)
805
if (curStorage ==
s_updating
)
808
while ((curStorage = _stores) ==
s_updating
)
829
StorageInfo[] curStorage =
s_updating
;
837
while ((curStorage = Interlocked.Exchange(ref _stores,
s_updating
)) ==
s_updating
)
871
if (curStorage !=
s_updating
)


SOPHOMORE | WEB DEVELOPER | COMPETITIVE CODER
I'm a web developer and a programmer.
I am currently pursuing bachelor's degree in Computer Science from BIT Mesra, Ranchi.
I have a passion for web development.
I am also into competitive programming and love playing with alogrithms and data structures.


Film review by Kevin Patterson
A CIVIL ACTION Rating: *** (out of four) PG-13, 1998 Director/Screenplay: Steven Zaillian Starring Cast: John Travolta, Robert Duvall, John Lithgow, William H. Macy
A CIVIL ACTION turned out to be about as good as I had expected, but not in the way I had expected. Based on the previews, what I thought we were going to get was a nice character film about a lawyer who finds himself personally affected by a case for the first time with a considerable amount of courtroom melodrama. Instead, the character development turns out to be kind of thin, but the legal procedure is actually portrayed fairly realistically and without a tidy happy ending.
John Travolta is the star of the film (which is based on a true story) as Jan Schlictmann, a personal injury lawyer While he's not a totally heartless sleazeball, certainly knows the ins and outs of his profession and isn't about to take on a case solely because it's a good cause.  As we learn from Jan's narration, a personal injury trial rarely comes to an actual verdict: 98.5% of them end in an out-of-court settlement. All a settlement really means, of course, is that the lawsuit is a sufficient inconvenience that the defendant will throw out some money to make it go away, not that they actually admit any wrongdoing.
The trouble is, Jan's latest clients, a group of parents from Woburn, Massachussetts whose children all died due to ill health, want exactly that: an apology. They believe that their children's sickness was a result of improper waste disposal procedures by some local companies which polluted the water supply. At first, Jan is reluctant to take their case, but eventually he agrees and undertakes a costly investigation into the companies' disposal procedures. The problem is that their wishes really have no place in the American legal system, at least not without a much more powerful financial force behind them than Jan's firm. To get an admission of wrongdoing, that means that Jan must prove that the companies were at fault in court, but as he says, this is not the way personal injury trials function: they function by ending early in a settlement.
Writer/director Steven Zaillian wisely avoids getting too heavy-handed with all this: rather than belaboring the obvious cold-heartedness of Jan's opponents, he sends them up with a light, satirical touch. Robert Duvall turns in a good performance as the eccentric and arrogant Jerome Facher, the lawyer who defends one of the corporations. He's certainly cynical and manipulative, yet not really "evil" per se. He's just a world-weary lawyer who knows that a trial is really just about putting on a good show: "justice" has long since ceased to have any real meaning for him. His best scene occurs about halfway through, when Zaillian intercuts his lectures to a law school class with shots of him acting out the strategies he describes in the actual trial. For example, he explains that frequent objections serve to break up the other side's rhythm, as he tells his students, "If you ever catch yourself nodding off in court, the first word out of your mouth when you wake up should be 'objection.'" Then we see Facher himself asleep during the trial, waking suddenly and exclaiming, "Objection!"
The trial, to put it mildly, does not go well. The judge (John Lithgow) nixes some of Jan's defense strategy, and it goes on long enough that he and his partners are more or less run out of business by the legal costs. They even go so far as to sell their own houses and many of their other possessions in order to keep going, but finally they reach a point where they simply cannot continue any longer. Zaillian clearly wants this to be a sort of transformational journey for Jan, but unfortunately he and his partners are not developed very well. His sudden conversion from cynical ambulance-chaser to bona fide crusader for justice happens too quickly. It seems to result from little more than a walk down the river, where he sees that the pollution the parents described probably is taking place, and some serious thought about what it must have been like to lose a child. But didn't he ever give *any* of his other cases this kind of consideration before? What's different about this one that causes him to change his attitude?
A CIVIL ACTION finds only limited success as a character drama, but it makes up for it with its realistic, intelligent plotting and its avoidance of excessive melodrama or an easy ending. It probably isn't one of the best films you'll see, but it's never boring, and you may actually learn a few things about the mechanics of a civil lawsuit in the process.
Film Reviews Page: http://members.aol.com/KTPattersn/reviews.html
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


Plugin Information |
|---|
No information for the plugin 'firefoxaddon' is available. It may have been removed from distribution. |
This plugin is up for adoption. This add-on is looking for a co maintainer. Contact<EMAIL_ADDRESS>Click here to learn more!
Either mouse over the status icon to view the tooltip and quickly check the builds information, or left click the icon and select a build page to open. It's also easy to trigger a build by using one of the menu options.
Download & Installation
Visit https://addons.mozilla.org/en-US/firefox/addon/7522 and click 'Add to Firefox' button.
Starting Firefox 4, Jenkins icon is displayed on add-on bar. An add-on bar is disabled by default (at least as of Firefox 4 Beta 7), you have to manually enable it.
On OS X: View -> Toolbars -> Add-on Bar.
Windows & Linux users? Please leave a comment with the instruction on how you enabled the Add-on Bar, I'll add it to this section.
OS X users are required to configure Firefox:
- type about:config on Firefox URL bar, press enter
- search for browser.preferences.instantApply , the default value on OS X is true, set this to false
This change is needed due to a problem with preference accept button behaviour with FF3.* on OS X, more info is available from http://forums-test.mozillazine.org/viewtopic.php?f=19&t=698285 .
By setting instantApply to false, you'll have to click OK button when you change FF Add-on Preferences.
OS X users are also required to install Growl to provide alerts service on Firefox.
FAQ
- Q: How to add a feed to be monitored?
A: Go to your Jenkins web page. If you're on the dashboard or view page, the Jenkins feed links are located at the bottom right area. If you're on a job page, the feed links are at the left area bellow the build history. Right clink on a feed link (for all, for failures, or for just last builds), select Add Link To Jenkins Build Monitor. Provide a name and click OK. - Q: How to monitor a group of jobs?
A: You can either add the feeds of those jobs one by one, or you can create a view that contains only the jobs that you want and then add the feed link of that view. - Q: How to display only the latest build status?
A: Go to Preference -> Display -> select latest build from the drop down list. - Q: I'm using OS X and Growl, I'm getting error message "Unable to add link" when I try to add a Jenkins feed link, and on the error console I see error "Component returned failure code: 0x80570016 (NS_ERROR_XPC_GS_RETURNED_FAILURE)".
A: The first thing you should try is to uninstall then reinstall Growl. If that doesn't work, try a new Firefox.dmg installation, or try a fresh Firefox profile. Check out the comments section on https://issues.jenkins-ci.org/browse/JENKINS-8899
Usage
- After restarting Firefox following an installation, a Jenkins icon will appear on Firefox status bar panel.
- Go to your Jenkins web site, right click on a feed link (i.e. "for all", "for failures", or "for just last builds" links) and select "Add Link To Jenkins Build Monitor" from the menu.
- Provide a name for the feed, then click OK. Build Monitor will suggest a name for the feed depending on whether the feed is for the whole Jenkins instance, or specific to a particular job.
- The feed status icon will appear on Firefox status bar. Mouse over it to see the build details on a tooltip. If you want to visit any of those builds' web page, left click the weather/orb icon, and a build menu will appear. Click on any of the build items to open the corresponding build web page.
- Preferences window can be opened via right click menu of a status icon.
Check out the demo video of Build Monitor 0.9.
Translation
Build Monitor has been translated to French, Indonesian, and Japanese. If you're interested in helping with the translations, please submit a patch to the issue tracker. If you have commit rights, please feel free to add the translation yourself.
To add a new locale, please follow these steps:
- Fork https://github.com/jenkinsci/firefox-extension-buildmonitor .
- Add new locale directory under /src/main/resources/firefox/chrome/locale directory.
- Add buildmonitor.dtd and buildmonitor.properties files in that directory. Have a look at en-US locale directory as example, copy paste the content to the new locale files, translate the value of each property.
- Add the new locale to /src/main/resources/firefox/chrome.manifest
locale buildmonitor <new_locale> jar:chrome/buildmonitor.jar!/locale/<new_locale>/
- Submit a pull request.
Screenshots
Credits
Icons from Tango Desktop Project.
Sound effects from the freesound project:
- Build Failure - glass break 5.wav by Freq Man
- Executor Stuck - scannerhrn.wav by NoiseCollector
Attachments:
08buildmonitor-alertnotification.jpg (image/jpeg)
08buildmonitor-preferences.jpg (image/jpeg)


{% extends 'wl/dash_tables.html' %} {% block applications_filters %} {% endblock %} {% block content %}
On this site you can apply online for specific wildlife licence types and manage your current licences and returns.
All correspondence regarding your applications, licences and returns and any other information or prompts will be sent to the email address that you have used to log into this system. Please remember to check this email regularly.
Apply for a new wildlife licence online
The “Applications” table below displays your pending applications. It also displays any draft applications that you have saved and not yet submitted.
As you begin using the online system, a summary of your current and past licences will be shown in the “Licences” table below.
Options in the “action” column for each licence allow you to apply to amend licences or have them reissued.
Depending on the types of licences you hold, you may be required to submit returns on a regular basis. These are accessible in the “Returns” table below. The table will contain any past returns submitted as well as returns due or overdue.


files(pattern, case=True)
Retrieves the names of all files at a given path matching a wildcard pattern. By default a case-sensitive search is performed but this can be relaxed by passing False
as the case
parameter.
f = files("~/Pictures/*.jpg") # tilde expands to $HOME image(choice(f), 10, 10)


The IzPack native launcher will first check for a JRE on the target system. If one is found, then it will launch the installer. If no JRE can be found, then it will help the user in installing one either from the internet or from a bundled one. To sum-up, the IzPack native launcher will allow your users to install your software even if they don't have a JRE at first sight.The IzPack native launcher is a .exe file that looks for a file calledlauncher.ini
in the current directory. Thelauncher.ini
specifies:Notes about IzPack Launcher and possible alternatives
- which jar file contains the IzPack installer.
- The setup .exe or script to run to install the JRE.
Unfortunately, this does not meet our needs, since we want to use a custom JRE that includes packages like Java3D etc. For us to use this, we would need to create a JRE setup script.- launch4j
- Can include a JRE, but really only for one application? We need to add multiple apps to the Start Menu.
The way we do this is based on Notes about IzPack Launcher and possible alternatives.
$PTII/adm/gen-X.Y/jre
svn co http://svn.berlios.de/svnroot/repos/izpack/izpack-src/trunk
c:\cxh\ptII\adm\gen-6.0\ptII6_0-devel_setup.xml \ -b c:\cxh\ptII\adm\gen-6.0 \ -o c:\cxh\ptII\adm\gen-6.0\ptII6_0-devel_setup.jar \ -h c:\cxh\src\izpack\trunkWhere
c:\cxh\ptII\adm\gen-6.0\ptII6_0-devel_setup.xml
install.xml
-b c:\cxh\ptII\adm\gen-6.0
-o c:\cxh\ptII\adm\gen-6.0\ptII6_0-devel_setup.jar
-h c:\cxh\src\izpack\trunk
No valid IzPack home directory found
-> Fatal error : No valid IzPack home directory found java.lang.IllegalArgumentException: No valid IzPack home directory found at com.izforge.izpack.compiler.CompilerConfig.resolveIzPackHome(CompilerConfig.java:1908) at com.izforge.izpack.compiler.CompilerConfig.main(CompilerConfig.java:1835) at com.izforge.izpack.compiler.Compiler.main(Compiler.java:622)The solution is to copy
ShellLink.dll
cp c:/Pro*/izpack/bin/native/izpack/ShellLink.dll izpack
Uninstaller not found: c:\cxh\src\izpack\trunk\lib\uninstaller.jar
-> Fatal error : c:\cxh\ptII\adm\gen-6.0\ptII6_0_devel_setup.xml:18: Uninstaller not found: c:\cxh\src\izpack\trunk\lib\uninstaller.jar com.izforge.izpack.compiler.CompilerException: c:\cxh\ptII\adm\gen-6.0\ptII6_0_devel_setup.xml:18: Uninstaller not found: c:\cxh\src\izpack\trunk\lib\uninstaller.jar at com.izforge.izpack.compiler.CompilerConfig.parseError(CompilerConfig.java:1523) at com.izforge.izpack.compiler.CompilerConfig.findIzPackResource(CompilerConfig.java:1488) at com.izforge.izpack.compiler.CompilerConfig.addInfo(CompilerConfig.java:1199) at com.izforge.izpack.compiler.CompilerConfig.executeCompiler(CompilerConfig.java:316) at com.izforge.izpack.compiler.CompilerConfig.main(CompilerConfig.java:1854) at com.izforge.izpack.compiler.Compiler.main(Compiler.java:622)Solution, use ant:
cd trunk/src ant distI'm not sure how to do this from Eclipse. Eclipse can run ant but the setup instructions have us include files from
src/lib
,
not src
.
OsVersion
missing when I ran
java -version uninstaller.jarThe solution was to check out the 3.9 branch and rebuild:
svn co http://svn.berlios.de/svnroot/repos/izpack/izpack-src/branches/branch-3.9/ cd 3.9.0-M1/src antI also had to edit
build.xml
so that we included izpack/util/os/*.class as per The Unistaller.jar is not working
It turns out that part of the install process updates uninstaller.jar
. So, I had to copy the uninstaller.jar
file
over to the installed version of IzPack - copying uninstaller.jar
to the installed application will not do it.
The solution is to use the ProcessPanel and define our own class that does the extraction.
Cannot find Resource ProcessPanel.Spec.xml for language eng
com.izforge.izpack.installer.ResourceNotFoundException: Can not find Resource ProcessPanel.Spec.xml for language eng at com.izforge.izpack.installer.ResourceManager.getLanguageResourceString(ResourceManager.java:137) at com.izforge.izpack.installer.ResourceManager.getInputStream(ResourceManager.java:154) at com.izforge.izpack.installer.ProcessPanelWorker.readSpec(ProcessPanelWorker.java:109) at com.izforge.izpack.installer.ProcessPanelWorker.run(ProcessPanelWorker.java:233) at java.lang.Thread.run(Unknown Source) Error parsing XML specification for processing.Solution:
<res src="ProcessPanel.Spec.xml" id="ProcessPanel.Spec.xml"/>
-u
command:
jar -fu c:/Program\ Files/IzPack/lib/installer.jar ExtractJarFile.classWe also have to update the
standalone-compiler.jar
file
with the new installer.jar
file. My solution was to rebuild
izPack and run
cd izpack/trunk/src rm ../lib/installer.jar ant build.installer jar -uf ../lib/installer.jar ExtractJarFile.class ant build.standalone-compiler cp ../lib/standalone-compiler.jar ../../izpack3.9.0/lib/standalone-compiler.jarHowever, a better solution is to use
<jar src="ExtractJarFile.jar">
in the
install.xml
file
Error accessing processing class
src/lib/com/izforge/izpack/installer/ProcessPanelWorker.java
so that it printed the exception, which was
Class com.izforge.izpack.installer.ProcessPanelWorker$ExecutableClass
can not access a member of class ExtractJarFile with modifiers "private".
Last Updated: $Date: 2006/10/26 22:15:45 $


Here, we will focus on an example dataset generated by 10X Genomics: a set of ~5,000 cells from an mouse adult brain.
Processed data (generated by cellranger-atac count
) can be downladed from here:
mkdir -p data/MouseBrain
wget https://cf.10xgenomics.com/samples/cell-atac/1.2.0/atac_v1_adult_brain_fresh_5k/atac_v1_adult_brain_fresh_5k_analysis.tar.gz -O data/MouseBrain/atac_v1_adult_brain_fresh_5k_analysis.tar.gz
wget https://cf.10xgenomics.com/samples/cell-atac/1.2.0/atac_v1_adult_brain_fresh_5k/atac_v1_adult_brain_fresh_5k_filtered_peak_bc_matrix.tar.gz -O data/MouseBrain/atac_v1_adult_brain_fresh_5k_filtered_peak_bc_matrix.tar.gz
wget https://cf.10xgenomics.com/samples/cell-atac/1.2.0/atac_v1_adult_brain_fresh_5k/atac_v1_adult_brain_fresh_5k_filtered_peak_bc_matrix.h5 -O data/MouseBrain/atac_v1_adult_brain_fresh_5k_filtered_peak_bc_matrix.h5
wget https://cf.10xgenomics.com/samples/cell-atac/1.2.0/atac_v1_adult_brain_fresh_5k/atac_v1_adult_brain_fresh_5k_filtered_tf_bc_matrix.tar.gz -O data/MouseBrain/atac_v1_adult_brain_fresh_5k_filtered_tf_bc_matrix.tar.gz
wget https://cf.10xgenomics.com/samples/cell-atac/1.2.0/atac_v1_adult_brain_fresh_5k/atac_v1_adult_brain_fresh_5k_filtered_tf_bc_matrix.h5 -O data/MouseBrain/atac_v1_adult_brain_fresh_5k_filtered_tf_bc_matrix.h5
wget https://cf.10xgenomics.com/samples/cell-atac/1.2.0/atac_v1_adult_brain_fresh_5k/atac_v1_adult_brain_fresh_5k_fragments.tsv.gz -O data/MouseBrain/atac_v1_adult_brain_fresh_5k_fragments.tsv.gz
wget https://cf.10xgenomics.com/samples/cell-atac/1.2.0/atac_v1_adult_brain_fresh_5k/atac_v1_adult_brain_fresh_5k_fragments.tsv.gz.tbi -O data/MouseBrain/atac_v1_adult_brain_fresh_5k_fragments.tsv.gz.tbi
wget https://cf.10xgenomics.com/samples/cell-atac/1.2.0/atac_v1_adult_brain_fresh_5k/atac_v1_adult_brain_fresh_5k_peak_annotation.tsv -O data/MouseBrain/atac_v1_adult_brain_fresh_5k_peak_annotation.tsv
wget https://cf.10xgenomics.com/samples/cell-atac/1.2.0/atac_v1_adult_brain_fresh_5k/atac_v1_adult_brain_fresh_5k_peaks.bed -O data/MouseBrain/atac_v1_adult_brain_fresh_5k_peaks.bed
wget https://cg.10xgenomics.com/samples/cell-atac/1.2.0/atac_v1_adult_brain_fresh_5k/atac_v1_adult_brain_fresh_5k_possorted_bam.bam -O data/MouseBrain/atac_v1_adult_brain_fresh_5k_possorted_bam.bam
wget https://cf.10xgenomics.com/samples/cell-atac/1.2.0/atac_v1_adult_brain_fresh_5k/atac_v1_adult_brain_fresh_5k_possorted_bam.bam.bai -O data/MouseBrain/atac_v1_adult_brain_fresh_5k_possorted_bam.bam.bai
wget https://cf.10xgenomics.com/samples/cell-atac/1.2.0/atac_v1_adult_brain_fresh_5k/atac_v1_adult_brain_fresh_5k_raw_peak_bc_matrix.tar.gz -O data/MouseBrain/atac_v1_adult_brain_fresh_5k_raw_peak_bc_matrix.tar.gz
wget https://cf.10xgenomics.com/samples/cell-atac/1.2.0/atac_v1_adult_brain_fresh_5k/atac_v1_adult_brain_fresh_5k_raw_peak_bc_matrix.h5 -O data/MouseBrain/atac_v1_adult_brain_fresh_5k_raw_peak_bc_matrix.h5
wget https://cf.10xgenomics.com/samples/cell-atac/1.2.0/atac_v1_adult_brain_fresh_5k/atac_v1_adult_brain_fresh_5k_singlecell.csv -O data/MouseBrain/atac_v1_adult_brain_fresh_5k_singlecell.csv
wget https://cf.10xgenomics.com/samples/cell-atac/1.2.0/atac_v1_adult_brain_fresh_5k/atac_v1_adult_brain_fresh_5k_summary.csv -O data/MouseBrain/atac_v1_adult_brain_fresh_5k_summary.csv
wget https://cf.10xgenomics.com/samples/cell-atac/1.2.0/atac_v1_adult_brain_fresh_5k/atac_v1_adult_brain_fresh_5k_summary.json -O data/MouseBrain/atac_v1_adult_brain_fresh_5k_summary.json
wget https://cf.10xgenomics.com/samples/cell-atac/1.2.0/atac_v1_adult_brain_fresh_5k/atac_v1_adult_brain_fresh_5k_web_summary.html -O data/MouseBrain/atac_v1_adult_brain_fresh_5k_web_summary.html
wget https://cf.10xgenomics.com/samples/cell-atac/1.2.0/atac_v1_adult_brain_fresh_5k/atac_v1_adult_brain_fresh_5k_cloupe.cloupe -O data/MouseBrain/atac_v1_adult_brain_fresh_5k_cloupe.cloupe
scATACseq raw data processing can be very different from bulk ATAC-seq, and downstream analysis is also quite specific to single-cell assays.
As of today, Signac
is one of the few solutions developed to investigate scATACseq data in R, and is the most widely used approach. Signac
is
an “extension” of Seurat
, which originally focused on single-cell RNA-seq data analysis. It uses the same type of object structure.
A slight difference regarding the features is that they are actually chromatin accessible loci, rather than genes. Because peaks are frequently
studied in relation to neighbouring genes, the Seurat
object can conventiently store gene annotations (or any type of genomic annotations)
in its annotation
slot.
library(Signac)
library(Seurat)
library(tidyverse)
library(BiocParallel)
library(plyranges)
## -- Read brain ATAC-seq counts
Signac::CreateChromatinAssay(
brain_assay <-counts = Seurat::Read10X_h5("data/MouseBrain/atac_v1_adult_brain_fresh_5k_filtered_peak_bc_matrix.h5"),
sep = c(":", "-"),
genome = "mm10",
fragments = 'data/MouseBrain/atac_v1_adult_brain_fresh_5k_fragments.tsv.gz',
min.cells = 1
)class(brain_assay)
## -- Create Seurat object
vroom::vroom(
metadata <-file = "data/MouseBrain/atac_v1_adult_brain_fresh_5k_singlecell.csv",
col_names = TRUE
%>%
) filter(barcode != 'NO_BARCODE') %>%
mutate(cell = barcode) %>%
column_to_rownames('barcode') %>%
as.data.frame()
Seurat::CreateSeuratObject(
brain <-counts = brain_assay,
assay = 'peaks',
project = 'ATAC',
meta.data = metadata
)
## -- Add genome annotations
Annotation(brain) <- AnnotationHub::AnnotationHub()[['AH49547']] %>%
filter(gene_type == 'protein_coding', type == 'gene') %>%
mutate(gene_biotype = gene_type)
Accessing the data stored in a Seurat
object is (generally) relatively easy, using the getAssayData()
function.
# Data slots available in the Seurat object
Assays(brain)
slotNames(brain<EMAIL_ADDRESS>slots <-
# Find peaks
GetAssayData(brain, slot = 'ranges')
peaks <-
# Find counts
GetAssayData(brain, slot = "counts")
counts <- GetAssayData(brain, slot = "data")
data <-
# Find annotations
GetAssayData(brain, slot = "annotation")
annots <-
# Find seqinfo
GetAssayData(brain, slot = "seqinfo") seqinfo <-
granges(brain)
peaks <- Annotation(brain)
annots <- join_nearest(peaks, annots) %>%
annotated_peaks <- add_nearest_distance(annots) %>%
mutate(
peak = paste(seqnames, start, end, sep = '-'),
inGene = distance == 0
)table(annotated_peaks$inGene)
# - Distance to nearest promoter
Annotation(brain) %>%
mm_promoters <- resize(1, fix = 'start') %>%
resize(4000, fix = 'center') %>%
mutate(prom_id = paste0('prom_', 1:n()))
add_nearest_distance(peaks, mm_promoters) %>%
as_tibble() %>%
pull(distance) %>%
quantile(probs = seq(0, 1, 0.1))
QC of scATACseq data stored in Seurat
is simplified, using Signac
-provided functions. On top of these utilities,
scATACseq fragments can always be imported (remember: they are stored in the fragments.tsv.gz
generated by
cellranger-atac count
, and they also contain information re: the cell-of-origin, for each fragment),
if one wants to manually check fragment distribution, size, …
## -- Nucleosome signal
NucleosomeSignal(object = brain)
brain <-$nucleosome_group <- ifelse(brain$nucleosome_signal > 4, 'NS > 4', 'NS < 4')
brainrange(brain$nucleosome_group)
table(brain$nucleosome_group)
## -- Frag. size distribution
vroom::vroom('/data/20210804_scATACseq-workshop/data/MouseBrain/atac_v1_adult_brain_fresh_5k_fragments.tsv.gz', col_names = FALSE) %>%
frags <- setNames(c('chr', 'start', 'stop', 'cell', 'cluster'))
filter(frags, chr == 'chr12', start < 50000000, cluster %in% c(1:10))
frags_chr12 <- left_join(frags_chr12<EMAIL_ADDRESS>cell, nucleosome_group)) %>%
x <- mutate(width = stop - start)
ggplot(x, aes(x = width)) +
p <- geom_bar() +
facet_wrap(~nucleosome_group+cluster, scales = 'free', ncol = 10) +
xlim(c(0, 800))
## -- TSS enrichment
TSSEnrichment(brain, fast = TRUE)
brain <-$high.tss <- ifelse(brain$TSS.enrichment > 2, 'High', 'Low')
brain
frags_chr12 %>%
df <-<EMAIL_ADDRESS>cell, high.tss)) %>% # For each fragment, recover cell TSS enrich. status
dplyr::rename(c('seqnames' = 'chr', 'end' = 'stop')) %>%
as_granges() %>%
join_overlap_left(plyranges::select(mm_promoters, prom_id)) %>% # Link each fragment to overlapping promoter
as_tibble() %>%
drop_na(prom_id) %>% # Remove fragments which are not overlapping any promoter
left_join(
as_tibble(mm_promoters), by = c('prom_id')
%>%
) mutate(
midprom = start.y + (end.y - start.y)/2,
distance = midprom - start.x
%>%
) filter(high.tss == 'High') %>%
count(distance)
ggplot(df, aes(x = distance, y = n)) +
p<- geom_col() +
geom_smooth(method = 'loess', span = 0.05) +
theme_minimal() +
theme(legend.position = 'none') +
labs(title = 'Fragment "cut" sites', x = 'Distance from TSS', y = '# of cut sites') +
xlim(c(-1000, 1000))
Cell selection can be done based on some QC metrics (e.g. FRiP, FRiBl). Feature selection can be done based on a count threshold.
$FRiP <- brain$peak_region_fragments / brain$passed_filters * 100
brain$FRiBl <- brain$blacklist_region_fragments / brain$peak_region_fragments
brain# Keep cells with high number of fragments in peaks
subset(brain, peak_region_fragments > 3000)
brain <-# Remove cells with number of fragments in peaks too high
subset(brain, peak_region_fragments < 100000)
brain <-# Keep cells with high FRiP
subset(brain, FRiP > 50)
brain <-# Keep cells with low FRiBl
subset(brain, FRiBl < 0.05)
brain <-# Remove cells with high nucleosome signal
subset(brain, nucleosome_signal < 4)
brain <-# Keep cells with good TSSES
subset(brain, TSS.enrichment > 2)
brain <-# Remove peaks with less than 10 counts overall
brain[rowSums(GetAssayData(brain, slot = "counts")) > 10, ]
brain <-# Remove peaks detected in les than 10 cells overall
brain[rowSums(GetAssayData(brain, slot = "counts") > 0) > 10, ] brain <-
Data normalization and dimensionality reduction is done differently in scATACseq, compared to scRNAseq. This is
mostly due to the fact that scATACseq data is overly sparse, compared to (already quite sparse) scRNAseq data.
For more info, read Signac
pre-print: (Multimodal single-cell chromatin analysis with Signac)[https://www.biorxiv.org/content/10.1101/2<IP_ADDRESS>3613v1.full]
To alleviate normalization problems linked to massive sparsity, an alternative normalization approach based on a “term frequency-inverse document frequency” approach.
TF-IDF transformation yields metrics reflecting how important a “word” is to a “document” in a “collection”
(in this case, a “word” is an accessible chromatin locus, a “document” is a cell, and the “collection” is the entire set of cells).
Dimensions of the normalized data matrix generated by this transformation are then reduced using singular value decomposition (SVD).

# Find neighboring cells
FindNeighbors(object = brain, reduction = 'lsi', dims = 2:30)
brain <-# Cluster cells
FindClusters(object = brain, algorithm = 3, resolution = 1.2, verbose = FALSE)
brain <-# Embbed cells in lower dimensional space
RunUMAP(brain, reduction = 'lsi', dims = 2:30)
brain <-saveRDS(brain, 'data/MouseBrain/brain.rds')
Differential accessibility analysis of chromatin loci in scATACseq is a difficult exercise, which is still very experimental and rapidly-evolving.
One “easy” way to perform DA analysis within a scATACseq workflow is to rely on the already-existing FindMarkers()
function from Seurat
.
This approach has not been very thoroughly used yet, but allows quick-n-dirty exploratory analysis of the chromatin loci differently accessible
between pairs of (goups of) clusters.
## - Find markers between 2 groups of clusters
Seurat::FindMarkers(
da_peaks <-object = brain,
ident.1 = c(10, 16),
ident.2 = c(4, 5),
min.pct = 0.05
)
da_peaks <- readRDS('data/MouseBrain/da_peaks_10-16_vs_4-5.rds')
peaks <- rownames(da_peaks)[da_peaks$?...? <= 0.01 & da_peaks$?...? >= 1.5]
peaks <- GenomicRanges::GRanges(str_replace(peaks, '-', ':')) Annotation(brain)[nearest(?...?, Annotation(?...?))]$?...?
In this section, we will rely on worm bulk ATACseq data obtained from isolated tissues, to study differential accessibility analysis.
## -- Download raw data
mkdir data/ATAC_worm/fastq/
curl -L ftp://ftp.sra.ebi.ac.uk/vol1/fastq/SRR105/079/SRR10564679/SRR10564679_1.fastq.gz -o data/ATAC_worm/fastq/SRR10564679_GSM4197239_Neurons_YA_ATAC_pe_rep1_Caenorhabditis_elegans_ATAC-seq_1.fastq.gz
curl -L ftp://ftp.sra.ebi.ac.uk/vol1/fastq/SRR105/079/SRR10564679/SRR10564679_2.fastq.gz -o data/ATAC_worm/fastq/SRR10564679_GSM4197239_Neurons_YA_ATAC_pe_rep1_Caenorhabditis_elegans_ATAC-seq_2.fastq.gz
curl -L ftp://ftp.sra.ebi.ac.uk/vol1/fastq/SRR105/086/SRR10564686/SRR10564686_1.fastq.gz -o data/ATAC_worm/fastq/SRR10564686_GSM4197244_Neurons_YA_ATAC_pe_rep2_Caenorhabditis_elegans_ATAC-seq_1.fastq.gz
curl -L ftp://ftp.sra.ebi.ac.uk/vol1/fastq/SRR105/086/SRR10564686/SRR10564686_2.fastq.gz -o data/ATAC_worm/fastq/SRR10564686_GSM4197244_Neurons_YA_ATAC_pe_rep2_Caenorhabditis_elegans_ATAC-seq_2.fastq.gz
## -- Process data
GENOME=~/genomes/ce11/ce11.fa
CPU=16
SAMPLE=Neurons_rep1
R1=data/ATAC_worm/fastq/SRR10564679_GSM4197239_Neurons_YA_ATAC_pe_rep1_Caenorhabditis_elegans_ATAC-seq_1.fastq.gz
R2=data/ATAC_worm/fastq/SRR10564679_GSM4197239_Neurons_YA_ATAC_pe_rep1_Caenorhabditis_elegans_ATAC-seq_2.fastq.gz
bowtie2 --threads "${CPU}" -x "${GENOME}" --maxins 1000 -1 "${R1}" -2 "${R2}" | \
samtools fixmate -@ "${CPU}" --output-fmt bam -m - - | \
samtools sort -@ "${CPU}" --output-fmt bam -T data/ATAC_worm/"${SAMPLE}".sam_sorting - | \
samtools markdup -@ "${CPU}" --output-fmt bam -r -T data/ATAC_worm/"${SAMPLE}".sam_markdup - - | \
samtools view -@ "${CPU}" --output-fmt bam -f 2 -q 10 -1 -b - | \
samtools sort -@ "${CPU}" --output-fmt bam -l 9 -T data/ATAC_worm/"${SAMPLE}".sam_sorting2 -o data/ATAC_worm/"${SAMPLE}"_filtered.bam
samtools index -@ "${CPU}" data/ATAC_worm/"${SAMPLE}"_filtered.bam
SAMPLE=Neurons_rep2
R1=data/ATAC_worm/fastq/SRR10564686_GSM4197244_Neurons_YA_ATAC_pe_rep2_Caenorhabditis_elegans_ATAC-seq_1.fastq.gz
R2=data/ATAC_worm/fastq/SRR10564686_GSM4197244_Neurons_YA_ATAC_pe_rep2_Caenorhabditis_elegans_ATAC-seq_2.fastq.gz
bowtie2 --threads "${CPU}" -x "${GENOME}" --maxins 1000 -1 "${R1}" -2 "${R2}" | \
samtools fixmate -@ "${CPU}" --output-fmt bam -m - - | \
samtools sort -@ "${CPU}" --output-fmt bam -T data/ATAC_worm/"${SAMPLE}".sam_sorting - | \
samtools markdup -@ "${CPU}" --output-fmt bam -r -T data/ATAC_worm/"${SAMPLE}".sam_markdup - - | \
samtools view -@ "${CPU}" --output-fmt bam -f 2 -q 10 -1 -b - | \
samtools sort -@ "${CPU}" --output-fmt bam -l 9 -T data/ATAC_worm/"${SAMPLE}".sam_sorting2 -o data/ATAC_worm/"${SAMPLE}"_filtered.bam
samtools index -@ "${CPU}" data/ATAC_worm/"${SAMPLE}"_filtered.bam
# This was repeated for 4 other tissues
When dealing with bulk ATAC-seq samples (or “pseudo-bulk” samples from scATACseq), another approach is to cluster accessible chromatin loci
based on their levels of accessibility in each sample. This can leverage a traditional DESeq2
workflow, but first, one needs to identify a
set of chromatin loci overlapping all the accessible sites of each sample.
An approach to do this (if not using cellranger-atac count
-identified peaks) can be to use yapc
(yet another peak caller) command-line tool.
yapc
relies on the ATAC-seq coverage “shape” of duplicates to identify “concave” coverage regions (i.e. “peaks”).
So we need bigwig tracks of each ATAC-seq experiment to map peaks with yapc
.
## -- Downloading tracks
mkdir data/ATAC_worm
wget https://ftp.ncbi.nlm.nih.gov/geo/series/GSE141nnn/GSE141210/suppl//GSE141210_RAW.tar?tool=geoquery -O data/ATAC_worm/ATACseq_tracks.tar.gz
tar -xvf data/ATAC_worm/ATACseq_tracks.tar.gz -C data/ATAC_worm/
## -- Find peaks with yapc
yapc data/ATAC_worm/yapc \
Germline data/ATAC_worm/GSM4197238_Germline_YA_ATAC_pe_rep1.bw data/ATAC_worm/GSM4197243_Germline_YA_ATAC_pe_rep2.bw \
Neurons data/ATAC_worm/GSM4197239_Neurons_YA_ATAC_pe_rep1.bw data/ATAC_worm/GSM4197244_Neurons_YA_ATAC_pe_rep2.bw \
Muscle data/ATAC_worm/GSM4197240_Muscle_YA_ATAC_pe_rep1.bw data/ATAC_worm/GSM4197245_Muscle_YA_ATAC_pe_rep2.bw \
Hypodermis data/ATAC_worm/GSM4197241_Hypodermis_YA_ATAC_pe_rep1.bw data/ATAC_worm/GSM4197246_Hypodermis_YA_ATAC_pe_rep2.bw \
Intestine data/ATAC_worm/GSM4197242_Intestine_YA_ATAC_pe_rep1.bw data/ATAC_worm/GSM4197247_Intestine_YA_ATAC_pe_rep2.bw
## -- Further processing depending on what you intend to do
# .....
# Details of how the identified peaks were further processed are available in Serizay et al., Genome Research 2020.
# Eventually, ~15,000 tissue-specific promoters were identified in this study, and available from VplotR::ce11_proms
From the ~ 45,000 identified peaks with yapc
, we annotated and filtered down ~ 17,000 promoters.
We can compute the coverage of each promoter in each of the 10 ATAC-seq samples in R
using
featureCounts()
function from R
wrapper of subread
.
c(
files <-'data/ATAC_worm/Germline_rep1_filtered.bam',
'data/ATAC_worm/Germline_rep2_filtered.bam',
'data/ATAC_worm/Neurons_rep1_filtered.bam',
'data/ATAC_worm/Neurons_rep2_filtered.bam',
'data/ATAC_worm/Muscle_rep1_filtered.bam',
'data/ATAC_worm/Muscle_rep2_filtered.bam',
'data/ATAC_worm/Hypodermis_rep1_filtered.bam',
'data/ATAC_worm/Hypodermis_rep2_filtered.bam',
'data/ATAC_worm/Intestine_rep1_filtered.bam',
'data/ATAC_worm/Intestine_rep2_filtered.bam'
) 'data/ATAC_worm/ce11_proms.gtf'
gtf <- Rsubread::featureCounts(
cnts <-files = files,
annot.ext = 'data/ATAC_worm/ce11_proms.gtf',
isGTFAnnotationFile = TRUE,
GTF.featureType = 'sequence_feature',
GTF.attrType = 'id',
isPairedEnd = TRUE,
nthreads = 16
)
DESeq2
time-tested workflow can be followed, starting from the counts obtained by featureCounts
.
library(tidyverse)
library(SummarizedExperiment)
library(DESeq2)
data(ce11_proms, 'VplotR')
SummarizedExperiment(
counts <-assays = list('counts' = cnts$counts),
rowRanges = ce11_proms,
colData = S4Vectors::DataFrame(
sample = cnts$targets,
tissue = factor(str_replace_all(cnts$targets, '_.*', ''), c('Germline', 'Neurons', 'Muscle', 'Hypodermis', 'Intestine')),
rep = str_replace_all(cnts$targets, '_filtered.bam|.*rep', '')
)
)
DESeqDataSet(counts, design = ~ tissue)
dds <- DESeq(dds)
dds <-
levels(counts$tissue) %>%
contrasts <- combn(2, simplify = FALSE) %>%
lapply(function(x) {c("tissue", x[2], x[1])})
sapply(contrasts, function(x) paste0(x[2], "_vs_", x[3]))
contrasts_names <- data.frame(matrix(nrow=length(ce11_proms), ncol=length(contrasts))) ; colnames(out.l2fc) <- paste0(contrasts_names, '.l2FC')
out.l2fc <- data.frame(matrix(nrow=length(ce11_proms), ncol=length(contrasts))) ; colnames(out.padj) <- paste0(contrasts_names, '.padj')
out.padj <-for (i in 1:length(contrasts)) {
results(dds, contrast = contrasts[[i]])
res <-metadata(res)$alpha <- 0.01
as.data.frame(res)
out <- out[,2]
out.l2fc[,i] <- out[,6]
out.padj[,i] <-
}
fpm(dds, robust = FALSE)
FPM <-colnames(FPM) <- paste0('FPM_', counts$sample) %>% str_replace_all('_filtered.bam', '')
cbind(
results <-as.data.frame(ce11_proms),
FPM,
out.l2fc,
out.padj
)$sign.l2FC <- apply(results[,grepl("l2FC", colnames(results))], 1, function(x) any(x < -log2(2) | x > log2(2)))
results$sign.padj <- apply(results[,grepl("padj", colnames(results))], 1, function(x) any(x < 0.01))
resultswrite.table(results, 'data/ATAC_worm/quantif.txt', quote = FALSE, col.names = TRUE, row.names = FALSE, sep = '\t')
rowData(dds) <- cbind(
rowData(dds),
FPM,
out.l2fc,
out.padj
)saveRDS(dds, 'data/ATAC_worm/quantif.rds')
Regularized log values can be averaged across replicates to quantify chromatin accessibility at each peak in each sample.
DESeq2::rlog(dds, blind = FALSE) %>%
rlogs <- assay() %>%
as_tibble() %>%
setNames(paste0('rlog_', dds$sample) %>% str_replace_all('_filtered.bam', '')) %>%
mutate(id = paste0('prom_', 1:n())) %>%
pivot_longer(-id, names_to = 'class', values_to = 'rlog') %>%
separate(class, into = c(NA, 'tissue', 'rep'), sep = '_') %>%
group_by(id, tissue) %>%
summarize(rlog = mean(rlog)) %>%
pivot_wider(names_from = tissue, values_from = rlog) %>%
ungroup() %>%
filter(rowSums(select(., -id)) > 0)
saveRDS(rlogs, 'data/ATAC_worm/rlogs.rds')
Peaks can then be clustered based on these rlog values, using an unsupervised approach
such as k-means
or k-medoids
(through the pam()
function).
cluster::pam(select(rlogs, -id), k = 9)
clusts <- pheatmap::pheatmap(
p <-select(rlogs, -id)[order(clusts$clustering), ],
cluster_rows = FALSE,
cluster_cols = FALSE,
breaks = seq(0, 12, length.out = 100),
colorRampPalette(c("#ffffff", "#ffffff", "#dda937", "#E31A1C", "#a51618"))(100)
)
dds <- readRDS('data/ATAC_worm/quantif.rds')
rlogs <- readRDS('?...?')
clusts <- cluster::pam(select(rlogs, -?...?), k = 9) table(rowData(dds)$which.tissues[!rowData(dds)$allZero], clusts$?...?)


{{ if .Favicon }} {{ end }}
{{ .Body }}
You are visiting this page from {{ .ClientAddr }}
You were served this page from {{ .Hostname }}


class Gallery
HealthCareAbroad\MediaBundle\Entity\Gallery
Methods
| __construct() | ||
| integer |
getId()
Get id |
|
| Gallery |
setDateCreated(datetime $dateCreated)
Set dateCreated |
|
| datetime |
getDateCreated()
Get dateCreated |
|
| Gallery |
setInstitution(Institution $institution = null)
Set institution |
|
| Institution |
getInstitution()
Get institution |
|
| Gallery |
addMedia(Media $media)
Add media |
|
|
removeMedia(Media $media)
Remove media |
||
| Collection |
getMedia()
Get media |
Details
at line 32
public
__construct()
at line 42
public integer
getId()
Get id
at line 53
public Gallery
setDateCreated(datetime $dateCreated)
Set dateCreated
at line 64
public datetime
getDateCreated()
Get dateCreated
at line 75
public Gallery
setInstitution(Institution $institution = null)
Set institution
at line 86
public Institution
getInstitution()
Get institution
at line 97
public Gallery
addMedia(Media $media)
Add media
at line 108
public
removeMedia(Media $media)
Remove media
at line 118
public Collection
getMedia()
Get media


Class: Demo::sNpcControll
- Inherits:
-
Demo.< GameMachine< GameMachine::GameSystems< GameMachine::GameSystems::SingletonControll
- Object
- Demo.< GameMachine< GameMachine::GameSystems< GameMachine::GameSystems::SingletonControll
- Demo::sNpcControll
- Defined in:
- lib/demo/npc_controller.rb
Instance Method Summary (collapse)
- - (Object) attack
- - (Object) move
-
- (Object) on_receive(terpola)
controllers at a configurable interval.
-
- (Object) start
Start is our initializer, called at start and restart.
- - (Object) update
Instance Method Details
- (Object) attack
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/demo/npc_controller.rb', line 42
location. Only needs to be called
# if we move.
if @has_target
move
track
attack
end
end
def attack
# Eligible to attack every 2 seconds
combat_delta_time = Time.now.to_f - @last_combat_update.to_f
return if combat_delta_time < 2
# If target is within range, attack. We choose the ability to use
# and hand it off to the combat controller.
distance_to_target = position.distance(@target_position)
if distance_to_target <= 3
attack_entity = Entity.new
attack_entity.set_id(entity.id)
attack_entity.set_attack(
Attack.new.set_attacker(enti
|
- (Object) move
64 65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/demo/npc_controller.rb', line 64
.
set_target(@target_id).
set_combat_ability_id(1)
)
CombatController.find.tell(attack_entity,get_self)
end
@last_combat_update = Time.now.to_f
end
def move
@delta_time = Time.now.to_f - @last_move.to_f
# Especially at startup, delta time can be too long adjust if
|
- (Object) on_receive(terpola)
controllers at a configurable interval. Default 100ms.
80 |
# File 'lib/demo/npc_controller.rb', line 80
position.interpolate(@target_positio
|
- (Object) start
Start is our initializer, called at start and restart
5 6 7 8 9 10 11 12 |
# File 'lib/demo/npc_controller.rb', line 5
def start
position.set(entity.vector3.x, entity.vector3.y, entity.vector3.z)
@target_position = GameMachine::Vector.new
@last_move = Time.now.to_f
@last_combat_update = Time.now.to_f
@speed = 0.8
unless saved_entity = GameMachine::ObjectDb.get(entity.id)
G
|
- (Object) update
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/demo/npc_controller.rb', line 17
hine::ObjectDb.put(entity)
end
track
end
def update
# Get all nearby players
players = neighbors('player')
# Pick the first one as our target
if players.size >= 1
grid_value = players.get(0)
@target_id = grid_value.id
@target_position.set(grid_value.x,grid_value.y,grid_value.z)
@has_target = true
else
@has_target = false
end
# If we have a target we follow and attack if within range.
# track updates the grid wi
|


I have had the Stontronics AC adaptor connected to my emontx for about 6 months with the calibration value of 238.56, and all had been fine.
A few days ago I changed the adaptor for a Mascot 9580 with value 234.26 as I needed another AC adaptor to use elsewhere, and I thought I'd fit the latest OEM supplied adaptor to my emonTX as I believe it's supposed to be slightly better(?).
Since I have done this the system is indicating 163.5 V (Serial Print) instead of a correct 245 V. But when I change everything back to the original Stontronics adaptor it is also now indicating 163.5 V - and I only changed the calibration value and adaptor.
Just incase I inadvertently altered something else I have just downloaded a fresh copy of the latest emonTX from Github and it is the same, 163.5V. I also updated the emonlib.
Does anyone have any suggestions on what I may have done wrong?
Thanks, Dennis
Re: RESOLVED - EmonTX voltage error
I just had a similar problem (yesterday), and it turned out that EnergyMonitor::readVcc() was not building correctly for me.
It is a #define problem. __AVR_ATmega328__ seems not to be is not properly #defined, so the snippet:
#if defined(__AVR_ATmega168__) || defined(__AVR_ATmega328__)
ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
#elif defined(__AVR_ATmega32U4__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
ADMUX = _BV(REFS0) | _BV(MUX4) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
#endif
is not getting compiled at all I think. There really should be an additional #elif for that potential compile-time error case.
I just hardwired it to build correctly for me. I meant to mention this on the forums here but just got around to it now when this post reminded me.
This may be particular to my system (linux-Ubuntu 12.04, Arduino 1.0.1). I am not familiar with the Arduino build environment internals, and I have not tried to track down the problem yet. I do have board set correctly in the IDE, I believe.
-Ed
Re: RESOLVED - EmonTX voltage error
Although I don't fully understand all of whats going on with those files, I have had a look at them and see where it is, and that there is no #define in the sketch.
I've tried adding a few #define __AVR_ATmega328__ and variations of it, but as I don't really know what I'd doing then nothing seems to work.
Thanks for your help
Further to my initial post I remembered I had a 2nd emonTX which I have tried to rule out a hardware problem. It was the same.
Dennis
Re: RESOLVED - EmonTX voltage error
Sorry , I should have suggested replacing the code I showed above with the following (adding the #else and #error):
#if defined(__AVR_ATmega168__) || defined(__AVR_ATmega328__)
ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
#elif defined(__AVR_ATmega32U4__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
ADMUX = _BV(REFS0) | _BV(MUX4) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
#else
#error "missing __AVR__ type define in readVcc()"
#endif
Then if the compile fails, you know you have the same problem I do, otherwise not.
Good luck.
Re: RESOLVED - EmonTX voltage error
Sorry guys, I think I've fixed the problem in emonLib. Could you confirm that the latest version of emonlib from GitHub works well for you.
@logic the Mascot adapter is no 'better' than the Stontronics one, it's just different. There is a good chance that it could be marginally worse since it's a smaller adapter. However we had the Mascot adapter extensively tested (thanks to Robert Wall) and it's performance is adequate. We are unable to source the Stontronics adapter anymore. There shouldn't be a noticeable difference between the two adapters in use.
Re: RESOLVED - EmonTX voltage error
Thanks
Unfortunately the updated emonlib has not corrected the voltage reading. Thanks for the info on the adaptors, which I now realise was incidental to the program going wrong as I must have updated the libraries all at the same time.
edllew, thanks for that info, but I think I'd be better leaving all alone in there as I'm not really too sure what I'm doing with that define stuff.
Dennis
Re: RESOLVED - EmonTX voltage error
I have the same problem as Dennis
My EmonTx had died (builders killed it with dust!).
Just got round to replacing it with a new one yesterday - took the opportunity to download all the latest libraries at the same time and the latest emonTX.
I am using emonTx_CT123_Voltage - currently have ct3 disabled and set to use RF12_868MHZ
Not changed anything else.
Powers are showing about half what they should be and voltage is showing around 162.00
Any ideas why this is happening
Ian
Re: RESOLVED - EmonTX voltage error
Oh dear, I can't see why this isnt working. The changes I made were to add support for different ATmega micro controllers to enabling the reading of the internal supply voltage of the chip, this voltage is used in the power calculation to account for running the emonTx off batteries which get slowly depleted.
I changed
long EnergyMonitor::readVcc() {
long result;
ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
delay(2);
ADCSRA |= _BV(ADSC);
while (bit_is_set(ADCSRA,ADSC));
result = ADCL;
result |= ADCH<<8;
result = 1126400L / result;
return result;
}
to
long EnergyMonitor::readVcc() {
long result;
#if defined(__AVR_ATmega168__) || defined(__AVR_ATmega328__)
ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
#elif defined(__AVR_ATmega32U4__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
ADMUX = _BV(REFS0) | _BV(MUX4) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
#elif defined (__AVR_ATtiny24__) || defined(__AVR_ATtiny44__) || defined(__AVR_ATtiny84__)
ADMUX = _BV(MUX5) | _BV(MUX0);
#elif defined (__AVR_ATtiny25__) || defined(__AVR_ATtiny45__) || defined(__AVR_ATtiny85__)
ADMUX = _BV(MUX3) | _BV(MUX2);
#endif
delay(2); // Wait for Vref to settle
ADCSRA |= _BV(ADSC); // Convert
while (bit_is_set(ADCSRA,ADSC));
result = ADCL;
result |= ADCH<<8;
result = 1126400L / result; //1100mV*1024 ADC steps http://openenergymonitor.org/emon/node/1186
return result;
}
In EmonLib.cpp. I have attached the old EmonLib.cpp file. Try using this instead, you will need to replace the EmonLib.cpp file in your emonlib arduino library folder with this one:
Re: RESOLVED - EmonTX voltage error
Hi All
I have replaced the new emonlib with one I downloaded in september that does not have the new code in
Voltages are now back to normal 238
Ian
Re: RESOLVED - EmonTX voltage error
Ah, I think Robert Wall has just alerted me in an email. I missed the 'P' off the ATmega328p
This should have fixed the problem:
#if defined(__AVR_ATmega168__) || defined(__AVR_ATmega328__) || defined (__AVR_ATmega328P__)
ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
#elif defined(__AVR_ATmega32U4__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
ADMUX = _BV(REFS0) | _BV(MUX4) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
#elif defined (__AVR_ATtiny24__) || defined(__AVR_ATtiny44__) || defined(__AVR_ATtiny84__)
ADMUX = _BV(MUX5) | _BV(MUX0);
#elif defined (__AVR_ATtiny25__) || defined(__AVR_ATtiny45__) || defined(__AVR_ATtiny85__)
ADMUX = _BV(MUX3) | _BV(MUX2);
#endif
The changes have been pushed to github. Could someone please confirm if this iw working for you.
Cheers,
Re: RESOLVED - EmonTX voltage error
Hi All
Have downloaded the latest emonlib and it has resolved the problem with the voltage
Ian


Munvo Solutions
Overview
“We are a leading consulting firm assisting global companies with marketing software solutions. On top of our professional software implementation services for Adobe, SAS, and Unica marketing solutions, we also develop custom products and connectors tailored to our clients’ needs. Munvo’s team of over 90 employees can be found at any of our centralized offices in Calgary, Montreal, and Toronto.”
What are the skills and qualities of a successful candidate in your organization?
“What You Need to Succeed:
Bachelor’s degree in Computer Science, Software or Computer Engineering, or other relevant technology-focused degrees Solid technical foundation (SQL, database, object-oriented-programming [OOP], etc.) Interest in delivering consulting services to clients Strong interpersonal and problem-solving skills Capacity to think critically, learn quickly and adapt to fast-paced work environments Experience with CRM or marketing technologies: Campaign/Unica, Adobe, Marketo, Salesforce, Eloqua or Watson (an asset) Canadian or US citizenship; dual citizenship (an asset) Proficie”
In your opinion, what is the best way for UBC students to prepare for their interactions with you at the TCF?
All students should bring their resumes and include their Project link or gitHub
| http://www.munvo.com |


FIXED FRAME Invisible Grille is usually install in Condominiums which has a full glass window. We install an additional frame if there is no concrete wall to drill a fixed invisible grille. It can be horizontal or vertical depending on the approval of The Management Corporation Strata Title (MCST) refers to the managing body of a condo.
If you are interested in working together, send us an inquiry and we will get back to you as soon as we can!
Contact us