vignettes/03interactive.Rmd
03interactive.Rmd
This tutorial demonstrates the major functions used within the Shiny application provided by the nprcgenekeepr package and provides sufficient insight into those functions that they may be used independently.
This tutorial is primarily directed toward someone with experience using R who wants to better understand how the Shiny application works or to perform some actions not directly supported by the Shiny application.
Please provide any comments, questions, or bug reports through the GitHub issue tracker at .
You can install nprcgenekeepr from GitHub with the following code.
install.packages("devtools") devtools::install_github("rmsharp/nprcgenekeepr")
All missing dependencies should be automatically installed.
You can get help from the R console with
?nprcgenekeepr
The help provided by this (nprcgenekeepr.R) needs to be more complete and include links to the tutorials.
A pedigrees can be imported using either Excel worksheets or text files that contain all of the pedigree information or using either Excel worksheets or text files that contain a list of focal animals with the remainder of the pedigree information is pulled in through the LabKey API.
This tutorial will use a pedigree file that can be created using the makeExamplePedigreeFile function as shown below. The function makeExamplePedigreeFile both saves a file and returns the full path name to the saved file, which we are saving into the variable pedigreeFile. Note: the user will select where to store the file.
library(nprcgenekeepr) pedigreeFile <- makeExamplePedigreeFile()
This writes ExamplePedigree.csv to a place you select within your file system.
You use the file name provided by the makeExamplePedigreeFile function to tell read.table what file to read.
breederPedCsv <- read.table(pedigreeFile, sep = ",", header = TRUE, stringsAsFactors = FALSE)
Note the number of rows read. Each row represents an individual within the pedigree.
nrow(breederPedCsv)
## [1] 3694
The next step is to put the information read from the file into a pedigree object. This is done with the qcStudbook function, which examines the file contents and tests for common pedigree errors.
You can see the errors that can be detected by qcStudbook by returning the empty error list with getEmptyErrorLst(). We are not showing the output of the function call now because later in this tutorial we will explore errors in more depth.
qcStudbook can take four arguments sb, minParentAge (in years), reportChanges, and reportErrors. However, all but sb have default values and only the sb argument is required.
It is prudent to ensure that parents are at least of breeding age, which is species specific. I have used a minParentAge of 2 years.1
breederPed <- qcStudbook(breederPedCsv, minParentAge = 2)
If qcStudbook reports an error, change the call by adding the reportErrors argument set to TRUE and examine the returned object. More on this is presented in the Pedigree Errors section.
You may want to focus your work on a focal group of animals. This can be done by reading in a list of animal IDs that make up the focal group and use that list to update the pedigree. Alternatively you can created a list of animal IDs based on criteria you have selected.
For example, to select living animals at the facility with at least one parent, the following can be used.
focalAnimals <- breederPed$id[!(is.na(breederPed$sire) & is.na(breederPed$dam)) & is.na(breederPed$exit)] print(stri_c("There are ", length(focalAnimals), " animals in the vector _focalAnimals_."))
[1] “There are 327 animals in the vector focalAnimals.”
As can be seen, these animals have at least one parent and have not left the facility.
breederPed[breederPed$id %in% focalAnimals, c("id", "sire", "dam", "exit")][1:10, ]
## id sire dam exit
## 1669 01QRQ4 VDBGDP TH7HTY <NA>
## 1743 CLSVU6 ULV9M7 SUFWJI <NA>
## 1887 1SPLS8 U9APLW 142GKP <NA>
## 1934 5IAFMK U4YSS5 WVE6Y4 <NA>
## 2072 HLQ9SY UI3RFL VEWC1E <NA>
## 2234 XFWVVX U3MFSZ L4LM1F <NA>
## 2337 6X6BG9 ENI6HX IUF0HC <NA>
## 2377 B228Q6 UEUIRJ CBSIAA <NA>
## 2378 B2CKHA ENI6HX WBFBR5 <NA>
## 2383 BCJJKN UA379T JPVAT3 <NA>
We indicate that these are the animals of interest by using the setPopulation function. This function simply sets a column named population2 to the logical value of TRUE if the row represents an animal in the list and FALSE otherwise.
The first line of code below sets the population column and the second counts the number of rows where the value was set to TRUE.
breederPed <- setPopulation(ped = breederPed, ids = focalAnimals) nrow(breederPed[breederPed$population, ])
## [1] 327
The IDs used to populate the population flag can be used to trim the pedigree so that it contains only those individuals who are in the ID list or are ancestors of those individuals.
trimmedPed <- trimPedigree(focalAnimals, breederPed) nrow(breederPed); nrow(trimmedPed)
## [1] 3694
## [1] 704
The trimPedigree function has the ability to remove those ancestors that do not contribute genetic information. Uninformative founders are those individuals who are parents of only one individual and who have no parental information. (Currently genotypic information is ignored by trimPedigree).
trimmedPedInformative <- trimPedigree(focalAnimals, breederPed, removeUninformative = TRUE) nrow(trimmedPedInformative)
## [1] 509
We can find all of the animals that are in the trimmed pedigree but are not focal animals.
nonfocalInTrimmedPed <- trimmedPed$id[!trimmedPed$id %in% focalAnimals] length(nonfocalInTrimmedPed)
## [1] 377
We can see which of these 377 are and are not parents. We will first make sure we have all of the parents by getting our list of parents from the entire pedigree. We then demonstrate that they are all in the trimmed pedigree.
allFocalParents <- c(breederPed$sire[breederPed$id %in% focalAnimals], breederPed$dam[breederPed$id %in% focalAnimals]) trimmedFocalParents <- c(trimmedPed$sire[trimmedPed$id %in% focalAnimals], trimmedPed$dam[trimmedPed$id %in% focalAnimals]) all.equal(allFocalParents, trimmedFocalParents) # Are the IDs the same?
## [1] TRUE
However, not all of the animals in the trimmed pedigree are either the focal animals or their parents. They are more distant ancestors as we will show.
notFocalNotParent <- trimmedPed$id[!trimmedPed$id %in% c(focalAnimals, allFocalParents)] length(notFocalNotParent)
## [1] 187
Since the trimming process is supposed to retain the focal animals and their ancestors, we will leave it as an exercise for you to demonstrate that at least some of the remaining animals are grandparents of the focal animals. Hint: there are 490 grandparents in both the trimmed and the complete pedigree.
As you can see from the number of rows in the full pedigree (3694) versus the trimmed pedigree (704), trimmed pedigrees can be much smaller. Of the additional 377 animals, 182 provide genetic information while the others (195) are genetically uninformative.
As is shown below only 4 (0ZX29Q, 1QBKW9, 5PWJ0G, and Y3CJ5A) living animals are still in the colony but are not in the trimmed pedigree.3
unknownBirth <- breederPed$id[is.na(breederPed$birth)] knownExit <- breederPed$id[ !is.na(breederPed$exit)] unknownBirthKnownExit <- breederPed$id[is.na(breederPed$birth) | !is.na(breederPed$exit)] knownPed <- breederPed[!breederPed$id %in% unknownBirthKnownExit, ] otherIds <- knownPed$id[!knownPed$id %in% trimmedPed$id[is.na(trimmedPed$exit)]] print(stri_c("The living animal in the pedigree that are not in the trimmed ", "pedigree are ", get_and_or_list(otherIds), "."))
[1] “The living animal in the pedigree that are not in the trimmed pedigree are 0ZX29Q, 1QBKW9, 5PWJ0G, and Y3CJ5A.”
You can examine the population structure using an age-sex pyramid plot with a single function. We will limit our view to just the focal animals and their living relatives. This is appropriate for colony management because in addition to the genetic diversity we seek, we have to remain cognizant of the age and sex distributions within the colonies we manage.
getPyramidPlot(ped = trimmedPed[is.na(trimmedPed$exit), ])
## [1] 5.1 4.1 4.1 2.1
Your genetic value analysis must be carefully performed. The next three commands set up the entire pedigree for analysis. The first of these three commands set all of the pedigree members to be part of the population of interest by setting the population column to TRUE for all individuals.
ped <- setPopulation(breederPed, NULL)
Note that a new pedigree object (ped) is being created.
probands <- ped$id[ped$population] ped <- trimPedigree(probands, ped, removeUninformative = FALSE, addBackParents = FALSE)
The arguments to reportGV are all optional except for ped, but you may often want to non-default values.
ped Pedigree information in data.frame format
guIter Integer indicating the number of iterations for the gene-drop analysis. Default is 5000 iterations
guThresh Integer indicating the threshold number of animals for defining a unique allele. Default considers an allele “unique” if it is found in only 1 animal.
pop Character vector with animal IDs to consider as the population of interest. The default is NULL.
byID Logical variable of length 1 that is passed through to eventually be used by alleleFreq(), which calculates the count of each allele in the provided vector. If byID is TRUE and ids are provided, the function will only count the unique alleles for an individual (homozygous alleles will be counted as 1).
geneticValue <- reportGV(ped, guIter = 500, guThresh = 3, byID = TRUE, updateProgress = NULL) summary(geneticValue)
## The genetic value report
## Individuals in Pedigree: 3694
## Male Founders: 141
## Female Founders: 122
## Total Founders: 263
## Founder Equivalents: 241.84
## Founder Genome Equivalents: 163.84
## Live Offspring: 4052
## High Value Individuals: 2961
## Low Value Individuals: 733
What happens if we limit our analysis to the trimmed pedigree? Remember that the trimmed pedigree still contains all of the genetic information that the full pedigree has for the focal animals.
trimmedGeneticValue <- reportGV(trimmedPed, guIter = 500, guThresh = 3, byID = TRUE, updateProgress = NULL) summary(trimmedGeneticValue)
## The genetic value report
## Individuals in Pedigree: 327
## Male Founders: 3
## Female Founders: 17
## Total Founders: 20
## Founder Equivalents: 109.67
## Founder Genome Equivalents: 47.87
## Live Offspring: 321
## High Value Individuals: 228
## Low Value Individuals: 99
It is clear that limiting your analysis to the animals of interest reduces the effort required to examine the animals of interest.
The names of the object within the genetic value report object (trimmedGeneticValue) can be listed as shown in the next line of code.
names(trimmedGeneticValue)
## [1] "report" "kinship" "gu" "fe"
## [5] "fg" "maleFounders" "femaleFounders" "nMaleFounders"
## [9] "nFemaleFounders" "total"
The report object (an R dataframe) can in-turn be examined.
names(trimmedGeneticValue$report) ## column names
## [1] "id" "sex" "age" "birth"
## [5] "exit" "population" "origin" "indivMeanKin"
## [9] "zScores" "gu" "totalOffspring" "livingOffspring"
## [13] "value" "rank"
nrow(trimmedGeneticValue$report) ## Number of rows
## [1] 327
The report is more conveniently used as a separate object. The next section of code rounds some of the numerical values and converts all columns to characters for display as a table where only the first 10 lines are included.
rpt <- trimmedGeneticValue[["report"]] rpt$indivMeanKin <- round(rpt$indivMeanKin, 5) rpt$zScores <- round(rpt$zScores, 2) rpt$gu <- round(rpt$gu, 5) rpt <- toCharacter(rpt) names(rpt) <- headerDisplayNames(names(rpt)) knitr::kable(rpt[1:10, ]) # needs more work for display purposes.
| Ego ID | Sex | Age (in years) | Birth Date | Exit Date | Breeding Colony Member | Origin | Individual Mean Kinship | Z-score (Mean Kinship) | Genome Uniqueness (%) | Total Offspring | Living Offspring | Value Designation | Rank |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| KZM9RB | M | 30.1 | 1989-05-03 | NA | TRUE | 0.00329 | -1.90 | 89.1 | 0 | 0 | High Value | 1 | |
| CLSVU6 | F | 23.9 | 1995-08-02 | NA | TRUE | 0.00287 | -1.97 | 86.7 | 1 | 1 | High Value | 2 | |
| 1SPLS8 | F | 7.9 | 2011-07-26 | NA | TRUE | 0.00373 | -1.83 | 81.9 | 0 | 0 | High Value | 3 | |
| WK89I9 | F | 21.1 | 1998-05-26 | NA | TRUE | 0.00582 | -1.49 | 76.2 | 0 | 0 | High Value | 4 | |
| 3MMZD4 | M | 12.2 | 2007-03-24 | NA | TRUE | 0.00536 | -1.57 | 74.2 | 0 | 0 | High Value | 5 | |
| 01QRQ4 | F | 18.2 | 2001-04-04 | NA | TRUE | 0.00373 | -1.83 | 72.8 | 0 | 0 | High Value | 6 | |
| IZDV8K | M | 7.7 | 2011-09-29 | NA | TRUE | 0.00480 | -1.66 | 72.6 | 0 | 0 | High Value | 7 | |
| 8YP6PA | M | 5.0 | 2014-07-04 | NA | TRUE | 0.00485 | -1.65 | 71.7 | 0 | 0 | High Value | 8 | |
| CHK1ZX | F | 7.8 | 2011-09-06 | NA | TRUE | 0.00481 | -1.66 | 69.0 | 0 | 0 | High Value | 9 | |
| A6A1M1 | M | 20.0 | 1999-06-08 | NA | TRUE | 0.00577 | -1.50 | 68.9 | 2 | 1 | High Value | 10 |
We start the next lines of code by getting a fresh copy of the genetic value report since we changed all of the numeric values to characters in the last section to print the table. These lines demonstrate one way of extracting the component objects from the genetic value object.
rpt <- trimmedGeneticValue[["report"]] kmat <- trimmedGeneticValue[["kinship"]] f <- trimmedGeneticValue[["total"]] mf <- trimmedGeneticValue[["maleFounders"]] ff <- trimmedGeneticValue[["femaleFounders"]] nmf <- trimmedGeneticValue[["nMaleFounders"]] nff <- trimmedGeneticValue[["nFemaleFounders"]] fe <- trimmedGeneticValue[["fe"]] fg <- trimmedGeneticValue[["fg"]]
It is informative to examine the distribution of genetic uniqueness, mean kinship, and z-scores (normalized mean kinship values).
Creation of the boxplot for the genetic uniqueness values is shown below.
gu <- rpt[, "gu"] guBox <- ggplot(data.frame(gu = gu), aes(x = "", y = gu)) + geom_boxplot( color = "darkblue", fill = "lightblue", notch = TRUE, outlier.color = "red", outlier.shape = 1 ) + theme_classic() + geom_jitter(width = 0.2) + coord_flip() + ylab("Score") + ggtitle("Genetic Uniqueness") print(guBox)
Extraction of the individual mean kinship values and their corresponding z-scores is shown in the next code chunk.
mk <- rpt[, "indivMeanKin"] zs <- rpt[, "zScores"]
Creation of boxplots for the mean kinship and z-scores is left as an exercise.
The primary purpose of nprcgenekeepr is to form breeding groups according to our best information regarding maintaining the genetic characteristics we desire and the realities associated with other animal husbandry needs.
There are several options you must consider when forming groups using nprcgenekeepr, which we will examine using code below.
You decisions regarding each of the above options are expressed in a call to the function groupAddAssign. A complete description of the function and its arguments is available using the code shown below.
?groupAddAssign
Below is the descriptions of the function parameters extracted from the documentation near the time this tutorial was prepared.
candidates Character vector of IDs of the animals available for use in forming the groups. The animals that may be present in currentGroups are not included within candidates.
currentGroups List of character vectors of IDs of animals currently assigned to groups. Defaults to a list with character(0) in each sub-list element (one for each group being formed) assuming no groups are pre-populated.
kmat Numeric matrix of pairwise kinship values. Rows and columns are named with animal IDs.
ped Dataframe that is the ‘Pedigree’. It contains pedigree information including the IDs listed in candidates.
threshold Numeric value indicating the minimum kinship level to be considered in group formation. Pairwise kinship below this level will be ignored. The default values is 0.015625.
ignore List of character vectors representing the sex combinations to be ignored. If provided, the vectors in the list specify if pairwise kinship should be ignored between certain sexes. Default is to ignore all pairwise kinship between females.
minAge Integer value indicating the minimum age to consider in group formation. Pairwise kinships involving an animal of this age or younger will be ignored. Default is 1 year.
iter Integer indicating the number of times to perform the random group formation process. Default value is 1000 iterations.
numGp Integer value indicating the number of groups that should be formed from the list of IDs. Default is 1.
updateProgress Function or NULL. If this function is defined, it will be called during each iteration to update a shiny::Progress object.
harem Logical variable when set to TRUE, the formed groups have a single male at least minAge old.
sexRatio Numeric value indicating the ratio of females to males x from 0.5 to 20 by increments of 0.5.
withKin Logical variable when set to TRUE, the kinship matrix for the group is returned along with the group and score. Defaults to not return the kinship matrix. This maintains compatibility with earlier versions.
We will use the trimmedPed pedigree in our code.
For illustration purposes we are going to keep the numbers of candidates, groups, and iterations fairly small.
We will get first some animal IDs to use for our candidates by selecting animals at least 2 years old at the time this pedigree was sampled (01-01-2015).
candidates <- trimmedPed$id[trimmedPed$birth < as.Date("2013-01-01") & !is.na(trimmedPed$birth) & is.na(trimmedPed$exit)] table(trimmedPed$sex[trimmedPed$id %in% candidates])
##
## F M H U
## 184 96 0 0
Our candidates are made up of 184 females and 96 males. The parameters currentGroups, threshold, ignore, minAge, sexRatio, withKin, and updateProgress are allowed to take their default values. The setting of the sexRatio parameter to 0 is ignored in the following call of the groupAddAssign function. This is consistent with the a value of 0 making little since in a breeding colony.
The empty seventh group at the bottom is evidence that all of the candidate animals could be placed in a group without exceeding the default value of 0.015625.
The following group assignments will be forming harem groups. This is done by setting harem to
haremGrp <- groupAddAssign(candidates = candidates, kmat = trimmedGeneticValue[["kinship"]], ped = trimmedPed, iter = 100, numGp = 6, harem = TRUE) haremGrp$group
## [[1]]
## [1] "CHSCFG" "B1WVCN" "72LYDE" "13B1QL" "WI38KZ" "AIHJ8Z" "EMV4P6" "I5CI33"
## [9] "FB5L3N" "30J3CQ" "TEACA3" "7B9CA6" "0IIAEN" "BCJJKN" "0X4W26" "JLFKV8"
## [17] "DKIM6U" "GTLA8R" "SH3FB7" "1CZM30" "Q7U139" "DCJJYS" "0SGJ12" "G25E3F"
## [25] "QW2Z3R" "SHG3RB" "3SKITJ" "W0GUKI" "T3QPW5" "6F9FB8"
##
## [[2]]
## [1] "3QHAFI" "1GF3GM" "87AQLF" "N5QBWD" "9P0DES" "3YJIMV" "WJXIH9" "W6MDVK"
## [9] "83HQBN" "S7IWWA" "S222R3" "Q17CG3" "RJ4JPC" "HE0SCR" "W5WIRP" "5EDLL7"
## [17] "QQMBT1" "1SPLS8" "E5Q33K" "QRZK48" "PU7RSG" "GIIEUD" "LVYYNY" "38K2SR"
## [25] "MX4J7G" "6KWVRI" "WKY2SZ" "K3TNHP" "ZPS15A"
##
## [[3]]
## [1] "8TV4MT" "CHK1ZX" "N79QXB" "0XTZQ1" "50D77I" "5W621W" "YLRNIK" "1SSCJC"
## [9] "5BPBUI" "MYUMMX" "KX0RJ3" "7ZNY75" "S056D5" "D9P18Y" "NK802Y" "AW400C"
## [17] "XEC0M5" "TXZUKC" "N4NV8B" "C18V6I" "R5AYJK" "M9PVG5" "AR5U44" "WTE53B"
## [25] "B134XZ" "CLSVU6" "AP1YLW" "ZH3YG1" "X694YR" "VWC5ZH" "F7I2ED" "3GECJJ"
## [33] "B228Q6"
##
## [[4]]
## [1] "YDRD81" "MKY9TK" "01QRQ4" "LYSLPP" "QWKFBH" "Y6DB6L" "G58RGY" "7NE2UT"
## [9] "CRPXY7" "DRXMW4" "MTCAIG" "Z904TJ" "5IAFMK" "DPXEQE" "MH88T6" "EZ2F8A"
## [17] "967Y3D" "AR17R5" "DH9WJQ" "BS3RLE" "99BMJW" "CMMUKU" "D4B0RM" "DHNQ1W"
## [25] "XFWVVX" "YTJ2UL" "321LLB" "PYPM1W" "2F6J3U" "Y0TCYX" "ILVQVB" "MB6NYQ"
## [33] "FL170P" "FG0SFA" "KZY6PD"
##
## [[5]]
## [1] "IZDV8K" "1VP3UC" "6X6BG9" "D33J06" "IH1KPA" "WK89I9" "PBAFJF" "PI4VHT"
## [9] "QCENKM" "TQEMY6" "1FAZ0K" "J3F6PD" "1QVS67" "NN3GDQ" "1KJ2MG" "8JUUJ9"
## [17] "DI4AHD" "KEA4QG" "1CIRC9" "MFKT9C" "AZ3L0D" "LS184H" "PJ72W1" "92UG4N"
## [25] "SCFSBF" "I8ABC7" "GCBYDW" "Q8U9LB" "XYRDKV"
##
## [[6]]
## [1] "A98D7P" "7RA57Q" "EX5K0S" "YFCIHJ" "WLMGS1" "2Z4YLY" "465ERA" "5KWNMZ"
## [9] "H2J6UA" "S5H1GC" "F45799" "0HYZ23" "AFZKBS" "S3EBGZ" "5ERY5Z" "MPIQ4N"
## [17] "GAS52W" "QCA36T" "9MG040" "ZQXZYB" "WNEAS6" "ZATMEE" "TYEWF1" "46ZHKN"
## [25] "BKWE4D" "FJS7RQ" "ESUIAF" "CS23RV" "5EDIEE" "3DTD2N" "RVHVTZ" "414N7M"
## [33] "PVY432" "G8MCV7"
##
## [[7]]
## [1] NA
We can identify and list the males in each group with the following code.
sapply(haremGrp$group, function(ids) {ids[ids %in% trimmedPed$id[trimmedPed$sex == "M"]]})
## [[1]]
## [1] "CHSCFG"
##
## [[2]]
## [1] "3QHAFI"
##
## [[3]]
## [1] "8TV4MT"
##
## [[4]]
## [1] "YDRD81"
##
## [[5]]
## [1] "IZDV8K"
##
## [[6]]
## [1] "A98D7P"
##
## [[7]]
## logical(0)
It is easy to notice that the male is listed first within each breeding group.
We can also see the number of animals and the sex ratios created in each group. Since these are harem groups the sex ratios are determined by the number of animals in the individual groups.
lines <- sapply(haremGrp$group, function(ids) { paste0("Count: ", length(ids), " Sex Ratio: ", round(calculateSexRatio(ids, trimmedPed), 2))}) for (line in lines) print(line)
## [1] "Count: 30 Sex Ratio: 29"
## [1] "Count: 29 Sex Ratio: 28"
## [1] "Count: 33 Sex Ratio: 32"
## [1] "Count: 35 Sex Ratio: 34"
## [1] "Count: 29 Sex Ratio: 28"
## [1] "Count: 34 Sex Ratio: 33"
## [1] "Count: 1 Sex Ratio: Inf"
Examination of this table shows that of the 184 females 155 are included.
The following group assignments will be forming harem groups.
As stated earlier you can see which types of errors are detected by qcStudbook by looking at names returned by getEmptyErrorLst() as shown below.
## [1] "failedDatabaseConnection" "missingColumns"
## [3] "invalidDateRows" "suspiciousParents"
## [5] "femaleSires" "maleDams"
## [7] "sireAndDam" "duplicateIds"
## [9] "fatalError" "changedCols"
Each is defined below.
| Error | Definition |
|---|---|
| failedDatabaseConnection | Database connection failed: configuration or permissions are invalid |
| missingColumns | Columns that must be within the pedigree file are missing. |
| invalidDateRows | Values, which are supposed to be dates, cannot be interpreted as a date. |
| suspiciousParents | Parents were too young on the date of birth of to have been the parent. |
| femaleSires | Individuals listed as female or hermaphroditic and as a sire. |
| maleDams | Individuals are listed as male and as a dam. |
| sireAndDam | Individuals who are listed as both a sire and a dam. |
| duplicateIds | IDs listed more than once. |
| fatalError | Fatal Errors. |
| changedCols | Columns that have been changed to conform to internal naming conventions and what they were changed to. |
We are going to use the small imaginary pedigree listed below that has multiple errors to discuss pedigree error detection and reporting. First note the birth dates of ego_id o4 (2006-04-13) and the purported sire s2 (2006-06-19). Note also the purported birth date of the d2 and the birth dates of her offspring. Obviously dates or IDs may be incorrect.
This is the pedigree. (We will discuss the column names shortly.)
| ego_id | si re | dam_id | sex | birth_date |
|---|---|---|---|---|
| s1 | NA | NA | F | 2000-07-18 |
| d1 | NA | NA | M | 2003-04-13 |
| s2 | NA | NA | M | 2006-06-19 |
| d2 | NA | NA | F | 2015-09-16 |
| o1 | s1 | d1 | F | 2015-02-04 |
| o2 | s1 | d2 | F | 2009-03-17 |
| o3 | s2 | d2 | F | 2012-04-11 |
| o4 | s2 | d2 | M | 2006-04-13 |
If we try to convert this pedigree file into the standardized studbook format, we are going to get an error message and the creation of a file in the R sessions temporary directory that lists the records that have generated the errors.
pedOne <- nprcgenekeepr::pedOne # put it in the local environment ped <- qcStudbook(pedOne, minParentAge = 0)
## Error in qcStudbook(pedOne, minParentAge = 0): Parents with low age at birth of offspring are listed in /var/folders/y3/5z1skj6s5tq0pktmsq6x80v80000gn/T//RtmpO6DGZe/lowParentAge.csv.
The contents of lowParentAge.csv is shown below.
| dam | sire | id | sex | birth | recordStatus | exit | sireBirth | damBirth | sireAge | damAge |
|---|---|---|---|---|---|---|---|---|---|---|
| d2 | s1 | o2 | F | 2009-03-17 | original | NA | 2000-07-18 | 2015-09-16 | 8.66 | -6.50 |
| d2 | s2 | o3 | F | 2012-04-11 | original | NA | 2006-06-19 | 2015-09-16 | 5.81 | -3.43 |
| d2 | s2 | o4 | M | 2006-04-13 | original | NA | 2006-06-19 | 2015-09-16 | -0.18 | -9.43 |
Examination of the ages of the parents reveals the issues being reported.
We can remove the errors by changing the birth dates of o4 from 2006-04-13 to 2015-09-16 and of d2 from 2015-09-16 to 2006-04-13.
pedOne$birth_date[pedOne$ego_id == "o4"] <- as.Date("2015-09-16") pedOne$birth_date[pedOne$ego_id == "d2"] <- as.Date("2006-04-13")
Note the changes made to the column names between the original pedOne pedigree and the pedigree (ped) we get from qcStudbook. We have chosen to limit the displayed pedigree by selecting the ego_id’s and id’s in pedOne and ped respectively.
ped <- qcStudbook(pedOne, minParentAge = 0) ped[ped$id %in% c("s2", "d2", "o3", "o4"), ]
## id sire dam sex gen birth exit age recordStatus
## 2 d2 <NA> <NA> F 0 2006-04-13 <NA> 14.0 original
## 4 s2 <NA> <NA> M 0 2006-06-19 <NA> 13.8 original
## 7 o3 s2 d2 F 1 2012-04-11 <NA> 8.0 original
## 8 o4 s2 d2 M 1 2015-09-16 <NA> 4.6 original
However, the preferred method of creating the standardized studbook format with qcStudbook is to examine all errors found and correcting them before proceeding. This is done by explicitly requesting that all aspects inconsistent with the studbook format be identified by setting reportChanges and reportErrors to .
errorList <- qcStudbook(pedOne, minParentAge = 0, reportChanges = TRUE, reportErrors = TRUE) summary(errorList)
## Error: The animal listed as a sire and also listed as a female is: s1.
## Error: The animal listed as a dam and also listed as a male is: d1.
## Change: The column where space was removed is: si re to sire.
## Change: The columns where underscore was removed are: ego_id, dam_id, and birth_date to egoid, damid, and birthdate.
## Change: The column changed from: egoid to id.
## Change: The column changed from: damid to dam.
## Change: The column changed from: birthdate to birth.
##
## Please check and correct the pedigree file.
##
We will discuss each of these newly identified errors in a moment, however, let’s look at shortening this report, because often you will not be interested in the more trivial changes to the column names made by qcStudbook and in those cases you simply choose not to report changes to the column names as is shown here by setting reportChanges to . For this illustration, we are going to bring back the original copy of pedOne to see how the suspicious parents are reported by the summary function.
pedOne <- nprcgenekeepr::pedOne errorList <- qcStudbook(pedOne, minParentAge = 0, reportChanges = FALSE, reportErrors = TRUE) options(width = 90) summary(errorList)
## Error: The animal listed as a sire and also listed as a female is: s1.
## Error: The animal listed as a dam and also listed as a male is: d1.
##
## Please check and correct the pedigree file.
##
## Animal records where parent records are suspicous because of dates.
## One or more parents appear too young at time of birth.
## dam sire id sex birth recordStatus exit sireBirth damBirth sireAge damAge
## 2 d2 s1 o2 F 2009-03-17 original <NA> 2000-07-18 2015-09-16 8.66 -6.5
## 3 d2 s2 o3 F 2012-04-11 original <NA> 2006-06-19 2015-09-16 5.81 -3.4
## 4 d2 s2 o4 M 2006-04-13 original <NA> 2006-06-19 2015-09-16 -0.18 -9.4
The first two errors mentioned are of particular interest. Currently qcStudbook automatically changes the sex of dams to F (female) and sires to M (male) when reportErrors is set to .
This feature is not supported within the Shiny application and is not fully implemented.
To use the findLoops function run the following code and select a pedigree as your input file that has a loop in it. We are continuing to use the example pedigree that comes with the software Example_Pedigree.csv.
exampleTree <- createPedTree(breederPed) exampleLoops <- findLoops(exampleTree)
You can count how many loops you have with the following code.
length(exampleLoops[exampleLoops == TRUE])
## [1] 145
nLoops <- countLoops(exampleLoops, exampleTree) sum(unlist(nLoops[nLoops > 0]))
## [1] 258
You can list the first 10 sets of ids, sires and dams in loops with the following line of code:
examplePedigree[exampleLoops == TRUE, c("id", "sire", "dam")][1:10, ]
## id sire dam
## 2519 V49H3Y UFI88T 9T7Y2Z
## 2572 61FUGE UDQ5WC GL88CF
## 2695 LWJ3A5 KZM9RB GCBYDW
## 2722 RNQU14 H2RDE2 DKIM6U
## 2752 L9M1DC 3PU50K WFQENR
## 2755 Q8U9LB 3PU50K CLSVU6
## 2905 FVJ14K UXC40T L5VC2M
## 2922 531HAC UMV4BE 5DIPZN
## 2924 85ESBB UQFY9C Q2RK1E
## 2941 0VLW56 6KPKH7 MMEHXV
elapsed_time <- get_elapsed_time_str(start_time)
The current date and time is 2020-04-13 01:09:52. The processing time for this document was 2 minutes and 46 seconds..
## R version 3.6.3 (2020-02-29)
## Platform: x86_64-apple-darwin15.6.0 (64-bit)
## Running under: macOS Catalina 10.15.3
##
## Matrix products: default
## BLAS: /Library/Frameworks/R.framework/Versions/3.6/Resources/lib/libRblas.0.dylib
## LAPACK: /Library/Frameworks/R.framework/Versions/3.6/Resources/lib/libRlapack.dylib
##
## locale:
## [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
##
## attached base packages:
## [1] stats graphics grDevices utils datasets methods base
##
## other attached packages:
## [1] kableExtra_1.1.0 png_0.1-7 knitr_1.28
## [4] ggplot2_3.3.0 nprcgenekeepr_<IP_ADDRESS>12 stringi_1.4.6
##
## loaded via a namespace (and not attached):
## [1] httr_1.4.1 jsonlite_1.6.1 viridisLite_0.3.0 shiny_<IP_ADDRESS>
## [5] assertthat_0.2.1 highr_0.8 cellranger_1.1.0 yaml_2.2.1
## [9] pillar_1.4.3 backports_1.1.6 lattice_0.20-41 glue_1.4.0
## [13] digest_0.6.25 promises_1.1.0 checkmate_2.0.0 rvest_0.3.5
## [17] colorspace_1.4-1 htmltools_0.4.0 httpuv_1.5.2 Matrix_1.2-18
## [21] WriteXLS_5.0.0 pkgconfig_2.0.3 purrr_0.3.3 xtable_1.8-4
## [25] scales_1.1.0 webshot_0.5.2 later_1.0.0 htmlTable_1.13.3
## [29] tibble_3.0.0 farver_2.0.3 generics_0.0.2 ellipsis_0.3.0
## [33] withr_2.1.2 cli_2.0.2 magrittr_1.5 crayon_1.3.4
## [37] readxl_1.3.1 mime_0.9 memoise_1.1.0 evaluate_0.14
## [41] fs_1.4.1 fansi_0.4.1 MASS_7.3-51.5 anytime_0.3.7
## [45] xml2_1.3.1 tools_3.6.3 hms_0.5.3 Rlabkey_2.4.0
## [49] formatR_1.7 lifecycle_0.2.0 stringr_1.4.0 munsell_0.5.0
## [53] plotrix_3.7-7 lambda.r_1.2.4 compiler_3.6.3 pkgdown_1.5.0
## [57] rlang_0.4.5 futile.logger_1.4.3 grid_3.6.3 rstudioapi_0.11
## [61] htmlwidgets_1.5.1 labeling_0.3 rmarkdown_2.1 gtable_0.3.0
## [65] codetools_0.2-16 R6_2.4.1 lubridate_1.7.8 dplyr_0.8.5
## [69] fastmap_1.0.1 rprojroot_1.3-2 futile.options_1.0.1 readr_1.3.1
## [73] desc_1.2.0 Rcpp_1.0.4 vctrs_0.2.4 tidyselect_1.0.0
## [77] xfun_0.12
Setting the minParentAge to 3.5 and above will cause an error along with the creation of a file ~/lowParentAge.csv that will list the parents with low age at the birth of an offspring.↩
The population column is created and added to the pedigree object if it does not already exist.↩
All animals within the colony have a known birth date.↩


