Chapter 3 Day Zero
One method for estimating the introduction date of COVID-19 is to establish the time and location of the first observed common ancestor. The first COVID-19 genome sequence was published January 5 2020. Since then, tens of thousands of sequences have been taken around the globe at different times. These sequences differ by slight mutations. These mutations occur at a predictable rate. So while that January 5 sequence was not the common ancestor of every observed sequence, we can speculate about what that common ancestry must have looked like and how far back in time it must have existed in order to produce all of the variation we see in its descendants.
A survey of phylogenetic estimates of the introduction of COVID-19 place it sometime between October 6, 2019 and December 2019 (van Dorp et al. 2020). They fit a root-to-tip regression which is just the phylogenetic on the left hand side and the date of sampling on the right hand side. They fit it using the BactDating package.
Because the first observed common ancestor is only the first acquired not the first produced in the wild, further attempts to wind back the clock.
https://www.nature.com/articles/s41586-020-2008-3?fbclid=IwAR1VfqWqfRxS1Fi7Mh8yK4X03bcT8VUnnaymxMGlXYdwzWLPv4XhCIuYmFY Preliminary aetiological investigations excluded the presence of influenza virus, Chlamydia pneumoniae and Mycoplasma pneumoniae using commercial pathogen antigen-detection kits, and this was confirmed by PCR. Other common respiratory pathogens, including human adenoviruses, also tested negative by quantitative PCR (qPCR) (Extended Data Fig. 2). Although a combination of antibiotic, antiviral and glucocorticoid therapy was administered, the patient exhibited respiratory failure and was given high-flow non-invasive ventilation. T This virus strain was designated as WH-Human 1 coronavirus (WHCV) (and has also been referred to as ‘2019-nCoV’) and its whole genome sequence (29,903 nt) has been assigned GenBank accession number MN908947.
https://www.nytimes.com/2020/04/08/science/new-york-coronavirus-cases-europe-genomes.html “I’m quite confident that it was not spreading in December in the United States,” Dr. Bedford said. “There may have been a couple other introductions in January that didn’t take off in the same way.”"
“Dr. Heguy and her colleagues found some New York viruses that shared unique mutations not found elsewhere. “That’s when you know you’ve had a silent transmission for a while,” she said. Dr. Heguy estimated that the virus began circulating in the New York area a couple of months ago."
And researchers at Mount Sinai started sequencing the genomes of patients coming through their hospital. They found that the earliest cases identified in New York were not linked to later ones.
“Two weeks later, we start seeing viruses related to each other,” said Ana Silvia Gonzalez-Reiche, a member of the Mount Sinai team.
Dr. Gonzalez-Reiche and her colleagues found that these viruses were practically identical to viruses found around Europe. They cannot say on what particular flight a particular virus arrived in New York. But they write that the viruses reveal “a period of untracked global transmission between late January to mid-February.”
So far, the Mount Sinai researchers have identified seven separate lineages of viruses that entered New York and began circulating. “We will probably find more,” Dr. van Bakel said.
Introduction in New York (Gonzalez-Reiche et al. 2020)
GISAID Initiative EpiCoV platform
One of the first indicators of the COVID-19 pandemic was an increase in reported flu-like symptoms with negative influenza tests. A proxy measure based on this Influenza-Negative InfluenzaLike Illness (fnILI) Z-Score has been found to be a leading indicator for confirmed COVID-19 cases and deaths (Mirza, Malik, and Omer 2020).
To what degree do COVID-19 counts simply reflect testing? In the U.S., the number of new confirmed cases are highly correlated with the number of new tests administered (Kaashoek and Santillana 2020).
(J. Lu and Meyer 2020)
(“Near-Term Forecasts of Influenza-Like Illness: An Evaluation of Autoregressive Time Series Approaches” 2019)
Real-time, or near real-time, observations are critical for the generation of real-time forecasts. The primary data source for ILI forecasts in the US is provider-reported outpatient ILI visit rates collected through the ILINet (Centers for Disease Control and Prevention, 2018a). Several methods for supplementing these surveillance data with alternate estimates of ILI inferred from public non-surveillance proxies have also been proposed (Wang et al., 2015; Farrow, 2016; Kandula et al., 2017; Santillana et al., 2016, 2015; Lampos et al., 2015; Paul et al., 2014; Yang et al., 2015).
(F. S. Lu et al. 2020)
We’ll begin with a deceptively simple question, when was the first confirmed case in each place? We’ll then conclude this chapter with the less obvious question, when was the first real COVID-19 infecton in each place?
Specifically, the adjusted divergences (div-IDEA and div-Vir ) and COVID Scaling methods incorporate an increased probability that an individual with ILI symptoms will seek medical attention after the start of the COVID-19 outbreak based on recent survey data [20, 21].
One possible explanation is that many deaths caused by COVID-19 are not being ocially counted as COVID-19 deaths because of a lack of testing (and that accounting for increased pneumonia deaths does not fully capture this) [24]; further evidence of this reasoning is that New York City started reporting plausible COVID-19 deaths (as in, not needing a test result) [25],
By design and due to the utilized data sources, our estimates using data from ILINet and confirmed cases (Divergence method and COVID-Scaling) likely better capture the number of COVID-19 cases as they would be detected at the time of hospitalization; thus, they may be inherently lagged by roughly 12 days after initial infection [26].
Our approaches could be expanded to include other data sources and methods to estimate 8 prevalence, such as Google searches [27, 28, 29], electronic health record data [30], clinician’s searches [31], and/or mobile health data [32].
The ILI-based methods presented in this study demonstrate the potential of existing and well-established ILI surveillance systems to monitor future pandemics that, like COVID-19, present similar symptoms to ILI. This is especially promising given the WHO initiative launched in 2019 to expand influenza surveillance globally [33]. Incorporating estimates from influenza and COVID-19 forecasting and participatory surveillance systems may prove useful in future studies as well [34, 35, 36, 37, 38, 39].
5 Data and Methods CDC ILI and Virology: The CDC US Outpatient Influenza-like Illness Surveillance Network (ILINet) monitors the level of ILI circulating in the US at any given time by gathering information from physicians’ reports about patients seeking medical attention for ILI symptoms.
ILI is defined as having a fever (temperature of 37.8+ Celsius) and a cough or a sore throat. ILINet provides public health ocials with an estimate of ILI activity in the population but has a known availability delay of 7 to 14 days.
National level ILI activity is obtained by combining state-specific data weighted by state population [12].
Additionally, the CDC reports information from the WHO and the National Respiratory and Enteric Virus Surveillance System (NREVSS) on laboratory test results for influenza types A and B. The data is available from the CDC FluView dashboard [11]. We omit Florida from our analysis as ILINet data is not available for Florida.
Early evidence for COVID-19 may be from early warning FLU systems. FluView, above normal Flu symtpoms starting in November.
According to CDCFlu, Reported cases of influenza are picking up across the US indicating an early and potentially severe start to flu season (the red line with flags, below).
The number of influenza tests sent but returning negative could be an early indicator https://twitter.com/CDCFlu/status/1224338758943825920
“CDC Flu (???) 19 Nov 2019 More According to the latest #FluView report, some parts of the country are already seeing moderate to high levels of flu, marking an early start to their flu season. Other parts of the country are still seeing little activity. Learn more: https://go.usa.gov/xpK6R”
https://twitter.com/CDCFlu/status/1197910891393638400
ILINet Nationwide during week 17, 1.8% of patient visits reported through the U.S. Outpatient Influenza-like Illness Surveillance Network (ILINet) were due to influenza-like illness (ILI). This percentage is below the national baseline of 2.4%.
Mirza et al. (2020) propose a proxy measure for COVID-19 based on positive influenza symptoms but negative influenza clinical test.
Influenza-Negative Influenza-Like Illness (fnILI) Z-Score as a Proxy for Incidence and Mortality of COVID-19 View ORCID ProfileFatima N Mirza, View ORCID ProfileAmyn A. Malik, View ORCID ProfileSaad B. Omer https://www.medrxiv.org/content/10.1101/2<IP_ADDRESS>75770v1
Types of coronavirus https://www.cdc.gov/coronavirus/types.html
https://github.com/reichlab/ncov/blob/master/analyses/ili-labtest-report.pdf Reich NG, Ray EL, Gibson GC, Cramer E RC. Looking for evidence of a high burden of 230 COVID-19 in the United States from influenza-like illness data. Github. 2020.
Everything revolves around what the true R0 was and how many cases were in each country and when. We’ll never see the world again where people don’t know about COVID and so R_0 is the upper bound of R_t. There must be some statistical model mapping testing to how many true in the population there is. Like, out of a random sample, what positive rate would you expect given a certain number of real cases in the wild. Now what if it’s not a random sample, and it’s correlated with severity? Basically, everything points to everything else here, there’s no such thing as a real point estimate just big bounds that you try to tie down as much as you can using other information you have.
So for example, true R_0 is probably within ranges of other diseases we know about. We can use that as a prior.
There’s no such thing as real patient zero because contries are constantly trading cases with each other. But the genetics data should tell us a bit about that right?
References
Gonzalez-Reiche, Ana S., Matthew M. Hernandez, Mitchell Sullivan, Brianne Ciferri, Hala Alshammary, Ajay Obla, Shelcie Fabre, et al. 2020. “Introductions and Early Spread of SARS-CoV-2 in the New York City Area.” medRxiv, April, 2<IP_ADDRESS>56929. https://doi.org/10.1101/2<IP_ADDRESS>56929.
Kaashoek, Justin, and Mauricio Santillana. 2020. “COVID-19 Positive Cases, Evidence on the Time Evolution of the Epidemic or an Indicator of Local Testing Capabilities? A Case Study in the United States.” SSRN Scholarly Paper ID 3574849. Rochester, NY: Social Science Research Network. https://doi.org/10.2139/ssrn.3574849.
Lu, Fred S., Andrew Nguyen, Nick Link, and Mauricio Santillana. 2020. “Estimating the Prevalence of COVID-19 in the United States: Three Complementary Approaches,” April.
Lu, Junyi, and Sebastian Meyer. 2020. “Forecasting Flu Activity in the United States: Benchmarking an Endemic-Epidemic Beta Model.” International Journal of Environmental Research and Public Health 17 (4). https://doi.org/10.3390/ijerph17041381.
Mirza, Fatima N., Amyn A. Malik, and Saad B. Omer. 2020. “Influenza-Negative Influenza-Like Illness (fnILI) Z-Score as a Proxy for Incidence and Mortality of COVID-19.” medRxiv, April, 2<IP_ADDRESS>75770. https://doi.org/10.1101/2<IP_ADDRESS>75770.
“Near-Term Forecasts of Influenza-Like Illness: An Evaluation of Autoregressive Time Series Approaches.” 2019. Epidemics 27 (June): 41–51. https://doi.org/10.1016/j.epidem.2019.01.002.
van Dorp, Lucy, Mislav Acman, Damien Richard, Liam P. Shaw, Charlotte E. Ford, Louise Ormond, Christopher J. Owen, Juanita Pang, Cedric CS Tan, and Florencia AT Boshier. 2020. “Emergence of Genomic Diversity and Recurrent Mutations in SARS-CoV-2.” Infection, Genetics and Evolution, 104351.


