A Complete Worked Example: Lionepha¶
(Software Prerequisites)¶
For this exercise, in addition to DELINEATE you will need the following programs installed on your execution host:
For meta-analysis and visualization, you should have the following installed on your local machine:
In addition, of course (as always, for anything and everything), you will want a *good* text editor.
(Data Files)¶
All data files for this exercise are available for download here:
Introduction¶
We are going to to carry out a full species delimitation analysis, or, actually, a series of species delimitation analyses. We are going to use the the Lionepha system, using a subset of the data published by David R. Maddison and John S. Sproul:
David R Maddison, John S Sproul. Species delimitation, classical taxonomy and genome skimming: a review of the ground beetle genus Lionepha (Coleoptera: Carabidae), Zoological Journal of the Linnean Society, , zlz167, https://doi.org/10.1093/zoolinnean/zlz167.
The original data is available in the following Dryad repository:
The work by Maddison and Sproul (2020) nicely lays out the basic alpha taxonomy of this system, organizing these 143 lineages into 12 nominal species. This alpha taxonomy is based on a thorough analyses integrating morphological as well as genomic information, and thus we already have a very clear understanding of the species boundaries in this group, precluding the need for a species delimitation analysis.
However, for the purposes of this exercise we are going to pretend that this is not the case. Instead, we are going to consider that while the species identities of some of the population lineages are well known, in this sample there are number of lineages for which this is not the case.
Background¶
Study Design¶
We can imagine our study sampled individuals from an extensive range of localities, supplementing it with samples from previous collections, to develop a comprehensive data set spanning a broad taxonomic as well as geographic range. Preliminary phylogenetic analysis, which included genomic data from known, stable, species, as well as comparative morphological analyses, has confidentally established the species identities of some of these lineages. However, a number of lineages in the sample, while coming out to sister to known species, are sufficiently different in some respects (e.g., genetic distance or morphology), to make us question whether or not we are looking at different populations of the same species or perhaps new species altogether.
Alternatively, we might imagine a study to delineate species units in a particularly problematic clade. Here, in addition to samples from multiple populations from the clade, we would also include populations from a broader range of species in which the focal clade is a nested subtree. The analytical workflow for this sort of study will be identical to that discussed here, with only the distribution of population lineages of unknown identity being different — clustered into a single subtree on the larger phylogeny as opposed to scattered into multiple smaller subtrees (or single lineages).
Data¶
Here we will focus on just a subset of the data from Maddison and Sproul (2020), focusing only on lineages in the genus Lionepha itself. This data consists of 8 gene alignments for 143 samples from multiple individuals from multiple populations from multiple species:
lionepha/00-alignments/18s.nex
lionepha/00-alignments/28s.nex
lionepha/00-alignments/argk.nex
lionepha/00-alignments/cad.nex
lionepha/00-alignments/coi.nex
lionepha/00-alignments/msp.nex
lionepha/00-alignments/topo.nex
lionepha/00-alignments/wg.nex
Stage I: Identification of Population Units using the Multipopulation Coalescent Model¶
The first stage of our analysis will be delimitation of population units, i.e. assignment of population identities to individual lineages, under the “multipopulation coalescent”. This model was first published under the name “censored coalescent”, but has since become more popularly known as the “Multispecies Coalescent” or “MSC” model. It is a very powerful and elegant model that allows us to identify structure in genomic data arising from disruptions in Wright-Fisher panmixia due to restrictions in gene flow.
We will be using BP&P to identify our population units, and StarBeast2 to obtain a guide tree for the BP&P analysis. Note that these programs use the term “species” to reference the higher-level units they analyze rather than populations (as in “species delimitation” or “species tree inference”, rather than “population delimitation” and “population tree inference”). This can be correct in some contexts: e.g., where the data sampling does, either coincidentally or by design, indeed represent a 1-to-1 correspondence between populations and species, or, equivalently the species being studied do indeed not have any within-species lineage structure. However, more generally, this is, at best, misleading. These programs use the MSC as their underlying model. From a statistical perspective, it is uncontroversial that the biological units that these programs model through the “censored” coalescent/MSC that model that underlies them are (Wright-Fisher) populations. Strictly speaking, when used for species delimitation or model species trees, programs such as BP&P and StarBeast2 are used to identify population units under the MSC, and then these population units are interpreted (with or without justification) by the investigator to correspond on a 1-to-1 basis to species units. Thus, when using the MSC for “species delimitation” or “species tree inference”, the difference between “population” and “species” is purely lexical rather than statistical.
Here, however, we are going to interpret higher-level units of organization as exactly what they are as modeled by the MSC — populations, no more and no less. Unfortunately, this may result in some confusion as both BP&P and StarBeast2 refer to the higher-level units they target as “species” at least some of the time in the various program options and documentation. (In fact, BP&P, in some of the program documentation as well as n some of the various papers presenting or referencing the theory behind it acutally use the term “species” and “populations” interchangeably). This is simply the cost of doing business.
Candidate Population Units¶
A BP&P analysis requires us to identify “population” lineages as input a priori, some of which it will then collapse together to form “species” lineages. As we have noted (and as we will note again!), this terminological choice is not generally correct (it may apply in some special cases, such as single-population species systems, single-population-sample-per-species datasets, or where the data are too weak to detect population structure). We will instead consider these to be “candidate population” and “actual population” lineages respectively. That is, we will provide BP&P with the finest-grain units that could possibly be distinct populations as candidate population lineages, then use the power of the MSC model to accurately merge together our candidate populations into distinct populations (“species”, in BP&P terminology). For this analysis, we will err on the side of caution, not hestitating our over-split our candidate populations, as we can rely on the MSC to collapse them if there is insufficient gene flow restriction between them to form population boundaries. As such, we will consider every distinct geographical sample to be a distinct candidate population.
Individual |
Candidate Population Assignment |
|---|---|
|
L_australerasa_CA_Carson_Spur |
|
L_australerasa_CA_Homewood_Canyon |
|
L_australerasa_CA_Martin_Meadow |
|
L_australerasa_CA_Mill_Creek |
|
L_australerasa_CA_Nanny_Creek |
|
L_australerasa_CA_Oyster_Lake |
|
L_australerasa_OR_Crater_Lake |
|
L_casta_AK_Ketchikan |
|
L_casta_AK_Prince_of_Wales_Island |
|
L_casta_CA_Mt_Tamalpais |
|
L_casta_CA_Soda_Creek |
|
L_casta_CA_West_Branch_Mill_Creek |
|
L_casta_OR_Lost_Prairie |
|
L_casta_OR_Marys_Peak |
|
L_casta_OR_School_Creek |
|
L_casta_WA_Taneum_Creek |
|
L_disjuncta_BC_Summit_Creek |
|
L_disjuncta_CA_Emerson_Creek |
|
L_disjuncta_CA_Lily_Lake |
|
L_disjuncta_CA_Salmon_Creek |
|
L_disjuncta_CA_Trinity_Alps |
|
L_disjuncta_ID_Salmon_River |
|
L_disjuncta_MT_Mill_Creek |
|
L_disjuncta_OR_Lostine_River |
|
L_disjuncta_OR_Mt_Hood |
|
L_erasa_AK_Thompson_Pass |
|
L_erasa_BC_Cherryville |
|
L_erasa_OR_Lost_Prairie |
|
L_erasa_OR_Marys_Peak |
|
L_erasa_OR_Mount_Hebo |
|
L_erasa_OR_Mt_Hood |
|
L_erasa_OR_Prairie_Peak |
|
L_kavanaughi_MT_Bitterroot_River |
|
L_kavanaughi_MT_Lost_Horse_Creek |
|
L_kavanaughi_OR_Little_Philips_Creek |
|
L_kavanaughi_OR_Lostine_River |
|
L_kavanaughi_OR_Lostine_River_Valley |
|
L_lindrothi_CA_Deadman_Creek |
|
L_lindrothi_CA_East_Fork_Kaweah_River |
|
L_lindrothi_CA_Emerald_Lake |
|
L_lindrothi_CA_Kaiser_Pass |
|
L_lindrothi_CA_Long_Valley_Creek |
|
L_lindrothi_CA_Sonora_Pass |
|
L_lindrothi_CA_South_Fork_Bishop_Creek |
|
L_lindrothi_CA_Tioga_Lake |
|
L_osculans_CA_Carson_Spur |
|
L_osculans_CA_Cold_Creek |
|
L_osculans_CA_Los_Padres_NF |
|
L_osculans_CA_Nanny_Creek |
|
L_osculans_CA_Pike_County_Gulch |
|
L_osculans_CA_Rainbow |
|
L_osculans_CA_Stanislaus_NF |
|
L_osculans_CA_Strawberry_Creek |
|
L_osculans_CA_Warner_Range |
|
L_osculans_OR_Eugene |
|
L_osculans_OR_Goodman_Creek |
|
L_osculans_OR_Little_Philips_Creek |
|
L_osculans_OR_Middle_Fork_Berry_Creek |
|
L_osculans_OR_School_Creek |
|
L_osculans_OR_Walton_Lake |
|
L_probata_BC_Summit_Creek |
|
L_probata_CA_Algoma_Camp |
|
L_probata_CA_Ellery_Lake |
|
L_probata_CA_Middle_Martis_Creek |
|
L_probata_CA_Nanny_Creek |
|
L_probata_CA_Sherman_Pass |
|
L_probata_CA_South_Fork_Bishop_Creek |
|
L_probata_CA_Squaw_Valley_Resort |
|
L_probata_CA_Strawberry_Creek |
|
L_probata_CA_Tamarack_Lake |
|
L_probata_CA_Warner_Range |
|
L_probata_CA_White_Mountains |
|
L_probata_ID_Baker_Creek |
|
L_probata_ID_Galena_Summit |
|
L_probata_ID_Park_Creek |
|
L_probata_MT_Mill_Creek |
|
L_probata_MT_Prospect_Creek |
|
L_probata_NV_Ruby_Mountains |
|
L_probata_OR_Little_Philips_Creek |
|
L_probata_OR_Lonesome_Spring |
|
L_probata_OR_Lost_Prairie |
|
L_probata_OR_Lostine_River_Valley |
|
L_probata_OR_Lostine_River_Valley |
|
L_probata_OR_Mt_Ashland |
|
L_probata_OR_Odell_Creek |
|
L_probata_OR_Steens_Mountains |
|
L_probata_UT_Shingle_Creek |
|
L_probata_UT_Stansbury_Mtns |
|
L_probata_UT_Tushar_Mountains |
|
L_probata_WA_Blue_Mountains |
|
L_probata_WA_Taneum_Creek |
|
L_pseudoerasa_CA_Kaiser_Pass |
|
L_pseudoerasa_CA_Lily_Lake |
|
L_pseudoerasa_CA_Sherman_Pass |
|
L_pseudoerasa_CA_Strawberry_Creek |
|
L_pseudoerasa_CA_Trinity_Alps |
|
L_sequoiae_CA_Bridal_Veil_Falls |
|
L_sequoiae_CA_Nanny_Creek |
|
L_sequoiae_CA_Strawberry_Creek |
|
L_sequoiae_OR_Oakridge |
|
L_sequoiae_OR_School_Creek |
|
L_tuulukwa_CA_Trinity_Alps |
|
L_tuulukwa_OR_Knowles_Creek |
|
L_tuulukwa_OR_Marys_Peak |
Generating a Guide Tree for Population Delimitation¶
We will provide BP&P with a guide tree for its population delimitation analysis. We will use StarBeast2 to generate this guide tree.
The full StarBeast2 configuration file, generated using BEAUTi
, can be found at in lionepha/01-guidetree-estimation/sb00500M.xml.
The alignments listed above were imported, and the following “traits” file was used to map alignment sequences to canidate population units: lionepha/01-guidetree-estimation/traits.txt.
We used a single strict clock model across all genes, and a HKY+G model of substitution.
We ran four replicates of this analysis for 500 million generations each, sampling every 500,000 generations for a total of 1000 samples from each replicates. The first 250 samples were discarded from the 100 samples of each replicates. Convergence was diagnosed through inspection of traces for each parameter as well as the likelihood and posterior. ESS values for each parameter were established to be more than 250, and distributions of parameter values were compared to a “null” run (i.e., a run without data where just the prior was sampled) to confirm that the analysis learned from the data sufficiently to shift the posterior away from the prior.
The post-burn in samples from the posterior were summarized using SumTrees, with the following command:
$ sumtrees.py -b 250 \
-s mcct \
-e clear \
-l clear \
--force-rooted \
--suppress-annotations \
-r -o summary.guide.tre \
run1/species.trees \
run2/species.trees \
run3/species.trees \
run4/species.trees
This selects the Maximum Clade Credibility Tree (MCCT) tree for the summary topolgy, stripping all branch lengths and metadata annotations, to result in the following:
lionepha/01-guidetree-estimation/guidetree.nex
Delimitation of Population Units¶
Now that we have a guide tree that treats each distinct geographical lineage as a candidate distinct Wright-Fisher population, we will run BP&P in “A10” mode to delimit the true population units under the “multipopulation coalescent” (i.e., the MSC).
For Small Datasets: the Single-Analysis Approach¶
The files provided in the lionepha/02a-population-delimitation-pooled directory set up a fairly straightforward BP&P “A10” analyses using the data that we have collected and the guide tree we have estimated:
File |
Description |
|---|---|
bpprun.input.ctl |
Control file |
bpprun.input.chars.txt |
Character data |
bpprun.input.imap.txt |
Sequence to population map |
bpp00.job |
Execution job |
The problem is that, when executing the analysis by either running the job file:
$ bash bpp00.job
or submitting it to an execution host:
$ qsub bpp00.job
or simply running the command directly:
$ bpp --cfile bpprun.input.ctl
we might find that the data set is too large to analyze:
bpp v4.1.4_linux_x86_64, 31GB RAM, 12 cores
https://github.com/bpp
.
.
.
Total species delimitations:<PHONE_NUMBER>0464777
Unable to allocate enough memory.
For Larger Datasets: the Subtree Decomposition Approach¶
The solution is to break the data set up into subtrees and carry out a separate population delimitation analysis on each subtree. While designing a decomposition scheme, it is important to note that we should not separate out candidate population lineages that might potentially belong to the same (actual) population into separate subtrees, thereby preventing BP&P from being able to collapse them if it does not detect any gene flow restriction between them. In most studies, this should not be too difficult to identify. Even in cases where we might not know where the species boundaries are, with reference to the guide tree phylogeny we should be able to identify subtree clusters that do not disrupt population boundaries. In this case of this Lionepha study, the nominal species clades provide very nice granularity — small enough to be analyzed by BP&P, yet with no danger of breaking up an actual population.
The set up for this set of analyses can be found at:
lionepha/02b-population-delimitation-subtrees
with each subdirectory containing a stand-alone analysis.
Collating Results of the Subtree Approach¶
Each of the subtree analysis now has the populations delimited under the MSC model. Having identified these population units across various subtrees, we now need to collate and pool them. DELINEATE helpfully provides a script for you to do this fairly robustly: delineate-bppsum. This script takes as its input two sets of files:
the “imap” files you provided to BP&P as input, which maps sequences to candidate population lineages
the output log of BP&P analyses (not the MCMC log), which provides a tree at the end with posterior probability of internal nodes indicated by labels
These files can be specified in any order, but must collectively span the entire analysis: the set of all candidate population names defined across all “imap” files must be equal to the set of all candidate population names found across all trees in all BP&P output log files.
In this example, we have all the independent subtree analyses packed away in subdirectories, “01
”, “02
”, etc.
Assuming we are in the BP&P analysis subdirectory, lionepha/02b-population-delimitation-subtrees, we could just type in all the paths:
delineate-bppsum \
--imap 01/bpprun.input.imap.txt \
02/bpprun.input.imap.txt \
.
.
(etc.)
--results 01/results.out.txt \
02/results.out.txt \
.
.
(etc.)
but because of judicious naming of the files, we can use some basic shell commands to generate the list of input files:
delineate-bppsum \
--imap $(find . -name "*imap*") \
--results $(find . -name "*out.txt")
Executing the above command results in:
[delineate-bppsum] 11 BPP 'imap' files specified
[delineate-bppsum] - Reading mapping file 1 of 11: ./00/bpprun.input.imap.txt
[delineate-bppsum] - (13 lineages, 7 candidate populations)
[delineate-bppsum] - Reading mapping file 2 of 11: ./01/bpprun.input.imap.txt
[delineate-bppsum] - (9 lineages, 9 candidate populations)
[delineate-bppsum] - Reading mapping file 3 of 11: ./02/bpprun.input.imap.txt
[delineate-bppsum] - (10 lineages, 9 candidate populations)
[delineate-bppsum] - Reading mapping file 4 of 11: ./03/bpprun.input.imap.txt
[delineate-bppsum] - (14 lineages, 7 candidate populations)
[delineate-bppsum] - Reading mapping file 5 of 11: ./04/bpprun.input.imap.txt
[delineate-bppsum] - (12 lineages, 5 candidate populations)
[delineate-bppsum] - Reading mapping file 6 of 11: ./05/bpprun.input.imap.txt
[delineate-bppsum] - (10 lineages, 8 candidate populations)
[delineate-bppsum] - Reading mapping file 7 of 11: ./06/bpprun.input.imap.txt
[delineate-bppsum] - (16 lineages, 15 candidate populations)
[delineate-bppsum] - Reading mapping file 8 of 11: ./07/bpprun.input.imap.txt
[delineate-bppsum] - (34 lineages, 30 candidate populations)
[delineate-bppsum] - Reading mapping file 9 of 11: ./08/bpprun.input.imap.txt
[delineate-bppsum] - (9 lineages, 5 candidate populations)
[delineate-bppsum] - Reading mapping file 10 of 11: ./09/bpprun.input.imap.txt
[delineate-bppsum] - (6 lineages, 5 candidate populations)
[delineate-bppsum] - Reading mapping file 11 of 11: ./10/bpprun.input.imap.txt
[delineate-bppsum] - (10 lineages, 3 candidate populations)
[delineate-bppsum] 11 BPP output files specified
[delineate-bppsum] - Reading output file 1 of 11: ./00/results.out.txt
[delineate-bppsum] - (7 candidate populations)
[delineate-bppsum] - Reading output file 2 of 11: ./01/results.out.txt
[delineate-bppsum] - (9 candidate populations)
[delineate-bppsum] - Reading output file 3 of 11: ./02/results.out.txt
[delineate-bppsum] - (9 candidate populations)
[delineate-bppsum] - Reading output file 4 of 11: ./03/results.out.txt
[delineate-bppsum] - (7 candidate populations)
[delineate-bppsum] - Reading output file 5 of 11: ./04/results.out.txt
[delineate-bppsum] - (5 candidate populations)
[delineate-bppsum] - Reading output file 6 of 11: ./05/results.out.txt
[delineate-bppsum] - (8 candidate populations)
[delineate-bppsum] - Reading output file 7 of 11: ./06/results.out.txt
[delineate-bppsum] - (15 candidate populations)
[delineate-bppsum] - Reading output file 8 of 11: ./07/results.out.txt
[delineate-bppsum] - (30 candidate populations)
[delineate-bppsum] - Reading output file 9 of 11: ./08/results.out.txt
[delineate-bppsum] - (5 candidate populations)
[delineate-bppsum] - Reading output file 10 of 11: ./09/results.out.txt
[delineate-bppsum] - (5 candidate populations)
[delineate-bppsum] - Reading output file 11 of 11: ./10/results.out.txt
[delineate-bppsum] - (3 candidate populations)
[delineate-bppsum] Posterior probability threshold of 0.50: 86 populations
[delineate-bppsum] Posterior probability threshold of 0.75: 72 populations
[delineate-bppsum] Posterior probability threshold of 0.90: 65 populations
[delineate-bppsum] Posterior probability threshold of 0.95: 59 populations
[delineate-bppsum] Posterior probability threshold of 1.00: 46 populations
and produces the following files:
coalescent-pops.sb2-traits.p050.txt
coalescent-pops.sb2-traits.p075.txt
coalescent-pops.sb2-traits.p090.txt
coalescent-pops.sb2-traits.p095.txt
coalescent-pops.sb2-traits.p100.txt
coalescent-pops.summary.csv
The population boundaries and identities of the various individuals are reported at different posterior probabilities (0.50, 0.75, 0.90, 0.95, and 1.00).
A comprehensive overview of all the identities under the different posterior probabilities is provided in the file: coalescent-pops.summary.csv.
The other files (ending with filenames “…sb2-traits.p0xx.txt”) are StarBeast2 “traits
” files at each of those posterior probability thresholds.
These latter make setting up a StarBeast2 analysis to estimate an ultrametric phylogeny relating the population units delimited at each of the posterior probability thresholds very straightforward.
With the latter, do not be confused by the column header “species”!
Again, this is simply due to the misleading terminology adopted for the higher-level units of organization in StarBeast2 and most other programs that use the MSC.
What we are working with here are population units, some of which may also correspond to species while others may not.
This is abundantly clear by the fact that the 12 nominal species — established with both genomic as well as morphological data contributing toward an understanding of the system over a decade of the study — is split into 46 to 86 units (!) by the MSC analysis, depending on the posterior probability threshold we adopt for those units.
Interpreting these units as “species” is categorically and unconditionally wrong, and would represent a jettisoning of a basic understanding of speciation, systematics, and biology, due to a complete misunderstanding of the MSC model and misinterpretation of its results.
The MSC delimits populations, not species.
Note that where our candidate populations assignment have indeed turned out to be distinct population lineages under a particular posterior probability threshold, the original population label is retained (e.g., “L_australerasa_CA_Martin_Meadow” or “L_probata_WA_Blue_Mountains”).
In cases where multiple candidate population lineages have been “collapsed”, because there was insufficient signal for restriction of Wright-Fisher panmixia between them detected at a particular posterior probability threshold, they have been relabeled with synthetic labels (e.g. “coalescentpop001”, “coalescentpop002”, etc.). Thus, for example, we see that, in the setup to our BP&P analysies, we allowed for the possibility that L. erasa from Mary’s Peak, Mount Hebo, Mount Hood, and Prairie Peak might each be a distinct population:
sample |
BP&B Candidate Population (“Species”) |
|---|---|
L_erasa_OR_Marys_Peak_2575 |
L_erasa_OR_Marys_Peak |
L_erasa_OR_Marys_Peak_2586 |
L_erasa_OR_Marys_Peak |
L_erasa_OR_Marys_Peak_2615 |
L_erasa_OR_Marys_Peak |
L_erasa_OR_Marys_Peak_2616 |
L_erasa_OR_Marys_Peak |
L_erasa_OR_Mount_Hebo_3013 |
L_erasa_OR_Mount_Hebo |
L_erasa_OR_Mount_Hebo_3016 |
L_erasa_OR_Mount_Hebo |
L_erasa_OR_Mt_Hood_4144 |
L_erasa_OR_Mt_Hood |
L_erasa_OR_Prairie_Peak_2580 |
L_erasa_OR_Prairie_Peak |
Following the analysis, we see that at a 0.95 posterior probability threshold (see the “p095” column in 02b-population-delimitation-subtrees/coalescent-pops.summary.csv or 02b-population-delimitation-subtrees/coalescent-pops.sb2-traits.p095.txt) there was insufficient evidence to support four distinct populations here. Population boundaries between Marys Peak, Mount Hebo, and Prairie Peak was were not strong, and all individuals here were assigned to a single merged or collapsed population, “coalescentpop007”. Only the Mount Hood individuals were separated out to be delimited as a distinct population.
sample |
p095 |
|---|---|
L_erasa_OR_Marys_Peak_2575 |
coalescentpop007 |
L_erasa_OR_Marys_Peak_2586 |
coalescentpop007 |
L_erasa_OR_Marys_Peak_2615 |
coalescentpop007 |
L_erasa_OR_Marys_Peak_2616 |
coalescentpop007 |
L_erasa_OR_Mount_Hebo_3013 |
coalescentpop007 |
L_erasa_OR_Mount_Hebo_3016 |
coalescentpop007 |
L_erasa_OR_Mt_Hood_4144 |
L_erasa_OR_Mt_Hood |
L_erasa_OR_Prairie_Peak_2580 |
coalescentpop007 |
On the other hand, however, at the 0.50 posterior probability threshold, while the Mary’s Peak and Prairie Peak candidate population lineages were still collapsed into a single population (“coalescentpop004”), the Mount Hebo and Mount Hood individuals were each estimated to form a distinct population unto themselves (see the “p050” column in 02b-population-delimitation-subtrees/coalescent-pops.summary.csv or 02b-population-delimitation-subtrees/coalescent-pops.sb2-traits.p050.txt):
sample |
p050 |
|---|---|
L_erasa_OR_Marys_Peak_2575 |
coalescentpop004 |
L_erasa_OR_Marys_Peak_2586 |
coalescentpop004 |
L_erasa_OR_Marys_Peak_2615 |
coalescentpop004 |
L_erasa_OR_Marys_Peak_2616 |
coalescentpop004 |
L_erasa_OR_Mount_Hebo_3013 |
L_erasa_OR_Mount_Hebo |
L_erasa_OR_Mount_Hebo_3016 |
L_erasa_OR_Mount_Hebo |
L_erasa_OR_Mt_Hood_4144 |
L_erasa_OR_Mt_Hood |
L_erasa_OR_Prairie_Peak_2580 |
coalescentpop004 |
Going forward to the next stage of analysis, we have to decide the posterior probability threshold at which we want to determine our population units. For this example, we will (somewhat arbitrarily) decide on 0.95.
Stage II. Generating the (Multipopulation Coalescent, Ultrametric) Phylogeny of Populations¶
We use StarBeast2 to estimate an ultrametric phylogeny of population lineages.
We use the original set of alignments (found in lionepha/00-alignments) for as the input data for this, and a “traits
” file that maps each of the sequence labels in the alignment to population identities assigned in the previous step.
For this exercise, we shall use population units that were delimited with 0.95 posterior probability, and the “traits
” file corresponding to this is given by coalescent-pops.sb2-traits.p095.txt.
The analysis setup for the StarBeast2 run can be found in the lionepha/03-population-tree-estimation/ directory.
There are six StarBeast2 XML configuration files.
These all set up the same “species tree” analysis, the only difference being the name prefixes of the output files.
This is so that we can run multiple independent analyses, the sin qua non of MCMC best practices.
Again, we used a single strict clock model across all genes, and a HKY+G model of substitution. Each analysis was run for 400 million generations, with a sampling frequency of 400,000 generations. Thus, we obtained 1000 samples from the posterior from each of the six replicates. We can again use SumTrees to summarize the results with the following command:
$ sumtrees.py \
-b 250 \
-s mcct \
-e mean-age \
-l clear \
--force-rooted \
--suppress-annotations \
-ro lionepha-p095-hkyg.mcct-mean-age.tree \
*.species.trees
This will discard the first 250 of the 1000 samples from each replicate as burn-in, merge the results, and select the Maximum Clade Credibility Tree (MCCT) as the summary topology, with branch lengths set such that the internal node ages are the mean of the the corresponding node ages across all post-burnin samples. The result of this can be found here: lionepha/03-population-tree-estimation/lionepha-p095-hkyg.mcct-mean-age.tree.nex. This population-level phylogeny will be one of the two primary inputs to DELINEATE.
Stage III. Assignment of Known vs. Unknown Species Identities¶
We now inspect our phylogeny and determine a priori species assignments for as many population lineages as we can. These assignments will be made with reference to our integrative understanding of the system in conjunction with the evolutionary relationships between population lineages shown in the phylogeny.
There will be some population lineages for which the species identity is uncontroversial — i.e., they can be unambiguously assigned to known species (or even new ones) based on morphological evidence of individuals in that population. In the case of the “collapsed” populations (labeled “coalescentpop001”, “coalescentpop002”, etc.), we would need to examine all individuals in those units, and if any one of them can be definitely assigned to an independent species status based on systematic evidence (i.e., distinct species from all others in the system), then the entire population lineage would get assigned to a distinct species. The reasoning behind this is that, based on previous stages of the analysis using BP&P, we have already decided that all individuals in that population constitute a single cohesive population, so the species identity of any one individual in that lineage would necessarily be shared by all other individuals in the same lineage.
There will, of course, be population units for which we will not be able to confidentally assign to a distinct species status — either a known, existing one, or to a new one. These population lineages could be distinct species unto themselves, or could be populations of other species in the system (named or otherwise). These are the actual targets of delimitation — we would to determine whether or not the boundaries between them and other lineages are species boundaries or population boundaries.
The first set of population lineages — the ones for which we can confidently assign species identities, and, hence, boundaries — constitute our “constrained” lineages. We set them as constraints when we configure the DELINEATE analysis by setting their status to “1” in the constraints table. This can be seen with, for e.g., “coalescentpop001”, “coalescentpop002”, and “L_australerasa_CA_Martin_Meadow” in the example constraints file (04-species-delimitation/lionepha.run1.tsv; see below), which all have been assigned to “australerasa” (as can be seen in the “species” column), with the “status” set to 1. This will indicate to DELINEATE that the assignment of these populations to species is fixed, and we should not consider any partition that violates this.
lineage |
species |
status |
|---|---|---|
|
australerasa |
1 |
|
australerasa |
1 |
|
australerasa |
1 |
|
casta |
1 |
|
casta |
1 |
|
casta |
1 |
|
casta |
1 |
|
casta |
1 |
|
disjuncta |
1 |
|
disjuncta |
1 |
|
disjuncta |
1 |
|
disjuncta |
1 |
|
disjuncta |
1 |
|
erasa |
1 |
|
erasa |
1 |
|
erasa |
1 |
|
erasa |
1 |
|
erasa |
1 |
|
lindrothi |
1 |
|
lindrothi |
1 |
|
osculans |
1 |
|
osculans |
1 |
|
osculans |
1 |
|
osculans |
1 |
|
osculans |
1 |
|
osculans |
1 |
|
osculans |
1 |
|
probata |
1 |
|
probata |
1 |
|
probata |
1 |
|
probata |
1 |
|
probata |
1 |
|
probata |
1 |
|
probata |
1 |
|
probata |
1 |
|
probata |
1 |
|
probata |
1 |
|
probata |
1 |
|
probata |
1 |
|
probata |
1 |
|
probata |
1 |
|
pseudoerasa |
1 |
|
pseudoerasa |
1 |
|
sequoiae |
1 |
|
sequoiae |
1 |
Conversely, there remain a number of population lineages that we are not sure about (we are going to pretend, for the purposes of this exercise). These populations could be populations of existing species OR they could be independent species (either as a single lineage or clusters of lineages). These are the lineages that are the (remaining) primary focus of the species delimitation analysis. In the constraints table, we set the status of these lineages to “0”, indicating that we want the DELINEATE analysis to explore all possible partitions that vary in the species assignments of these populations. Note that we still have entries in the “species” field for this “unconstrained” lineages. This is purely for our own book-keeping and will be ignored entirely by DELINEATE. We could, in principle, replace them with any text or level them blank, and they will have no difference in the program running or output.
lineage |
species |
status |
|---|---|---|
|
? |
0 |
|
? |
0 |
|
? |
0 |
|
? |
0 |
|
? |
0 |
|
? |
0 |
|
? |
0 |
|
? |
0 |
|
? |
0 |
|
? |
0 |
|
? |
0 |
|
? |
0 |
|
? |
0 |
Stage IV. Delimitation of Species Units¶
We are now ready to run DELINEATE to carry out the species delimitation analysis. This will target the population lineages of unknown (“0”) status, and calculate the probabilities of all possible partitions that vary in their placement with respect to species identities. The full analytical setup can be found in the subdirectory 04-species-delimitation/. For input data, we will use the phylogeny obtained in Stage II (lionepha/03-population-tree-estimation/lionepha-p095-hkyg.mcct-mean-age.tree.nex) and the constraints table in Stage III (04-species-delimitation/lionepha.run1.tsv) as inputs to the program delineate-estimate. To execute the analysis, we run the following command:
delineate-estimate partitions \
-P 0.99 \
-t lionepha-p095-hkyg.mcct-mean-age.tree.nex \
-c lionepha.run1.tsv
The “-P 0.99” flag says to only report the probabilities of all partitions that contribute collectively to over 0.99 of the probabilities. There could be thousands (or billions, depending on the number of unconstrained lineages you set) of other partitions in the 0.01 remaining tail that we choose to ignore to save disk space and time.
Note
Analysis Size and Computational Requirements
This analysis has 13 unconstrained lineages out of 56. The former (i.e., the number of unconstrained lineages) is the primary factor driving computational requirements, both in terms of time as well as memory: an analysis of 10,000 populations of which only 5 unconstrained will run faster (almost instantaneously) than one with 100 populations with 10 unconstrained. An analysis with 50 unconstrained lineages will probably never complete even with the most powerful computers thrown at it, regardless of how few or many the contrained lineages are. With this example of 13 unconstrained population lineages, we require 115 GB of computer memory and took about 35 mins to run on a fairly current (as of 2019) high-performance computing cluster. If you find that this might be too demanding for your hardware (especially the memory requirement), you can reduce the complexity of the analysis by “fixing” the status of a few more species to be constraints by changing some “0’s” to “1’s” in the status columns of the constraint file (04-species-delimitation/lionepha.run1.tsv).
The analysis will produce the following files:
lionepha.run1.delimitation-results.json
lionepha.run1.delimitation-results.trees
lionepha.run1.delimitation-results.trunc.trees
The first two are included in the example archive in compressed form: 04-species-delimitation/lionepha-delimitation-results.zip, while the last is given directly.
The JSON-format file (lionepha.run1.delimitation-results.json) lists some metadata about the analysis, followed by detailed description of all partitions considered. The partitions are listed in order of descending probability, i.e., with the partition of highest probability given first. Thus, the maximum likelihood estimate of the species delimitation is represented by the first partition listed. The second partition listed is the species delimitation of the next highest probability, and so on.
The tree file lionepha.run1.delimitation-results.trees consists of a set of trees, with one tree for each partition considered. The tree structure itself — the phylogeny, including both topology and the branch lengths — are identical across all trees. The only difference in the trees is the metadata markup of each tree, with annotations regarding species assignments of the tip (population) lineages. Each tree corresponds to the a partition listed in the JSON file, in the same order. Thus the trees illustrate the different partitions (and species assignments/boundaries of each partition), with the first tree representing the maximum likelihood estimate of the species delimitation, the second tree listed being the next most probable species delimitation and so on.
The third file lionepha.run1.delimitation-results.trunc.trees is also a tree file, but contains the just the first 10 trees from the primary results tree file (lionepha.run1.delimitation-results.trees) The results files can very large which may make viewing them challenging. To facilitate viewing/manipulating of the most probable results, we provide a smaller tree file with just the first 10 trees. As the the result entries (trees and partitions) are given in order of descending probability, the earlier results have a higher probability than the later ones, so truncating the tree file by selecting the first few like this will let you view the most probable results. Again, as with the primary tree file, the first listing in the results will have the highest probablity, and thus is MLE partition/tree.
Examination and Interpretation of the Results¶
The trees generated by DELINEATE have some special mark-up that will show up when opened in FigTree for visualization. For example, opening up the truncated trees result file (lionepha.run1.delimitation-results.trunc.trees) in FigTree and viewing the first tree, i.e. the maximum likelihood species delimitation shows the following:
The branches painted in blue (▆) represent the constrained population lineages, i.e., lineages with a fixed species assignment. The branches painted in ochre (▆), on the other hand, represent the unconstrained population lineages, i.e., lineages with unknown species identity and whose species membership was allowed to vary. Furthermore the lineage labels are in a special format, showing the species assignment followed by the actual population label in parenthesis.
We interpret the results as follows:
Lineages |
Species Delimitation |
Explanation |
|---|---|---|
|
DelineatedSp002 |
Group together in the same NEW and unnamed species, labeled “DelineatedSp002”. That is, the boundaries between these two lineages on the one hand, and all other lineages on the other, are species boundaries, not population. |
|
lindrothi |
Group together as populations that are part of a pre-defined species, “L. lindorothi”. That is, the boundaries between these three lineages on the one hand, and all other lindrothi lineages on the other, are (just) population boundaries, not species. |
|
probata |
Group together as populations that are part of a pre-defined species, “L. probata”. That is, the boundaries between these two lineages on the one hand, and all other probata lineages on the other, are (just) population boundaries, not species. |
|
disjuncta |
Group together as populations that are part of a pre-defined species, “L. disjuncta”. That is, the boundaries between these three lineages on the one hand, and all other disjuncta lineages on the other, are (just) population boundaries, not species. |
|
DelineatedSp001 |
Group together in the same NEW and unnamed species, labeled “DelineatedSp001”. That is, the boundaries between these three lineages on the one hand, and all other lineages on the other, are species boundaries, not population. |
Conferring with the reference alpha taxonomy as worked out by Maddison and Poul (2020), we see that these are perfectly concordant. The “DelineatedSp001” populations all collectively corresponded to the distinct species L. tuulukwa and “DelineatedSp002” populations all collectively corresponded to the distinct species L. kavanaughi. At the same time, the remaining unconstrained population lineages in our example indeed were referred to probata, lindrothi, and disjuncta species.