Getting the Job Done with Medium Data
Peter Wiringa
MGIS Student
U-Spatial Research Assistant
<EMAIL_ADDRESS>Big data
- “I have big data”
- “I have a big data problem”
- “I have <size> data and a <complexity> problem”
Let’s not overstate it
- It’s probably small or medium data
- You may, however, have a complex problem
“Medium data” defined
- Definitions vary; be flexible
- “…high terabytes, not petabytes” *
- For today’s purposes: Medium data is more than you may be comfortable working with locally, or at all
* The Big Problem is Medium Data
Is more compute power the answer?
Easy answer: Sometimes
Vectors: Direction and magnitude
Weekends aren’t for work, they’re for running jobs
Example: Transit frequency
- Pulling General Transit Feed Specification (GTFS) data from 577 providers
- Calculating average frequency for routes and on network segments
- >20GB CSVs
- ~170,000 route-shapes
- Estimated 1.5 million stops
Visualizing trip frequency
Generate shapefiles of route-shapes and frequencies:
About five minutes
Example: Minnesota elevation
- LiDAR data covering entire state
- ~29,000 LAZ files (1.1TB)
- 282 billion points
Digital surface model (DSM)
21½ hours to create tiles on a workstation pulling LAZ from files.umn.edu
Again: Is more compute power the answer?
- The answer is still “sometimes”
- Local: Almost certainly (parallelize what you can)
- Cloud: Consult your Magic 8-Ball
- Don’t let anyone pinch pennies when they order your next computer