The Gigawatts will pop up on meadows beside highways.
It would be a big step if we could agree on where to put the equipment. Until then, here is the more random placement.
[out:json]; area['name'='Österreich']; way(area)['highway'='motorway'][!covered][!tunnel][!area]; (._;>;); out meta; (way(id:` + str + `);)->.autobahn; way(around.autobahn:100)[landuse~"meadow|farmland"]; (._;>;);out meta;


Prediction
Fruit/Vegetable Name: {{ fruits }}
Class ID: {{ name }}
Probabilities: {{ probabilities }}


The widespread fear that vaccines increase risk of autism originated with a 1997 study published by Andrew Wakefield, a British surgeon. The article was published in The Lancet, a prestigious medical journal, suggesting that the measles, mumps, rubella (MMR) vaccine was increasing autism in British children.
The paper has since been completely discredited due to serious procedural errors, undisclosed financial conflicts of interest, and ethical violations. Andrew Wakefield lost his medical license and the paper was retracted from The Lancet.
Nonetheless, the hypothesis was taken seriously, and several other major studies were conducted. None of them found a link between any vaccine and the likelihood of developing autism.
{% endif %}
{% if form.cancer %}
Is vaccination related to cancer? Can it cause/accelerate tumor?
None of the vaccines on the market interact with or alter your DNA in any way or with cancer cells.
Thus, they cannot cause cancer.
{% endif %}
{% if form.choice %}
Why is vaccination even necessary?
"Every year, tens of thousands of Americans get sick from diseases that could be prevented by vaccines –
some people are hospitalized, some even die. Immunization is our best protection against these diseases.
Vaccines are recommended for children, teens, and adults based on different factors like age, health conditions,
lifestyle, jobs, and travel. CDC and other medical experts update vaccine recommendations every year based on
the latest research and science. Vaccination is a critical step in protecting those that are most vulnerable
to illness – infants and young children, the elderly, and those with chronic conditions and weakened immune systems."
CDC
{% endif %}
{% if form.gov %}
Why should I get vaccinated if I do not trust the government?
It is our best interest as a member of the community to get vaccinated! Regardless of your belief in the government.


The SimpleXMLElement class
(PHP 5 >= 5.0.1, PHP 7)
简介
Represents an element in an XML document.
类摘要
SimpleXMLElement implements Traversable {
/* 方法 */
final public __construct ( string $data [, int $options = 0 [, bool
$data_is_url = false [, string $ns = "" [, bool $is_prefix = false ]]]] )
public void addAttribute ( string $name [, string $value [, string $namespace
]] )
public SimpleXMLElement addChild ( string $name [, string $value [, string
$namespace ]] )
public mixed asXML ([ string $filename ] )
public SimpleXMLElement attributes ([ string $ns = NULL [, bool $is_prefix =
false ]] )
public SimpleXMLElement children ([ string $ns [, bool $is_prefix = false ]] )
public int count ( void )
public array getDocNamespaces ([ bool $recursive = false [, bool $from_root =
true ]] )
public string getName ( void )
public array getNamespaces ([ bool $recursive = false ] )
public bool registerXPathNamespace ( string $prefix , string $ns )
public string __toString ( void )
public array xpath ( string $path )
}
Table of Contents
• SimpleXMLElement::addAttribute — Adds an attribute to the SimpleXML element
• SimpleXMLElement::addChild — Adds a child element to the XML node
• SimpleXMLElement::asXML — Return a well-formed XML string based on
SimpleXML element
• SimpleXMLElement::attributes — Identifies an element's attributes
• SimpleXMLElement::children — Finds children of given node
• SimpleXMLElement::__construct — Creates a new SimpleXMLElement object
• SimpleXMLElement::count — Counts the children of an element
• SimpleXMLElement::getDocNamespaces — Returns namespaces declared in
document
• SimpleXMLElement::getName — Gets the name of the XML element
• SimpleXMLElement::getNamespaces — Returns namespaces used in document
• SimpleXMLElement::registerXPathNamespace — Creates a prefix/ns context for
the next XPath query
• SimpleXMLElement::saveXML — 别名 SimpleXMLElement::asXML
• SimpleXMLElement::__toString — Returns the string content
• SimpleXMLElement::xpath — Runs XPath query on XML data
User Contributed Notes 19 notes
===============================================================================
To further previous comments and drive the point home:
What makes SimpleXMLElement tricky to work with is that it feels and behaves
like an object, but is actually a system RESOURCE, (specifically a libxml
resource).
That's why you can't store a SimpleXMLElement to $_SESSION or perform straight
comparison operations on node values without first casting them to some type of
object. $_SESSION expects to store 'an object' and comparison operators expect
to compare 2 'objects' and SimpleXMLElements are not objects.
When you echo or print a node's value, PHP converts the value (a resource) into
a string object for you. It's a time saver for sure, but can fool you into
thinking that your SimpleXMLElement is an object.
Hope this helps clarify
===============================================================================
To access the underlying element as a string, it's necessary to make the cast
$x = (string)$my_xml_element.
===============================================================================
Warning to anyone trying to parse XML with a key name that includes a hyphen
ie.)
example url
In order to access the callback-url you will need to do something like the
following:
{"callback-url"};
?>
If you attempt to do it without the curly braces and quotes you will find out
that you are returned a 0 instead of what you want.
===============================================================================
XML to JSON conversion without '@attributes'
$value) {
$res = null;
normalizeSimpleXML($value, $res);
if (($key == '@attributes') && ($key)) {
$result = $res;
} else {
$result[$key] = $res;
}
}
} else {
$result = $data;
}
}
normalizeSimpleXML(simplexml_load_string($xml), $result);
return json_encode($result);
}
?>
===============================================================================
Parsing an invalid XML string through SimpleXML causes the script to crash
completely (usually) therefore it is best to make sure the XML is valid before
parsing with something like this:
// Must be tested with ===, as in if(isXML($xml) === true){}
// Returns the error message on improper XML
function isXML($xml){
libxml_use_internal_errors(true);
$doc = new DOMDocument('1.0', 'utf-8');
$doc->loadXML($xml);
$errors = libxml_get_errors();
if(empty($errors)){
return true;
}
$error = $errors[0];
if($error->level < 3){
return true;
}
$explodedxml = explode("r", $xml);
$badxml = $explodedxml[($error->line)-1];
$message = $error->message . ' at line ' . $error->line . '. Bad XML: ' .
htmlentities($badxml);
return $message;
}
===============================================================================
Adds a new function for SimpleXMLElement class, in order to output HTML code.
importNode($ele,true);
$dom->appendChild($element);
return $dom->saveHTML();
}
}
?>
===============================================================================
Note that changing attributes from within a foreach loop, especially namespaced
attributes, can be very tricky.
For example, when trying to change the value of an existing xlink:href
attribute:
attributes('xlink', true) as $attribute => $attribvalue)
{
$attribvalue[0] = 'value'; // Throws an error
$attribvalue = 'value'; // Does not change your XML
$xmlelement -> addAttribute($attribute, 'value', 'http://www.w3.org/1999/
xlink'); // Adds an attribute, does not change existing one.
$xmlelement[$attribute] = 'value'; // Adds an attribute, does not change
existing one.
}
?>
Instead, you should access the array returned by the attributes() function
directly, like this:
attributes('xlink', true) -> href = 'value'; // Works!
?>
===============================================================================
Important note I miss here in the documentation:
SimpleXML supports Array/Iteration-Methods. Therefore it is possible to
add attributes
edit attributes
remove attributes
add nodes
edit nodes
remove nodes
This is the reason why SimpleXML provides only add-methods not deleting- or
editing-methods. We also need this methods because SimpleXML acts as a normal
class and
new member will not converted to a new node.
Deleting a node seems not to be possible within a foreach-loop. The reason is
simple. To do that we need a valid key, but the Iterator only gives us a
"understandable feedback" on which node we are working on: the tag name.
So this will not work:
seg as $key => $seg)
{
if((string)$seg['id'] === 'whatever')
{
unset($seg); // only clears local copy
unset($seg[$key]); // wrong index "seg"
}
}
?>
But this, eg. will work:
seg[2]);
?>
In case of doubt always do a print_r/var_dump(). It nicely shows the real
linked indexes.
===============================================================================
It's occasionally useful to add an XML processing instruction to a
SimpleXMLElement (treating it as if it were a full document).
ownerDocument;
// Find the topmost element of the domDocument
$xpath = new DOMXPath($dom_parent);
$first_element = $xpath->evaluate('/*[1]')->item(0);
// Add the processing instruction before the topmost element
$pi = $dom_parent->createProcessingInstruction($name, $value);
$dom_parent->insertBefore($pi, $first_element);
}
}
?>
For example, if you had a simpleXMLElement_Plus object made out of the xml
fragment:
And you needed the output to be:
you could do (using the class above):
');
$xml->addProcessingInstruction('xml-stylesheet', 'type="text/xsl" href="xsl/
xsl.xsl"');
echo $xml->asXML();
?>
===============================================================================
Here is a more namespace-aware version of the earlier function for attaching
one SimpleXMLElement to another. I'm sure it could still be further improved
(right now it generates some redundant xmlns definitions), but it seems to be
working well enough for my purposes so far.
function SimpleXMLElement_append($parent, $child)
{
// get all namespaces for document
$namespaces = $child->getNamespaces(true);
// check if there is a default namespace for the current node
$currentNs = $child->getNamespaces();
$defaultNs = count($currentNs) > 0 ? current($currentNs) : null;
$prefix = (count($currentNs) > 0) ? current(array_keys($currentNs)) : '';
$childName = strlen($prefix) > 1
? $prefix . ':' . $child->getName() : $child->getName();
// check if the value is string value / data
if (trim((string) $child) == '') {
$element = $parent->addChild($childName, null, $defaultNs);
} else {
$element = $parent->addChild(
$childName, htmlspecialchars((string)$child), $defaultNs
);
}
foreach ($child->attributes() as $attKey => $attValue) {
$element->addAttribute($attKey, $attValue);
}
foreach ($namespaces as $nskey => $nsurl) {
foreach ($child->attributes($nsurl) as $attKey => $attValue) {
$element->addAttribute($nskey . ':' . $attKey, $attValue, $nsurl);
}
}
// add children -- try with namespaces first, but default to all children
// if no namespaced children are found.
$children = 0;
foreach ($namespaces as $nskey => $nsurl) {
foreach ($child->children($nsurl) as $currChild) {
SimpleXMLElement_append($element, $currChild);
$children++;
}
}
if ($children == 0) {
foreach ($child->children() as $currChild) {
SimpleXMLElement_append($element, $currChild);
}
}
}
===============================================================================
Figuring out how to access the properties of a SimpleXmlElement object was a
little tricky for me. In particular, it took a while to discover that I needed
to cast my SimpleXmlElement properties to be of type "string" to print them or
do comparisons on them. For instance, assuming you already have a string of xml
in $xmlstr...
property== "somevalue") {
echo (string) $sxml->property;
}
?>
The properties of a SimpleXmlElement object are objects themselves, so you need
to put "(string)" before them, which casts their values to a string instead of
an object. I assume if you were doing a numeric comparison you'd want to cast
to an (int) or something numeric instead.
===============================================================================
Hello,
here goes my contribution for those whom are struggling to understand how
SimpleXMLElement works.
After some time trying to figure out how this works, I've came up to this small
example:
\n".
// optionally you can specify a xml-stylesheet for presenting the
results. just uncoment the following line and change the stylesheet name.
/* "\n".
*/
"";
// create the SimpleXMLElement object with an empty element
$xml = new SimpleXMLElement($xmlstr);
// add some child nodes
$xml->addChild("title", "Title of my book");
$xml->addChild("abstract", "My book is about learning to work with
SimpleXMLElement");
// add some more child nodes
$chapter1 = $xml->addChild("chapter_1");
// add an attribute to child chapter_1
$chapter1->addAttribute("chapter_title", "Introduction to my book");
$chapter2 = $xml->addChild("chapter_2");
$chapter2->addAttribute("chapter_title", "Development of my book");
$chapter3 = $xml->addChild("chapter_3");
$chapter3->addAttribute("chapter_title", "Another chapter of my book");
$conclusion = $xml->addChild("conclusion", "The ending of my book");
// insert the header to tell the browser how to read the document
header("Content-type: text/xml");
// print the SimpleXMLElement as a XML well-formed string
echo $xml->asXML();
?>
With this script you can just copy-paste and try to understand how it works.
I hope it can help somebody :)
===============================================================================
The root node element of your input XML string is not retrievable as a
property.
bar";
$sxe=new SimpleXMLElement($xml);
print $sxe->foo;
?>
prints nothing. You can only get to the root element via the array index method
($sxe[0]).
Also, you may not have two (or more) root elements -- that is apparently not
well-formed XML.
";
$sxe=new SimpleXMLElement($xml);
?>
throws an exception. A Q&D is to append an arbitraty root node structure to
both ends of the input:
";
$sxe=new SimpleXMLElement("".$xml."");
?>
Doing this also solves the above problem of root node property accessibility.
(It may not work if your XML string includes a declaration.)
===============================================================================
Be aware when you trying to cast some attribute to boolean.
(boolean)$xml->attributes()->someAtt;
returns TRUE if attribute is array([0] => 0);
use (boolean)(int) instead.
===============================================================================
You should cast elements to a float (or even string) if you plan on using them
in addition, multiplication, etc. If you don't then PHP will incorrectly treat
the node values as an integer.
1.9
1.9
');
var_dump($obj->a + $obj->b);
var_dump((float)$obj->a + (float)$obj->b);
var_dump((string)$obj->a + (string)$obj->b);
?>
The first line gives: int(2)
The second and third give the expected result: float(3.8)
===============================================================================
xml to object conversion function :
name = $xml->getName();
$text = trim((string)$xml);
$attributes = array();
$children = array();
foreach($xml->attributes() as $k => $v){
$attributes[$k] = (string)$v;
}
foreach($xml->children() as $k => $v){
$children[] = xml2obj($v,$force);
}
if($force or $text !== '')
$obj->text = $text;
if($force or count($attributes) > 0)
$obj->attributes = $attributes;
if($force or count($children) > 0)
$obj->children = $children;
return $obj;
}
?>
===============================================================================
I'm using SimpleXML for, ofcourse, it's simplicity, however I did wanted to
manipulate the xml and combining one SimpleXMLElement with any other, so I
wrote this function to add a SimpleXMLElement-child.
addChild($value->getName());
foreach ($value->attributes() as $attKey => $attValue) {
$element->addAttribute($attKey, $attValue);
}
// add children
foreach ($value->children() as $child) {
SimpleXMLElement_append($element, $child);
}
} else {
// set the value of this item
$element = $key->addChild($value->getName(), trim((string) $value
));
}
} else {
// throw an error
throw new Exception('Wrong type of input parameters, expected
SimpleXMLElement');
}
}
?>
I'd recommend SimpleXMLElement to extend it's addChild() function with the
functionalitity above.
===============================================================================
Simple recursive function to append XML object into SimpleXMLElement node:
addChild($append->getName());
foreach($append->children() as $child) {
xml_join($xml, $child);
}
} else {
$xml = $root->addChild($append->getName(), (string) $append);
}
foreach($append->attributes() as $n => $v) {
$xml->addAttribute($n, $v);
}
}
}
$xml_append = simplexml_load_string('- value
items>');
$xml_root = new SimpleXMLElement('');
$cxml = $xml_root->addChild('clone');
xml_join($cxml, $xml_append->items->item[0]);
print $xml_root->asXML();
?>
Result:
-
value
===============================================================================
I created a little function to parse the simple XML into a structure which is
easier to iterate(I believe anyways) than the simpleXML node structure.
count() !== 0 )
{
foreach( $xmldata->children() AS $child )
{
$name = $child->getName();
if( !isset($childNames[$name]) )
{
$childNames[$name] = 0;
}
$childNames[$name]++;
$children[$name][] = $this->parseSimpleXML($child);
}
}
$returndata = new XMLNode();
if( $xmldata->attributes()->count() > 0 )
{
$returndata->{'@attributes'} = new XMLAttribute();
foreach( $xmldata->attributes() AS $name => $attrib )
{
$returndata->{'@attributes'}->{$name} = (string)$attrib;
}
}
if( count($childNames) > 0 )
{
foreach( $childNames AS $name => $count )
{
if( $count === 1 )
{
$returndata->{$name} = $children[$name][0];
}
else
{
$returndata->{$name} = new XMLMultiNode();
$counter = 0;
foreach( $children[$name] AS $data )
{
$returndata->{$name}->{$counter} = $data;
$counter++;
}
}
}
}
else
{
if( (string)$xmldata !== '' )
{
$returndata->{'@innerXML'} = (string)$xmldata;
}
}
return $returndata;
}
?>