When a device is deleted, we will remove it from your account, however all historical data will still remain on our servers. To have this data completely removed, pease contact us.
Type DELETE to confirm:


WebPageLayout
Site Map
Home
Site Map
►
◄
Site Map
Home
News
Manual
Standard Files
Layout File
Annotation
Glossary
Blogs
How-to-Write-a-Blog
Extending-Markdown
Development
V0.3.0 Manual
Standard Files
Layout File
Annotation
Blogs & Markdown
Glossary
Route Map
Support
Test Levels
Level 2
Level 3
Level 4
Level 5
Level 6
Level 7
Page 8
Site managed using
WebPageLayout
program.
Home
Site Map
►
◄
8
th
April 2023


[1]
GPS. OVI STORE. MUSIC PLAYER. TOUCH SCREEN; TEXTING IS HORRIBLE
[2]
-Great features. -Good camera. -Radio. -Good music player. -Good battery life; -NO KEYBOARD!!!!!!!. Read below!!!


| up: ZWT | index | Zimbu documentation |
|
Values to be used when creating a Color object. Instead of this the red/green/blue values can be specified to get many more different colors. |
|
| The Class hierarchy, generated Javascript and a few other things are based on the Google Web Toolkit. http://code.google.com/webtoolkit/overview.html |
| Copyright 2009 Bram Moolenaar All Rights Reserved. |
| Licensed under the Apache License, Version 2.0. See the LICENSE file or obtain a copy at: http://www.apache.org/licenses/LICENSE-2.0 |