0
0
Clear
±
%
√
÷
7
8
9
×
4
5
6
−
1
2
3
+
0
.
=
Theme
Default
School
Dark
Slate
Solar
Journal
Pulse
Sandstone
Minty
Color Coding
Clears memory
Action that involves two numbers
Simple number or constant
Gives a result
Keyboard Shortcuts
Backspace
Deletes last inputted character
0-9
OR
.
Gives input
Esc
OR
Clear
Clears memory
+ / * -
Executes given action
Return
OR
=
Calculates result
%
Performs percentage function
S
Performs the square root function
P
Changes current input to negative or positive


CheckFilename()
语法
Result = CheckFilename(Filename$)概要
Checks if the specified Filename$ doesn't contain invalid characters for the file-system. For example, on Windows '/' and '\' characters are not allowed in the filename.
参数
Filename$ The filename to check without a path.
返回值
Returns nonzero if the filename does not contain invalid characters and zero if it does.
已支持操作系统
所有


Home
Services
About
Me.
Portfolio
Client
Contact
I'm Bem Carson
I'm web developer based on NY City
Portfólio


Artale Maze Traversal Problem v.AllStart
By orangecalculator at
github.com/orangecalculator
Select rooms to pass by.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
submit to view output


Ben-Hur
Ben-Hur is a movie starring Charlton Heston, Jack Hawkins, and Stephen Boyd. When a Jewish prince is betrayed and sent into slavery by a Roman friend, he regains his freedom and comes back for revenge.