Exciting news and events!
Publication
May 2023: Check out our article "Making sense of censored covariates: Statistical methods for studies of Huntington's disease" in Annual Review of Statistics and Its Applications by Sarah Lotspeich, Marissa Ashner, Jesus Vazquez, Brian Richardson, Kyle Grosser, Benjamin Bodek, and Tanya Garcia. Team science is so much fun!
Event
May 2023: Tanya Garcia is selected as Chair-Elect of the Biometrics Section of the American Statistical Association (ASA)!
Award
May 2023: Tanya Garcia is selected to be a visiting scholar at The University of Sydney Mathematical Research Institute for summer 2024!
Award
April 2023: Jesus Vazquez is invited to an all-expense paid trip to present his doctoral research at Two Sigma in New York City! You just keep kickin' research butt, Jesus!
Award
April 2023: Marissa Ashner wins the UNC Gillings School Academic Excellence award! Love how your stellarness is shining, Marissa!
Award
April 2023: Kyle Grosser wins the UNC Gillings School Service award! Your dedication to making biostatistics more inclusive has such a huge impact, Kyle!
Award
April 2023: Tanya Garcia is inducted into the Delta Omega Honorary Society at UNC Chapel Hill!
Publication
April 2023: Check out our article "A positive definite thresholding estimator of a covariance matrix and its asymptotic efficiency" in Journal of Multivariate Analysis by Rakheon Kim, Mohsen Pourahmadi, and Tanya Garcia.
Award
March 2023: Sarah Lotspeich, a lab alumni, awarded the David P. Byar Early Career Award. Way to go Sarah!
Award
March 2023: Marissa Ashner wins Honorable Mention for the Gertrude M. Cox Award from the American Statistical Association.
Spotlight
February 2023: Tanya Garcia featured in UNC Endeavors!
Event
February 2023: Tanya Garcia, Yanyuan Ma, and Joan Hu will host the workshop "Bridging Statistical Strategies for Censored Covariates" at the Banff International Research Station in January 2024. We're looking forward to creating new research on this exciting topic!
Preprint
February 2023: Check out our article "Mission Imputable: correcting for Berkson error when imputing a censored covariate" on arxiv by Kyle Grosser, Sarah Lotspeich, and Tanya Garcia.
Award
December 2022: Tanya Garcia selected as a Tyson Academic Leadership Fellow at UNC Chapel Hill for 2023-2024!
Preprint
December 2022: Check out our article "Back to the basics: exploring the validity of the complete case analysis for regression models with a right-censored covariate" on arxiv by Marissa Ashner and Tanya Garcia.
Award
March 2022: Tanya Garcia receives the 2022 Carolina Women's Leadership Council Faculty Mentoring Award, all thanks to her lab's kind nomination!
Preprint
September 2022: Check out our article "It’s integral: Replacing the trapezoidal rule to remove bias and correctly
impute censored covariates with their conditional means" on arxiv by Sarah Lotspeich and Tanya Garcia.
Event
September 2022: Sarah Lotspeich's proposal “Not all censoring is a survival problem: Statistical methods for censored covariates” is selected as an invited session at ENAR 2023!
Award
August 2022: Sarah Lotspeich wins the Lee Travel Award from the Caucus for Women in Statistics. You keep rocking on Sarah!
Event
August 2022: Rakheon Kim joins the Department of Statistical Science at Baylor University as an assistant professor. You never cease to amaze me Rakheon!
Award
June 2022: Marissa Ashner wins the travel award for the University of Utah Rising Stars in Population Health Sciences. You'll always be my rising star, Marissa!
Event
June 2022: Sarah Lotspeich joins the Department of Statistical Sciences at Wake Forest University as an assistant professor.
Award
June 2022: Sarah Lotspeich wins a travel award to participate in the IMS New Researcher's Conference!
Award
June 2022: Kyle Grosser wins a travel award from the UNC Graduate and Professional Development Association. Enjoy your travels to JSM 2022, Kyle!
Event
April 2022: Rakheon Kim passes his dissertation defense with flying colors. Super proud of my very first PhD student!
Event
March 2022: Marissa Ashner lands an internship with NORC at the University of Chicago!
Funding
March 2022: Tanya Garcia receives the CEHS Pilot Project grant!
Award
January 2022: Marissa Ashner is selected for the Future Fellows Research Conference at St Jude. Your hard work keeps paying off, Marissa!
Publication
January 2022: Check out our article "Correcting conditional mean imputation for censored covariates and improving usability" in Biometrical Journal by Sarah Lotspeich, Kyle Grosser, and Tanya Garcia.
Event
September 2021: Sarah Lotspeich's proposal “What we know about what we don’t know: Overcoming incomplete data in practice” is selected as an invited session at the Joint Statistics Meeting 2022!
Publication
July 2021: Check out our article "svReg: Structural Varying-coefficient regression to differentiate how regional brain atrophy affects motor impairment for Huntington disease severity groups" in Biometrical Journal.
Award
January 2021: Kyle Grosser wins a fellowship from the Foundation for Science and Disability American Association for the Advancement of Science. Excellent work Kyle!
Event
January 2021: Tanya Garcia becomes chair of the Regional Advisory Board of ENAR.
Event
January 2021: Tanya Garcia becomes Associate Editor for Australian and New Zealand Journal of Statistics.
Publication
May 2020: Check out our article "Robust methods to correct for measurement error when evaluating a
surrogate marker" in Biometrics.
Spotlight
September 2020: Tanya Garcia featured in AMSTAT News Hispanic Heritage Month!
Publication
August 2020: Check out our article "Dynamic landmark prediction for mixture models" in Biostatistics.
Event
July 2020: Tanya Garcia joins the Department of Biostatistics at UNC Chapel Hill as a tenured, associate professor.
Publication
May 2020: Check out our article "Estimating disease onset from change points of markers measured with error" in Biostatistics.
Event
January 2020: Tanya Garcia joins the Scientific Advisory Board for the Huntington's Disease Society of America.
Publication
December 2019: Check out our article "Analysis of repeated measures data in nutrition research" in Frontiers in Bioscience.
Publication
October 2019: Check out our article "Single Logging Vehicle Crashes and Variables Associated with Injury in Louisiana" in Journal of AgroMedicine.
Publication
August 2019: Check out our article "Consistent estimator for logistic mixed effect models" in The Canadian Journal of Statistics.
Event
June 2019: Tanya Garcia becomes Associate Editor for Biostatistics.
Event
June 2019: Tanya Garcia is the plenary speaker at the 39th International Symposium on Forecasting.
Publication
April 2019: Check out our article "Time-varying Proportional Odds Model for Mega-analysis of Clustered Event Times" in Biostatistics.
Event
July 2018: Tanya Garcia joins the Department of Statistics at Texas A&M University as a tenured, associate professor.
Event
June 2018: Tanya Garcia becomes chair of Developing the Next Generation of Biostatisticians for the Biometrics Section of the American Statistical Association.
Publication
June 2018: Check out our article "Disease progression in Huntington Disease: an analysis of multiple longitudinal outcomes" in Journal of Huntington's Disease.
Publication
May 2018: Check out our book chapter "Huntington's Disease" in Oxford Textbook of Neurological and Neuropsychiatric Epidemiology.
Publication
November 2017: Check out our article "Simultaneous treatment of unspecified heteroskedastic model error distribution and mismeasured covariates for restricted moment models" in Journal of Econometrics.
Publication
November 2017: Check out our article "Robust mixed-effects model for clustered failure time data: application to Huntington's disease event measures" in Annals of Applied Statistics.
Publication
October 2017: Check out our article "Statistical Approaches to longitudinal data analysis in neurodegenerative diseases: Huntington's Disease as a model" in Current Neurology and Neuroscience Reports.
Award
September 2017: Tanya Garcia selected as a Mentoring Institute for Neuroscience Diversity Scholar!
Publication
May 2017: Check out our book chapter "Statistical modeling of Huntington disease onset" in Handbook of Clinical Neurology.
Funding
December 2016: Tanya Garcia receives a K01 grant from the National Institutes of Neurological Disorders and Stroke!
Publication
August 2016: Check out our article "Cox regression with exclusion frequency-based weights to identify neuroimaging markers relevant to Huntington's disease onset" in Annals of Applied Statistics.
Funding
September 2016: Tanya Garcia receives Southeastern Travel Grant at Texas A&M University.
Publication
June 2016: Check out our article "Modeling the Cholesky factors of covariance matrices of multivariate longitudinal data" in Journal of Multivariate Analysis.
Publication
July 2015: Check out our article "Optimal estimator for logistic model with distribution-free random intercept" in Scandinavian Journal of Statistics.
Funding
June 2015: Tanya Garcia receives the Texas A&M School of Public Health Research Enhancement and Development Initiative (REDI) Grant!
Publication
August 2014: Check out our article "Combining isotonic regression and EM algorithm to predict genetic risk under monotonicity constraint and unknown genotypes" in Annals of Applied Statistics.
Publication
October 2013: Check out our article "Influence of measures of significance-based weights in the weighted Lasso" in Journal of the Indian Society of Agricultural Statistics (Invited paper).
Funding
September 2013: Tanya Garcia receives her first grant: the Huntington's Disease Society of America Human Biology Project Fellowship!
Publication
February 2013: Check out our article "Identification of important regressor groups, subgroups, and individuals via regularization methods: application to gut microbiome data" in Bioinformatics.
Publication
January 2013: Check out our article "Structured variable selection with q-values" in Biostatistics.
Event
January 2013: Tanya Garcia joins the Department of Epidemiology and Biostatistics at Texas A&M University School of Public Health as an assistant professor.