Best Practice Delivery
Full life-cycle development, following software best practices. Our experienced teams deliver world class software solutions using continuous delivery and Agile processes. We utilise the latest technologies including fully automating software development which in turn saves money.
Project Outsourcing
Working to a budget is not a problem, we have partnerships and individuals around the globe who are part of our community, we can therefore deliver solutions at highly competitive prices without compromise.
Strategic Planning
We specialise in building long lasting maintainable organisations, this includes a full assessment of projects and process and outlining both short term tactical and long term strategic plans to instill efficient lean practices and measurable targets.
External Audit
As an independent IT partner we can perform a number of audits and make recommendations on your processes and software. This could be as simple as reviewing Agile maturity, open source practices or software quality through to your entire department and customer satisfaction.


{% if site.data.comments[page.slug] %} Comments {% assign comments = site.data.comments[page.slug] | sort -%} {%- for comment in comments -%} {%- comment %}comment[0] is file name{% endcomment -%} {%- include comment/staticman-comment.html index=forloop.index comment=comment.last -%} {%- endfor %} {%- endif %} Leave a Comment Markdown is supported. All HTML tags are not honored. {% if site.staticman.reCaptcha.siteKey and site.staticman.reCaptcha.secret %} {% endif %} {% if site.staticman.reCaptcha.siteKey %} {% endif %} Submit Comment Thanks for your comment! It will show on the site once it has been approved. Error occurred during comment submission. Please contact site owner if problem persists. Error is: Please enable JavaScript to post comments powered by Staticman.
Comments
{% assign comments = site.data.comments[page.slug] | sort -%} {%- for comment in comments -%} {%- comment %}comment[0] is file name{% endcomment -%} {%- include comment/staticman-comment.html index=forloop.index comment=comment.last -%} {%- endfor %}