The DEFCON Ethics Village, is a ethics conference focused on the fostering a discussion about ethics in the security domain. The discussion on ethics in the security domain has been present since its inception however, we want to foster a greater discussion on ethics across all security domains. We want to celebrate the mistakes and grow as a community.
We want to learn what ethical situations arise for security professionals. We want to learn how security professionals handle these situations. We want to know about times you stood up to your boss because of your ethical beliefs to when you did something completely unethical and possibly broke the law.
For those wanting to participate in live discussions, please join us via discord in #ev-general-text over at https://discord.gg/defcon
All talks will be live streamed over at #ev-talks-voice in discord and via https://www.twitch.tv/ethicsvillage
All Taped talks will also be released as they go live on the schedule on youtube over here: Ethics Village Youtube


--- layout: archive title: Zulip Chat Archive permalink: /stream/113488-general/topic/emacs.20lean-mode.html ---
I am going to switch to using emacs for writing lean files for a while; I am now competent with VS Code and sort of believe it to be a better end user experience than emacs. The reason I'm switching to emacs is because there is a risk that it will be the best option for some of my undergraduates in October. I think that I can offer them (via cocalc) blisteringly fast Lean plus group editing of files etc, except that they will have to use emacs.
emacs CUA mode isn't so bad, and I say this as a dirty windows user
Windows hate is amusing in here considering a lot of Lean comes from MS Research :).
Here is something I find much easier to do in VS Code. I have completion running with company-lean, and I can get shift space to give me a big list of cool stuff (possible completions of what I've typed) plus types of the completions. I just want to cut and paste from one of these types
I select the correct completion and the type disappears. I then stop what I'm doing and type #check (the thing whose type I was interested in)
and even then I can't access the output. So I then have to change buffers and cut and paste from there and then change back.
Am I missing a trick?
downside: you may be one of three people using company-lean
Windows hate is amusing in here considering a lot of Lean comes from MS Research :).
Windows is an interesting cute project but I'm not sure it will amount to much :stuck_out_tongue:
I love windows.
Honestly the amount of headaches I've had with various Linux distros. Ever since probably Win7 I've never really run into any sort of an issue with win.
But seriously, I love to hate windows but it got harder when they came up with the Slam checker. It kind of makes it look like they take software engineering and modularity more seriously than Apple
I love windows.
Have you had to turn on your computer since installing Windows 7?
Have you seen vscode live editing?
Yes, my Win 7 8 and 10 have been running close to flawlessly.
live share I guess
(I'd be completely windows native is windows subsystem for Linux worked with Haskell)
Que?
why does haskell need wsfl?
even before windows subsystem | docker for windows there was mingw, cygwin, virtual box, i've been happy developing on a windows host for decades now
despite this, i know way more about pthreads than about CreateProcess...
You mean you don't know by heart what all those 49 parameters do?
maybe std::threads and modules will arrive before i'm an old man
and then i'll never need to know
Nope, we need new fancy ways to initialize stuff. Call it uniform so at least something gives you the right to call it so.
And then mix the syntax up with initializer lists. Then give up on the language.
I use virtualbox, but that's probably heavyweight to consider it developing on windows
I'm using Haskell tools that depend on C code that is challenging to build on windows
@Kevin Buzzard I'm not sure if you can copy company candidates, but for those in the decl search window (C-c C-d
) you can use C-c C-y
.
I shall star that reply and consider it later when I have an emacs open. Yay for non-gitter things.
{% endraw %}Last updated: Apr 24 2020 at 19:02 UTC


ARLINGTON ROAD A film review by David N. Butterworth Copyright 1999 David N. Butterworth
***1/2 (out of ****)
In the wake of the recent Columbine High School tragedy, and the not-so-recent Oklahoma City bombing, some people felt that a film like the incendiary "Arlington Road," with its homegrown terrorism theme, might have difficulty securing a widespread release. But finally moviegoers are being given an opportunity to see it, an opportunity well worth pursuing.
"Arlington Road," for all of the difficult memories it may reawaken, is an excellent motion picture.
The only sequence more shocking than the film's disturbing opener is the last, a heart-pounding, brilliantly-constructed series of events that comes close to matching the surprise and unconventionality of "Psycho"'s famous shower scene. No amount of cold hard currency will force me to reveal the film's startling denouement, but if you don't leave the theater visibly shaken then blood does not flow in your veins.
Sandwiched between these two cinematic highpoints is a taut, tense, pulse-quickening film which raises the question "What do your neighbors get up to behind closed doors?" and then goes on to answer that question in truly terrifying style.
The film stars Jeff Bridges, Tim Robbins, and Joan Cusack and is written and directed by Mark Pellington, who shows great promise with this, his second feature. Bridges plays Michael Faraday, a history professor at a District of Columbia university who teaches a class on terrorism. After helping the injured son of some new neighbors from across the street, Bridges begins to suspect the normal-looking Langs of plotting a diabolical scheme involving explosive devices. Normal-looking, that is, except for Robbins' severe haircut; just one look at that do and you *know* he's guilty!
Faraday's paranoia builds to national security-threatening proportions, much to the frustration of his girlfriend (sympathetically played by Hope Davis), and leads to a confrontation that thrusts his whole family into immediate danger.
Perhaps the scariest thing about the film is the justifiable fear of a normal guy realizing how little he knows about the true characters of his closest neighbors, what they might have hidden behind drapes, buried in basements, or locked away in attics. One of Pellington's trump cards is that he doesn't tip the audience off earlier than necessary in determining who's the real crazy in this drama. And he made wise casting choices in maintaining that suspense: Bridges is brilliant, as is Robbins, and Cusack (in a rare straight role) has hardly been better.
In addition to the fine performances, Angelo Badalamenti's creepy score helps crank up the tension several notches.
Several years ago, during the filming of a similar Jeff Bridges mad-bomber thriller called "Blown Away," special effects experts miscalculated and blew out windows of unrigged buildings adjacent to the set. Be prepared to be blown away by "Arlington Road": it carries that amount of unexpected power.
-- David N. Butterworth<EMAIL_ADDRESS>The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Tank controller
Please choose your controller for today (keyboard or xbox controller)
Controller
Keyboard


{% load otree i18n %}
{% trans 'You will be grouped randomly and anonymously with another' %} {{ Constants.num_other_players }} {% trans 'participants' %}.
{% trans 'Each of you decides independently and simultaneously whether you will volunteer or not. If at least one of you volunteers, everyone will get' %} {{ Constants.general_benefit }}. {% trans 'However, the volunteer(s) will pay' %} {{ Constants.volunteer_cost }}. {% trans 'If no one volunteers, everyone receives nothing' %}.


Startup System
Complete your character and get ready for our world!
You can't be seen, invisible mode is activated.
You can't move until you complete startup system.
Soul Bow [Quick Recovery]
Bloody Orchid [Focus]
Soul Separator [Critical Damage]
Damascus*Damascus
Dragon Grinder [Health]
Previous Page


Reports any import statements which refer to the java.lang package.
Such import statements are unnecessary. Since IDEA can automatically
detect and fix such statements with its "Optimize Imports" command, this inspection is mostly useful
for off-line reporting on code bases that you don't intend to change.
Powered by InspectionGadgets


--- layout: page title: Project budgeting permalink: /resources/project-budgeting/ main_image_path: main_image_caption: aside: true _options: layout: hidden: true image: width: 1200 height: 1200 resize_style: contain mime_type: image/jpeg _comments: ---
Additional information for Project Budgeting 'How to' guide, Bond, June 2013