Select Image
FitURJC Account
Username:
Email:
New password:
Confirm new password:
Age:
Update
Cancel


Figure 15: Three-group pipeline.
Groups 0 and 1 communicate. Groups 1 and 2 communicate. Therefore, group 0 requires one inter-communicator, group 1 requires two inter-communicators, and group 2 requires 1 inter-communicator.
2.2
int main(int argc, char **argv)
{
MPI_Comm myComm; /* intra-communicator of local sub-group */
MPI_Comm myFirstComm; /* inter-communicator */
MPI_Comm mySecondComm; /* second inter-communicator (group 1 only) */
int membershipKey;
int rank;
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
/* User code must generate membershipKey in the range [0, 1, 2] */
membershipKey = rank % 3;
/* Build intra-communicator for local sub-group */
MPI_Comm_split(MPI_COMM_WORLD, membershipKey, rank, &myComm);
/* Build inter-communicators. Tags are hard-coded. */
if (membershipKey == 0)
{ /* Group 0 communicates with group 1. */
MPI_Intercomm_create( myComm, 0, MPI_COMM_WORLD, 1,
1, &myFirstComm);
}
else if (membershipKey == 1)
{ /* Group 1 communicates with groups 0 and 2. */
MPI_Intercomm_create( myComm, 0, MPI_COMM_WORLD, 0,
1, &myFirstComm);
MPI_Intercomm_create( myComm, 0, MPI_COMM_WORLD, 2,
12, &mySecondComm);
}
else if (membershipKey == 2)
{ /* Group 2 communicates with group 1. */
MPI_Intercomm_create( myComm, 0, MPI_COMM_WORLD, 1,
12, &myFirstComm);
}
/* Do work ... */
switch(membershipKey) /* free communicators appropriately */
{
case 1:
MPI_Comm_free(&mySecondComm);
case 0:
case 2:
MPI_Comm_free(&myFirstComm);
break;
}
MPI_Finalize();
}
Up: Inter-Communication Examples
Next: Example 2: Three-Group ``Ring"
Previous: Inter-Communication Examples
144.2. Example 2: Three-Group ``Ring"
Up: Inter-Communication Examples
Next: Caching
Previous: Example 1: Three-Group ``Pipeline"
Figure 16: Three-group ring.
Groups 0 and 1 communicate. Groups 1 and 2 communicate. Groups 0 and 2 communicate. Therefore, each requires two inter-communicators.
2.2
int main(int argc, char **argv)
{
MPI_Comm myComm; /* intra-communicator of local sub-group */
MPI_Comm myFirstComm; /* inter-communicators */
MPI_Comm mySecondComm;
MPI_Status status;
int membershipKey;
int rank;
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
...
/* User code must generate membershipKey in the range [0, 1, 2] */
membershipKey = rank % 3;
/* Build intra-communicator for local sub-group */
MPI_Comm_split(MPI_COMM_WORLD, membershipKey, rank, &myComm);
/* Build inter-communicators. Tags are hard-coded. */
if (membershipKey == 0)
{ /* Group 0 communicates with groups 1 and 2. */
MPI_Intercomm_create( myComm, 0, MPI_COMM_WORLD, 1,
1, &myFirstComm);
MPI_Intercomm_create( myComm, 0, MPI_COMM_WORLD, 2,
2, &mySecondComm);
}
else if (membershipKey == 1)
{ /* Group 1 communicates with groups 0 and 2. */
MPI_Intercomm_create( myComm, 0, MPI_COMM_WORLD, 0,
1, &myFirstComm);
MPI_Intercomm_create( myComm, 0, MPI_COMM_WORLD, 2,
12, &mySecondComm);
}
else if (membershipKey == 2)
{ /* Group 2 communicates with groups 0 and 1. */
MPI_Intercomm_create( myComm, 0, MPI_COMM_WORLD, 0,
2, &myFirstComm);
MPI_Intercomm_create( myComm, 0, MPI_COMM_WORLD, 1,
12, &mySecondComm);
}
/* Do some work ... */
/* Then free communicators before terminating... */
MPI_Comm_free(&myFirstComm);
MPI_Comm_free(&mySecondComm);
MPI_Comm_free(&myComm);
MPI_Finalize();
}
2.2
Up: Inter-Communication Examples
Next: Caching
Previous: Example 1: Three-Group ``Pipeline"
Return to MPI-2.2 Standard Index
Return to MPI Forum Home Page
(Unofficial) MPI-2.2 of September 4, 2009
HTML Generated on September 10, 2009


Joyable Hack Mental Health 2019 Challenge: Hacking a solution to provide more integrated options for those in need of crisis support.
Since transitioning into the tech industry a year ago I have had the opportunty to study many languages and frameworks. I can code in JavaScript and Apex and recently became a Gopher! I'm ready and excited to take the next steps in my career.
My introduction to coding came as a Software Engineering Apprentice at Techtonica, which offers full-time tech training and mentorship to Bay Area women and non-binary adults with low incomes.
Check out Techtonica!
#bridgeTheTechGap