{% extends "page.html" %} {% block title %}{{ this.title }}{% endblock %} {% block body %}
Each project of the BeeWare suite fills one of the following roles:
{{ child.description }}
There is also an attic where older and experimental projects are kept. These projects were once part of the BeeWare suite, but are no longer being actively maintained. If you are interested in taking over maintainence of an attic project, please get in touch.


Class ArucoCameraSeparateThread
Inheritance
System.Object
ArucoCameraSeparateThread
Assembly: Assembly-CSharp.dll
Syntax
public class ArucoCameraSeparateThread
Constructors
|
Improve this Doc
View Source
ArucoCameraSeparateThread(IArucoCamera, Action<Cv.Mat[]>)
Declaration
public ArucoCameraSeparateThread(IArucoCamera arucoCamera, Action<Cv.Mat[]> threadWork)
Parameters
Fields
|
Improve this Doc
View Source
arucoCamera
Declaration
protected IArucoCamera arucoCamera
Field Value
|
Improve this Doc
View Source
currentBuffer
Declaration
protected uint currentBuffer
Field Value
| Type |
Description |
| System.UInt32 |
|
|
Improve this Doc
View Source
exception
Declaration
protected Exception exception
Field Value
| Type |
Description |
| System.Exception |
|
|
Improve this Doc
View Source
imageBuffers
Declaration
protected Cv.Mat[][] imageBuffers
Field Value
|
Improve this Doc
View Source
imageDataBuffers
Declaration
protected byte[][][] imageDataBuffers
Field Value
| Type |
Description |
| System.Byte[][][] |
|
|
Improve this Doc
View Source
imagesUpdated
Declaration
protected bool imagesUpdated
Field Value
| Type |
Description |
| System.Boolean |
|
|
Improve this Doc
View Source
mutex
Declaration
Field Value
| Type |
Description |
| System.Threading.Mutex |
|
|
Improve this Doc
View Source
thread
Declaration
Field Value
| Type |
Description |
| System.Threading.Thread |
|
|
Improve this Doc
View Source
threadException
Declaration
protected Exception threadException
Field Value
| Type |
Description |
| System.Exception |
|
|
Improve this Doc
View Source
threadUpdated
Declaration
protected bool threadUpdated
Field Value
| Type |
Description |
| System.Boolean |
|
|
Improve this Doc
View Source
threadWork
Declaration
protected Action<Cv.Mat[]> threadWork
Field Value
| Type |
Description |
| System.Action<Cv.Mat[]> |
|
Properties
|
Improve this Doc
View Source
CopyBackImages
Declaration
public bool CopyBackImages { get; set; }
Property Value
| Type |
Description |
| System.Boolean |
|
|
Improve this Doc
View Source
ImagesUpdated
Declaration
public bool ImagesUpdated { get; protected set; }
Property Value
| Type |
Description |
| System.Boolean |
|
|
Improve this Doc
View Source
IsStarted
Declaration
public bool IsStarted { get; protected set; }
Property Value
| Type |
Description |
| System.Boolean |
|
Methods
|
Improve this Doc
View Source
NextBuffer()
Returns the index of the next buffer.
Declaration
protected uint NextBuffer()
Returns
| Type |
Description |
| System.UInt32 |
|
|
Improve this Doc
View Source
PreviousBuffer()
Returns the index of the previous buffer.
Declaration
protected uint PreviousBuffer()
Returns
| Type |
Description |
| System.UInt32 |
|
|
Improve this Doc
View Source
Start()
Declaration
|
Improve this Doc
View Source
Stop()
Declaration
|
Improve this Doc
View Source
Update(Byte[][])
Swaps the images with the copy used by the thread, and re-throw the thread exceptions.
Declaration
public void Update(byte[][] cameraImageDatas)
Parameters
| Type |
Name |
Description |
| System.Byte[][] |
cameraImageDatas |
|


|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object poker.PlayerInfo
public class PlayerInfo
Stores all of the information for a player during a poker game. Also contains references to a player's past history of games. This class is a little messy from evolution, and has some ugly hooks for the AI system.
| Constructor Summary | |
|---|---|
PlayerInfo(PlayerInfo pi,
GameInfo gi)
Copy constructor |
|
PlayerInfo(java.lang.String playerName,
GameInfo gi)
Constructor. |
| Method Summary | |
|---|---|
boolean |
active()
Return true if the player is still active in the hand |
boolean |
allIn()
Determine if a player is All-In |
double |
getAmountCallable()
|
double |
getAmountInPot()
Obtain the amount the player has put in the pot. |
double |
getAmountInPotThisRound()
Obtain the amount the player has put in the pot.this round |
double |
getAmountRaiseable()
|
double |
getAmountToCall()
Determine the amount a player must pay to stay in the game |
double |
getBankRoll()
|
double |
getBankRollInSmallBets()
|
GameInfo |
getGameInfo()
Get the context of the last action made by this player. |
int |
getLastAction()
A single integer code for the last action made |
int |
getLastActionCode()
A single integer code for the last action made |
double |
getLastAmountCalled()
Get the amount called by this player during his last action |
double |
getLastBetsToCall()
Obtain the amount of bets the player had to call during their last action. |
double |
getMaximumRisk()
The maximum we can risk in the hand. |
java.lang.String |
getName()
obtain the player's name |
double |
getNetGain()
|
int |
getPosition()
Deprecated. use getSeat() instead |
double |
getRaiseAmount(double amountToRaise)
Return the amount the player can raise, given the desired amount to raise. |
Hand |
getRevealedHand()
Obtain the hand revealed by this player |
int |
getSeat()
Get our seat number in the GameInfo |
boolean |
hasActedThisRound()
Check if a player has made at least one action this round |
boolean |
hasEnoughToCall()
|
boolean |
hasEnoughToRaise()
|
boolean |
inGame()
|
boolean |
isButton()
|
boolean |
isCommitted()
Test if a player has volunatrily committed yet in this round |
double |
potOdds()
Obtain the player's immediate pot odds |
double |
potRatio()
The ratio of the money in the pot that belongs to the player |
void |
resetBankRoll()
|
void |
save()
|
void |
setBankRoll(double br)
|
void |
setBankRollAndSave(double br)
|
void |
setInGame(boolean value)
|
void |
startNewGame()
Start a new game with this player |
java.lang.String |
toString()
|
void |
win(double amount)
Give the player some money |
| Methods inherited from class java.lang.Object |
|---|
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| Constructor Detail |
|---|
public PlayerInfo(java.lang.String playerName, GameInfo gi)
playerName
- the name of the playergi
- the game that the player is inpublic PlayerInfo(PlayerInfo pi, GameInfo gi)
pi
- the PlayerInfo to deep copygi
- the new GameInfo to reference| Method Detail |
|---|
public void save()
public double getNetGain()
public void setBankRollAndSave(double br)
public void setBankRoll(double br)
public void resetBankRoll()
public double getBankRoll()
public double getBankRollInSmallBets()
public boolean inGame()
public void setInGame(boolean value)
public int getPosition()
public int getSeat()
public void startNewGame()
public java.lang.String getName()
public boolean allIn()
public void win(double amount)
amount
- the amount of money to givepublic Hand getRevealedHand()
public double getAmountToCall()
public boolean isCommitted()
public boolean hasActedThisRound()
public double potOdds()
public double getLastAmountCalled()
public double getLastBetsToCall()
public double getAmountInPot()
public double getAmountInPotThisRound()
public double potRatio()
public int getLastActionCode()
public int getLastAction()
public GameInfo getGameInfo()
public boolean active()
public boolean isButton()
public boolean hasEnoughToCall()
public boolean hasEnoughToRaise()
public double getAmountRaiseable()
public double getAmountCallable()
public java.lang.String toString()
toString
in class java.lang.Object
public double getMaximumRisk()
public double getRaiseAmount(double amountToRaise)
amountToRaise
- the desired amount to raise.
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |


Adaptation Overview
Many governments and organizations across the United States and the world are already adapting to climate change. This is important because we are already seeing the impacts of climate change – including sea level rise, changing precipitation patterns, and more frequent incidences of heat waves and other extreme weather events. Many impacts are expected to grow in geographic scale, rate, or intensity as global temperatures continue to increase.
Individuals, organizations, and communities can take many steps to adapt to a changing climate – and to help plants and animals cope as well.
Adaptation actions can be:
- Reactive: responding to conditions that have already changed.
- Anticipatory: planning for climate change before impacts have occurred.
Examples of Adaptation
Adaptation measures are already in place in many areas, as the examples below show. These actions can be expanded or modified to prepare for climate change. But additional measures, such as new technologies and policies, may also be needed. Such actions could require time and resources to carry out, so planning now is important.
Agriculture and Food Supply
- Develop crop varieties that are more tolerant of heat, drought, or flooding from heavy rains.
- Provide more shade and air flow in barns to protect livestock from higher summer temperatures.
Coasts
- Preserve wetlands and open spaces to protect coastal communities from flooding and erosion from storms and sea level rise.
- Improve evacuation planning for low-lying areas to prepare for increased storm surge and flooding.
Ecosystems
- Protect and expand wildlife habitats to allow species to migrate as the climate changes.
- Reduce pollution, habitat loss, and other stressors that make ecosystems more vulnerable to climate change.
Energy
- Increase energy efficiency to help offset rises in energy consumption, such as from more air conditioning use as temperatures warm.
- Strengthen energy production facilities to withstand increased flood, wind, lightning, and other storm-related stresses.
Human Health
- Set up early warning systems and emergency response plans to prepare for more extreme weather events.
- Educate people to help them avoid diseases that could become more prevalent as the climate changes, such as those carried by mosquitoes or ticks.
- Plant trees and expand green spaces in cities to reduce the "urban heat island" effect.
Water Resources
- Improve water use efficiency, and build additional water storage capacity.
- Protect and restore stream and river banks to provide wildlife habitat and safeguard water resources.
Key Adaptation Terms
Adaptation – Adjustment in natural or human systems to a new or changing environment that takes advantage of beneficial opportunities or moderates negative effects.
Adaptive capacity – The ability of a system to adjust to climate change (including climate variability and extremes) to moderate potential damages, take advantage of opportunities, or cope with the consequences.
Resilience – A capability to anticipate, prepare for, respond to, and recover from significant threats with minimum damage to social well-being, the economy, and the environment.
Vulnerability – The degree to which a system is susceptible to, or unable to cope with, adverse effects of climate change, including climate variability and extremes. Vulnerability is a function of the character, magnitude, and rate of climate variation to which a system is exposed, its sensitivity, and its adaptive capacity.
Source: National Research Council, 2010. Adapting to the Impacts of Climate Change.


ID: $[id] - Elevation: $[elevation]m, Aspect: $[aspect]°, Slope: $[slope]°
Land use categories
Agriculture/Forestry/Fishing
Manufacturing/energy
Transp./Comm./Storage/Prot
Unused/Abandoned Areas
No Data
Accuracy
YES
NO
Land use sub-division
Agriculture
Agricultural
Fallow land
Kitchen gardens
Forestry
Aquaculture/Fishing
Mining/Quarrying
Accuracy
YES
NO
Land use sub-division
TRANSPORT/COMM. NETWORKS/STORAGE/PROTECTIVE WORKS
Railways
Roads
Water transport
Air transport
Pipelines
SETTLEMENTS
Residential
Construction
Comm. Services
OTHER
Telecomm.
Storage
Protection works
WATER AND WASTE TREATMENT
Water supply and treatment
Waste treatment
RECREATION, LEISURE, SPORT
Amenities/Museums/Leisure
Sport
Holiday camps
Accuracy
YES
NO
Land use sub-division
Industry and Manufacturing
Food/beverages/tobacco
Textile products
Coal/oil/metal processing
Non-metal mineral goods
Machinery/Equipment
Wood based products
Chemical and allied industries and manufacturing
Energy Production
Accuracy
YES
NO
Land use sub-division
UNUSED AND ABANDONED AREAS
Abandoned areas
Not in use
Accuracy
YES
NO
No data
No data available for this plot.
Land use sub-division
Sea
Clouds
Other reason
Site description
Directions
Elements
Road
Not Applicable
0-10%
10-30%
30-60%
60-100%
River
Not Applicable
0-10%
10-30%
30-60%
60-100%
Lake
Not Applicable
0-10%
10-30%
30-60%
60-100%
House
Not Applicable
0-10%
10-30%
30-60%
60-100%
Trees
Not Applicable
0-10%
10-30%
30-60%
60-100%
Garden
Not Applicable
0-10%
10-30%
30-60%
60-100%
Other
Not Applicable
0-10%
10-30%
30-60%
60-100%
RS Data
Satellite
RapidEye
Landsat
DigitalGl.
Spot
Other
Date
SUBMIT & VALIDATE


Join The Best Gym of City Now!
Are you looking for Best Gym for your body fitness. Then you are at right place. Join our TotalFitness program now!
The end of your search is here
Being active has many benefits, everything from heart health to sleep quality to brain function, but knowing it’s good for you doesn’t always mean it’s easy to go to the gym. If you’ve been having trouble getting into a workout routine, take a look at a few proven methods for getting off the couch and breaking a sweat.
Transforming Fitness in India
If you’re just looking to get active, there’s nothing wrong with going to a gym and investing time in whatever equipment or activity strikes your fancy. But the downside of those aimless visits is that skipping them doesn’t feel like you’re impeding progress toward a goal. After a break-in period, it’s best to imagine a finish line—losing weight, increasing endurance, adding muscle, or a mixture of each—and focus your energy on working toward it.
Lets Grow Together
We all know that going to the gym is good for your health and we are all aware that we should be a bit more active. Joining a gym makes doing these things a lot easier but if you needed some more motivation, here’s 10 great reasons to join a gym:
1. It’s good for your health
We’re stating the obvious with this one but did you know that being active daily reduces the risk of
heart disease, strokes and type 2 diabetes?
2. It’s good for your mind
When you exercise, endorphins are released which can calm anxiety and lift your mood.
3. It’s a great stress buster
Had a busy day? There is nothing more rewarding then running further or lifting heavier than you
have
before. Plus, the fitter you get, the better your body is at regulating cortisol levels (the hormone
linked to stress).
4. Access to equipment
Being a member of a gym means you have access to tons of equipment, allowing you to keep your
routine
fresh and exciting.
5. Access to knowledge
If you’re a workout newbie, a gym membership can give you the tools and knowledge to start out.
Learn
the ropes by booking on the induction programme, attending classes or even get a Personal
Trainer
6. It keeps you motivated
Going to the gym and being surrounded by motivated people can encourage you to stay on track. Plus,
having somewhere to go sounds more appealing then working out in the park or in your living
room.
7.  Ditched the outdoor bootcamp because it was dark? The
gym
offers a great place to work out whatever the weather and time of year, so no excuses!
8. Meet like-minded people
Joining a gym can be quite social. If you’re a regular at classes, then you begin to get to know
people
and before you know it you’re lifelong friends.
9. It will improve your sleep
Studies show that people who exercise 5 to 6 times a week are more likely to get a good night’s
kip.
10. You can have somewhere to relax
Generally, people join a gym to workout but they are actually a great place to unwind. A gentle swim
or
sit in the sauna for some ‘me time’ will have you zen before you know it.
Our Story
Lorem ipsum dolor, sit amet consectetur adipisicing elit. Corrupti magni qui alias aliquid soluta quae ex hic voluptatibus beatae odio. Amet minus veniam dolores impedit perspiciatis molestias laboriosam, itaque praesentium fuga. Reiciendis, architecto ex. Alias maxime corporis aspernatur neque? Atque omnis iste maxime incidunt facilis debitis hic rerum totam aut.
What we do?
Lorem, ipsum dolor sit amet consectetur adipisicing elit. Beatae consectetur at consequuntur esse sit perspiciatis impedit perferendis dignissimos eveniet. Adipisci ipsam velit excepturi fugiat ut placeat sint delectus? Ducimus blanditiis expedita consectetur eos veritatis laboriosam veniam. Ad dignissimos nostrum fugiat expedita quidem, est nesciunt blanditiis at veniam vitae! Aspernatur, molestiae!
Our team
Lorem ipsum dolor sit, amet consectetur adipisicing elit. Libero suscipit veniam vel alias incidunt corrupti commodi. Nostrum, sunt quaerat molestias unde natus aperiam tempore neque labore quia rerum libero repellendus quidem vel atque exercitationem omnis ut placeat voluptas dicta. Facilis, laboriosam doloribus. Molestiae, enim fugiat commodi quam iusto magni sapiente.