Methods to perform a Probabilistic Environmental Risk assessment from exposure to toxic substances - i.e. USEPA (1997) <https://www.epa.gov/risk/guiding-principles-monte-carlo-analysis> -.
| Version: | 1.0 |
| Imports: | MASS, kSamples, stats, fitdistrplus, truncdist |
| Published: | 2017-02-23 |
| Author: | F. Barrio-Parra, with contributions from A. Dominguez-Castillo. |
| Maintainer: | Fernando Barrio-Parra <fernando.barrio at upm.es> |
| License: | GPL-2 | GPL-3 [expanded from: GPL] |
| NeedsCompilation: | no |
| CRAN checks: | EnviroPRA results |
| Reference manual: | EnviroPRA.pdf |
| Package source: | EnviroPRA_1.0.tar.gz |
| Windows binaries: | r-devel: EnviroPRA_1.0.zip, r-release: EnviroPRA_1.0.zip, r-oldrel: EnviroPRA_1.0.zip |
| OS X binaries: | r-release: EnviroPRA_1.0.tgz, r-oldrel: EnviroPRA_1.0.tgz |
Please use the canonical form https://CRAN.R-project.org/package=EnviroPRA to link to this page.


--- title: "SOCI832: Introduction 1: Introduction to Statistics" lastmod: 2019-05-10T00:00:00.000Z draft: true type: docs maths: true output: blogdown::html_page: toc: true linktitle: "3. Intro to Statistics" menu: docs: parent: SOCI832 weight: 300 ---
ReadingField, A., Miles, J., and Field, Z. (2012). Discovering statistics using R. Sage publications.
|
ConceptsDescriptive statistics |
Summary[insert summary] |
In this course I assume you are allergic to maths. This brings us all to the same level, and it also makes sure all of us try to build on solid foundations.
When we use maths for social sciences, we generally use it in one of two ways: to generate descriptive statistics - which allow us to summarise a large amount of data in a few numbers - or to generate inferential statistics - which allow us to draw conclusions about the wider world based on a tiny sample of that world.
Descriptive statistics allow us to summarise a group we can actually see, touch, and/or count. It helps us turn, for example, the incomes of 23 million Australian’s who did the 2016 census into a single number - the median personal weekly personal income of people aged 15 years and over: $662.
One type of descriptive statistics try to summarise the “centre” of a dataset (or more correctly, the centre of the values of a variable). The most common example of this is the average - formally called mean - of a set of numbers.
Other measures of the central tendency are the median, and the mode. Box 1 provides definitions, uses, and examples.
All of these measures of the central tendency have a common characteristic: they are trying to find one number that can represent them all. It’s like running a talent contest to find the ‘most ordinary, normal, typical Australian’, except in this case you are trying to find the ‘most ordinary, normal, typical number in this set’.
|
Box 1: Definitions, uses, and examples of mean, median, and mode Mean (the arithmetic mean): The average. The sum of all cases divided by the number of cases. Median: The middle point in a set of numbers. If we order a set of numbers from highest to lowest, and find the number in the middle, this is the median. If two numbers are in the middle (there is an even number of cases), then the median is the average to the two numbers. Mode: The most common number in a set. |
We know from life, however, that the ‘most ordinary, normal, typical’ single example of anything is a gross simplication.
All sets have variety, and the second major type of descriptive statistic tries to capture this variety, and do it in just one number.
The most common measure of variety - or technically ‘variability’, ‘variation’, or ‘dispersion’ - in a set of numbers is probably the standard deviation.
Box 2 provides an explanation of standard deviation - as equation, and also in everyday language.
Intiutively - not strickly - you can think of standard deviation as the average amount - as an absolute value (so negative become positive, and positive stay positive) - that each person’s value for a variable ‘misses’ (deviates) from the mean of the variable.
If the standard deviation is close to zero, then virtually everyone in the dataset has the same value for the variable.
If the standard deviation is large, then you expect that - on average - any particular person you pick from the dataset is going to be quite distant from (greater or lesser than) the mean.
While standard deviation is a good measure of variablity for
|
Box 2: Standard Deviation: As an equation and in everyday language \(\begin{aligned} \text{Standard Deviation of variable x} = &\sqrt{\frac{\sum_{i=1}^n (x_i - \bar x)^2}{N}}\\ \\ \text{Where:} \\ x_i = &\text{value of x for each individual i} \\ \bar x = &\text{ mean of x} \\ N,n = &\text{ number of observations} \\ \sum_{i=1}^n = &\text{sum for all observations from 1 to n} \\ \end{aligned}\) While this equation looks scary to many people, I think the best way to break it down - conceptually, and by analogy, not strict mathematically - is to think about this as having just three main parts:
BUT, the take away from all this is: the standard deviation is - more or less - the average amount all values of a variable vary from the mean. For example, you have two classes of 100 students each, and the average age (mean) of each class is 22, but the standard deviation of the first class is zero, and standard deviation of the second class is one. Based on this standard deviation, you would know that - roughly and on average - if you picked any, say, six students from each class:
Notice that both groups have the same mean (22), but the second class is much more ‘dispersed’ and ‘varied’: the higher the standard deviation, the more ‘spread out’ the ages in the class are. |


Semantics-preserving word cloud visulization tool. A word cloud consists of the most important words in that document. Each word is printed in a given font and scaled by a factor roughly proportional to its importance. The printed words are arranged without overlap and tightly packed into rectangular shape. Your word clouds can be tweaked with various fonts, layouts, and color schemes. Read the description for more details.
Our clouds are semantics-aware. In Wordle (or other similar tool), the placement of the words is completely independent of their context and the coloring is random. However, when visualizing the given text with a word cloud, it is possible to automatically identify groups of semantically related words, or the major topics in the input text. Our system places similar words close to each other and assigns them the same color. This simplifies visual analysis of the text. See an example of a random (left) and semantic (right) word placement.
The input text is parsed and tokenized into a collection of words. The common stop-words ("a", "the", "is") are removed, while the remaining words are grouped by their stems. Then the words are ranked in order of their importance in the text and the font size for every word is calculated. Next semantic similarities between pairs of the words are computed, based on co-occurrence in the same sentences. Then similar words are grouped together and the groups get different colors. Finally, we layout the words with an algorithm, which employs a theoretical model for computing semantic word clouds.
A cloud is generated as SVG file, which can be downloaded by using a link at the top-right corner of the cloud. You may also download PNG and PDF versions of the file. In order to convert it to another format, use a vector graphics editor, like Inkscape.
Yes! You may drag and reposition the words on the screen. Actually, you can even remove words, by right-clicking on them and using the popup menu. It is also possible to re-layout the cloud by pressing Apply New Options button.
You may enter any text, URL of a blog or a webpage. Maximum size for pasting is 500 kilobytes but mostly depends on your browser and computer.
We can create a cloud using several sources of the input text:
The tool supports Unicode and many languages. You may choose the language of your source text in the Advanced Options section. The chosen language affects the way how the input text is parsed: splitting into sentences, tokenization into words, and stop-word removal. Please note that some of the features are not supported for non-English languages; for example, the TF-IDF ranking can only work for English, as it utilizes Brown corpus.
Given the list of words, we calculate a matrix of pairwise similarities so that related words receive high similarity values. We use three similarity functions: Cosine Similarity, Jaccard Similarity, and Lexical Similarity.
We rank the words in order of their importance in the input text. We use three different ranking functions. Term Frequency is the most basic ranking function and one used in most traditional word cloud visualizations. Term frequency tends to rank highly many semantically meaningless words. Term Frequency-Inverse Document Frequency addresses this problem by normalizing the frequency of a word by its frequency in a larger text collection. The third ranking function is based on the LexRank algorithm, which is a graph-based method for computing relative importance of textual units using eigenvector centrality.
We provide several algorithms for computing a layout of the words:
We cluster the words according to their semantic meaning, and then use different colors for the computed clusters. Thus, semantically related groups of words (e.g., gene, protein, disease, metabolism) are likely to have the same coloring. This is an intuitive way to visually identify major topics in the input text. To identify the clusters, we employ the modularity-based algorithm.
The system relies on a geometric problem behind drawing word clouds, which is described in a series of research papers:
Yes! Source code for the entire system is available on Github. The system also comes as a command-line tool: download cloudy.jar and invoke "java -jar cloudy.jar [options] [input file]" (without quotes). The available options can be printed by running "java -jar cloudy.jar -?".
The tool is supported by a group of researchers and developers at the University of Arizona.
Email at<EMAIL_ADDRESS>for questions and suggestions.


Shows using the Datagrid Group By API object, all results in the console (for browsers that support console.table)


Hello there! You're now on main website of Quick Equations game. Remember, that game is still in build, and it may change in near future. It will be really pleased, if you report bugs on my github - here.
Click button above, or you'll never know.
Just don't lose your mind, and be patient.
So... rules are pretty simple. You have to solve as many mathematic equations as you can in specific time. At start you'll get 15 seconds. For corret solution, you'll get +2 seconds to timer, and for wrong solution -2 seconds to timer. Of course, Enter button is indicated to submit solutions. That's all, good luck & have fun!


drought climate change community effects Plant Din changes functional different communities plant Fig scenarios stability Ecology species PFG Sciences ecosystem forest gradual hypervolumes {border-style PFGs future values px;} vegetation #ffffff;} shown forests grasslands Drought dynamics severe state using management mean tree Climate Ecol events land-use maps regimes structure (i.e. Biology FATE-HD Life abundances effect grasslands, impacts null unmanaged Appendix). affect calculated extreme managed relative response responses results simulation (in (see Boulangeat European forest-grassland grassland habitat model trait traits Appendix Barros Ecol. Elsevier absolute caused current data groups initial like lower scenario services simulated size structural taxonomic years Environmental Research Science average carbon compared composition framework frequent land mortality px; smaller stable suitability time-steps used {font-family ./j.-...x Alps, Chang Ecology: Glob Hence, alpine analysis consequences diversity font-size global hypervolume impact instance, long long-term overall scenarios, simulate states survival woody B.V.; Current Effects Forests PFG’s Table ]). analysed approach areas based communities, communities. conditions coordinate correlations double; end factor final higher increase led loss models moisture multidimensional pixel seed soil studies subalpine terms trees type use value Abiotic Adaptation Biol. Change Community Finally, Land National Resistance Stress: Thuiller additional affected analyses biodiversity border-color border-width climatic decreases did dispersal distribution disturbances drought’ ecosystems ecotones frequency grasslands. grazing intensity landscape larger moderate mountain observed phase present random repeated shade shifts sizes solid; study tolerance variable variables water {font-style {font-weight Écrins ‘no (DOCX) (also Agric Alpine Available: Biodiversity Click Clim Forest Functional Grasslands Interactions Intergovernmental LINK Manage. Nature. Reichstein Report Sci. Stability [Internet]. affects assessment averaged bold centroids change’ comparisons comparisons, components conditions. corresponding courier; departures described differences distances drought, dynamic ecotone em; encroachment environmental fed field file. focused forests, group high hypervolume. hypervolumes. important increases initialisation kept largely life likely limited original population principal productivity projections properties pt;} reductions regime relatively requirements respond sensitive showed shrubs significant significantly simulations stabilisation suffer temperature term, tolerant understand variance visual ‘current’


All parent views are recreated when view/edit mode is switched because the modes are configured as sub-routes. This can be avoided by defining the mode as route parameter instead.
article-element
isEditMode: {{isEditMode}}
articleId: {{articleId}}
userId: {{userId}}


There is a gate down the hallway. There are two keys hanging on the wall. You must choose one. Choose key #1 or key #2.