Defined in generated file: python/ops/gen_nn_ops.py
Computes the gradients of depthwise convolution with respect to the input.
tf.compat.v1.nn.depthwise_conv2d_backprop_input
tf.compat.v1.nn.depthwise_conv2d_native_backprop_input
tf.compat.v2.nn.depthwise_conv2d_backprop_input
tf.nn.depthwise_conv2d_backprop_input( input_sizes, filter, out_backprop, strides, padding, data_format='NHWC', dilations=[1, 1, 1, 1], name=None )
input_sizes
: A Tensor
of type int32
.
An integer vector representing the shape of input
, based
on data_format
. For example, if data_format
is 'NHWC' then
input
is a 4-D [batch, height, width, channels]
tensor.filter
: A Tensor
. Must be one of the following types: half
, bfloat16
, float32
, float64
.
4-D with shape
[filter_height, filter_width, in_channels, depthwise_multiplier]
.out_backprop
: A Tensor
. Must have the same type as filter
.
4-D with shape based on data_format
.
For example, if data_format
is 'NHWC' then
out_backprop shape is [batch, out_height, out_width, out_channels]
.
Gradients w.r.t. the output of the convolution.strides
: A list of ints
.
The stride of the sliding window for each dimension of the input
of the convolution.padding
: A string
from: "SAME", "VALID"
.
The type of padding algorithm to use.data_format
: An optional string
from: "NHWC", "NCHW"
. Defaults to "NHWC"
.
Specify the data format of the input and output data. With the
default format "NHWC", the data is stored in the order of:
[batch, height, width, channels].
Alternatively, the format could be "NCHW", the data storage order of:
[batch, channels, height, width].dilations
: An optional list of ints
. Defaults to [1, 1, 1, 1]
.
1-D tensor of length 4. The dilation factor for each dimension of
input
. If set to k > 1, there will be k-1 skipped cells between each filter
element on that dimension. The dimension order is determined by the value of
data_format
, see above for details. Dilations in the batch and depth
dimensions must be 1.name
: A name for the operation (optional).A Tensor
. Has the same type as filter
.


MoonQuest+
Home
How to insall
Forum
Mod List
Welcome to the mooquest website
Here you can find links to totorials and things like the forum.
SERVER IP: moonquest.us.to


Latest News Centenary Celebration of the Birth of Our Founder: Dr. G. Venkataswamy Aravind Eye Foundation
Latest News Congratulations to Professor Fred Munson, winner of the Dr. G. Venkataswamy Endowment Award 2018 Aravind Eye Foundation
Latest News Hilton Coalition Fellows, Shazzad Khan and Adrien Gaussan, share their experiences at Aravind Eye Care System Aravind Eye Foundation
Latest News Wired Magazine Names Dr. Kim to the Wired 25 List - 25 People Who Will Change the Future Aravind Eye Foundation


How many times has Rafael Nadal won the French Open?
Who is the top scorer for the England Women’s national football team?
Did Cristiano Ronaldo score more goals or play more games for Real Madrid in all competitions?
Where is the next Olympic Games set to take place?
The Los Angeles Lakers and New York Knicks play which sport?


We have identified in JavaScript some of the elements that must appear in any powerful programming language:
Now we will learn about function declarations, a much more powerful abstraction technique by which a compound operation can be given a name and then referred to as a unit.
We begin by examining how to express the idea of squaring.
We
might say, To square something, take it times itself.
This is
expressed in our language as
function square( x ) { return x * x; } // ^ ^ ^ ^ ^ ^ ^ // To square something, take it times itself.
Our simplest form of a function declaration is function $\textit{name}$( $\textit{parameters}$ ) { return $\textit{expression}$; } The $\textit{name}$ is a symbol to be associated with the function in the environment.[2] The $\textit{parameters}$ are the names used within the body of the function to refer to the corresponding arguments of the function. The $\textit{expression}$ after the keyword return is the return expression that will yield the value of the function application when the parameters are replaced by the arguments to which the function is applied.[3] The $\textit{parameters}$ are grouped within parentheses and separated by commas, just as they would be in an actual call to the function being declared.
Having declared the square function, we can now use it in a function application expression, which we turn into a statement using a semicolon:
We can easily declare a function sum_of_squares that, given any two numbers as arguments, produces the sum of their squares:
slotsin the expression to be filled in when such an expression is actually used.


I am applying for the following case management order(s):
transferring the court file to another registry for one or more purposes
adding or removing a party to the proceeding
settling or correcting the terms of an order made under these rules
Setting a specified period of time for the filing and exchanging of information, including a financial statement in Form D [Financial Statement] of Appendic C
correcting or amending a filed document, including the correction of a name or date of birth
requiring that a parentage test be taken under section 33 [parentage tests] of the Family Law Act
requiring that information be disclosed by a third party
adjourning a hearing or trial
requiring that a person who prepared a report under section 211 [orders respecting reports] of the Family Law Act attend a trial
respecting the conduct and management of a trial
allowing a person to attend a hearing or conference using electronic communication
shortening or extending a time limit under these rules or a time limit set by an order or direction of a judge
allowing, waiving or modifying any service, delivery or notice requirement, including allowing an alternate method for the service of a document, including substitutional service
requiring access to information in accordance with section 242 [orders respecting searchable information] of the Family Law Act
permitting any other means of proof instead of that required by these rules
waiving or varying any early resolution requirements
recognizing an extraprovincial order other than a support order
permitting a party to be exempt from a requirement under these rules
changing, suspending or cancelling an order made in the absence of the party


A JavaScript library that adds CSS variables based on user actions on the document.
Some installation instructions here:
Scroll Percentage:
Mouse X position:
Mouse Y position:


List of all members.
Detailed Description
Definition at line 120 of file _coord.py.
Member Function Documentation
| def par_kinematics::srv::_coord::coordResponse::__init__ |
( |
|
self, |
|
|
|
args, |
|
|
|
kwds | |
|
) |
| | |
Constructor. Any message fields that are implicitly/explicitly
set to None will be assigned a default value. The recommend
use is keyword arguments as this is more robust to future message
changes. You cannot mix in-order arguments and keyword arguments.
The available fields are:
angles
@param args: complete set of field values, in .msg order
@param kwds: use keyword arguments corresponding to message field names
to set specific fields.
Definition at line 131 of file _coord.py.
| def par_kinematics::srv::_coord::coordResponse::_get_types |
( |
|
self |
) |
[private] |
| def par_kinematics::srv::_coord::coordResponse::deserialize |
( |
|
self, |
|
|
|
str | |
|
) |
| | |
unpack serialized message in str into this message instance
@param str: byte array of serialized message
@type str: str
Definition at line 170 of file _coord.py.
| def par_kinematics::srv::_coord::coordResponse::deserialize_numpy |
( |
|
self, |
|
|
|
str, |
|
|
|
numpy | |
|
) |
| | |
unpack serialized message in str into this message instance using numpy for array types
@param str: byte array of serialized message
@type str: str
@param numpy: numpy python module
@type numpy: module
Definition at line 199 of file _coord.py.
| def par_kinematics::srv::_coord::coordResponse::serialize |
( |
|
self, |
|
|
|
buff | |
|
) |
| | |
serialize message into buffer
@param buff: buffer
@type buff: StringIO
Definition at line 159 of file _coord.py.
| def par_kinematics::srv::_coord::coordResponse::serialize_numpy |
( |
|
self, |
|
|
|
buff, |
|
|
|
numpy | |
|
) |
| | |
serialize message with numpy array types into buffer
@param buff: buffer
@type buff: StringIO
@param numpy: numpy python module
@type numpy module
Definition at line 186 of file _coord.py.
Member Data Documentation
The documentation for this class was generated from the following file:
- /home/wouter/ros_packages/thp-pj2-08/par_kinematics/src/par_kinematics/srv/_coord.py