I am pretty sure, you had one of these magic cubes (also called Rubik's cube®). Maybe you still have one. So in order to get into the right mood, grab it and go ahead: scramble (without sneak-peeks) and try to solve it.
Okay, tough start, I know. Maybe I give you a few hints first:
Could you solve it?
Don't worry, most people are not able to solve a 3×3×3 magic cube.
Let me help you:
In order to learn new algorithms by hard, some people came up with a way of writing them down (One may also speculate that notations came up in order to avoid human contact among pale and thick-glassed ...).
Notations follow orientation.
That is, you have one side facing up (e.g., white), and notation tells you to move the right-handed layer in clockwise (R
) or counter-clockwise (R'
) direction. The same goes with the left-handed layer (L
and L'
respectively), the upper (U
) and lower (D
for down) layer, as well as the front (F
) and back (B
) layer.
Image by matt2uy, CC license, via instructables.com
Could you solve it?
That's the number of possible combinations within one cube. It reads as some fourty-three quintillions.
We still do not know why the magic cube is sometimes referred to as Rubik's cube®, do we? The answer is rather simple, though—it's because of its initial founder, Ernő Rubik.
Rubik was born in 1944 and is a Hungarian architect and designer. He invented the cube in 1974 in order to puzzle his students and found it to be such a good puzzle that he applied for a patent only a few months later. He paired up with New-York-based Ideal Toys, a toy company that bought the license from Ernő and renamed the puzzle into Rubik's cube®.
I believe probably the most characteristic part of the cube is the contradiction between simplicity and complexity. I love the simplicity of the cube because it’s a very clear geometrical shape, and I love geometry because it’s the study of how the whole universe is structured.
It's international success followed suite. The cube was instantly awarded with the well-renowned "German Game of the Year" prize in 1980. As with 1980 the cube gained international popularity, selling over 350 million pieces until 2009 and thus making it one of the best-selling toys of all time. Today, plenty of copycats exist (explicitely called magic cubes rather than "Rubik"); however, despite the initial imitation, some of these versions are very popular among speedcubers (see the next section) as their mechanics move smoother.
Rubik's initial version was made out of wood and rubber bands, yet he quickly changed the materials to plastic. Today, almost all cubes are made from plastic. Yet, the basic mechanics have not changed ever since: a 3-dimensional cross in the middle of the cube fixates the center cubies and their relation to each other. All other cubies are inserted rather loosely.
These days, there's also a standardized size of the 3×3×3 cube in order to make Rubik's and others comparable. The official size is 57,5mm in length (as it's a cube, the full size declaration would be 57,5×57,5×57,5, obviously). Smaller and larger versions are available, but they are not allowed at official contests.
Yes, you read that one right: official contests. The cubing scene is big and it's growing. There are championships, there are world records (in multiple disciplines), and there is even a world cube association (of which, by the way, Gilles Roux used to be a board member). To get an impression of these tournaments, check out the variety of disciplines people try to solve cubes in:
Solve a smaller version of the cube as quickly as you can.
Just solve an ordinary cube within an adequate time.
Solve an ordinary cube with as fewest moves as you can get.
That cube is a little harder as the center cubies can actually move.
Getting tougher, that one's called "Professor's cube" by the way..
It's quite similar to the 4×4×4 cube although larger.
Okay, that's nerdy. And it has an own name: "V-Cube 7."
Look at the cube but don't solve it. Now close your eyes and solve.
Again, look at a (bigger) cube, close your eyes, and do it.
Remember a few cubes at once before shutting your eyes and solving them.
You are allowed to look and it's only a 3×3×3—but you are not allowed to use your second hand.
Solve it, using your feet. Only your feet. That one's called "stinky cube" (just kidding).
However, the supreme discipline is speedcubing with an official 3×3×3 (and thus 57,5×57,5×57,5mm) cube. Take a look:
Ultimately, after you now know a lot about the 3×3×3 magic cube and are even capable of solving it (let's assume, at least), you may also be a little hooked on such puzzles. Well, I am. Luckily, there are some derivates of the cube that keep me puzzled. Find out, what kind of derivates exist by clicking on the images.


Support
Professional support for the open source innovation
Community Support
Forum is where the community users gather to seek support, post topics and discuss the technology. PrimeTek does not
guarantee response at forum although it is monitored and maintained by our staff. If you need to secure our response within 1 business day, you may consider PrimeFaces PRO support.
PrimeFaces Elite
PrimeFaces has two different release lines, major releases such as 6.2, 7.0, 8.0 and 10.0 are considered to be community releases and they are available to public for free under MIT License. ELITE releases are versioned like 6.2.13,
7.0.9, 8.0.5, 10.0.1, they provide maintenance along with new features and they are only available to ELITE and PRO users.
ELITE subscribers also have access to basic license of Premium Omega Application Template Elite at no extra cost. Extended license requires a separate purchase whereas PRO users have been granted an extended license.
PrimeFaces Elite FAQ
- How much does ELITE cost and for how long? ELITE subscription is per developer and cost is $99 for one year.
- What does per developer mean? Is it a named license or concurrent? ELITE license is concurrent or floating in other words. Read more about floating license at here. In summary, ELITE license is a development license that is granted for a developer. It has no runtime bindings like nodes, CPUs or servers.
- How do I become an ELITE user? Steps to upgrade to Elite are as follows;
- Create an account at http://forum.primefaces.org if you haven’t already done so.
- Visit http://www.primefaces.org/store and login with your credentials.
- Click “PrimeFaces Elite” tab and enter the number of licenses. Then click the subscribe button.
- Next screen is PayU where you can complete the purchase.
- Once the payment is completed, relogin the http://www.primefaces.org/store and access the service offerings.
- We have 3 developers in our team using PrimeFaces. How many licenses we should get? You’d need 3 licenses, you can use checkout screen during payment process to change the number of licenses.
- Can we pay with a bank transfer, without a credit card? Yes, please contact us if you’d like to proceed this way.
- What is the license of ELITE Releases? Is it different than MIT License? ELITE versions are licensed under PrimeFaces Commercial License.
- If I’m not purchasing ELITE but via a reseller or purchasing department, can you transfer the account to me? Yes, please contact us with the details in this case.
- Does ELITE enable us to contact PrimeFaces Team to receive support? No, that is provided by PRO support.
- Once my subscription ends, can I still continue using the Elite libraries? No, it is required to extend your subscription to continue using any Elite version during active development.
PrimeFaces PRO Support
PrimeFaces PRO is a term based commercial support service. With the exclusive services of Pro account,
you no longer need to post your questions in the community forum and your issues to community issue tracker.
With PrimeFaces PRO, it's easy to support, tune and add features to PrimeFaces as if it were an in-house framework.
GET A QUOTE
Standard PRO Services
- Access to pro.primefaces.org
- Response within 1 business day.
- Defect patches.
- Private branch management in case you need.
- Customized builds.
- Unlimited number of cases.
- Remote desktop connection.
- Conference calls for discussions.
- High priority to your issues.
- Notifications about security updates.
New Features (Optional)
New feature and enhancement requests are not available in core services and provided via an hour based model instead. When you have a feature request we provide an estimate, if you confirm we deliver your request within an estimated timeframe and deduct the amount of work from your hours. These requests can be;
- New components.
- New functionality to existing components.
- Changing the way a certain functionality is implemented.
- Accessibility improvements.
- Proof of Concept implementations of a use case.
- Code reviews to offer best practices.
You can purchase additional hours along with the subscription and also anytime during your subscription period. If your subscription term ends with unused hours, they will be added to your new subscription term in case you extend.


Dialogue Editor
Images with no stage prefix (usually epilogue images) can now be filtered from the image selection dropdown when writing dialogue.
Template Editor
Templates can now have cropping information associated with a pose, eliminating the need to manually crop every image that gets generated.
Alternate Skins
The Template Editor is now available for alternative skins.
Bug Fixes
- Variable intellisense is less aggressive at autocompletion now when trying to type ~ without a variable.
- Epilogue system fixed in non-English locales which use a decimal separator other than "."


Follow these steps to delete a project:
lean project-delete "<projectName>"
.$ lean project-delete "My Project" Successfully deleted project 'My Project'
This command deletes the project on your local machine and in QuantConnect Cloud.
If you are a collaborator on the project, this command doesn't delete the project for the other collaborators, but it removes you as a collaborator.


Sampling Ireland - Part 2
Irish, Redbreast 12, Scotch, Islay, Lagavulin Distillers 2017
Turns out I was even too tired yesterday to even bring in my suitcase containing my new whiskies. I brought the suitcase inside tonight and the bottles were quite cold. But hey, let’s turn this into an experiment. Trying the Redbreast 12 and Lagavulin Distiller’s Edition.
Cold
Redbreast 12 - The alcohol was intensified tremendously in the cold. Tons of alcohol burn on the nose with maybe a hint of sweetness. The whiskey was all alcohol in the mouth as well. Gone was the complex mouth feel, replaced by a thin burning liquid.
Lagavulin Distiller’s - The smoke is more apparent than it was when at room temp. Some sweetness coming through. Much more smoky peatiness in the mouth as well but dulled a bit… so I guess the cold cuts the value in half and gives you regular Lagavulin 16 that’s been sitting out all night?
Room Temperature
I let these drams sit for 10-15 minutes to come back to room temperature and oxidate a bit.
Lagavulin Distiller’s - Yum! This is a lot better than the first time I had it the other night. I’m getting more complexity now like the Laga16 but with a nice sweetness. The finish seems longer than the standard Laga16 and the sherry sweetness is very pleasant.
Redbreast 12 - Also yum! The mouth feel is back to normal and I’m getting that complex Irish flavor that I loved the first time. I don’t notice much of a difference from the first time I tried it and still really dig it. Sipping on this after the Lagavulin was interesting… the sweet notes of the Laga left over on my tongue seemed to be triggered by this to create extra sweetness and tongue tingling.
Mrs. Whiskey
Ladies and gentlemen, I’m pleased to reintroduce Mrs. Whiskey! She tried the Redbreast cold - “woah, that burns!” and at room temp - “I wouldn’t drink a lot of it but it’s not offensive.” That’s the highest complement she’s ever paid to a whiskey.
Lagavulin Distiller’s - she unfortunately brushed her teeth before this came out so she didn’t try it. She did give it the nose test. “It doesn’t burn my nose like other ones do. I don’t get any smokiness. If I were to sniff it blindfolded I don’t know if I were to tell it was whisky. I liked the way it smelled but it didn’t smell familiar.”
Next up - back to the Irish minis. Whiskey Bob signing off.
Previous: Too Tired for Whiskey


subject = "Project approval requested: {{ project.name }}" layout = "system" ==
Hello,
Client {{ user.name }} requested approval for the project {{ project.name }}.
You can approve or reject the project here:
{{ project.getBackendUrl }}
{{ project.description }}


Sepulvado, Brandon, Jacob Jett, and J. Stephen Downie. Forthcoming. “The Collaborative Structure of Synthetic Biology Ethics.’’ Proceedings of the Association of Information Science & Technology.
Sepulvado, Brandon, Michael Lee Wood, Ethan Fridmanski, Cheng Wang, Matthew J. Chandler, Omar Lizardo, and David Hachen. Forthcoming. “Predicting Homophily and Social Network Connectivity from Dyadic Behavioral Similarity Trajectory Clusters.” Social Science Computer Review.
Brummet, Quentin, Patrick Coyle, and Brandon Sepulvado. Forthcoming. “An Examination of the Effect of Differential Privacy Techniques on the Data Utility of Estimates of the Cost of Early Care and Education.’’ Research in Social and Administrative Pharmacy.
Lizardo, Omar, Brandon Sepulvado, Dustin Stoltz, and Marshall Taylor. “What can Cognitive Neuroscience Do for Cultural Sociology?” American Journal of Cultural Sociology (invited submission) 8: 3-28.
Sepulvado, Brandon. 2018. “Historical Network Analysis: The Cases of French Neurology and Sociology.” Sage Research Methods Case Studies.
Sepulvado, Brandon. 2018. “Revolutionizing the Study of Symbolic Revolutions- La révolution sociologique. De la naissance d’un régime de pensée scientifique à la crise de la philosophie (La Découverte 2017)”. European Journal of Sociology 59(3): 442-451.
Sepulvado, Brandon and Omar Lizardo. 2017. “Cognitive Sociology in France.” American Sociologist 48(3): 366-381.
Sepulvado, Brandon. 2017. “The Promise of Process—Andrew Abbott, Processual Sociology (University of Chicago Press, 2017).” European Journal of Sociology 58(3): 443-450.
Lizardo, Omar, Robert Mowry, Brandon Sepulvado, Dustin Stoltz, Marshall Taylor, and Justin Van Ness. “What are Dual Process Models? Implications for Cultural Analysis in Sociology.” Sociological Theory 34(4): 287-310.
Sepulvado, Brandon, Omar Lizardo, and David Hachen. 2015. “Social Affiliation from Religious Disaffiliation: Evidence of Selective Mixing among Youth with No Religious Preference.” Journal for the Scientific Study of Religion 54(4): 833-841.


|
Standard Reference Data Program |
Data Gateway |
Chemistry WebBook |
|
NIST subscription sites provide data under the NIST Standard Reference Data Program, but require an annual fee to access. The purpose of the fee is to recover costs associated with the development of data collections included in such sites. Your institution may already be a subscriber. Follow the links above to find out more about the data in these sites and their terms of usage.
Go To: Top, Constants of diatomic molecules, References, Notes / Error Report
Data compilation copyright by the U.S. Secretary of Commerce on behalf of the U.S.A. All rights reserved.
Data evaluated as indicated in comments:
HL - E.P. Hunter and S.G. Lias
Data compiled as indicated in comments:
LL - S.G. Lias and J.F. Liebman
| Quantity | Value | Units | Method | Reference | Comment |
|---|---|---|---|---|---|
| Proton affinity (review) | 988. | kJ/mol | N/A | Hunter and Lias, 1998 | HL |
| Quantity | Value | Units | Method | Reference | Comment |
| Gas basicity | 959.4 | kJ/mol | N/A | Hunter and Lias, 1998 | HL |
| IE (eV) | Method | Reference | Comment |
|---|---|---|---|
| 8.76 ± 0.22 | END/DER | Dalleska and Armentrout, 1994 | LL |
| 9.7 | DER | Lias, Bartmess, et al., 1988 | LL |
Go To: Top, Gas phase ion energetics data, References, Notes / Error Report
Data compilation copyright by the U.S. Secretary of Commerce on behalf of the U.S.A. All rights reserved.
Data compiled by: K.P. Huber and G. Herzberg
| State | Te | ωe | ωexe | ωeye | Be | αe | γe | De | βe | re | Trans. | ν00 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| G 1Π | [40259.8] | [0.5224] 1 | [2.27E-6] | [1.834] | G → A V | 36365.4 Z | ||||||
| missing citation | ||||||||||||
| G → X R | 39868.6 Z | |||||||||||
| missing citation | ||||||||||||
| F 1Π | (37922) | [696] H | [0.5590] 2 | [1.424E-6] | [1.7728] | F → X R | 37879.1 Z | |||||
| missing citation | ||||||||||||
| E 1Σ+ | (37722) | [705] 3 H | [0.5249] 1 | [1.14E-6] | [1.829] | E → A V | 34180 HQ | |||||
| missing citation | ||||||||||||
| E → X R | 37683.5 Z | |||||||||||
| missing citation; missing citation | ||||||||||||
| State | Te | ωe | ωexe | ωeye | Be | αe | γe | De | βe | re | Trans. | ν00 |
| C 1Σ- | 30080.6 | 632.4 Z | 5.2 | 0.5008 | 0.0048 | [1.27E-6] 4 | 1.8729 | C → A 5 R | 26500.94 Z | |||
| missing citation; Trajmar and Ewing, 1965 | ||||||||||||
| e 3Σ- | 6 | (e ← a) | ||||||||||
| Evans and Mackie, 1974 | ||||||||||||
| D 1Δ | 29851.6 | 632.5 Z | 5.3 | 0.5014 | 0.0048 | [1.26E-6] 7 | 1.8718 | D → A 5 8 R | 26272.04 Z | |||
| Trajmar and Ewing, 1965 | ||||||||||||
| d 3Δi | (29300) 9 | (650) | (0.50) | (1.87) | d ↔ a (V) | 26867 HQ | ||||||
| Brewer and Porter, 1954; Evans and Mackie, 1974; Schamps and Gandara, 1976 | ||||||||||||
| State | Te | ωe | ωexe | ωeye | Be | αe | γe | De | βe | re | Trans. | ν00 |
| c 3Σ+ | (28300) 10 | (c ← a) | 25900 | |||||||||
| Evans and Mackie, 1974 | ||||||||||||
| B 1Σ+ | 199984.0 | 824.08 Z | 4.76 11 | 0.5822 12 | 0.0045 | 1.14E-6 | 0.025E-6 | 1.7371 | B → A 13 V | 16500.29 Z | ||
| missing citation | ||||||||||||
| B ↔ X 14 V | 20003.57 Z | |||||||||||
| Lagerqvist, 1943; Lagerqvist and Uhler, 1949; missing citation | ||||||||||||
| A 1Π | 3563.3 | 664.44 Z | 3.91 | 0.5056 15 | 0.0046 | 1.18E-6 | 1.8640 | |||||
| State | Te | ωe | ωexe | ωeye | Be | αe | γe | De | βe | re | Trans. | ν00 |
| a 3Πi | (2400) 16 | (650) | (0.50) | (1.87) | ||||||||
| X 1Σ+ | 0 | 785.06 Z | 5.18 | 0.5743 12 | 0.0050 | 1.22E-6 | 0.02E-6 | 1.7490 | 17 |
| 1 | Several rotational perturbations. |
| 2 | Small Λ-type doubling; intensity perturbations. |
| 3 | Data for Mg18O are given by Antic-Jovanovic, Pesic, et al., 1976. |
| 4 | D1 = 1.30E-6; H0 = 0.48E-11. |
| 5 | Franck-Condon factors Srivastava and Maheshwari, 1967, Gandara, Schamps, et al., 1970, Shadrin and Zhirnov, 1975. |
| 6 | Very weakly bound or repulsive state; see Schamps and Lefebvre-Brion, 1972. Continuous absorption above 31250 cm-1 by shock-heated MgO in Ar/O2 mixtures. |
| 7 | D1 = 1.29E-6. |
| 8 | For 18O - 16O isotope shifts see Trajmar and Ewing, 1965. |
| 9 | A ~ -25. |
| 10 | The assignment of the bands to MgO is still uncertain. See also Schamps and Lefebvre-Brion, 1972. |
| 11 | Vibrational isotope shifts for 24Mg18O and 26Mg16O Pesic, 1964. |
| 12 | RKR potential functions Thakur and Singh, 1967. |
| 13 | Franck-Condon factors Nicholls, 1962; oscillator strength Main, Carlson, et al., 1967, Main and Schadee, 1969. |
| 14 | Observed in absorption in shock-heated Ar/O2 mixtures containing MgO Evans and Mackie, 1974. Franck-Condon factors Nicholls, 1962, Ortenberg, Glasko, et al., 1964, Prasad, 1965; oscillator strength Main, Carlson, et al., 1967, Main and Schadee, 1969; dependence of transition moment on r from measured intensities Dube, 1973. |
| 15 | Small Λ-type doubling. |
| 16 | A ~ -50; Te is the theoretical value of Schamps and Lefebvre-Brion, 1972. An experimental value of 3200 ± 1000 is given by Evans and Mackie, 1974. |
| 17 | Theoretical ground state properties Yoshimine, 1968; more recent calculations of ground and excited states Schamps and Lefebvre-Brion, 1972. |
| 18 | The dissociation energy (to Mg 1S + O 3P) is quite uncertain. The value given is the thermochemical value of Drowart, Exsteen, et al., 1964 as corrected Schamps and Lefebvre-Brion, 1972 for the presence of the low-lying a 3Π state. From flame photometry Cotton and Jenkins, 1969 obtain 4.16 eV assuming a 3Σ ground state, while Veits and Gurvich, 1956 also from flame photometry but assuming a 1Σ ground state obtain 4.34 eV. |
Go To: Top, Gas phase ion energetics data, Constants of diatomic molecules, Notes / Error Report
Data compilation copyright by the U.S. Secretary of Commerce on behalf of the U.S.A. All rights reserved.
Hunter and Lias, 1998
Hunter, E.P.; Lias, S.G.,
Evaluated Gas Phase Basicities and Proton Affinities of Molecules: An Update,
J. Phys. Chem. Ref. Data, 1998, 27, 3, 413-656. [doi:10.1063/1.556018]
[all data]
Dalleska and Armentrout, 1994
Dalleska, N.F.; Armentrout, P.B.,
Guided ion beam studies of reactions of alkaline earth ions with O2,
Int. J. Mass Spectrom. Ion Processes, 1994, 134, 203. [all data]
Lias, Bartmess, et al., 1988
Lias, S.G.; Bartmess, J.E.; Liebman, J.F.; Holmes, J.L.; Levin, R.D.; Mallard, W.G.,
Gas-phase ion and neutral thermochemistry,
J. Phys. Chem. Ref. Data, Suppl. 1, 1988, 17, 1-861. [all data]
Trajmar and Ewing, 1965
Trajmar, S.; Ewing, G.E.,
The near-ultraviolet bands of MgO: analysis of the D1Δ-A1Π and C1Σ-A1Π systems,
Astrophys. J., 1965, 142, 77. [all data]
Evans and Mackie, 1974
Evans, P.J.; Mackie, J.C.,
Energy levels of gaseous magnesium monoxide and the bond dissociation energy,
Chem. Phys., 1974, 5, 277. [all data]
Brewer and Porter, 1954
Brewer, L.; Porter, R.F.,
A thermodynamic and spectroscopic study of gaseous magnesium oxide,
J. Chem. Phys., 1954, 22, 1867. [all data]
Schamps and Gandara, 1976
Schamps, J.; Gandara, G.,
A 3Δ-3Π transition in the near-ultraviolet spectrum of MgO,
J. Mol. Spectrosc., 1976, 62, 80. [all data]
Lagerqvist, 1943
Lagerqvist, A.,
The greeen bands of magnesium oxide,
Ark. Mat. Astron. Fys., 1943, 29, 1. [all data]
Lagerqvist and Uhler, 1949
Lagerqvist, A.; Uhler, U.,
The red and green bands of magnesium oxide,
Ark. Fys., 1949, 1, 459. [all data]
Antic-Jovanovic, Pesic, et al., 1976
Antic-Jovanovic, A.; Pesic, D.S.; Bojovic, V.,
On the MgO bands of the E1Σ-X1Σ system,
J. Mol. Spectrosc., 1976, 60, 416. [all data]
Srivastava and Maheshwari, 1967
Srivastava, Y.P.; Maheshwari, R.C.,
Overlap integrals and r centroids of D1Δ → A1Π system of MgO,
Proc. Phys. Soc. London, 1967, 90, 1177. [all data]
Gandara, Schamps, et al., 1970
Gandara, G.; Schamps, J.; Becart, M.,
Facteurs de Franck et Condon et r-centroides pour les systemes D1Δ - A1Π et C1Σ- - A1Π de la molecule MgO,
C.R. Acad. Sci. Paris, Ser. B, 1970, 270, 1213. [all data]
Shadrin and Zhirnov, 1975
Shadrin, O.P.; Zhirnov, N.I.,
Calculations of Franck-Condon factors with Poschl-Teller wave functions. 2: Vibrational transition probabilities in the C2Σ-X2Σ and D1Δ-A1Π band systems of the RhC and MgO molecules,
Opt. Spectrosc. Engl. Transl., 1975, 38, 367-368, In original 648. [all data]
Schamps and Lefebvre-Brion, 1972
Schamps, J.; Lefebvre-Brion, H.,
SCF calculations of the electronic states of magnesium monoxide,
J. Chem. Phys., 1972, 56, 573. [all data]
Pesic, 1964
Pesic, D.S.,
Green bands of 24Mg18O and 26Mg16O molecules,
Proc. Phys. Soc. London, 1964, 83, 885. [all data]
Thakur and Singh, 1967
Thakur, S.N.; Singh, R.B.,
Potential curves and bond strength of CP, BeO and MgO,
J. Sci. Res. Banaras Hindu Univ., 1967, 18, 1, 253-264. [all data]
Nicholls, 1962
Nicholls, R.W.,
Franck-Condon factors to high vibrational quantum numbers II: SiO, MgO, SrO, AlO, VO, NO,
J. Res. Nat. Bur. Stand. Sect. A, 1962, 66, 227. [all data]
Main, Carlson, et al., 1967
Main, R.P.; Carlson, D.J.; DuPuis, R.A.,
Measurement of oscillator strengths of the MgO(B1Σ+ - X1Σ+) and MgH(A2Π - X2Σ+) band systems,
J. Quant. Spectrosc. Radiat. Transfer, 1967, 7, 805. [all data]
Main and Schadee, 1969
Main, R.P.; Schadee, A.,
On the oscillator strengths of MgO and F2,
J. Quant. Spectrosc. Radiat. Transfer, 1969, 9, 713. [all data]
Ortenberg, Glasko, et al., 1964
Ortenberg, F.S.; Glasko, V.B.; Dmitriev, A.I.,
Vibrational transition probabilities for band systems of some diatomic oxides. II.,
Sov. Astron. Engl. Transl., 1964, 8, 258, In original 332. [all data]
Prasad, 1965
Prasad, K.,
Franck-Condon factors and r centroids for B-X system of MgO,
Proc. Phys. Soc. London, 1965, 85, 810. [all data]
Dube, 1973
Dube, P.S.,
Variation of the electronic transition moment with the internuclear distance & the effective vibrational temperature in the B1Σ-X1Σ system of the emission spectrum of MgO,
Indian J. Pure Appl. Phys., 1973, 2, 445. [all data]
Yoshimine, 1968
Yoshimine, Y.,
Computed ground state properties of BeO, MgO, CaO, and SrO in molecular orbital approximation,
J. Phys. Soc. Jpn., 1968, 25, 1100. [all data]
Drowart, Exsteen, et al., 1964
Drowart, J.; Exsteen, G.; Verhaegen, G.,
Mass spectrometric determination of the dissociation energy of the molecules MgO, CaO, SrO and Sr2O,
J. Chem. Soc. Faraday Trans., 1964, 60, 1920. [all data]
Cotton and Jenkins, 1969
Cotton, D.H.; Jenkins, D.R.,
Bond-dissociation energy of gaseous magnesium oxide,
Trans. Faraday Soc., 1969, 65, 376. [all data]
Veits and Gurvich, 1956
Veits, I.V.; Gurvich, L.V.,
Dissociation energy of magnesium, calcium, strontium and barium oxides,
Opt. Spektrosk., 1956, 1, 22. [all data]
Go To: Top, Gas phase ion energetics data, Constants of diatomic molecules, References
Copyright for NIST Standard Reference Data is governed by the Standard Reference Data Act.
|
Standard Reference Data Program |
Data Gateway |
Chemistry WebBook |
If you have comments or questions about this site, please contact us.


☰
SignOut
Search
Friends
Photos
Movies
Profile
Home
EMAIL
ADD NEW EMAIL
Add Email
View Email Information


| MATLAB 文件帮助: cv.matMulDeriv | 查看 cv.matMulDeriv 的代码 | Index |
matMulDeriv Computes partial derivatives of the matrix product for each multiplied matrix
[dABdA, dABdB] = cv.matMulDeriv(A, B)
d(A*B)/dA
of size
(A.rows * B.cols)x(A.rows * A.cols)
and same type as A
.d(A*B)/dB
of size
(A.rows * B.cols)x(B.rows * B.cols)
and same type as A
.The function computes partial derivatives of the elements of the matrix
product A*B
with regard to the elements of each of the two input matrices.
The function is used to compute the Jacobian matrices in cv.stereoCalibrate
but can also be used in any other similar optimization function.


Before Change
// deactivated tasks
tasks_d = openml.tasks.list_tasks(task_type_id=1, status="deactivated")
tasks_d = pd.DataFrame.from_dict(tasks_d, orient="index")
tasks_d = tasks_d.query("evaluation_measures != evaluation_measures")
tasks_d = tasks_d[(tasks_d.estimation_procedure == "33% Holdout set")]
task_ids = []
for did in dataset_ids:
After Change
if len(task_a) > 1: // if there are more than one task, take the first one.
task_a = task_a[:1]
if len(task_d) > 1:
task_d = task_d[:1]
task_ids += list(task_a + task_d)
return task_ids // return list of all task ids.
def main():


Sprite Animator
Animate and control a basic sprite based on given frames, size and image.
Prev. Frame
Pause
Play
Next Frame
Toggle Slo-mo
Bert Maurau 2018
www.bertmaurau.be
Contact:
hello@bertmaurau.be


All About Blocks, Procs, and Lambdas in Ruby
So, what are blocks, procs, and lambdas and why should you care about them? To put it simply, they one of the coolest aspects of the Ruby language and they are the sole reason why we have the Enumerable class and it's really nifty methods like map which takes a list and a method and returns a new list where each item has been ran through the supplied method. Very cool. But, were getting ahead of ourselves. Before we can understand how cool methods like map work we fist need to define what a block is.
Blocks
A block in Ruby is any code enclosed by {}
or the keywords do end
. All blocks in Ruby are actually closures also called lambdas or procedures. A closure is a stored function with it's own internal variable scope and storage. So, they are like little programs within programs that can be passed into functions or returned by functions. So the title of this post is 'All About Blocks, Procs, and Lambdas in Ruby', but it could actually be shortened to just 'All About Blocks in Ruby'. The other keywords were added to the title because these terms are often used interchangeably and because despite there almost identical functionality there are slight differences between these three constructs in Ruby which will be discussed later. Let's look at a simple example.
Basically, what we are doing here is sending an anonymous block, the stuff between the curly braces, to the function mantra
which then runs that code by using the keyword yield
. The anonymous block requires a single parameter which is supplied by the yield
method's argument of 5. Now this is a trivial example, but it forms the basis for something like this.
We just created our own mapping function! Blocks can be really handy in getting rid of a lot of repetitive coding. For example, if you need to do testing where a piece of code is ran and then it's output or errors are formatted and printed you can simply wrap that code into a block and then send it to a testing function. If you want to send a query to a database and do error checking just wrap your query function within a block and send it to a database connecting function. The possibilities are endless. Now that we have covered block functionality lets go over a few notes about block syntax and a few gotchas.
Block Syntax
If you want to send arguments along with an anonymous block you can do this two different ways. If you use bracket notation to define a block the arguments must be put inside parenthesis. If you use do end
notation no parenthesis are required.
A block can also be sent to a function and stored in a parameter by using an &
before the last parameter name within the function header. Please note that this creates a procedure object which is then stored within that variable name and therefore you will have to use .call
instead of yield
.
So far we have only been creating procedures by sending anonymous blocks into functions and then using the &
syntax to convert these blocks into procedures. To create a procedure object and store a block of code inside it use the lambda
, proc
, or Proc.new
keywords.
Finally, bloc_given?
can be used within methods or functions to check and see if a block was submitted or not. This can be usefully when you want a method to have a default behavior which can subsequently be overwritten by a submitted block. This behavior is commonly seen with the sort method which will sort an array or object in ascending order, but it's behavior can be changed by submitting an anonymous block.
Block Gotchas
Always remember that variables defined in the main script are actually properties of an object from the Object class which all other classes are subclasses of. This means that every block can access and change any variable defined within the main script! If you use the variables passed into a block you are fine as these are locally defined, however, if you create any variables within a block and they just happen to be the same name as a variable in your main script you could accidentally change their values. If you are going to use variables that are not passed into a block define them within the block header using block local variable syntax which will make these declared variables local.
Basically, any variables listed after the semicolon and between the bars becomes a local variable within the block protecting any variable defined in the main body of the program which may have the same name.
You know how I said blocks, procs, and lambdas are all the same, well, not exactly. Blocks, procs, and lambdas are all closures, however, procs and lambdas are specifically instances of the Proc class and therefore not the same as blocks. Many methods, most notably enumerable methods, only take anonymous blocks. If you have a stored procedure that you would like to send to one of these methods use &
before the argument's name when sending it to the method. This basically does the opposite of an &
within a method header, it converts a procedure to a block.
Conclusion
So, to sum up blocks, procs, and lambdas in Ruby just remember that they are basically methods with their own variable scope and variable storage that can be passed into functions or be created by functions. This capability is what makes the Enumerable class possible and so much more. It is powerful stuff worth learning so play around with them in irb be creative and have fun!


Organizations are creating and storing more data than ever before and cloud computing is both accelerating and complicating that trend. In cloud environments, the storage infrastructure must respond with speed and agility to user requests. Data must be managed as a strategic asset to enable rapid decision-making and, as storage requirements grow, IT must enable simple provisioning, elastic scalability and increased capacity without a massive and expensive buildup in new hardware.
The other big cloud challenge is this: Even if your organization is using a public cloud service, the responsibility for the data cannot be fully offloaded, so you have to manage your data throughout its entire lifecycle. In building a storage infrastructure for the cloud, it is critical that organizations take advantage of advanced automation processes, including policy management, provisioning and tiering.
Converged storage has enabled CenterBeam, a cloud services provider based in San Jose, Ca., to improve storage throughput for its cloud customers and focus on strategic initiatives. "We’ve probably reduced the storage administration time of our chief architect by about 65%," says Shahin Pirooz, executive vice president, chief security officer and chief technology officer. "There’s more time for strategic initiatives on how to implement storage arrays for the cloud infrastructure."
A successful cloud storage solution will deliver scale-out block and file data services, backup, archiving and deduplication–all built from a common modular architecture on standardized platforms, as offered by HP Converged Storage. With HP’s advanced storage solutions as part of a converged infrastructure, you can overcome the limitations of storage silos by pooling resources for enhanced agility and reduced costs. Read on for details about how your storage infrastructure can best enable success in the cloud.
Read this white paper to learn how utility storage for virtual and cloud computing is the ideal way to meet the instant demands of your customers.View now
With this resource, garner a more complete understanding of what "tier-1" storage means, according to ESG, to be better prepared for the next-generation of data centers.View now
In this white paper, discover how one organization utilized an advanced virtual solution to build a private cloud, enabling them to rapidly access data in a cost-effective manner.
With this resource, garner a more complete understanding of what "tier-1" storage means, according to ESG, to be better prepared for the next-generation of data centers.
Read this resource for a thorough comparison of four HP 3PAR storage implementations to better gage the efficiency over legacy storage systems.


| Opcode/Instruction | Op /En | 64/32 bit Mode Support | CPUID Feature Flag | Description |
|---|---|---|---|---|
| F2 0F 58 /r ADDSD xmm1, xmm2/m64 | RM | V/V | SSE2 | Add the low double-precision floating-point value from xmm2/mem to xmm1 and store the result in xmm1. |
| VEX.NDS.128.F2.0F.WIG 58 /r VADDSD xmm1, xmm2, xmm3/m64 | RVM | V/V | AVX | Add the low double-precision floating-point value from xmm3/mem to xmm2 and store the result in xmm1. |
| EVEX.NDS.LIG.F2.0F.W1 58 /r VADDSD xmm1 {k1}{z}, xmm2, xmm3/m64{er} | T1S | V/V | AVX512F | Add the low double-precision floating-point value from xmm3/m64 to xmm2 and store the result in xmm1 with writemask k1. |
| Op/En | Operand 1 | Operand 2 | Operand 3 | Operand 4 |
| RM | ModRM:reg (r, w) | ModRM:r/m (r) | NA | NA |
| RVM | ModRM:reg (w) | VEX.vvvv | ModRM:r/m (r) | NA |
| T1S-RVM | ModRM:reg (w) | EVEX.vvvv | ModRM:r/m (r) | NA |
Adds the low double-precision floating-point values from the second source operand and the first source operand and stores the double-precision floating-point result in the destination operand.
The second source operand can be an XMM register or a 64-bit memory location. The first source and destination operands are XMM registers.
128-bit Legacy SSE version: The first source and destination operands are the same. Bits (MAX_VL-1:64) of the corresponding destination register remain unchanged.
EVEX and VEX.128 encoded version: The first source operand is encoded by EVEX.vvvv/VEX.vvvv. Bits (127:64) of the XMM register destination are copied from corresponding bits in the first source operand. Bits (MAX_VL-1:128) of the destination register are zeroed.
EVEX version: The low quadword element of the destination is updated according to the writemask.
Software should ensure VADDSD is encoded with VEX.L=0. Encoding VADDSD with VEX.L=1 may encounter unpredictable behavior across different processor generations.
VADDSD (EVEX encoded version)
IF (EVEX.b = 1) AND SRC2 *is a register* THEN SET_RM(EVEX.RC); ELSE SET_RM(MXCSR.RM); FI; IF k1[0] or *no writemask* THEN DEST[63:0] (cid:197) SRC1[63:0] + SRC2[63:0] ELSE IF *merging-masking* ; merging-masking THEN *DEST[63:0] remains unchanged* ELSE ; zeroing-masking THEN DEST[63:0] (cid:197) 0 FI; FI; DEST[127:64] (cid:197) SRC1[127:64] DEST[MAX_VL-1:128] (cid:197) 0
VADDSD (VEX.128 encoded version)
DEST[63:0] (cid:197)SRC1[63:0] + SRC2[63:0] DEST[127:64] (cid:197)SRC1[127:64] DEST[MAX_VL-1:128] (cid:197)0
ADDSD (128-bit Legacy SSE version)
DEST[63:0] (cid:197)DEST[63:0] + SRC[63:0] DEST[MAX_VL-1:64] (Unmodified)
VADDSD __m128d _mm_mask_add_sd (__m128d s, __mmask8 k, __m128d a, __m128d b);
VADDSD __m128d _mm_maskz_add_sd (__mmask8 k, __m128d a, __m128d b);
VADDSD __m128d _mm_add_round_sd (__m128d a, __m128d b, int);
VADDSD __m128d _mm_mask_add_round_sd (__m128d s, __mmask8 k, __m128d a, __m128d b, int);
VADDSD __m128d _mm_maskz_add_round_sd (__mmask8 k, __m128d a, __m128d b, int);
ADDSD __m128d _mm_add_sd (__m128d a, __m128d b);
Overflow, Underflow, Invalid, Precision, Denormal
| VEX-encoded instruction, see Exceptions Type 3. |
| EVEX-encoded instruction, see Exceptions Type E3. |


I am a software developer originally from Hartland, VT. I graduated from Northeastern University in 2011 with a B.S. in Computer Science. I currently reside in Boston, MA. My professional experience is primarily in Java and Python, but I am passionate about learning new technologies and languages. During my free time, I enjoy photography, hiking, and gaming.