{% extends "base.htm" %} {% block content %}
Asset details |
InstructionsPlease enable NETCONF and configure group SSH key in order for NetSPOT to be able to connect and interact with the asset.Enable NETCONFsystem { services { netconf { ssh { port 830; } } } } Enable correct group SSH keyReplace SSH_KEY_HERE and SERVER_IP with the correct SSH key and one of the following IP addresses. White: <IP_ADDRESS>, Blue: <IP_ADDRESS>, Green: <IP_ADDRESS>. SSH keys can be found under the group page in NetSPOT. If this is a new group you will need to set a new variable under the group. Name "ssh_key", value = SSH key. set system login user automation class super-user authentication ssh-rsa "ssh-rsa SSH_KEY_HERE<EMAIL_ADDRESS>from SERVER_IP |


GIS SOLUTIONS
This is a Skeleton built by A.I. Usaidh Mohamed.
STAY CONNECTED
GIS Solutions
Dont Know, Where
<EMAIL_ADDRESS>+94759891215
Toggle navigation
Home
About
Consulting and Services
Training
Careers
Contact Us
Downloads
News and Events


A Hash is a Dictionary is an Object
Unless they Aren't?
02014-12-14
At first blush a ruby hash and a Javascript object look very similar, you can start both the same way, hash = {}, object ={}. You can assign things very similarly, hash[key]= value, object.key= value, and even access things very similarly. "puts hash[key]" and "console.log(object.key);" will return very similar things to the console.
Unless value was complicated. Value in a hash is much more constrained than in an object. Hashes in Ruby behave much like dictionaries in python, but object's in javascript are more like the classes both of the previous languages possess.
Javascript objects constructed like they are just glorified hashes are like single-instance classes. You need to build a constructor function, which, structurally, is very similar to a class definition, before you, apropriately, get the same kind of generalization and repeatability as ruby objects.