class: center, middle, inverse, title-slide # Welcome to Population Ecology! ## ⚔
### ### 04/08/2021 --- # 3 part lecture (with breaks) .pull-left[ - **Part 1** Exponential growth - **Part 2** Logistic growth - _Density dependent_ - **Part 3** Logistic growth with stochasticity ] .pull-right[ ![pop](pop_growth_files/lego_pop_img.png) ] --- # Part 1: Why be interested in population growth? -- - Project future populations - Human population expected to be 9.8 billion by 2050 -- - Conservation of species -- - Sustainable use of resources -- - Many more --- class: inverse, middle, center #Part 1: Let's start with exponential population growth Density independent growth `$$\frac{dN}{dt}=rN$$` --- #Exponential growth What is required for a population to grow? -- How many births and how many deaths? `$$N_{t+1} = N_t + B - D + I - E$$` - `\(B\)` = _Births_ - `\(D\)` = _Deaths_ - `\(I\)` = _Immigration_ - `\(E\)` = _Emigration_ -- If we assume that immigration and emigration are equal, then the change in population size is: `$$\Delta N = B - D$$` --- #Exponential growth `$$\Delta N = B - D$$` .pull-left[ - More births than deaths the population grows .center[  ] ] .pull-right[ - More deaths than births the population declines {{content}} ] -- ![die](pop_growth_files/happy_face_blood.jpg) {{content}} --- #Exponential growth _Change in population_ ( `\(dN\)` ) _over a very small interval of time_ ( `\(dt\)` ) can be described as: `$$\frac{dN}{dt}=B-D$$` -- - Births and deaths are also described in rates: .pull-left[ `$$B = bN$$` `\(b\)` = instantaneous birth rate [births / (individual * time)] ] .pull-right[ `$$D = dN$$` `\(d\)` = instantaneous death rate [deaths / (individual * time)] ] --- #Exponential growth _SO_ change in population over time can be described as `$$\frac{dN}{dt}=(b-d)N$$` -- `$$\frac{dN}{dt}=(0.55-0.50)N$$` -- `$$\frac{dN}{dt}=(0.55-0.50)*100$$` -- `$$\frac{dN}{dt}=0.05*100$$` -- `$$\frac{dN}{dt}=5$$` --- #Exponential growth If we let `\(b-d\)` become the constant `\(r\)`, the __intrinsic rate of increase__, we have the continuous exponential growth equation: `$$\frac{dN}{dt}=rN$$` -- .center[  ] --- #Exponential growth Change in population is equal to the intrinsic rate of increase ( `\(r\)` ) multiplied by the population size ( `\(N\)` ) .pull-left[ `$$\frac{dN}{dt}=rN$$` ] .pull-right[ `\(N\)` = _population size_ `\(r\)` = _intrinsic rate or increase_ ] `\(r\)` defines how fast a population is growing or declining - `\(r=0\)` no growth - `\(r>0\)` positive growth - `\(r<0\)` negative growth The differential equation tells us growth __rate__ not population size --- #Exponential growth The abundance of an exponentially growing population at a given time `\(t\)` can be worked out by: `$$N_t = N_0e^{rt}$$` Look familiar from assignment 1? -- The discrete version of the exponential equation tells us the population per time-step: `$$N_{t+1} = N_t + r_dN_t$$` `$$N_{t+1} = 100 + 0.05 * 100$$` `$$N_{t+1} = 105$$` `\(N_t\)` = Population size at time t `\(r_d\)` = discrete growth factor --- #Exponential growth .pull-left[ Theoretical populations growing and declining as a result of different values of `\(r\)` - `\(r=0\)` no growth - `\(r>0\)` positive growth - `\(r<0\)` negative growth Because growth rate is exponential, by taking the natural logarithm of the population size the graphed lines become straight ] .pull-right[ ![](pop_growth_files/figure-html/plot-exp-1.png) ] --- # Exponential growth .pull-left[Exponential growth] .pull-right[Logarithm of exponential growth] ![](pop_growth_files/figure-html/plot-chunk-1.png)![](pop_growth_files/figure-html/plot-chunk-2.png) --- #Growth rates Common name | `\(r\)` [individuals/(individual*day)] | Doubling time ------------|-------------------------------------|--------- Virus | 300.0 | 3.3 minutes Bacterium | 58.7 | 17 minutes Protozoan | 1.59 | 10.5 hours Hydra | 0.34 | 2 days Flour beetle| 0.101 | 6.9 days Brown rat | 0.0148 | 46.8 days Domestic cow| 0.001 | 1.9 years Mangrove | 0.00055 | 3.5 years Southern beech | 0.000075 | 25.3 years --- #Growth rates Population increases exponentially but __Growth rate__ over __population size__ increases proportionally with the population ![](pop_growth_files/figure-html/plot-chunk1-1.png)![](pop_growth_files/figure-html/plot-chunk1-2.png) --- # Exponential growth - Populations growing exponentially have a doubling time - The doubling time depends on the growth rate `\(r\)` and is _not_ every year - (ง'̀-'́)ง Surely no species can grow forever exponentially?!?!?! - _Correct!_ Welcome to part 2, __density dependence__ --- class: inverse, middle, center #Take 5 minutes to discuss the assumptions of the exponential growth model ( ͡° ͜ʖ ͡°) --- class: inverse, middle, center #Part 2: Logistic population growth Density dependent growth `$$\frac{dN}{dt}=rN\left(1- \frac{N}{K} \right)$$` --- #Logistic growth Now we will look at populations which do not grow forever but reach a __carrying capacity__ ( `\(K\)` ) `\(K\)` represents the maximum population size that can be supported considering limiting factors such as food, shelter and space `$$\frac{dN}{dt}=rN\left(1- \frac{N}{K} \right)$$` `\(N\)` = Population size `\(r\)` = Intrinsic rate of increase `\(K\)` = Carrying capacity --- #Logistic growth Consider the term `\(\left(1- \frac{N}{K} \right)\)` as a penalty on the growth of the population depending on the number of individuals in the community - Very crowded communities have a high penalty compared to ones with plenty of space and resources `$$\frac{dN}{dt}=rN\left(1- \frac{N}{K} \right)$$` -- - At the point the population reaches the carrying capacity: `\(N\)` will = `\(K\)`, and the fraction `\(\frac{N}{K}\)` will = 1 - The term `\(\left(1- \frac{N}{K} \right)\)` will collapse to 0 and the change in population will = 0. The equation will be multiplied by 0 and equal 0 - So the population will remain at size `\(K\)` --- #Logistic growth If the population is very small, `\(N\)` is small relative to `\(K\)`, then the penalty is small `$$\frac{dN}{dt}=rN\left(1- \frac{N}{K} \right)$$` -- However, as we learned from exponential growth, a population grows in proportion to its size. - A population of 1000 seabirds will produce more eggs than a population of 100. - In the logistic growth equation the proportion added to the population decreases as the population grows, reaching 0 when `\(N = K\)` --- #Logistic growth `$$\frac{dN}{dt}=rN\left(1- \frac{N}{K} \right)$$` - If `\(K = 100\)` and `\(N = 7\)` then the unused space is `\(1-(7/100) = 0.93\)` and the population is growing at 93% of the growth rate of an exponentially growing population - If `\(K = 100\)` and `\(N = 98\)` then the unused proportion of capacity is `\(1-(98/100) = 0.02\)` and growth is at 2% of the growth rate of an exponentially growing population -- The point at which a population is the largest relative to the penalty for its size is at `\(K/2\)` - What this means is the growth rate of a population is fastest at half its carrying capacity - As the population exceeds `\(K/2\)` the penalty increases but below `\(K/2\)` the population is small and the proportion added to the population is also small --- #Logistic growth _Thanos should have studied population ecology_ .pull-left[ - If a species is at capacity, its growth rate will increase to maximum if you cut it in half. - Not all species are equal so cutting all in half will not have an equal effect... ] .pull-right[  ] --- #Logistic growth .pull-left[ _Paramecium_ growing to capacity.  ] .pull_right[ ![](pop_growth_files/figure-html/plot-chunk2-1.png) ] --- #Logistic growth .center[  ] --- #Logistic growth Now we will look at the discrete form of the equation: `$$N_{t+1} = N_t + r_dN_t\left(1- \frac{N_t}{K} \right)$$` `\(N_t\)` = Population size at time t `\(r_d\)` = discrete growth factor `\(K\)` = Carrying capacity -- - Instead of telling us the change in a population at an infinitely small point in time, the discrete equation tells us the size of the population at a given time. --- #Logistic growth The size of the population at the next time-step is equal to: - The size of the current population plus the current population multiplied by the discrete growth rate and the density penalty. `$$N_{t+1} = N_t + r_dN_t\left(1- \frac{N_t}{K} \right)$$` -- `$$N_{t+1} = 100 + 0.05 * 100 \left(1- \frac{100}{200} \right)$$` -- `$$N_{t+1} = 102.5$$` -- Remember how in the exponential model `\(N_{t+1} = 105\)` ? --- #Logistic growth __Unlike__ the exponential model, in te logistic model, growth rate is dependent on population size and reaches its peak at half of the carrying capacity ![](pop_growth_files/figure-html/plot-chunk3-1.png)![](pop_growth_files/figure-html/plot-chunk3-2.png) --- #Logistic growth .pull-left[ **Logistic** growth rate vs population size ] .pull-right[ **Exponential** growth rate vs population size ] ![](pop_growth_files/figure-html/plot-chunk4-1.png)![](pop_growth_files/figure-html/plot-chunk4-2.png) --- class: inverse, middle, center #Take 5 minutes to discuss the assumptions of the logistic growth model (ᵔᴥᵔ) --- class: inverse, middle, center #Part 3: Introducing stochasticity Non-deterministic growth --- #Stochasticity Until now, everything we have looked at has been _entirely_ deterministic but is this true of the real world? `$$N_{t+1} = N_t + r_dN_t\left(1- \frac{N_t}{K} \right)$$` .pull-left[ Environmental stochasticity - Populations go through good and bad times and population growth rate is not constant - We can represent this by adding variability to the growth rate `\(r_d\)` ] .pull-right[ Demographic stochasticity - By chance a population might have a run of births or a run of deaths - Demographic stochasticity includes the probability of births and deaths in the parameter `\(r\)` ] -- - Variability can also be included in `\(K\)`, the carrying capacity! We will focus on _environmental stochasticity_ --- #Stochasticity Even if __average__ growth rate is positive some stochasticity can drive extinction ![](pop_growth_files/figure-html/plot-chunk5-1.png)![](pop_growth_files/figure-html/plot-chunk5-2.png) --- #Recap We have looked at: - discrete and continuous equations for __exponential growth__ - also known as __density independent__ growth - discrete and continuous equations for __logistic growth__ - also known as __density dependent__ growth - __Stochastic__ logistic growth - We have discussed model __assumptions__ --- #Key points - __Exponentially__ growing populations grow proportional to their size indefinitely - __Logistically__ growing populations experience a penalty that increases with population size - Growth rate is greatest at half the carrying capacity, when the population size is at its largest relative to the density penalty - __Stochasticity__ can have a serious effect on populations and deterministic models do not account for stochasticity - __Assumptions are key__, _think about these for the assignment_ --- #Things to be aware of - Differences in continuous and discrete equation - Different notation and descriptions of `\(r\)` - Mathematical differences - Many different population growth equations - We have not talked about the model `\(N_{t+1} = \lambda N_t\left(1- \frac{N_t}{K} \right)\)`. - Concepts can be transferable but be aware results may not be the same - This is just the beginning - Population growth models get _much much_ more complicated to deal with more complicated species, for example, age structured population and competition --- # Top tips for the assignment - Attend labs and office hours - Understand the two key graphs: population vs time and growth-rate vs population - Use the app to understand different parameters (but do not use screenshots from the app for your assignment) - Rubbish in rubbish out. If model outputs look crazy or the numbers don't make logical sense then double check your inputs and equations --- class: inverse, middle, center #Go forth and model!!! \ (•◡•) /


@import factories.UserFactory @(user: User) @main(user, "Newsfeed") {
105 Waterloo Quay, Wellington
*@ @*Starts: 2019-09-20 10:00:00
Ends: 2019-09-22 16:00:00
Type: Lifestyle Shows, Expos
*@ @*Wellington's iconic event is celebrating 20 years in 2019! Join the fun, be inspired, and enjoy a day out at Westpac Stadium.
The Wellington Home & Garden Show is packed with all the ideas and information that you ...
17 Carlyle Street, Napier, Hawke's Bay / Gisborne
Starts: 2019-09-20 21:00:00
Ends: 2019-09-20 23:30:00
Type: Classic Rock
Ozzy Osbourne - Randy Rhoads - Ultimate Supergroup - "Crazy Train"
The greatest Ozzy Osbourne/ Randy Rhoads show in the world, tours New Zealand!
Fans of Ozzy Osbourne’s early solo career are in for an amazing ...


Hey.
Hey, you ;)
How are you?
Great, how are you?
I'm fine! This chat function sure is great, huh?
Yes it definately is!
It's so fast too.
I know!
Well, see you!
Okay, see you later!
Byeeeeeee!!
Have a good day.


Mid-range Samsung Galaxy A51 to feature Infinity-O display, L-shaped rear camera setup
The Samsung Galaxy A51 to feature an L-shaped quad camera setup
by Dean DaleyAbout this time last year Samsung revamped its mid-range smartphones with new features like in-display fingerprint scanners, notches and four rear-facing cameras.
Now, CAD-based renderings of a new Samsung smartphone with an interesting design have appeared online. The renderings were posted by OnLeaks together with Pricebaba.
This handset is the successor to the Galaxy A50, called the Galaxy A51.
The purported device sports a 6.5-inch display, a small chin and a centered hole punch cutout similar to the Galaxy Note 10 series.
The A51 sports a 3.5mm headphone jack, a loudspeaker, USB-C port and an in-display fingerprint scanner.
Additional rumours suggest that it features 6GB of RAM, 128GB of expandable storage, an Exynos 9611 chipset and a 4,000mAh battery.
There’s also a quad rear-facing L-shaped camera setup. The leak also suggests it uses a 48-megapixel primary camera, a depth sensor, a 12-megapixel wide-angle lens and, lastly, a 12-megapixel telephoto shooter.
It’s likely the smartphone will launch in 2020 and come in silver, black and blue.