1 November.--All day long we have travelled, and at a good speed. The horses seem to know that they are being kindly treated, for they go willingly their full stage at best speed. We have now had so many changes and find the same thing so constantly that we are encouraged to think that the journey will be an easy one. Dr. Van Helsing is laconic, he tells the farmers that he is hurrying to Bistritz, and pays them well to make the exchange of horses. We get hot soup, or coffee, or tea, and off we go. It is a lovely country. Full of beauties of all imaginable kinds, and the people are brave, and strong, and simple, and seem full of nice qualities. They are very, very superstitious. In the first house where we stopped, when the woman who served us saw the scar on my forehead, she crossed herself and put out two fingers towards me, to keep off the evil eye. I believe they went to the trouble of putting an extra amount of garlic into our food, and I can't abide garlic. Ever since then I have taken care not to take off my hat or veil, and so have escaped their suspicions. We are travelling fast, and as we have no driver with us to carry tales, we go ahead of scandal. But I daresay that fear of the evil eye will follow hard behind us all the way. The Professor seems tireless. All day he would not take any rest, though he made me sleep for a long spell. At sunset time he hypnotized me, and he says I answered as usual, "darkness, lapping water and creaking wood." So our enemy is still on the river. I am afraid to think of Jonathan, but somehow I have now no fear for him, or for myself. I write this whilst we wait in a farmhouse for the horses to be ready. Dr. Van Helsing is sleeping. Poor dear, he looks very tired and old and grey, but his mouth is set as firmly as a conqueror's. Even in his sleep he is intense with resolution. When we have well started I must make him rest whilst I drive. I shall tell him that we have days before us, and he must not break down when most of all his strength will be needed… All is ready. We are off shortly.
2 November, morning.--I was successful, and we took turns driving all night. Now the day is on us, bright though cold. There is a strange heaviness in the air. I say heaviness for want of a better word. I mean that it oppresses us both. It is very cold, and only our warm furs keep us comfortable. At dawn Van Helsing hypnotized me. He says I answered "darkness, creaking wood and roaring water," so the river is changing as they ascend. I do hope that my darling will not run any chance of danger, more than need be, but we are in God's hands.
2 November, night.--All day long driving. The country gets wilder as we go, and the great spurs of the Carpathians, which at Veresti seemed so far from us and so low on the horizon, now seem to gather round us and tower in front. We both seem in good spirits. I think we make an effort each to cheer the other, in the doing so we cheer ourselves. Dr. Van Helsing says that by morning we shall reach the Borgo Pass. The houses are very few here now, and the Professor says that the last horse we got will have to go on with us, as we may not be able to change. He got two in addition to the two we changed, so that now we have a rude four-in-hand. The dear horses are patient and good, and they give us no trouble. We are not worried with other travellers, and so even I can drive. We shall get to the Pass in daylight. We do not want to arrive before. So we take it easy, and have each a long rest in turn. Oh, what will tomorrow bring to us? We go to seek the place where my poor darling suffered so much. God grant that we may be guided aright, and that He will deign to watch over my husband and those dear to us both, and who are in such deadly peril. As for me, I am not worthy in His sight. Alas! I am unclean to His eyes, and shall be until He may deign to let me stand forth in His sight as one of those who have not incurred His wrath.
MEMORANDUM BY ABRAHAM VAN HELSING
4 November.--This to my old and true friend John Seward, M.D., of Purfleet, London, in case I may not see him. It may explain. It is morning, and I write by a fire which all the night I have kept alive, Madam Mina aiding me. It is cold, cold. So cold that the grey heavy sky is full of snow, which when it falls will settle for all winter as the ground is hardening to receive it. It seems to have affected Madam Mina. She has been so heavy of head all day that she was not like herself. She sleeps, and sleeps, and sleeps! She who is usual so alert, have done literally nothing all the day. She even have lost her appetite. She make no entry into her little diary, she who write so faithful at every pause. Something whisper to me that all is not well. However, tonight she is more vif. Her long sleep all day have refresh and restore her, for now she is all sweet and bright as ever. At sunset I try to hypnotize her, but alas! with no effect.  Well, God's will be done, whatever it may be, and whithersoever it may lead!
Now to the historical, for as Madam Mina write not in her stenography, I must, in my cumbrous old fashion, that so each day of us may not go unrecorded.
We got to the Borgo Pass just after sunrise yesterday morning. When I saw the signs of the dawn I got ready for the hypnotism. We stopped our carriage, and got down so that there might be no disturbance. I made a couch with furs, and Madam Mina, lying down, yield herself as usual, but more slow and more short time than ever, to the hypnotic sleep. As before, came the answer, "darkness and the swirling of water." Then she woke, bright and radiant and we go on our way and soon reach the Pass. At this time and place, she become all on fire with zeal. Some new guiding power be in her manifested, for she point to a road and say, "This is the way."
"How know you it?" I ask.
"Of course I know it," she answer, and with a pause, add, "Have not my Jonathan travelled it and wrote of his travel?"
At first I think somewhat strange, but soon I see that there be only one such byroad. It is used but little, and very different from the coach road from the Bukovina to Bistritz, which is more wide and hard, and more of use.
So we came down this road. When we meet other ways, not always were we sure that they were roads at all, for they be neglect and light snow have fallen, the horses know and they only. I give rein to them, and they go on so patient. By and by we find all the things which Jonathan have note in that wonderful diary of him. Then we go on for long, long hours and hours. At the first, I tell Madam Mina to sleep. She try, and she succeed. She sleep all the time, till at the last, I feel myself to suspicious grow, and attempt to wake her. But she sleep on, and I may not wake her though I try. I do not wish to try too hard lest I harm her. For I know that she have suffer much, and sleep at times be all-in-all to her. I think I drowse myself, for all of sudden I feel guilt, as though I have done something. I find myself bolt up, with the reins in my hand, and the good horses go along jog, jog, just as ever. I look down and find Madam Mina still asleep. It is now not far off sunset time, and over the snow the light of the sun flow in big yellow flood, so that we throw great long shadow on where the mountain rise so steep. For we are going up, and up, and all is oh so wild and rocky, as though it were the end of the world.
Then I arouse Madam Mina. This time she wake with not much trouble, and then I try to put her to hypnotic sleep. But she sleep not, being as though I were not. Still I try and try, till all at once I find her and myself in dark, so I look round, and find that the sun have gone down. Madam Mina laugh, and I turn and look at her. She is now quite awake, and look so well as I never saw her since that night at Carfax when we first enter the Count's house. I am amaze, and not at ease then. But she is so bright and tender and thoughtful for me that I forget all fear. I light a fire, for we have brought supply of wood with us, and she prepare food while I undo the horses and set them, tethered in shelter, to feed. Then when I return to the fire she have my supper ready. I go to help her, but she smile, and tell me that she have eat already. That she was so hungry that she would not wait. I like it not, and I have grave doubts. But I fear to affright her, and so I am silent of it. She help me and I eat alone, and then we wrap in fur and lie beside the fire, and I tell her to sleep while I watch. But presently I forget all of watching. And when I sudden remember that I watch, I find her lying quiet, but awake, and looking at me with so bright eyes. Once, twice more the same occur, and I get much sleep till before morning. When I wake I try to hypnotize her, but alas! though she shut her eyes obedient, she may not sleep. The sun rise up, and up, and up, and then sleep come to her too late, but so heavy that she will not wake. I have to lift her up, and place her sleeping in the carriage when I have harnessed the horses and made all ready. Madam still sleep, and she look in her sleep more healthy and more redder than before. And I like it not. And I am afraid, afraid, afraid! I am afraid of all things, even to think but I must go on my way. The stake we play for is life and death, or more than these, and we must not flinch.
5 November, morning.--Let me be accurate in everything, for though you and I have seen some strange things together, you may at the first think that I, Van Helsing, am mad. That the many horrors and the so long strain on nerves has at the last turn my brain.
All yesterday we travel, always getting closer to the mountains, and moving into a more and more wild and desert land. There are great, frowning precipices and much falling water, and Nature seem to have held sometime her carnival. Madam Mina still sleep and sleep. And though I did have hunger and appeased it, I could not waken her, even for food. I began to fear that the fatal spell of the place was upon her, tainted as she is with that Vampire baptism. "Well," said I to myself, "if it be that she sleep all the day, it shall also be that I do not sleep at night." As we travel on the rough road, for a road of an ancient and imperfect kind there was, I held down my head and slept.
Again I waked with a sense of guilt and of time passed, and found Madam Mina still sleeping, and the sun low down. But all was indeed changed. The frowning mountains seemed further away, and we were near the top of a steep rising hill, on summit of which was such a castle as Jonathan tell of in his diary. At once I exulted and feared. For now, for good or ill, the end was near.
I woke Madam Mina, and again tried to hypnotize her, but alas! unavailing till too late. Then, ere the great dark came upon us, for even after down sun the heavens reflected the gone sun on the snow, and all was for a time in a great twilight. I took out the horses and fed them in what shelter I could. Then I make a fire, and near it I make Madam Mina, now awake and more charming than ever, sit comfortable amid her rugs. I got ready food, but she would not eat, simply saying that she had not hunger. I did not press her, knowing her unavailingness. But I myself eat, for I must needs now be strong for all. Then, with the fear on me of what might be, I drew a ring so big for her comfort, round where Madam Mina sat. And over the ring I passed some of the wafer, and I broke it fine so that all was well guarded. She sat still all the time, so still as one dead. And she grew whiter and even whiter till the snow was not more pale, and no word she said. But when I drew near, she clung to me, and I could know that the poor soul shook her from head to feet with a tremor that was pain to feel.
I said to her presently, when she had grown more quiet, "Will you not come over to the fire?" for I wished to make a test of what she could. She rose obedient, but when she have made a step she stopped, and stood as one stricken.
"Why not go on?" I asked.  Then, looking at me with open eyes, as of one waked from sleep, she said simply, "I cannot!" and remained silent. I rejoiced, for I knew that what she could not, none of those that we dreaded could. Though there might be danger to her body, yet her soul was safe!
Presently the horses began to scream, and tore at their tethers till I came to them and quieted them. When they did feel my hands on them, they whinnied low as in joy, and licked at my hands and were quiet for a time. Many times through the night did I come to them, till it arrive to the cold hour when all nature is at lowest, and every time my coming was with quiet of them. In the cold hour the fire began to die, and I was about stepping forth to replenish it, for now the snow came in flying sweeps and with it a chill mist. Even in the dark there was a light of some kind, as there ever is over snow, and it seemed as though the snow flurries and the wreaths of mist took shape as of women with trailing garments. All was in dead, grim silence only that the horses whinnied and cowered, as if in terror of the worst. I began to fear, horrible fears. But then came to me the sense of safety in that ring wherein I stood. I began too, to think that my imaginings were of the night, and the gloom, and the unrest that I have gone through, and all the terrible anxiety. It was as though my memories of all Jonathan's horrid experience were befooling me. For the snow flakes and the mist began to wheel and circle round, till I could get as though a shadowy glimpse of those women that would have kissed him. And then the horses cowered lower and lower, and moaned in terror as men do in pain. Even the madness of fright was not to them, so that they could break away. I feared for my dear Madam Mina when these weird figures drew near and circled round. I looked at her, but she sat calm, and smiled at me. When I would have stepped to the fire to replenish it, she caught me and held me back, and whispered, like a voice that one hears in a dream, so low it was.
"No! No! Do not go without. Here you are safe!"
I turned to her, and looking in her eyes said, "But you? It is for you that I fear!"
Whereat she laughed, a laugh low and unreal, and said, "Fear for me! Why fear for me? None safer in all the world from them than I am," and as I wondered at the meaning of her words, a puff of wind made the flame leap up, and I see the red scar on her forehead. Then, alas! I knew. Did I not, I would soon have learned, for the wheeling figures of mist and snow came closer, but keeping ever without the Holy circle. Then they began to materialize till, if God have not taken away my reason, for I saw it through my eyes. There were before me in actual flesh the same three women that Jonathan saw in the room, when they would have kissed his throat. I knew the swaying round forms, the bright hard eyes, the white teeth, the ruddy colour, the voluptuous lips. They smiled ever at poor dear Madam Mina. And as their laugh came through the silence of the night, they twined their arms and pointed to her, and said in those so sweet tingling tones that Jonathan said were of the intolerable sweetness of the water glasses, "Come, sister. Come to us. Come!"
In fear I turned to my poor Madam Mina, and my heart with gladness leapt like flame. For oh! the terror in her sweet eyes, the repulsion, the horror, told a story to my heart that was all of hope. God be thanked she was not, yet, of them. I seized some of the firewood which was by me, and holding out some of the Wafer, advanced on them towards the fire. They drew back before me, and laughed their low horrid laugh. I fed the fire, and feared them not. For I knew that we were safe within the ring, which she could not leave no more than they could enter. The horses had ceased to moan, and lay still on the ground. The snow fell on them softly, and they grew whiter. I knew that there was for the poor beasts no more of terror.
And so we remained till the red of the dawn began to fall through the snow gloom. I was desolate and afraid, and full of woe and terror. But when that beautiful sun began to climb the horizon life was to me again. At the first coming of the dawn the horrid figures melted in the whirling mist and snow. The wreaths of transparent gloom moved away towards the castle, and were lost.
Instinctively, with the dawn coming, I turned to Madam Mina, intending to hypnotize her. But she lay in a deep and sudden sleep, from which I could not wake her. I tried to hypnotize through her sleep, but she made no response, none at all, and the day broke. I fear yet to stir. I have made my fire and have seen the horses, they are all dead. Today I have much to do here, and I keep waiting till the sun is up high. For there may be places where I must go, where that sunlight, though snow and mist obscure it, will be to me a safety.
I will strengthen me with breakfast, and then I will do my terrible work. Madam Mina still sleeps, and God be thanked! She is calm in her sleep…
JONATHAN HARKER'S JOURNAL
4 November, evening.--The accident to the launch has been a terrible thing for us. Only for it we should have overtaken the boat long ago, and by now my dear Mina would have been free. I fear to think of her, off on the wolds near that horrid place. We have got horses, and we follow on the track. I note this whilst Godalming is getting ready. We have our arms. The Szgany must look out if they mean to fight. Oh, if only Morris and Seward were with us. We must only hope! If I write no more Goodby Mina! God bless and keep you.
DR. SEWARD'S DIARY
5 November.--With the dawn we saw the body of Szgany before us dashing away from the river with their leiter wagon. They surrounded it in a cluster, and hurried along as though beset. The snow is falling lightly and there is a strange excitement in the air. It may be our own feelings, but the depression is strange. Far off I hear the howling of wolves. The snow brings them down from the mountains, and there are dangers to all of us, and from all sides. The horses are nearly ready, and we are soon off. We ride to death of some one. God alone knows who, or where, or what, or when, or how it may be…
DR. VAN HELSING'S MEMORANDUM
5 November, afternoon.--I am at least sane. Thank God for that mercy at all events, though the proving it has been dreadful. When I left Madam Mina sleeping within the Holy circle, I took my way to the castle. The blacksmith hammer which I took in the carriage from Veresti was useful, though the doors were all open I broke them off the rusty hinges, lest some ill intent or ill chance should close them, so that being entered I might not get out. Jonathan's bitter experience served me here. By memory of his diary I found my way to the old chapel, for I knew that here my work lay. The air was oppressive. It seemed as if there was some sulphurous fume, which at times made me dizzy. Either there was a roaring in my ears or I heard afar off the howl of wolves. Then I bethought me of my dear Madam Mina, and I was in terrible plight. The dilemma had me between his horns.
Her, I had not dare to take into this place, but left safe from the Vampire in that Holy circle. And yet even there would be the wolf! I resolve me that my work lay here, and that as to the wolves we must submit, if it were God's will. At any rate it was only death and freedom beyond. So did I choose for her. Had it but been for myself the choice had been easy, the maw of the wolf were better to rest in than the grave of the Vampire! So I make my choice to go on with my work.
I knew that there were at least three graves to find, graves that are inhabit. So I search, and search, and I find one of them.  Ah, I doubt not that in the old time, when such things were, many a man who set forth to do such a task as mine, found at the last his heart fail him, and then his nerve. So he delay, and delay, and delay, till the mere beauty and the fascination of the wanton Undead have hypnotize him. And he remain on and on, till sunset come, and the Vampire sleep be over. Then the beautiful eyes of the fair woman open and look love, and the voluptuous mouth present to a kiss, and the man is weak. And there remain one more victim in the Vampire fold. One more to swell the grim and grisly ranks of the Undead!…
There is some fascination, surely, when I am moved by the mere presence of such an one, even lying as she lay in a tomb fretted with age and heavy with the dust of centuries, though there be that horrid odour such as the lairs of the Count have had. Yes, I was moved. I, Van Helsing, with all my purpose and with my motive for hate. I was moved to a yearning for delay which seemed to paralyze my faculties and to clog my very soul. It may have been that the need of natural sleep, and the strange oppression of the air were beginning to overcome me. Certain it was that I was lapsing into sleep, the open eyed sleep of one who yields to a sweet fascination, when there came through the snow-stilled air a long, low wail, so full of woe and pity that it woke me like the sound of a clarion. For it was the voice of my dear Madam Mina that I heard.
Then I braced myself again to my horrid task, and found by wrenching away tomb tops one other of the sisters, the other dark one. I dared not pause to look on her as I had on her sister, lest once more I should begin to be enthrall. But I go on searching until, presently, I find in a high great tomb as if made to one much beloved that other fair sister which, like Jonathan I had seen to gather herself out of the atoms of the mist. She was so fair to look on, so radiantly beautiful, so exquisitely voluptuous, that the very instinct of man in me, which calls some of my sex to love and to protect one of hers, made my head whirl with new emotion. But God be thanked, that soul wail of my dear Madam Mina had not died out of my ears. And, before the spell could be wrought further upon me, I had nerved myself to my wild work. By this time I had searched all the tombs in the chapel, so far as I could tell. And as there had been only three of these Undead phantoms around us in the night, I took it that there were no more of active Undead existent. There was one great tomb more lordly than all the rest. Huge it was, and nobly proportioned. On it was but one word.
DRACULA
This then was the Undead home of the King Vampire, to whom so many more were due. Its emptiness spoke eloquent to make certain what I knew. Before I began to restore these women to their dead selves through my awful work, I laid in Dracula's tomb some of the Wafer, and so banished him from it, Undead, for ever.
Then began my terrible task, and I dreaded it. Had it been but one, it had been easy, comparative. But three! To begin twice more after I had been through a deed of horror. For it was terrible with the sweet Miss Lucy, what would it not be with these strange ones who had survived through centuries, and who had been strengthened by the passing of the years. Who would, if they could, have fought for their foul lives…
Oh, my friend John, but it was butcher work. Had I not been nerved by thoughts of other dead, and of the living over whom hung such a pall of fear, I could not have gone on. I tremble and tremble even yet, though till all was over, God be thanked, my nerve did stand. Had I not seen the repose in the first place, and the gladness that stole over it just ere the final dissolution came, as realization that the soul had been won, I could not have gone further with my butchery.  I should have fled in terror and left my work undone. But it is over! And the poor souls, I can pity them now and weep, as I think of them placid each in her full sleep of death for a short moment ere fading. For, friend John, hardly had my knife severed the head of each, before the whole body began to melt away and crumble into its native dust, as though the death that should have come centuries ago had at last assert himself and say at once and loud, "I am here!"
Before I left the castle I so fixed its entrances that never more can the Count enter there Undead.
When I stepped into the circle where Madam Mina slept, she woke from her sleep and, seeing me, cried out in pain that I had endured too much.
"Come!" she said, "come away from this awful place! Let us go to meet my husband who is, I know, coming towards us." She was looking thin and pale and weak. But her eyes were pure and glowed with fervour. I was glad to see her paleness and her illness, for my mind was full of the fresh horror of that ruddy vampire sleep.

MINA HARKER'S JOURNAL
6 November.--It was late in the afternoon when the Professor and I took our way towards the east whence I knew Jonathan was coming. We did not go fast, though the way was steeply downhill, for we had to take heavy rugs and wraps with us. We dared not face the possibility of being left without warmth in the cold and the snow. We had to take some of our provisions too, for we were in a perfect desolation, and so far as we could see through the snowfall, there was not even the sign of habitation. When we had gone about a mile, I was tired with the heavy walking and sat down to rest. Then we looked back and saw where the clear line of Dracula's castle cut the sky. For we were so deep under the hill whereon it was set that the angle of perspective of the Carpathian mountains was far below it. We saw it in all its grandeur, perched a thousand feet on the summit of a sheer precipice, and with seemingly a great gap between it and the steep of the adjacent mountain on any side. There was something wild and uncanny about the place. We could hear the distant howling of wolves. They were far off, but the sound, even though coming muffled through the deadening snowfall, was full of terror. I knew from the way Dr. Van Helsing was searching about that he was trying to seek some strategic point, where we would be less exposed in case of attack. The rough roadway still led downwards. We could trace it through the drifted snow.
In a little while the Professor signalled to me, so I got up and joined him. He had found a wonderful spot, a sort of natural hollow in a rock, with an entrance like a doorway between two boulders. He took me by the hand and drew me in.
"See!" he said, "here you will be in shelter. And if the wolves do come I can meet them one by one."
He brought in our furs, and made a snug nest for me, and got out some provisions and forced them upon me. But I could not eat, to even try to do so was repulsive to me, and much as I would have liked to please him, I could not bring myself to the attempt. He looked very sad, but did not reproach me. Taking his field glasses from the case, he stood on the top of the rock, and began to search the horizon.
Suddenly he called out, "Look! Madam Mina, look! Look!"
I sprang up and stood beside him on the rock. He handed me his glasses and pointed. The snow was now falling more heavily, and swirled about fiercely, for a high wind was beginning to blow. However, there were times when there were pauses between the snow flurries and I could see a long way round. From the height where we were it was possible to see a great distance. And far off, beyond the white waste of snow, I could see the river lying like a black ribbon in kinks and curls as it wound its way. Straight in front of us and not far off, in fact so near that I wondered we had not noticed before, came a group of mounted men hurrying along. In the midst of them was a cart, a long leiter wagon which swept from side to side, like a dog's tail wagging, with each stern inequality of the road. Outlined against the snow as they were, I could see from the men's clothes that they were peasants or gypsies of some kind.
On the cart was a great square chest. My heart leaped as I saw it, for I felt that the end was coming. The evening was now drawing close, and well I knew that at sunset the Thing, which was till then imprisoned there, would take new freedom and could in any of many forms elude pursuit. In fear I turned to the Professor. To my consternation, however, he was not there. An instant later, I saw him below me. Round the rock he had drawn a circle, such as we had found shelter in last night.
When he had completed it he stood beside me again saying, "At least you shall be safe here from him!" He took the glasses from me, and at the next lull of the snow swept the whole space below us. "See," he said, "they come quickly. They are flogging the horses, and galloping as hard as they can."
He paused and went on in a hollow voice, "They are racing for the sunset. We may be too late. God's will be done!" Down came another blinding rush of driving snow, and the whole landscape was blotted out. It soon passed, however, and once more his glasses were fixed on the plain.
Then came a sudden cry, "Look! Look! Look! See, two horsemen follow fast, coming up from the south. It must be Quincey and John. Take the glass. Look before the snow blots it all out!" I took it and looked. The two men might be Dr. Seward and Mr. Morris. I knew at all events that neither of them was Jonathan. At the same time I knew that Jonathan was not far off. Looking around I saw on the north side of the coming party two other men, riding at breakneck speed. One of them I knew was Jonathan, and the other I took, of course, to be Lord Godalming. They too, were pursuing the party with the cart. When I told the Professor he shouted in glee like a schoolboy, and after looking intently till a snow fall made sight impossible, he laid his Winchester rifle ready for use against the boulder at the opening of our shelter.
"They are all converging," he said. "When the time comes we shall have gypsies on all sides." I got out my revolver ready to hand, for whilst we were speaking the howling of wolves came louder and closer. When the snow storm abated a moment we looked again. It was strange to see the snow falling in such heavy flakes close to us, and beyond, the sun shining more and more brightly as it sank down towards the far mountain tops. Sweeping the glass all around us I could see here and there dots moving singly and in twos and threes and larger numbers. The wolves were gathering for their prey.
Every instant seemed an age whilst we waited. The wind came now in fierce bursts, and the snow was driven with fury as it swept upon us in circling eddies. At times we could not see an arm's length before us. But at others, as the hollow sounding wind swept by us, it seemed to clear the air space around us so that we could see afar off. We had of late been so accustomed to watch for sunrise and sunset, that we knew with fair accuracy when it would be. And we knew that before long the sun would set. It was hard to believe that by our watches it was less than an hour that we waited in that rocky shelter before the various bodies began to converge close upon us. The wind came now with fiercer and more bitter sweeps, and more steadily from the north. It seemingly had driven the snow clouds from us, for with only occasional bursts, the snow fell. We could distinguish clearly the individuals of each party, the pursued and the pursuers. Strangely enough those pursued did not seem to realize, or at least to care, that they were pursued. They seemed, however, to hasten with redoubled speed as the sun dropped lower and lower on the mountain tops.
Closer and closer they drew. The Professor and I crouched down behind our rock, and held our weapons ready. I could see that he was determined that they should not pass. One and all were quite unaware of our presence.
All at once two voices shouted out to "Halt!" One was my Jonathan's, raised in a high key of passion. The other Mr. Morris' strong resolute tone of quiet command. The gypsies may not have known the language, but there was no mistaking the tone, in whatever tongue the words were spoken. Instinctively they reined in, and at the instant Lord Godalming and Jonathan dashed up at one side and Dr. Seward and Mr. Morris on the other. The leader of the gypsies, a splendid looking fellow who sat his horse like a centaur, waved them back, and in a fierce voice gave to his companions some word to proceed. They lashed the horses which sprang forward. But the four men raised their Winchester rifles, and in an unmistakable way commanded them to stop. At the same moment Dr. Van Helsing and I rose behind the rock and pointed our weapons at them. Seeing that they were surrounded the men tightened their reins and drew up. The leader turned to them and gave a word at which every man of the gypsy party drew what weapon he carried, knife or pistol, and held himself in readiness to attack. Issue was joined in an instant.
The leader, with a quick movement of his rein, threw his horse out in front, and pointed first to the sun, now close down on the hill tops, and then to the castle, said something which I did not understand. For answer, all four men of our party threw themselves from their horses and dashed towards the cart. I should have felt terrible fear at seeing Jonathan in such danger, but that the ardor of battle must have been upon me as well as the rest of them. I felt no fear, but only a wild, surging desire to do something. Seeing the quick movement of our parties, the leader of the gypsies gave a command. His men instantly formed round the cart in a sort of undisciplined endeavour, each one shouldering and pushing the other in his eagerness to carry out the order.
In the midst of this I could see that Jonathan on one side of the ring of men, and Quincey on the other, were forcing a way to the cart. It was evident that they were bent on finishing their task before the sun should set. Nothing seemed to stop or even to hinder them. Neither the levelled weapons nor the flashing knives of the gypsies in front, nor the howling of the wolves behind, appeared to even attract their attention.  Instinctively they cowered aside and let him pass. In an instant he had jumped upon the cart, and with a strength which seemed incredible, raised the great box, and flung it over the wheel to the ground. In the meantime, Mr. Morris had had to use force to pass through his side of the ring of Szgany. All the time I had been breathlessly watching Jonathan I had, with the tail of my eye, seen him pressing desperately forward, and had seen the knives of the gypsies flash as he won a way through them, and they cut at him. He had parried with his great bowie knife, and at first I thought that he too had come through in safety. But as he sprang beside Jonathan, who had by now jumped from the cart, I could see that with his left hand he was clutching at his side, and that the blood was spurting through his fingers. He did not delay notwithstanding this, for as Jonathan, with desperate energy, attacked one end of the chest, attempting to prize off the lid with his great Kukri knife, he attacked the other frantically with his bowie. Under the efforts of both men the lid began to yield. The nails drew with a screeching sound, and the top of the box was thrown back.
By this time the gypsies, seeing themselves covered by the Winchesters, and at the mercy of Lord Godalming and Dr. Seward, had given in and made no further resistance. The sun was almost down on the mountain tops, and the shadows of the whole group fell upon the snow. I saw the Count lying within the box upon the earth, some of which the rude falling from the cart had scattered over him. He was deathly pale, just like a waxen image, and the red eyes glared with the horrible vindictive look which I knew so well.
As I looked, the eyes saw the sinking sun, and the look of hate in them turned to triumph.
But, on the instant, came the sweep and flash of Jonathan's great knife. I shrieked as I saw it shear through the throat. Whilst at the same moment Mr. Morris's bowie knife plunged into the heart.
It was like a miracle, but before our very eyes, and almost in the drawing of a breath, the whole body crumbled into dust and passed from our sight.
I shall be glad as long as I live that even in that moment of final dissolution, there was in the face a look of peace, such as I never could have imagined might have rested there.
The Castle of Dracula now stood out against the red sky, and every stone of its broken battlements was articulated against the light of the setting sun.
The gypsies, taking us as in some way the cause of the extraordinary disappearance of the dead man, turned, without a word, and rode away as if for their lives. Those who were unmounted jumped upon the leiter wagon and shouted to the horsemen not to desert them. The wolves, which had withdrawn to a safe distance, followed in their wake, leaving us alone.
Mr. Morris, who had sunk to the ground, leaned on his elbow, holding his hand pressed to his side. The blood still gushed through his fingers. I flew to him, for the Holy circle did not now keep me back; so did the two doctors. Jonathan knelt behind him and the wounded man laid back his head on his shoulder.
He must have seen the anguish of my heart in my face, for he smiled at me and said, "I am only too happy to have been of service! Oh, God!" he cried suddenly, struggling to a sitting posture and pointing to me. "It was worth for this to die! Look! Look!"
The sun was now right down upon the mountain top, and the red gleams fell upon my face, so that it was bathed in rosy light. With one impulse the men sank on their knees and a deep and earnest "Amen" broke from all as their eyes followed the pointing of his finger.
The dying man spoke, "Now God be thanked that all has not been in vain! See! The snow is not more stainless than her forehead! The curse has passed away!"
And, to our bitter grief, with a smile and in silence, he died, a gallant gentleman.
NOTE
Seven years ago we all went through the flames. And the happiness of some of us since then is, we think, well worth the pain we endured. It is an added joy to Mina and to me that our boy's birthday is the same day as that on which Quincey Morris died. His mother holds, I know, the secret belief that some of our brave friend's spirit has passed into him. His bundle of names links all our little band of men together. But we call him Quincey.
In the summer of this year we made a journey to Transylvania, and went over the old ground which was, and is, to us so full of vivid and terrible memories. It was almost impossible to believe that the things which we had seen with our own eyes and heard with our own ears were living truths. Every trace of all that had been was blotted out. The castle stood as before, reared high above a waste of desolation.
When we got home we were talking of the old time, which we could all look back on without despair, for Godalming and Seward are both happily married. I took the papers from the safe where they had been ever since our return so long ago. We were struck with the fact, that in all the mass of material of which the record is composed, there is hardly one authentic document. Nothing but a mass of typewriting, except the later notebooks of Mina and Seward and myself, and Van Helsing's memorandum. We could hardly ask any one, even did we wish to, to accept these as proofs of so wild a story. Van Helsing summed it all up as he said, with our boy on his knee.
"We want no proofs. We ask none to believe us!  Already he knows her sweetness and loving care. Later on he will understand how some men so loved her, that they did dare much for her sake."
JONATHAN HARKER


Survey Questions
About You
Name (Required)
Link to Photo Image (Required)
Question 1
Would you ever sleep with a serial killer?
Question 2
Breast implants - Are they pathetic?
Question 3
Vanilla tastes better than chocolate?
Question 4
Drinking and driving can be fun!
Question 5
Do you like the taste of tobacco?
Question 6
Would you ever dump in public?
Question 7
Do you believe in ghosts?
Question 8
Are you parents ugly?
Question 9
Lakers smells popo
Question 10
Would you ever sleep with a serial killer?