ViewContainer
A container that holds a 1 to 1 relationship with a component instance. This instance is the main API for a component to interact with the layout framework.
Constructor Summary
| Public Constructor | ||
| public |
constructor(_document: Document, _injector: Injector) Creates an instance of ViewContainer. |
Member Summary
| Public Members | ||
| public |
Notifies when the view has become attached. |
|
| public |
Notifies that the view is being destroyed. |
|
| public get |
The component instance associated with this container. |
|
| public |
Notifies when the component is initialized. |
|
| public |
Notifies when the component is assigned to the container and ready for access. |
|
| public |
containerChange: Observable<View | null> Notifies when this container has changed the View it is associated with. |
|
| public |
Notifies when the view is destroyed. |
|
| public |
Notifies when the view has become detached. |
|
| public get |
The HTML element for this container. |
|
| public get |
hasComponent: * |
|
| public get |
Current height in pixels. |
|
| public |
A unique identifier for this instance. |
|
| public |
Contains the state of ths views initialized state. |
|
| public get |
Whether the container is cacheable. |
|
| public get |
isLazy: * |
|
| public |
sizeChanges: Observable<{width: number, height: number}>{width:> Notifies when the dimensions of this views container has changed. |
|
| public |
status: Observable<ViewContainerStatus> Notifies when the status of this component changes. |
|
| public get |
view: * |
|
| public |
Notifies when the visibility of this view changes. |
|
| public get |
Current width in pixels. |
Method Summary
| Public Methods | ||
| public |
Closes this view. |
|
| public |
destroy() Destroys the container. |
|
| public |
detach() Detaches this container from it's view. |
|
| public |
fail(retry: *) |
|
| public |
Get's a token from this containers injector. Note, this should not be used to grab parent renderables or any item that can be changed. |
|
| public |
Gets this renderables parent or any parent that is an instance of the passed in constructor. |
|
| public |
getParents(Ctor: Type<T>): T | null Gets this renderables parents or any parents that are an instance of the passed in constructor. |
|
| public |
Initializes the component. |
|
| public |
Determines whether this renderable is visible. |
|
| public |
Signals up the tree to make this View visible. |
|
| public |
mount(element: HTMLElement) Mounts an element to this containers element. |
|
| public |
Sets all the content of this containers element to the given HTML string. |
|
| public |
mountTo(element: HTMLElement) Mounts this containers element to the given element. |
|
| public |
ready(options: {init?: boolean}): Promise<ViewContainer<T>> Waits for the component to be ready. |
|
| public |
resolve(options: {}): * |
|
| public |
retry() |
|
| public |
Sets the containing View for this container. |
Public Constructors
Public Members
public beforeDestroy: Observable<BeforeDestroyEvent<Renderable>> source
Notifies that the view is being destroyed. This action is cancellable or can be halted until an async action is complete.
See:
public componentReady: Observable<boolean> source
Notifies when the component is assigned to the container and ready for access.
public containerChange: Observable<View | null> source
Notifies when this container has changed the View it is associated with.
public get hasComponent: * source
public get isLazy: * source
public sizeChanges: Observable<{width: number, height: number}>{width:> source
Notifies when the dimensions of this views container has changed.
public status: Observable<ViewContainerStatus> source
Notifies when the status of this component changes.
public get view: * source
public visibilityChanges: Observable<boolean> source
Notifies when the visibility of this view changes.
Public Methods
public close(args: {silent?: boolean}) source
Closes this view.
Params:
| Name | Type | Attribute | Description |
| args | {silent?: boolean} |
public fail(retry: *) source
Params:
| Name | Type | Attribute | Description |
| retry | * |
public get(token: *): U | null source
Get's a token from this containers injector. Note, this should not be used to grab parent renderables or any item that can be changed.
Params:
| Name | Type | Attribute | Description |
| token | * |
public getParent(Ctor: Type<T>): T | null source
Gets this renderables parent or any parent that is an instance of the passed in constructor. If non is found then null is returned.
Params:
| Name | Type | Attribute | Description |
| Ctor | Type<T> |
|
public getParents(Ctor: Type<T>): T | null source
Gets this renderables parents or any parents that are an instance of the passed in constructor.
Params:
| Name | Type | Attribute | Description |
| Ctor | Type<T> |
|
public mount(element: HTMLElement) source
Mounts an element to this containers element.
Params:
| Name | Type | Attribute | Description |
| element | HTMLElement |
public mountHTML(html: string) source
Sets all the content of this containers element to the given HTML string.
Params:
| Name | Type | Attribute | Description |
| html | string |
public mountTo(element: HTMLElement) source
Mounts this containers element to the given element.
Params:
| Name | Type | Attribute | Description |
| element | HTMLElement |
public ready(options: {init?: boolean}): Promise<ViewContainer<T>> source
Waits for the component to be ready. If the component is not initialized it will be initialized. This is important when the view is lazy and hasn't been shown yet but we need to interact with the component.
Params:
| Name | Type | Attribute | Description |
| options | {init?: boolean} |
|
public resolve(options: {}): * source
Params:
| Name | Type | Attribute | Description |
| options | {} |
|
Return:
| * |


 Don't worry! Just fill in your email and we'll send you a link to reset your password {% csrf_token %} {{form|crispy}} We'll never share your email with anyone else. Submit {% endblock %}
Don't worry! Just fill in your email and we'll send you a link to reset your password


This creates the submit file run with condor_submit
. The default arguments take advantage of HTCondor macros to append process id to each output. This has named arguments for usual submit file elements; if you want others, add them to the other
argument in the form you want them in a typical submit file.
submit_file_create(input, log = "log.$(Process)", output = "out.$(Process)", error = "error.$(Process)", universe = "vanilla", requirements = NULL, other = NULL, executable_file_name = "run.sh", submit_file_name = "Rjob.submit")
| input | Input files |
|---|---|
| log | Log file |
| output | Output file (in addition to ones the script itself creates) |
| error | Error file |
| universe | HTCondor universe to use |
| requirements | Requirements to pass as a requirements call |
| other | Other lines to add to the submit file (such as rank) |
| executable_file_name | Executable file name to make |
| submit_file_name | Name of the final submit file |
# NOT RUN { submit_file_create(input=c("birds.tre", "bird_traits.csv"), executable_file_name="batch.R")) # }


Chess is a two-player strategy game with a rich history, dating back to 7th-century India. The game is played by millions of people worldwide every single day. The idea behind this project is to make a chessboard connected to the Internet using AVR microcontrollers. Each chess square is illuminated if a piece is either standing on it, or was moved from it during the previous turn. RFID-sensor technology is used to detect the positions of the chess pieces.
The Internet of Things (IoT) is a concept that contains the worldwide network of electronics, software, sensors and other identifiable objects that can connect and exchange data. In this project, the IoT Chessboard is powered by the ATmega4809-XPRO with a wireless module, the WINC1500-XPRO extention board, connected to it. The information collected from the chessboard is sent to a web server, which displays it on this website where you can watch the game live.


public abstract class AbstractArmature
extends java.lang.Object
| Modifier and Type | Field and Description |
|---|---|
static int |
AMBITIOUS
MIXED MODE APPLIES ONE ITERATION OF
TRANQUIL TO GET A STABLE STARTING TEMPLATE
AND ONE ITERATION OF AMBITIOUS TO GET
STRONG MATCH.
|
double |
IKSolverStability |
static int |
MIXED
MIXED MODE APPLIES ONE ITERATION OF
TRANQUIL TO GET A STABLE STARTING TEMPLATE
AND ONE ITERATION OF AMBITIOUS TO GET
STRONG MATCH.
|
SegmentedArmature |
segmentedArmature |
StrandedArmature |
strandedArmature |
static int |
TRANQUIL
MIXED MODE APPLIES ONE ITERATION OF
TRANQUIL TO GET A STABLE STARTING TEMPLATE
AND ONE ITERATION OF AMBITIOUS TO GET
STRONG MATCH.
|
| Constructor and Description |
|---|
AbstractArmature() |
AbstractArmature(AbstractAxes inputOrigin,
java.lang.String name) |
AbstractArmature(processing.core.PApplet app,
AbstractAxes inputOrigin,
java.lang.String name) |
AbstractArmature(processing.core.PApplet app,
AbstractAxes inputOrigin,
java.lang.String name,
boolean empty) |
| Modifier and Type | Method and Description |
|---|---|
void |
addToBoneList(AbstractBone abstractBone)
this method should be called by any newly created bone object if the armature is
to know it exists.
|
void |
ambitiousIKSolver(AbstractBone bone)
Same as other ambitiousIKSolver method, but uses the armature's default iteration and dampening.
|
void |
ambitiousIKSolver(AbstractBone bone,
double dampening,
int iterations)
This solver aims to minimize the total distance to the target pins, however if the pins
are impossible to reach AND the armature is under-constrained, this solver can become unstable.
|
AbstractBone |
createRootBone(AbstractBone inputBone) |
java.util.ArrayList<AbstractBone> |
getBoneList()
(warning, this function is untested)
|
AbstractBone |
getBoneTagged(java.lang.String tag) |
AbstractBone |
getRootBone() |
java.lang.String |
getTag() |
void |
IKSolver(AbstractBone bone)
automatically solves the IK system of this armature from the
given bone using the armature's default IK parameters.
|
void |
IKSolver(AbstractBone bone,
double dampening,
int iterations) |
AbstractAxes |
localAxes() |
void |
removeFromBoneList(AbstractBone abstractBone)
this method should be called by any newly deleted bone object if the armature is
to know it no longer exists
|
void |
setDefaultDampening(double damp) |
void |
setDefaultIKType(int type) |
void |
setDefaultIterations(int iter) |
void |
setTag(java.lang.String newTag) |
void |
tranquilIKSolver(AbstractBone bone)
Same as other tranquilIKSolver method, but uses the armature's default iteration and dampening.
|
void |
tranquilIKSolver(AbstractBone bone,
double dampening,
int iterations)
Highly stable even when under-constrained, and also when over-constrained (by Kusudamas)
Converges on a solution satisfying all pins and constraints where possible.
|
public static int AMBITIOUS
public static int TRANQUIL
public static int MIXED
public SegmentedArmature segmentedArmature
public StrandedArmature strandedArmature
public double IKSolverStability
public AbstractArmature()
public AbstractArmature(AbstractAxes inputOrigin, java.lang.String name)
public AbstractArmature(processing.core.PApplet app, AbstractAxes inputOrigin, java.lang.String name)
public AbstractArmature(processing.core.PApplet app, AbstractAxes inputOrigin, java.lang.String name, boolean empty)
public AbstractBone createRootBone(AbstractBone inputBone)
public void setDefaultIterations(int iter)
public void setDefaultIKType(int type)
public void setDefaultDampening(double damp)
public AbstractBone getRootBone()
public java.util.ArrayList<AbstractBone> getBoneList()
public void addToBoneList(AbstractBone abstractBone)
bone
- public void removeFromBoneList(AbstractBone abstractBone)
public AbstractBone getBoneTagged(java.lang.String tag)
tag
- the tag of the bone object you wish to retrievepublic java.lang.String getTag()
public void setTag(java.lang.String newTag)
A
- user specified tag string for this armature.public void IKSolver(AbstractBone bone)
bone
- public void IKSolver(AbstractBone bone, double dampening, int iterations)
public void ambitiousIKSolver(AbstractBone bone)
bone
- public void ambitiousIKSolver(AbstractBone bone, double dampening, int iterations)
bone
- the bone from which to begin solving the IK system. Pinned ancestors of this bone
will not be modifed. Pinned children will however, will also have this solver called on them, recursively.dampening
- the maximum number of radians any bone is allowed to rotate per iteration.
a lower number gives more evenly distributed results, but may take a larger number of iterations
before it converges on a solution. if you don't know what you want, try starting with 0.1.iterations
- the number of times to run the IK loop before returning an answer.public void tranquilIKSolver(AbstractBone bone)
bone
- public void tranquilIKSolver(AbstractBone bone, double dampening, int iterations)
bone
- the bone from which to begin solving the IK system. Pinned ancestors of this bone
will not be modifed. Pinned children will however have this solver called on them -- recursively.dampening
- the maximum number of radians any bone is allowed to rotate per iteration.
a lower number gives more evenly distributed results, but may take a larger number of iterations
before it converges on a solution. if you don't know what you want, try starting with 0.1.iterations
- the number of times to run the IK loop before returning an answer.public AbstractAxes localAxes()


page - Parser Generator
The application described by this document, page, is actually not just a parser generator, as the name implies, but a generic tool for the execution of arbitrary transformations on texts.
Its genericity comes through the use of plugins for reading, transforming, and writing data, and the predefined set of plugins provided by Tcllib is for the generation of memoizing recursive descent parsers (aka packrat parsers) from grammar specifications (Parsing Expression Grammars).
page is written on top of the package page::pluginmgr, wrapping its functionality into a command line based application. All the other page::* packages are plugin and/or supporting packages for the generation of parsers. The parsers themselves are based on the packages grammar::peg, grammar::peg::interp, and grammar::mengine.
This is general form for calling page. The application will read the contents of the file input, process them under the control of the specified options, and then write the result to the file output.
If input is the string - the data to process will be read from stdin instead of a file. Analogously the result will be written to stdout instead of a file if output is the string -. A missing output or input specification causes the application to assume -.
The detailed specifications of the recognized options are provided in section OPTIONS.
This argument specifies the path to the file to be processed by the application, or -. The last value causes the application to read the text from stdin. Otherwise it has to exist, and be readable. If the argument is missing - is assumed.
This argument specifies where to write the generated text. It can be the path to a file, or -. The last value causes the application to write the generated documented to stdout.
If the file output does not exist then [file dirname $output] has to exist and must be a writable directory, as the application will create the fileto write to.
If the argument is missing - is assumed.
... reading ... transforming ... writing - plugins - pipeline ...
This section describes all the options available to the user of the application. Options are always processed in order. I.e. of both --help and --version are specified the option encountered first has precedence.
Unknown options specified before any of the options -rd, -wr, or -tr will cause processing to abort with an error. Unknown options coming in between these options, or after the last of them are assumed to always take a single argument and are associated with the last plugin option coming before them. They will be checked after all the relevant plugins, and thus the options they understand, are known. I.e. such unknown options cause error if and only if the plugin option they are associated with does not understand them, and was not superceded by a plugin option coming after.
Default options are used if and only if the command line did not contain any options at all. They will set the application up as a PEG-based parser generator. The exact list of options is
-c peg
And now the recognized options and their arguments, if they have any:
page makes use of four different types of plugins, namely: readers, writers, transformations, and configurations. Here we provide only a basic introduction on how to use them from page. The exact APIs provided to and expected from the plugins can be found in the documentation for page::pluginmgr, for those who wish to write their own plugins.
Plugins are specified as arguments to the options -r, -w, -t, -c, and their equivalent longer forms. See the section OPTIONS for reference.
Each such argument will be first treated as the name of a file and this file is loaded as the plugin. If however there is no file with that name, then it will be translated into the name of a package, and this package is then loaded. For each type of plugins the package management searches not only the regular paths, but a set application- and type-specific paths as well. Please see the section PLUGIN LOCATIONS for a listing of all paths and their sources.
Configurations. The name of the package for the plugin name is "page::config::name".
We have one predefined plugin:
It sets the application up as a parser generator accepting parsing expression grammars and writing a packrat parser in Tcl. The actual arguments it specifies are:
--reset --append --reader peg --transform reach --transform use --writer me
Readers. The name of the package for the plugin name is "page::reader::name".
We have five predefined plugins:
Interprets the input as a parsing expression grammar (PEG) and generates a tree representation for it. Both the syntax of PEGs and the structure of the tree representation are explained in their own manpages.
Interprets the input as Tcl code as generated by the writer plugin hb and generates its tree representation.
Interprets the input as the serialization of a PEG, as generated by the writer plugin ser, using the package grammar::peg.
Interprets the input as a grammar specification as understood by Richard Hipp's LEMON parser generator and generates a tree representation for it. Both the input syntax and the structure of the tree representation are explained in their own manpages.
Interprets the input as the serialization of a struct::tree. It is validated as such, but nothing else. It is not assumed to be the tree representation of a grammar.
Writers. The name of the package for the plugin name is "page::writer::name".
We have eight predefined plugins:
Simply writes the incoming data as it is, without making any changes. This is good for inspecting the raw result of a reader or transformation.
Generates nothing, and ignores the incoming data structure.
Assumes that the incoming data structure is a struct::tree and generates an indented textual representation of all nodes, their parental relationships, and their attribute information.
Assumes that the incoming data structure is a tree representation of a PEG or other other grammar and writes it out as a PEG. The result is nicely formatted and partially simplified (strings as sequences of characters). A pretty printer in essence, but can also be used to obtain a canonical representation of the input grammar.
Assumes that the incoming data structure is a tree representation of a PEG or other other grammar and writes out Tcl code defining a package which defines a grammar::peg object containing the grammar when it is loaded into an interpreter.
This is like the writer plugin tpc, but it writes only the statements which define stat expression and grammar rules. The code making the result a package is left out.
Assumes that the incoming data structure is a tree representation of a PEG or other other grammar, transforms it internally into a grammar::peg object and writes out its serialization.
Assumes that the incoming data structure is a tree representation of a PEG or other other grammar and writes out Tcl code defining a package which implements a memoizing recursive descent parser based on the match engine (ME) provided by the package grammar::mengine.
Transformers. The name of the package for the plugin name is "page::transform::name".
We have two predefined plugins:
Assumes that the incoming data structure is a tree representation of a PEG or other other grammar. It determines which nonterminal symbols and rules are reachable from start-symbol/expression. All nonterminal symbols which were not reached are removed.
Assumes that the incoming data structure is a tree representation of a PEG or other other grammar. It determines which nonterminal symbols and rules are able to generate a finite sequences of terminal symbols (in the sense for a Context Free Grammar). All nonterminal symbols which were not deemed useful in this sense are removed.
The application-specific paths searched by page either are, or come from:
The directory "~/.page/plugin"
The environment variable PAGE_PLUGINS
The registry entry HKEY_LOCAL_MACHINE\SOFTWARE\PAGE\PLUGINS
The registry entry HKEY_CURRENT_USER\SOFTWARE\PAGE\PLUGINS
The type-specific paths searched by page either are, or come from:
The directory "~/.page/plugin/<TYPE>"
The environment variable PAGE_<TYPE>_PLUGINS
The registry entry HKEY_LOCAL_MACHINE\SOFTWARE\PAGE\<TYPE>\PLUGINS
The registry entry HKEY_CURRENT_USER\SOFTWARE\PAGE\<TYPE>\PLUGINS
Where the placeholder <TYPE> is always one of the values below, properly capitalized.
reader
writer
transform
config
The registry entries are specific to the Windows(tm) platform, all other platforms will ignore them.
The contents of both environment variables and registry entries are interpreted as a list of paths, with the elements separated by either colon (Unix), or semicolon (Windows).
This document, and the package it describes, will undoubtedly contain bugs and other problems. Please report such in the category page of the Tcllib Trackers. Please also report any ideas for enhancements you may have for either package and/or documentation.
When proposing code changes, please provide unified diffs, i.e the output of diff -u.
Note further that attachments are strongly preferred over inlined patches. Attachments can be made by going to the Edit form of the ticket immediately after its creation, and then using the left-most button in the secondary navigation bar.
page::pluginmgr
Page Parser Generator
Copyright © 2005 Andreas Kupries <andreas_kupries@users.sourceforge.net>


When you learn a framework, you learn a skill that doesn’t directly transfer. You learn a temporary a skill abstraction instead. Spend your time learning a language and benefit from everything browser support offers. And browsers support so many things these days!
Web Development is about running code on other computers but it can also give extremely direct feedback. The short feedback loop makes it both fun and easy to learn because you can see what you do!
The web is amazing. There are so many things you can in the browser today. We might have lost our good friends 'marque', 'blink' and spacer GIFs but we get so much in return! You can do anything as a developer
Building future proof with Lit Element, Components & Libraries
PWAs, Service Workers, Storage, Micro FrontEnds, Architecture
Tooling, typing, PWA Builder, IDEs, Plugins
Buildless, CI/CD, Bundleless, DevOpsless
Community Builder and Lead developer. I create 'islands' where engineers are the heroes
Software engineer, teacher, team lead. Software architecture professional, events organiser
Team lead, instructor, speaker, mentor, and author of technical materials


Suspicious sites
This page shows the suspicious activities pertaining to your information leakage. Note that it might be not correct. You can set the threshold of suspicious and more dangerous actions on the settings pages.
"Suspicous" means that the login attempt occurs more than a certain threshold. It may not be serious but still requires to be watched carefully.
"Warning" indicates possibly more dangerous situation, which means the use of your personal information exceeds the your pre-determined threshold. Please check whether there are some malicious codes on your computer if "Warning" shows up here.
Default threshold for "suspicous" and "warning" is 10 and 20, respectively.
The status is decided by the data that occur today.
| Site |
Access count per Day |
Status |