2 Differential protein abundance analysis
2.1 Data Description
The proteins in the brains of age and psen1 genotype matched siblings of the samples from the K97Gfs dataset were quantified. Quantification was done using label-free liquid chromatography-tandem mass spectroscopy (LC-MS/MS) by the Adelaide Proteomics Center, and spectra were matched to peptides and potential proteins using the MaxQuant software. The MaxQuant output files includes the intensities measured for each peptide per sample. The peptides can then be summarised at the protein-level to identify proteins that are present in each sample.
For sample characteristics, see Table 2.1
| Raw.file | BioReplicate | TechReplicate | Age | Group |
|---|---|---|---|---|
| IMP150918_15-038b_2_run1_BC2_01_2951 | 2 | 1 | 6 | NM_6 |
| IMP150918_15-038b_2_run2_BC2_01_2952 | 2 | 2 | 6 | NM_6 |
| IMP150918_15-038b_4_run1_BC4_01_2957 | 4 | 1 | 6 | NM_6 |
| IMP150918_15-038b_4_run2_BC4_01_2958 | 4 | 2 | 6 | NM_6 |
| IMP150918_15-038b_6_run1_BC6_01_2963 | 6 | 1 | 6 | NM_6 |
| IMP150918_15-038b_6_run2_BC6_01_2964 | 6 | 2 | 6 | NM_6 |
| IMP150918_15-038b_1_run1_BC1_01_2948 | 1 | 1 | 6 | K97_6 |
| IMP150918_15-038b_1_run2_BC1_01_2949 | 1 | 2 | 6 | K97_6 |
| IMP150918_15-038b_3_run1_BC3_01_2954 | 3 | 1 | 6 | K97_6 |
| IMP150918_15-038b_3_run2_BC3_01_2955 | 3 | 2 | 6 | K97_6 |
| IMP150918_15-038b_5_run1_BC5_01_2960 | 5 | 1 | 6 | K97_6 |
| IMP150918_15-038b_5_run2_BC5_01_2961 | 5 | 2 | 6 | K97_6 |
| IMP160413_16-019_1NM_1_RA1_01_486 | 8 | 1 | 24 | NM_24 |
| IMP160413_16-019_1NM_2_RA1_01_487 | 8 | 2 | 24 | NM_24 |
| IMP160413_16-019_2NM_1_RA2_01_489 | 10 | 1 | 24 | NM_24 |
| IMP160413_16-019_2NM_2_RA2_01_490 | 10 | 2 | 24 | NM_24 |
| IMP160413_16-019_3NM_1_RA3_01_492 | 12 | 1 | 24 | NM_24 |
| IMP160413_16-019_3NM_2_RA3_01_493 | 12 | 2 | 24 | NM_24 |
| IMP160413_16-019_4NM_1_RA4_01_495 | 14 | 1 | 24 | NM_24 |
| IMP160413_16-019_4NM_2_RA4_01_496 | 14 | 2 | 24 | NM_24 |
| IMP160413_16-019_1K_1_RA5_01_498 | 7 | 1 | 24 | K97_24 |
| IMP160413_16-019_1K_2_RA5_01_500 | 7 | 2 | 24 | K97_24 |
| IMP160413_16-019_2K_1_RA6_01_502 | 9 | 1 | 24 | K97_24 |
| IMP160413_16-019_2K_2_RA6_01_503 | 9 | 2 | 24 | K97_24 |
| IMP160413_16-019_3K_1_RA7_01_505 | 11 | 1 | 24 | K97_24 |
| IMP160413_16-019_3K_2_RA7_01_506 | 11 | 2 | 24 | K97_24 |
| IMP160413_16-019_4K_1_RA8_01_508 | 13 | 1 | 24 | K97_24 |
| IMP160413_16-019_4K_2_RA8_01_509 | 13 | 2 | 24 | K97_24 |
2.2 Data Pre-Processing
2.2.1 Protein Abundance Estimation
The raw MaxQuant output files were supplied by the Adelaide Proteomics Center, and the MSStats R package was used to perform peptide-to-protein summmarisation and abundance estimation, which implements a model-based approach for protein quantification and imputation (Choi et al. 2014; Karpievitch et al. 2009). The steps in this workflow are summarised below.
- Data Import: MaxQuant files containing peptide intensities and peptide-to-potential-protein mappings are imported into R, and a log2 transformation is applied to allow the peptide intensities for each sample to approximate a normal distribution.
- Feature Selection: A subset of peptides that were determmined to be the most representative of the possible proteins that could be constructed, were selected in terms of their coverage across the samples. Proteins with too many missing (not detectable) peptides across all samples were removed before normalisation.
- Normalisation and Imputation of Missing Values: Peptide intensities were quantile normalised across all 6 month samples, and separately, across all 24 month samples. An accelerated failure time (AFT) model was applied to impute censored missing peptides whose values were assumed to be below the detection limit of the mass spectrometer (Tekwe et al. 2012; Wang et al. 2012). This is a reasonable assumption, because previous analysis of the proteomic data revealed that most proteins that were only detected in a few samples tended to have much lower intensities, and hence may not have been reliably detected in other samples.
- Summarisation of Protein Intensities: Peptides are summarised to proteins by applying a Tukey’s median polish (TMP) method, which allows for robust estimation of model parameters.
The code used to perform these pre-processing steps with MSstats is shown below. Because this step takes a while to run, I have saved the final processed_quant_6
(6 month old data) and processed_quant_24
(24 month old data) as R objects (.rds files) to be loaded in.
# The 6 and 24 month samples were done as different experiments, so their data will be analysed separately.
# Import relevant MaxQuant files for 6 month samples, along with an annotation table describing the samples,
# and convert the data into a format compatible with MSstats.
proteinGroups_6 <- read.table(file.path(dataDir, "da_proteins/raw_peptides_6/proteinGroups.txt"), sep="\t", header=TRUE)
infile_6 <- read.table(file.path(dataDir, "da_proteins/raw_peptides_6/evidence.txt"), sep="\t", header=TRUE)
annot_6 <- read_csv(file.path(dataDir, "da_proteins/raw_peptides_6/annot.csv"))
quant_6 <- MaxQtoMSstatsFormat(evidence = infile_6, proteinGroups = proteinGroups_6, annotation = annot_6)
# Do the same for the 24 month data.
proteinGroups_24 <- read.table(file.path(dataDir, "da_proteins/raw_peptides_24/proteinGroups.txt"), sep="\t", header=TRUE)
infile_24 <- read.table(file.path(dataDir, "da_proteins/raw_peptides_24/evidence.txt"), sep="\t", header=TRUE)
annot_24 <- read_csv(file.path(dataDir, "da_proteins/raw_peptides_24/annot.csv"))
quant_24 <- MaxQtoMSstatsFormat(evidence = infile_24, proteinGroups = proteinGroups_24, annotation = annot_24)
# Use the dataProcess function from MaxQuant to perform the pre-processing steps for the 6 month samples.
processed_quant_6 <- dataProcess(
quant_6,
normalization = "quantile",
summaryMethod = "TMP", # Tukey's median polish model performs protein-level summarisation based on median across rows and samples.
cutoffCensored = "minFeature",
censoredInt = "NA", # All intensities with NA values should be considered as missing.
MBimpute = TRUE # Use Accelerated Failure Time omdel to impute missing intensities.
)
# Do the same with the 24 month data.
processed_quant_24 <- dataProcess(
quant_24,
normalization = "quantile",
summaryMethod = "TMP",
cutoffCensored = "minFeature",
censoredInt = "NA",
MBimpute = TRUE
)
# saveRDS(processed_quant_6, "da_proteins/processed_quant_6.rds")
# saveRDS(processed_quant_24, "da_proteins/processed_quant_24.rds")
The processed data are in the processed_quant_6
and processed_quant_24
objects for the 6 and 24 month datasets respectively. The processed peptide-level data are in the $ProcessedData
slot while the processed protein-level data are in the $RunLevelData
slot. We will extract the protein-level intensities out for the technical replicate and biological replicates.
# Import sample annotations and characteristics for the 6 and 24 month samples.
# This is just a spreadsheet with columns corresponding to sample metadata
# and rows corresponding to sammples.
annot <- read_csv(file.path(dataDir, "da_proteins/annot_6_24_combined.csv")) %>%
mutate_if(is.character, factor) %>%
mutate(Group = as.factor(paste0(Condition, "_", Age))) %>%
arrange(Age, desc(Condition))
# Read in the result of MSstats dataProcess for the 6 and 24 month samples.
# The ProcessedData slot includes peptide-level info while the RunLevelData slot
# includes "run" or protein-level info.
processed_quant_6 <- readRDS(file.path(dataDir, "da_proteins/processed_quant_6.rds"))
processed_quant_24 <- readRDS(file.path(dataDir, "da_proteins/processed_quant_24.rds"))
# Add sample annotation to the processed protein quantification data.
processed_quant_6$RunlevelData %<>% left_join(annot, by = c("originalRUN"="Raw.file"))
processed_quant_24$RunlevelData %<>% left_join(annot, by = c("originalRUN"="Raw.file"))
The distributions of peptides for each sample are shown in the following boxplots. It is evident that the quantiles of each sample are the same in all of the 6 month samples, and separately, in the 24 month samples. However, the 24 month samples seem to have overall lower intensities compared to the 6 month samples. This suggests that if we want to combine the two datasets to do a combined analysis (e.g. so that we can perform the comparison to find differentially abundant proteins between young mutants and wildtypes), we will have to correct for this systematic bias and normalise the intensities. Otherwise most proteins would be considered “differentially abundant” if we were comparing any 6 month samples to 24 month samples.
The peptides can be reconstructed and summarised at the protein-level as well for each sample. When we do this, the protein intensity distributions vary slightly more between samples, and the quantiles are no longer as equal, as shown in the boxplots below.
2.2.2 Normalisation of 6 month and 24 month datasets
Because of the systematic bias towards lower protein intensities in the 24 month samples, differential abundance analysis is likely to be inaccurate unless an additional normalisation step is performed to make the 6 and 24 month datasets more comparable.
Here, we will apply quantile normalisation to equalise the quantiles of the 6 and 24 month datasets.
# Extract the biological replicate processed protein intensities and join the two datasets.
# We will also extract the protein db, UniqueIdentifier and EntryName from the Fasta header
# in the Protein column.
biorepquant_6 <- processed_quant_6$RunlevelData %>%
dcast(Protein ~ NameBioRep, value.var = "LogIntensities", fun.aggregate = median) %>%
mutate(
Protein = gsub(x = Protein, pattern = ";.*$|.*__", replacement = ""),
db = gsub(x= Protein, pattern = "^([[:alpha:]]{2}).*$", replacement = "\\1"),
UniqueIdentifier = gsub(x = Protein, pattern = "^[[:alpha:]]{2}\\|([[:alnum:]]*)\\|.*$", replacement = "\\1"),
EntryName = gsub(x = Protein, pattern = ".*\\|", replacement = "")) #534 rows
biorepquant_24 <- processed_quant_24$RunlevelData %>%
dcast(Protein ~ NameBioRep, value.var = "LogIntensities", fun.aggregate = median) %>%
mutate(
Protein = gsub(x = Protein, pattern = ";.*$|.*__", replacement = ""),
db = gsub(x= Protein, pattern = "^([[:alpha:]]{2}).*$", replacement = "\\1"),
UniqueIdentifier = gsub(x = Protein, pattern = "^[[:alpha:]]{2}\\|([[:alnum:]]*)\\|.*$", replacement = "\\1"),
EntryName = gsub(x = Protein, pattern = ".*\\|", replacement = "")) #582 rows
# Convert the column containing protein IDs to character rather than factor.
biorepquant_6$Protein %<>% as.character
biorepquant_24$Protein %<>% as.character
# Do a full join to retain all proteins from the 6 month and 24 month datasets.
biorepquant <- full_join(biorepquant_6, biorepquant_24, by = c("UniqueIdentifier", "db", "EntryName", "Protein")) # 688 proteins
# Normalise the datasets with an additional quantile normalisation due
# to systematic bias in that the 24 month samples have lower overall protein
# intensities since 6 and 24 month datasets are from separate batches (experiments).
biorepquant_norm <- biorepquant %>%
dplyr::select(contains("mth")) %>%
as.matrix %>%
limma::normalizeQuantiles() %>% # Apply quantile normalization fromm the limma package.
set_rownames(biorepquant$UniqueIdentifier)
# Filter the resulting 688 proteins down to 323 proteins by retaining only
# proteins with no NAs across all biological samples.
biorepquant_norm_filtered <- biorepquant_norm %>%
as.data.frame %>%
rownames_to_column("UniqueIdentifier") %>%
filter(complete.cases(.)) %>% #Retain only proteins that have no NAs across all samples.
column_to_rownames("UniqueIdentifier") %>%
as.matrix
biorepquant <- biorepquant_norm_filtered
After the additional quantile normalisation step, followed by filtering the proteins to retain those which show expression across all samples, we would expect that the quantiles of the protein intensity distributions of the 6 and 24 month samples would align more. This is shown in the following boxplots, which indicate the the quantiles of 6 and 24 month samples are very similar and the systematic bias is no longer present.
2.2.3 Protein Annotation
Proteins detected in the combined 6 and 24 month sammples can be annotated with their protein names, gene names and gene ontology terms from the UniProt database, using the UniProtKB UniqueIdentifier
extracted above. We will also obtain the corresponding Ensembl and entrezgene identifiers for each protein to facilitate comparison with our RNA-seq dataset later on.
# Use the UNIPROTKB UniqueIdentifier to retrieve information from the zebrafish UniProt database.
uniprotInfo <- select(up, columns = c("UNIPROTKB", "PROTEIN-NAMES", "ENSEMBL", "ENTREZ_GENE", "GENES", "GO"),
keys = rownames(biorepquant), keytype = "UNIPROTKB")
# Join protein annotations onto the original biorepquant object.
biorepquant %<>% as.data.frame %>% rownames_to_column("UniqueIdentifier") %>%
left_join(uniprotInfo, by = c("UniqueIdentifier"="UNIPROTKB")) %>%
as.data.frame %>%
distinct(UniqueIdentifier, .keep_all=TRUE) %>%
column_to_rownames("UniqueIdentifier")
# saveRDS(biorepquant, "da_proteins/biorepquant_withInfo.rds")
2.3 Exploratory Data Analysis
2.3.1 Correlation between 6 and 24 month samples
The Pearson correlation between the samples is one method of assessing how similar they are to each other. We would expect that samples that have the same age and psen1 genotype would tend to have higher Pearson correlation coefficients. The correlation matrix between 6 and 24 month old samples is shown below.
Overall, the protein intensities in the 6 month samples tend to be strongly correlated with each other (~0.8-9). However, these intensities are less strongly correlated between 6 and 24 month samples (~0.6). The effect of psen1 mutation is likely quite small compared to the effect of aging from 6 to 24 months, and it isn’t easy to see if samples group by psen1 mutation from the correlation plot above.
2.3.2 Principal Component Analysis
Principal component analysis is another method to check sample grouping and similarity, and it may be beneficial for visualising the impact of psen1 mutation on the similarity of samples. The Principal Component Analysis plot of the combined 6 and 24 month samples from the K97fs dataset is shown below. The samples separate by age across the first principal commponent, indicating that age likely represents the largest source of variation in the samples. There is some slight separation of samples across the second principal component corresponding to psen1 genotype, indicating that this may represent at least partly the second largest source of variation in the samples.
2.4 Differential protein abundance analysis
Differential protein abundance analysis will be done using limma, which uses a moderated t-test and empirical Bayes approach to analyse microarray and RNA-seq datasets and detect potential differential expression between samples. However, it has been shown that the methods used by limma are also applicable to proteomics datasets, and provide greater power to detect changes in protein abundance when compared to a normal t-test (Kammers et al. 2015; Schwämmle et al. 2013).
In addition, several Biostars posts provide tips for using limma to analyse proteomics data.
dge_biorep <- biorepquant %>%
as.data.frame %>%
dplyr::select(contains("6mth"), contains("24mth")) %>%
as.matrix %>%
edgeR::DGEList() %>%
edgeR::calcNormFactors(method = "none")
# Add sample data to DGEList object.
dge_biorep$samples %<>%
rownames_to_column("sample") %>%
left_join(annot[annot$TechReplicate==1, ], by=c("sample"="NameBioRep")) %>%
as.data.frame() %>%
column_to_rownames("sample")
# Add protein info to DGEList object.
dge_biorep$genes <- biorepquant %>%
as.data.frame %>%
rownames_to_column("UniqueIdentifier") %>%
dplyr::select(UniqueIdentifier, `PROTEIN-NAMES`, ENSEMBL, ENTREZ_GENE, GENES, GO) %>%
column_to_rownames("UniqueIdentifier") %>%
extract(rownames(dge_biorep$counts),)
Several aspects of the limma analysis include:
- The protein intensities have been previously log2 transformed and quantile normalised. No additional normalisation has been performed since then.
- Sample-level weights are estimated using limma’s
arrayWeights
function and the design matrix. This estimates a scaling factor for each sample that represents the weighting, or importance that each sample is given in the rest of the analysis. Highly variable samples tend to be downweighted as they are considered potentially more like outliers. - The linear model is fit to each protein to determine whether it might show differential abundance while accounting for the sample-level weights.
# Create design matrix using Group as the explanatory variable.
# Levels of Group are K97_24, K97_6, NM_24, NM_6
design_biorep <- model.matrix(~0 + Group, data = dge_biorep$samples) %>%
set_colnames(gsub(x=colnames(.), pattern = "Group", replacement = ""))
# Define contrasts / comparisons between groups.
contrasts_biorep <- makeContrasts(
levels = colnames(design_biorep),
K97_mutYoung_wtYoung = K97_6-NM_6,
K97_mutOld_wtOld = K97_24-NM_24,
K97_wtOld_wtYoung = NM_24-NM_6,
K97_mutOld_mutYoung = K97_24-K97_6
)
# Estimate sample-level weights using the groups defined in design matrix.
weights_biorep <- arrayWeights(dge_biorep$counts, design_biorep) %>% set_names(colnames(dge_biorep$counts))
# Fit the generalized linear model
fit_biorep <- lmFit(dge_biorep$counts, design_biorep, weights = weights_biorep) %>%
contrasts.fit(contrasts_biorep) %>%
eBayes(robust = TRUE, trend = TRUE)
#plotSA(fit_biorep)
# Get summary of up and down regulated proteins for each comparison
results_biorep <- decideTests(fit_biorep, p.value=0.05, lfc = 0, adjust.method="fdr", method = "global")
results2_biorep <-decideTests(fit_biorep, p.value=0.05, lfc = 0, adjust.method="fdr", method = "global")
summary(results_biorep)
## K97_mutYoung_wtYoung K97_mutOld_wtOld K97_wtOld_wtYoung
## -1 10 30 82
## 0 301 258 163
## 1 12 35 78
## K97_mutOld_mutYoung
## -1 84
## 0 172
## 1 67
# Export results using limma's write.fit function.
# write.fit(fit_biorep, results = results_biorep, file = file.path(dataDir, "da_proteins/da_protein_results.txt"), digits = 9, adjust = "fdr", method = "global", sep = "\t")
protein_results <- read_tsv(file.path(dataDir, "da_proteins/da_protein_results.txt")) %>%
bind_cols(dge_biorep$genes%>%rownames_to_column("ensembl_gene_id"))
DA_proteins <- list()
DA_proteins[["K97_mutYoung_wtYoung"]] <- protein_results %>%
filter(Res.K97_mutYoung_wtYoung != 0) %>%
dplyr::arrange(p.value.adj.K97_mutYoung_wtYoung) %>%
mutate(firstProtein = gsub(x = `PROTEIN-NAMES`, pattern = " \\(.*$", replacement = ""),
firstGene = gsub(x = GENES, pattern = " .*$", replacement = ""),
firstProteinAndGene = paste0(firstProtein, " (", firstGene, ")"))
DA_proteins[["K97_mutOld_wtOld"]] <- protein_results %>%
filter(Res.K97_mutOld_wtOld != 0) %>%
dplyr::arrange(p.value.adj.K97_mutOld_wtOld) %>%
mutate(firstProtein = gsub(x = `PROTEIN-NAMES`, pattern = " \\(.*$", replacement = ""),
firstGene = gsub(x = GENES, pattern = " .*$", replacement = ""),
firstProteinAndGene = paste0(firstProtein, " (", firstGene, ")"))
DA_proteins[["K97_mutOld_mutYoung"]] <- protein_results %>%
filter(Res.K97_mutOld_mutYoung != 0) %>%
dplyr::arrange(p.value.adj.K97_mutOld_mutYoung) %>%
mutate(firstProtein = gsub(x = `PROTEIN-NAMES`, pattern = " \\(.*$", replacement = ""),
firstGene = gsub(x = GENES, pattern = " .*$", replacement = ""),
firstProteinAndGene = paste0(firstProtein, " (", firstGene, ")"))
DA_proteins[["K97_wtOld_wtYoung"]] <- protein_results %>%
filter(Res.K97_wtOld_wtYoung != 0) %>%
dplyr::arrange(p.value.adj.K97_wtOld_wtYoung) %>%
mutate(firstProtein = gsub(x = `PROTEIN-NAMES`, pattern = " \\(.*$", replacement = ""),
firstGene = gsub(x = GENES, pattern = " .*$", replacement = ""),
firstProteinAndGene = paste0(firstProtein, " (", firstGene, ")"))
# Export results of limma analysis using a custom topTable function
proteinList_biorep <- list()
proteinList_biorep[["K97_mutOld_wtOld"]] <- getDAProteins("K97_mutOld_wtOld", fit_biorep)
proteinList_biorep[["K97_mutYoung_wtYoung"]] <- getDAProteins("K97_mutYoung_wtYoung", fit_biorep)
proteinList_biorep[["K97_wtOld_wtYoung"]] <- getDAProteins("K97_wtOld_wtYoung", fit_biorep)
proteinList_biorep[["K97_mutOld_mutYoung"]] <- getDAProteins("K97_mutOld_mutYoung", fit_biorep)
proteinList_biorep[["AllComparisons"]] <- topTable(fit_biorep, n = Inf, p.value = 0.05, adjust.method = "fdr", genelist = dge_biorep$genes) %>%
rownames_to_column("UniqueIdentifier")
2.5 Results
2.5.1 Effect of the K97fs Mutation on Protein Abundance
The following two volcano plots show the differentially abundant proteins detected at 6 months and at 24 months, when comparing K97Gfs/+ samples to age-matched +/+ samples.
<IP_ADDRESS> Effect of K97Gfs/+ on Protein Abundance at 6 Months
There are 1 proteins which are differentially abundant between wildtypes and mutants at 6 months: Superoxide dismutase [Cu-Zn] (adjusted p-value < 0.05). Several proteins have adjusted p-values between 0.05 and 0.06. The heatmap below shows the top 10 differentially abundant proteins (ranging from adjusted p value of 0.01 to 0.06).
| Protein Name (Gene Name) | logFC | FDR adj. p-value |
|---|---|---|
| Superoxide dismutase [Cu-Zn] (sod1) | 1.7827002 | 0.0009229 |
| Protein LZIC (lzic) | 1.2202879 | 0.0030382 |
| Adenylosuccinate synthetase isozyme 1 (adssl1) | -2.1404729 | 0.0031789 |
| Keratin, type II cytoskeletal 8 (krt8) | -0.8450482 | 0.0056631 |
| Paraspeckle component 1 (pspc1) | 1.6949365 | 0.0059630 |
| Protein DJ-1zDJ-1 (park7) | 0.9670572 | 0.0066543 |
| Cytochrome c oxidase subunit 2 (mt-co2) | -0.9429096 | 0.0066543 |
| NADH-ubiquinone oxidoreductase chain 4 (mt-nd4) | -1.0970442 | 0.0097342 |
| ATP synthase protein 8 (mt-atp8) | -1.8668389 | 0.0100021 |
| Anamorsin (ciapin1) | 1.0448598 | 0.0119642 |
| Calcium uniporter protein, mitochondrial (mcu) | -0.8732461 | 0.0122066 |
| Probable 2-oxoglutarate dehydrogenase E1 component DHKTD1, mitochondrial (dhtkd1) | -0.8478781 | 0.0142207 |
| Hypoxia up-regulated protein 1 (hyou1) | -1.4978001 | 0.0144642 |
| Isoaspartyl peptidase/L-asparaginase (asrgl1) | 1.0324678 | 0.0158947 |
| Nuclear distribution protein nudE-like 1-B (ndel1b) | -1.0927114 | 0.0210558 |
| Protein C10 (si:dkey-29f10.1) | 1.3132571 | 0.0258687 |
| Apolipoprotein Eb (apoeb) | 1.3210531 | 0.0291036 |
| SUMO-conjugating enzyme UBC9-B (ube2ib) | 0.7940908 | 0.0291036 |
| Secernin-2 (scrn2) | 0.5799953 | 0.0327170 |
| SH3 domain-binding glutamic acid-rich-like protein 2 (sh3bgrl2) | 0.7251151 | 0.0340627 |
| Laminin subunit gamma-1 (lamc1) | -0.9014839 | 0.0381506 |
| Triosephosphate isomerase B (tpi1b) | 0.5144063 | 0.0403128 |
<IP_ADDRESS> Effect of K97Gfs/+ on Protein Abundance at 24 Months
There are 60 proteins which are differentially abundant between wildtypes and mutants at 24 months (FDR-adjusted p-value < 0.05). These are shown in the heatmap and table below.
| Protein Name (Gene Name) | logFC | FDR adj. p-value |
|---|---|---|
| UPF0568 protein C14orf166 homolog (zgc:56576) | 2.6875962 | 0.0000104 |
| Actin-related protein 2-B (actr2b) | -2.0139698 | 0.0007259 |
| Nascent polypeptide-associated complex subunit alpha (naca) | -1.5502276 | 0.0009680 |
| Carbonic anhydrase (cahz) | -0.9214662 | 0.0010269 |
| RNA-binding protein 4.1 (rbm4.1) | -0.9446905 | 0.0010954 |
| 60S ribosomal protein L24 (rpl24) | 2.3459543 | 0.0011164 |
| Dynactin subunit 2 (dctn2) | -0.9292179 | 0.0011329 |
| COP9 signalosome complex subunit 5 (cops5) | 1.7575703 | 0.0011538 |
| 60S ribosomal protein L10a (rpl10a) | 1.3773314 | 0.0012090 |
| V-type proton ATPase subunit C 1-B (atp6v1c1b) | 1.0319887 | 0.0017780 |
| Malignant T-cell-amplified sequence 1 (mcts1) | -1.4433633 | 0.0019222 |
| Prostamide/prostaglandin F synthase (fam213b) | 0.9876148 | 0.0019553 |
| Synembryn-A (ric8a) | 1.3540481 | 0.0022857 |
| Casein kinase I isoform gamma-1 (csnk1g1) | 1.2329034 | 0.0028908 |
| V-type proton ATPase subunit C 1-A (atp6v1c1a) | 0.7111384 | 0.0029413 |
| ADP-ribosylation factor-like protein 8B-A (arl8ba) | 1.5653990 | 0.0042921 |
| 3-hydroxyisobutyryl-CoA hydrolase, mitochondrial (hibch) | 1.4179637 | 0.0044022 |
| Mitochondrial Rho GTPase 1-A (rhot1a) | 1.0473969 | 0.0048737 |
| Apolipoprotein A-I (apoa1) | 0.7941615 | 0.0053904 |
| Phosphatidylinositide phosphatase SAC1-B (sacm1lb) | 1.5227175 | 0.0055505 |
| Serine/threonine-protein phosphatase 4 catalytic subunit B (ppp4cb) | -0.9177467 | 0.0055505 |
| Betaine–homocysteine S-methyltransferase 1 (bhmt) | -1.6272878 | 0.0060891 |
| Protein tweety homolog 3 (ttyh3) | -0.8451908 | 0.0066543 |
| Neural cell adhesion molecule L1.1 (nadl1.1) | -0.8779705 | 0.0066561 |
| Interferon-inducible double-stranded RNA-dependent protein kinase activator A homolog (prkra) | -1.0593306 | 0.0068551 |
| Brain acid soluble protein 1 homolog (basp1) | 1.0878646 | 0.0069387 |
| Guanine nucleotide-binding protein G(I)/G(S)/G(T) subunit beta-1 (gnb1) | -0.6028537 | 0.0082382 |
| Adenylosuccinate synthetase isozyme 1 (adssl1) | 1.6787306 | 0.0084451 |
| NEDD8-activating enzyme E1 regulatory subunit (nae1) | 1.2204218 | 0.0089160 |
| LanC-like protein 1 (lancl1) | 0.6918085 | 0.0090506 |
| 60S ribosomal protein L27 (rpl27) | 1.3860266 | 0.0092215 |
| Glutaredoxin 3 (glrx3) | -0.6211343 | 0.0101642 |
| Phospholysine phosphohistidine inorganic pyrophosphate phosphatase (lhpp) | -0.9464653 | 0.0119661 |
| Selenium-binding protein 1 (selenbp1) | 0.7584113 | 0.0119661 |
| Neurocalcin-delta A (ncalda) | 1.1556537 | 0.0123394 |
| Nck-associated protein 1 (nckap1) | 0.7179186 | 0.0129776 |
| Cytochrome c oxidase subunit 2 (mt-co2) | -0.7619775 | 0.0138354 |
| Sideroflexin-4 (sfxn4) | 0.7152910 | 0.0139149 |
| Histone-binding protein RBBP4 (rbbp4) | -0.8698140 | 0.0144602 |
| Actin-related protein 2-A (actr2a) | -1.2894124 | 0.0146707 |
| V-type proton ATPase subunit d 1 (atp6v0d1) | -0.6225767 | 0.0147760 |
| Serrate RNA effector molecule homolog (srrt) | -0.8174883 | 0.0154373 |
| Anamorsin (ciapin1) | -0.9001998 | 0.0156356 |
| L-lactate dehydrogenase B-A chain (ldhba) | -0.5153661 | 0.0162968 |
| tRNA-splicing ligase RtcB homolog (rtcb) | 0.8957203 | 0.0167997 |
| Neuropilin-1a (nrp1a) | 0.9657941 | 0.0171086 |
| Protein phosphatase 1 regulatory subunit 12A (ppp1r12a) | -0.7701770 | 0.0171592 |
| RNA binding protein fox-1 homolog 1 (rbfox1) | -1.1904907 | 0.0180180 |
| Lissencephaly-1 homolog A (pafah1b1a) | 0.5846215 | 0.0200546 |
| COP9 signalosome complex subunit 3 (cops3) | -0.5757406 | 0.0202137 |
| SLIT-ROBO Rho GTPase-activating protein 2 (srgap2) | 0.8907259 | 0.0207179 |
| PI-PLC X domain-containing protein 3 (plcxd3) | 0.9590319 | 0.0210558 |
| Phenylalanine–tRNA ligase alpha subunit (farsa) | -0.7923081 | 0.0217086 |
| Guanine nucleotide-binding protein subunit beta-2-like 1 (gnb2l1) | -0.6517242 | 0.0221628 |
| RNA-binding motif protein, X chromosome (rbmx) | 0.7145715 | 0.0229699 |
| Citrate synthase, mitochondrial (cs) | 0.7188493 | 0.0244227 |
| Eukaryotic translation initiation factor 3 subunit M (eif3m) | 0.9212302 | 0.0254593 |
| KH domain-containing, RNA-binding, signal transduction-associated protein 2 (khdrbs2) | 0.8185816 | 0.0256795 |
| Dynamin-1-like protein (dnm1l) | 0.6389097 | 0.0261175 |
| SUMO-activating enzyme subunit 2 (uba2) | -0.6079133 | 0.0278778 |
| Neuronal-specific septin-3 (sept3) | -0.4635944 | 0.0339316 |
| WD repeat-containing protein 26 (wdr26) | 0.6997694 | 0.0381506 |
| Poly(U)-binding-splicing factor PUF60-B (puf60b) | -0.6784616 | 0.0398110 |
| CUGBP Elav-like family member 2 (celf2) | -0.6715693 | 0.0448846 |
| mRNA cap guanine-N7 methyltransferase (rnmt) | 1.1589180 | 0.0486245 |
2.6 Heatmap Summary
The following code was used to produce the heatmaps in Figure 3 showing the logFC of differentially abundant proteins between psen1K97fs/+ and psen1+/+ zebrafish at 6 months and at 24 months of age, along with the logFC of the other comparisons.
The gene symbols are shown on these heatmaps (instead of the protein names) for display and readability purposes.
Note that the code to produce the heatmap is not evaluated for this Markdown document as the figure is too wide to fit on the screen.
# View the proteins which are differentially expressed between 6-month-old mutants and wild types.
heatmap_6mth <- DA_proteins$K97_mutYoung_wtYoung %>%
dplyr::select(firstGene, starts_with("Coef")) %>%
as.data.frame %>%
arrange(desc(Coef.K97_mutYoung_wtYoung), desc(Coef.K97_wtOld_wtYoung)) %>%
column_to_rownames("firstGene") %>%
dplyr::select("Coef.K97_mutYoung_wtYoung", "Coef.K97_wtOld_wtYoung", "Coef.K97_mutOld_wtOld", "Coef.K97_mutOld_mutYoung")
# To prevent very large or small logFC from standing out too much in the heatmap,
# set the maximum and minimum logFC for visualisation purposes.
heatmap_6mth[(heatmap_6mth)>3] <- 3
heatmap_6mth[(heatmap_6mth)<(-3)] <- (-3)
# Create the heatmap for DE genes at 6 months
h6 <- heatmap_6mth%>%
t %>%
pheatmap(
scale="none",
cluster_rows = FALSE,
clustering_method = "complete",
clustering_distance_cols = "binary",
border_color = "white",
treeheight_col = 60,
treeheight_row = 0,
fontsize = 6,
cellheight = 10, cellwidth = 10,
color = colorRampPalette(c("#10c1e5", "#82e0b4","#F9F9F9", "#FBB829", "#FF0066"))(100))
# ---------------------------------------------------------------------------------#
# Do the same with the 24 month mutant vs. wild type DA proteins
heatmap_24mth <- DA_proteins$K97_mutOld_wtOld %>%
dplyr::select(firstGene, starts_with("Coef")) %>%
as.data.frame %>%
arrange(desc(Coef.K97_mutOld_wtOld)) %>%
column_to_rownames("firstGene") %>%
dplyr::select("Coef.K97_mutOld_wtOld", "Coef.K97_wtOld_wtYoung", "Coef.K97_mutYoung_wtYoung", "Coef.K97_mutOld_mutYoung")
# To prevent very large or small logFC from standing out too much in the heatmap,
# set the maximum and minimum logFC for visualisation purposes.
heatmap_24mth[(heatmap_24mth)>3] <- 3
heatmap_24mth[(heatmap_24mth)<(-3)] <- (-3)
# Create the heatmap for DE genes at 6 months
h24 <- heatmap_24mth%>%
t %>%
pheatmap(
scale="none",
cluster_rows = FALSE,
clustering_method = "complete",
clustering_distance_cols = "binary",
border_color = "white",
treeheight_col = 60,
treeheight_row = 0,
fontsize = 6,
cellheight = 10, cellwidth = 10,
color = colorRampPalette(c("#10c1e5", "#82e0b4","#F9F9F9", "#FBB829", "#FF0066"))(100))
2.7 Enrichment Analysis
We will use limma’s functions goana
and kegga
to perform enrichment analysis using Gene Ontology terms and KEGG pathways respectively.
# Over-representation of Gene Ontology Terms
# Test for each contrast (comparison).
goana_proteins <- list()
goana_proteins[["mutYoung_wtYoung"]] <- goana(DA_proteins$K97_mutYoung_wtYoung$ENTREZ_GENE,
universe = proteinList_biorep$K97_mutYoung_wtYoung$all$ENTREZ_GENE,
species = "Dr") %>% mutate(FDR = p.adjust(P.DE, "fdr"))
goana_proteins[["mutOld_wtOld"]] <- goana(DA_proteins$K97_mutOld_wtOld$ENTREZ_GENE,
universe = proteinList_biorep$K97_mutOld_wtOld$all$ENTREZ_GENE,
species = "Dr") %>% mutate(FDR = p.adjust(P.DE, "fdr"))
goana_proteins[["wtOld_wtYoung"]] <- goana(DA_proteins$K97_wtOld_wtYoung$ENTREZ_GENE,
universe = proteinList_biorep$K97_wtOld_wtYoung$all$ENTREZ_GENE,
species = "Dr") %>% mutate(FDR = p.adjust(P.DE, "fdr"))
goana_proteins[["mutOld_mutYoung"]] <- goana(DA_proteins$K97_mutOld_mutYoung$ENTREZ_GENE,
universe = proteinList_biorep$K97_mutOld_mutYoung$all$ENTREZ_GENE,
species = "Dr") %>% mutate(FDR = p.adjust(P.DE, "fdr"))
top_goana_proteins <- lapply(goana_proteins, limma::topGO)
# Preview the top enriched GO terms for the comparisons of mutant vs. wildtype in
# young (6 month old) and old (24 month old) zebrafish.
top_goana_proteins$mutYoung_wtYoung %>% kable()
| Term | Ont | N | DE | P.DE | FDR | |
|---|---|---|---|---|---|---|
| GO:0060548 | negative regulation of cell death | BP | 3 | 3 | 0.0003828 | 0.1875029 |
| GO:0009123 | nucleoside monophosphate metabolic process | BP | 17 | 6 | 0.0006794 | 0.1875029 |
| GO:0006753 | nucleoside phosphate metabolic process | BP | 17 | 6 | 0.0006794 | 0.1875029 |
| GO:0009117 | nucleotide metabolic process | BP | 17 | 6 | 0.0006794 | 0.1875029 |
| GO:0009126 | purine nucleoside monophosphate metabolic process | BP | 17 | 6 | 0.0006794 | 0.1875029 |
| GO:0006163 | purine nucleotide metabolic process | BP | 17 | 6 | 0.0006794 | 0.1875029 |
| GO:0009167 | purine ribonucleoside monophosphate metabolic process | BP | 17 | 6 | 0.0006794 | 0.1875029 |
| GO:0009150 | purine ribonucleotide metabolic process | BP | 17 | 6 | 0.0006794 | 0.1875029 |
| GO:0009161 | ribonucleoside monophosphate metabolic process | BP | 17 | 6 | 0.0006794 | 0.1875029 |
| GO:0009259 | ribonucleotide metabolic process | BP | 17 | 6 | 0.0006794 | 0.1875029 |
| GO:0019693 | ribose phosphate metabolic process | BP | 17 | 6 | 0.0006794 | 0.1875029 |
| GO:1901135 | carbohydrate derivative metabolic process | BP | 25 | 7 | 0.0010770 | 0.2724788 |
| GO:0055086 | nucleobase-containing small molecule metabolic process | BP | 19 | 6 | 0.0013459 | 0.2918725 |
| GO:0072521 | purine-containing compound metabolic process | BP | 19 | 6 | 0.0013459 | 0.2918725 |
| GO:0019637 | organophosphate metabolic process | BP | 21 | 6 | 0.0024317 | 0.4352102 |
| GO:0046034 | ATP metabolic process | BP | 15 | 5 | 0.0028670 | 0.4352102 |
| GO:0009141 | nucleoside triphosphate metabolic process | BP | 15 | 5 | 0.0028670 | 0.4352102 |
| GO:0009144 | purine nucleoside triphosphate metabolic process | BP | 15 | 5 | 0.0028670 | 0.4352102 |
| GO:0009205 | purine ribonucleoside triphosphate metabolic process | BP | 15 | 5 | 0.0028670 | 0.4352102 |
| GO:0009199 | ribonucleoside triphosphate metabolic process | BP | 15 | 5 | 0.0028670 | 0.4352102 |
top_goana_proteins$mutOld_wtOld %>% kable()
| Term | Ont | N | DE | P.DE | FDR | |
|---|---|---|---|---|---|---|
| GO:0022853 | active ion transmembrane transporter activity | MF | 3 | 3 | 0.0094012 | 1 |
| GO:0099132 | ATP hydrolysis coupled cation transmembrane transport | BP | 3 | 3 | 0.0094012 | 1 |
| GO:0099131 | ATP hydrolysis coupled ion transmembrane transport | BP | 3 | 3 | 0.0094012 | 1 |
| GO:0015991 | ATP hydrolysis coupled proton transport | BP | 3 | 3 | 0.0094012 | 1 |
| GO:0090662 | ATP hydrolysis coupled transmembrane transport | BP | 3 | 3 | 0.0094012 | 1 |
| GO:0043492 | ATPase activity, coupled to movement of substances | MF | 3 | 3 | 0.0094012 | 1 |
| GO:0015662 | ATPase activity, coupled to transmembrane movement of ions, phosphorylative mechanism | MF | 3 | 3 | 0.0094012 | 1 |
| GO:0044769 | ATPase activity, coupled to transmembrane movement of ions, rotational mechanism | MF | 3 | 3 | 0.0094012 | 1 |
| GO:0042626 | ATPase activity, coupled to transmembrane movement of substances | MF | 3 | 3 | 0.0094012 | 1 |
| GO:0042625 | ATPase coupled ion transmembrane transporter activity | MF | 3 | 3 | 0.0094012 | 1 |
| GO:0019829 | cation-transporting ATPase activity | MF | 3 | 3 | 0.0094012 | 1 |
| GO:0015988 | energy coupled proton transmembrane transport, against electrochemical gradient | BP | 3 | 3 | 0.0094012 | 1 |
| GO:0036442 | hydrogen-exporting ATPase activity | MF | 3 | 3 | 0.0094012 | 1 |
| GO:0008553 | hydrogen-exporting ATPase activity, phosphorylative mechanism | MF | 3 | 3 | 0.0094012 | 1 |
| GO:0016820 | hydrolase activity, acting on acid anhydrides, catalyzing transmembrane movement of substances | MF | 3 | 3 | 0.0094012 | 1 |
| GO:0015405 | P-P-bond-hydrolysis-driven transmembrane transporter activity | MF | 3 | 3 | 0.0094012 | 1 |
| GO:0015399 | primary active transmembrane transporter activity | MF | 3 | 3 | 0.0094012 | 1 |
| GO:0046961 | proton-transporting ATPase activity, rotational mechanism | MF | 3 | 3 | 0.0094012 | 1 |
| GO:0033176 | proton-transporting V-type ATPase complex | CC | 3 | 3 | 0.0094012 | 1 |
| GO:0016471 | vacuolar proton-transporting V-type ATPase complex | CC | 3 | 3 | 0.0094012 | 1 |
#-----------------------------------------------------------------------------------------------------------------------#
# Over-represemtation analysis of KEGG Pathways
# for each contrast (comparison)
kegga_proteins <- list()
kegga_proteins[["mutYoung_wtYoung"]] <- kegga(DA_proteins$K97_mutYoung_wtYoung$ENTREZ_GENE,
universe = proteinList_biorep$K97_mutYoung_wtYoung$all$ENTREZ_GENE,
species = "Dr") %>% mutate(FDR = p.adjust(P.DE, "fdr"))
kegga_proteins[["mutOld_wtOld"]] <- kegga(DA_proteins$K97_mutOld_wtOld$ENTREZ_GENE,
universe = proteinList_biorep$K97_mutOld_wtOld$all$ENTREZ_GENE,
species = "Dr") %>% mutate(FDR = p.adjust(P.DE, "fdr"))
kegga_proteins[["wtOld_wtYoung"]] <- kegga(DA_proteins$K97_wtOld_wtYoung$ENTREZ_GENE,
universe = proteinList_biorep$K97_wtOld_wtYoung$all$ENTREZ_GENE,
species = "Dr") %>% mutate(FDR = p.adjust(P.DE, "fdr"))
kegga_proteins[["mutOld_mutYoung"]] <- kegga(DA_proteins$K97_mutOld_mutYoung$ENTREZ_GENE,
universe = proteinList_biorep$K97_mutOld_mutYoung$all$ENTREZ_GENE,
species = "Dr") %>% mutate(FDR = p.adjust(P.DE, "fdr"))
top_kegga_proteins <- lapply(kegga_proteins, topKEGG)
# Preview the top enriched KEGG pathways for the comparisons of mutant vs. wildtype in
# young (6 month old) and old (24 month old) zebrafish.
top_kegga_proteins$mutYoung_wtYoung %>% kable()
| Pathway | N | DE | P.DE | FDR | |
|---|---|---|---|---|---|
| path:dre00190 | Oxidative phosphorylation | 13 | 3 | 0.0415898 | 1 |
| path:dre04512 | ECM-receptor interaction | 1 | 1 | 0.0657895 | 1 |
| path:dre04146 | Peroxisome | 1 | 1 | 0.0657895 | 1 |
| path:dre04260 | Cardiac muscle contraction | 2 | 1 | 0.1276577 | 1 |
| path:dre00230 | Purine metabolism | 3 | 1 | 0.1858139 | 1 |
| path:dre01100 | Metabolic pathways | 51 | 5 | 0.2106555 | 1 |
| path:dre00250 | Alanine, aspartate and glutamate metabolism | 4 | 1 | 0.2404572 | 1 |
| path:dre00051 | Fructose and mannose metabolism | 4 | 1 | 0.2404572 | 1 |
| path:dre04621 | NOD-like receptor signaling pathway | 4 | 1 | 0.2404572 | 1 |
| path:dre04120 | Ubiquitin mediated proteolysis | 4 | 1 | 0.2404572 | 1 |
| path:dre04218 | Cellular senescence | 5 | 1 | 0.2917777 | 1 |
| path:dre04510 | Focal adhesion | 5 | 1 | 0.2917777 | 1 |
| path:dre00562 | Inositol phosphate metabolism | 5 | 1 | 0.2917777 | 1 |
| path:dre04020 | Calcium signaling pathway | 6 | 1 | 0.3399561 | 1 |
| path:dre01230 | Biosynthesis of amino acids | 7 | 1 | 0.3851646 | 1 |
| path:dre04141 | Protein processing in endoplasmic reticulum | 8 | 1 | 0.4275670 | 1 |
| path:dre00010 | Glycolysis / Gluconeogenesis | 11 | 1 | 0.5394592 | 1 |
| path:dre01200 | Carbon metabolism | 13 | 1 | 0.6026844 | 1 |
| path:dre03013 | RNA transport | 13 | 1 | 0.6026844 | 1 |
| path:dre00520 | Amino sugar and nucleotide sugar metabolism | 1 | 0 | 1.0000000 | 1 |
top_kegga_proteins$mutOld_wtOld %>% kable()
| Pathway | N | DE | P.DE | FDR | |
|---|---|---|---|---|---|
| path:dre00190 | Oxidative phosphorylation | 13 | 5 | 0.0964483 | 1 |
| path:dre04145 | Phagosome | 6 | 3 | 0.0996229 | 1 |
| path:dre04150 | mTOR signaling pathway | 4 | 2 | 0.1848625 | 1 |
| path:dre04142 | Lysosome | 1 | 1 | 0.2039474 | 1 |
| path:dre00910 | Nitrogen metabolism | 1 | 1 | 0.2039474 | 1 |
| path:dre00640 | Propanoate metabolism | 5 | 2 | 0.2695261 | 1 |
| path:dre04810 | Regulation of actin cytoskeleton | 5 | 2 | 0.2695261 | 1 |
| path:dre04530 | Tight junction | 5 | 2 | 0.2695261 | 1 |
| path:dre01100 | Metabolic pathways | 51 | 12 | 0.3160966 | 1 |
| path:dre01210 | 2-Oxocarboxylic acid metabolism | 2 | 1 | 0.3673754 | 1 |
| path:dre00970 | Aminoacyl-tRNA biosynthesis | 2 | 1 | 0.3673754 | 1 |
| path:dre04371 | Apelin signaling pathway | 2 | 1 | 0.3673754 | 1 |
| path:dre00590 | Arachidonic acid metabolism | 2 | 1 | 0.3673754 | 1 |
| path:dre00410 | beta-Alanine metabolism | 2 | 1 | 0.3673754 | 1 |
| path:dre04260 | Cardiac muscle contraction | 2 | 1 | 0.3673754 | 1 |
| path:dre00260 | Glycine, serine and threonine metabolism | 2 | 1 | 0.3673754 | 1 |
| path:dre00630 | Glyoxylate and dicarboxylate metabolism | 2 | 1 | 0.3673754 | 1 |
| path:dre04340 | Hedgehog signaling pathway | 2 | 1 | 0.3673754 | 1 |
| path:dre04744 | Phototransduction | 2 | 1 | 0.3673754 | 1 |
| path:dre03320 | PPAR signaling pathway | 2 | 1 | 0.3673754 | 1 |
2.8 Session Info
sessionInfo()
## R version 3.4.1 (2017-06-30)
## Platform: x86_64-apple-darwin15.6.0 (64-bit)
## Running under: macOS Sierra 10.12.6
##
## Matrix products: default
## BLAS: /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/libRblas.0.dylib
## LAPACK: /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/libRlapack.dylib
##
## locale:
## [1] en_AU.UTF-8/en_AU.UTF-8/en_AU.UTF-8/C/en_AU.UTF-8/en_AU.UTF-8
##
## attached base packages:
## [1] grid stats4 parallel stats graphics grDevices utils
## [8] datasets methods base
##
## other attached packages:
## [1] corrplot_0.77 qvalue_2.8.0
## [3] MSstats_3.8.2 genefilter_1.58.1
## [5] plyr_1.8.4 bindrcpp_0.2
## [7] pheatmap_1.0.8 kableExtra_0.5.2
## [9] knitr_1.17 scales_0.5.0
## [11] RColorBrewer_1.1-2 ggplot2_2.2.1
## [13] UniProt.ws_2.16.0 RCurl_1.95-4.8
## [15] bitops_1.0-6 RSQLite_2.0
## [17] biomaRt_2.32.1 RUVSeq_1.10.0
## [19] EDASeq_2.10.0 ShortRead_1.34.1
## [21] GenomicAlignments_1.12.2 SummarizedExperiment_1.6.4
## [23] DelayedArray_0.2.7 matrixStats_0.52.2
## [25] Rsamtools_1.28.0 GenomicRanges_1.28.5
## [27] GenomeInfoDb_1.12.2 Biostrings_2.44.2
## [29] XVector_0.16.0 IRanges_2.10.3
## [31] S4Vectors_0.14.4 BiocParallel_1.10.1
## [33] Biobase_2.36.2 BiocGenerics_0.22.0
## [35] edgeR_3.18.1 limma_3.32.6
## [37] reshape2_1.4.2 magrittr_1.5
## [39] tibble_1.3.4 readr_1.1.1
## [41] dplyr_0.7.3
##
## loaded via a namespace (and not attached):
## [1] minqa_1.2.4 colorspace_1.3-2
## [3] hwriter_1.3.2 ggbiplot_0.55
## [5] rprojroot_1.2 rstudioapi_0.7
## [7] mzR_2.10.0 affyio_1.46.0
## [9] ggrepel_0.6.5 bit64_0.9-7
## [11] AnnotationDbi_1.38.2 org.Dr.eg.db_3.4.1
## [13] xml2_1.1.1 codetools_0.2-15
## [15] splines_3.4.1 R.methodsS3_1.7.1
## [17] doParallel_1.0.10 impute_1.50.1
## [19] DESeq_1.28.0 geneplotter_1.54.0
## [21] nloptr_1.0.4 annotate_1.54.0
## [23] GO.db_3.4.1 vsn_3.44.0
## [25] R.oo_1.21.0 compiler_3.4.1
## [27] httr_1.3.1 backports_1.1.0
## [29] assertthat_0.2.0 Matrix_1.2-11
## [31] lazyeval_0.2.0 htmltools_0.3.6
## [33] tools_3.4.1 gtable_0.2.0
## [35] glue_1.1.1 GenomeInfoDbData_0.99.0
## [37] affy_1.54.0 Rcpp_0.12.12
## [39] MALDIquant_1.16.4 gdata_2.18.0
## [41] preprocessCore_1.38.1 nlme_3.1-131
## [43] rtracklayer_1.36.4 iterators_1.0.8
## [45] stringr_1.2.0 lme4_1.1-13
## [47] rvest_0.3.2 gtools_3.5.0
## [49] statmod_1.4.30 XML_3.98-1.9
## [51] zlibbioc_1.22.0 MASS_7.3-47
## [53] aroma.light_3.6.0 MSnbase_2.2.0
## [55] BiocInstaller_1.26.1 pcaMethods_1.68.0
## [57] hms_0.3 ProtGenerics_1.8.0
## [59] yaml_2.1.14 memoise_1.1.0
## [61] latticeExtra_0.6-28 stringi_1.1.5
## [63] highr_0.6 foreach_1.4.3
## [65] caTools_1.17.1 GenomicFeatures_1.28.4
## [67] rlang_<IP_ADDRESS>00 pkgconfig_2.0.1
## [69] mzID_1.14.0 evaluate_0.10.1
## [71] lattice_0.20-35 bindr_0.1
## [73] labeling_0.3 bit_1.1-12
## [75] bookdown_0.5 R6_2.2.2
## [77] gplots_3.0.1 DBI_0.7
## [79] survival_2.41-3 KernSmooth_2.23-15
## [81] rmarkdown_1.6 locfit_1.5-9.1
## [83] marray_1.54.0 minpack.lm_1.2-1
## [85] blob_1.1.0 digest_0.6.12
## [87] xtable_1.8-2 R.utils_2.5.0
## [89] munsell_0.4.3


{{nameOrMothers(client) | humanize | camelCase}}
({{childsAge(client)}}, {{client.gender | slice:0:1 | uppercase }})
{{client.motherName | humanize | camelCase}}
({{client.motherAge}})
, {{client.fatherName | humanize | camelCase}}
{{client.village | humanize | camelCase}}
({{villageOptions.options[locationStatusMapping[client.locationStatus]].label}})
Thayi: {{client.thayiCardNumber}}
Mother EC: {{client.ecNumber}}


Sign in
You may also need to provision your
BIM 360 Docs account for this app.
Learn more
.
Select Room
Room List
Select Family
Distance between objects - position X
Min
Max
Distance between objects - position Y
Min
Max
Minimum distance from objects to wall
Min
Max
Select Output Folder
Select Grid
Grid Type
Rectangular
Stepped
Generate Design


Fast-track this {{ 'couple' if isPartnerFlow else 'person' }}
Claimant status
Self-employed EEA citizen {{ 'with a qualifying partner' if isPartnerFlow}}
Evidence to collect
- passport – number, nationality, date of issue and expiry date
- bank account statement or simple cash book covering at least 3 months
If they haven't brought all the evidence
- Book further evidence interview and in the 'description' field, enter 'Create prove you can apply to-do'.
- Tell them to bring all the evidence to the interview
- Click ‘done’ to complete the ‘prove you can apply’ to-do.
If they've brought all the evidence (fast-track)
- Go to the ‘prove you can apply’ to-do and in the ‘agent notes’ box, enter:
- the claimant status (see the top of this page for claimant status)
- the details of evidence you've collected
- Click ‘done’ to complete the ‘prove you can apply’ to-do.
- Email the decision maker at<EMAIL_ADDRESS>with the full name of the person claiming.
- Book a habitual residency test interview in the UCFS build (not Booking Bug) using any date and time.
- Go to the claimant’s to-do list, open ‘Attend your habitual residency interview’ to-do, select ‘attended’ and save.
- Remind the person claiming to check their Universal Credit account for updates on their claim.


{% extends 'layouts/base.html' %} {% block title %} Profile {% endblock title %} {% block content %}
We present you the minds and souls behind this incredible senior design project.


We are a family operated business residing in Roseville, California.
We offer exceptional quality weekly swimming pool maintenance and repair services, taking care of all your swimming pool needs or you can choose the service level that suits you best.
You may find cheaper quotes, but no one will match the actual price per quality ratio that we deliver.
We go above and beyond what is expected of your pool service provider. We never cut corners and, in addition to the weekly service you are receiving, we will always check to make sure your filter, pump and pool cleaner are running properly on a weekly basis in order to save you money in the long run and keep your pool in good condition. Typically, other pool service providers who send out different people each week will not do the little extras we do in order to ensure everything is okay with your pool and equipment.
We are licensed, bonded and have liability insurance. Contractor's D35 license # is 1005209.
We can provide you with references.
We are currently servicing the following areas:


Detailed course offerings (Time Schedule) are available for
ISS 301 Social Science Theory in Context (5) I&S M. SPARKE
Explores how social sciences study what people do , how people understand their world, and how that understanding shapes social practice. Provides ways to conceptualize how social relations - economic, political, cultural, sexual, racial, spatial, and historical relations - interact in real work contexts. Offered: A.
View course details in MyPlan: ISS 301
ISS 302 Survey of Social Science Methods (5) I&S
Provides an inclusive survey of methods used across the social sciences. Introduces statistics, survey research, and data visualization techniques. Also covers qualitative research methods ranging from participant observation to archival textual analysis. Students develop skills in both quantitative and qualitative reasoning using real-world evidence. Offered: A.
View course details in MyPlan: ISS 302
ISS 350 Introduction to Portfolios in Social Science (2) I&S M. SPARKE
Helps students begin the process of developing a Learning E-portfolio in which they articulate connections between substantive content learned in their social science courses, as well as begin a process of reflection of their learning in different contexts (private and public, individual, and social). Offered: A.
View course details in MyPlan: ISS 350
ISS 355 Portfolio Seminar in Integrated Social Sciences (2, max. 14) I&S M. SPARKE
Designed to continue the essential integration and reflection work begun in ISS 350 on an intersecting trajectory with developing content and disciplinary knowledge over time. Prerequisite: ISS 350. Offered: WSpS.
View course details in MyPlan: ISS 355
ISS 401 Capstone (5) I&S M. SPARKE
Focuses on the completion of the Learning Portfolios, building on the reflective and integrative work done over the past quarters to produce a final synthesis. Offered: Sp.
View course details in MyPlan: ISS 401


This plugin provides the HTML5 Filesystem API. For usage, refer to HTML5 Rocks' FileSystem article on the subject. For an overview of other storage options, refer to Cordova's storage guide.
View code in app


Scan this QR-Code with the Infinity Remote website and refresh the page after connection is established.


This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 7.1.0.
This project add Angular material and Bootstrap4


StreamSets would like to collect anonymized usage statics about features used, system performance, etc. This information will help us to understand how you use the product and ensure that future improvements help the whole community.
No sensitive information, such as connection information, pipeline names, etc. will be collected. No personally identifiable information will be collected. How we use the data is described in our Privacy Policy.


Behave and other BDD frameworks allow you to provide step libraries to reuse step definitions in similar projects that address the same problem domain.
Support of the following testing domains is currently known:
| Testing Domain | Name | Description |
|---|---|---|
| Command-line | behave4cmd | Test command-line tools, like behave, etc. (coming soon). |
| Web Apps | django-behave | Test Django Web apps with behave. |
| Web, SMS, ... | behaving | Test Web Apps, Email, SMS, Personas (step library). |
This examples show how you can use behave for testing a specific problem domain. This examples are normally not a full-blown step library (that can be reused), but give you an example (or prototype), how the problem can be solved.
| Testing Domain | Name | Description |
|---|---|---|
| GUI | Squish test | Use Squish and Behave for GUI testing (cross-platform). |
| Robot Control | behave4poppy | Use behave to control a robot via pypot. |
| Web | pyramid_behave | Use behave to test pyramid. |
| Web | pycabara-tutorial | Use pycabara (with behave and Selenium). |
See also


Teleplay by: Wil Calhoun
Story by: Andrew Reich and Ted Cohen
Transcribed by: Eric Aasen
[Scene: A beauty parlour, Rachel is getting a manicure while Chandler, yes Chandler, is getting a petticure (Does that scare you that I know those terms? Well, it scares me.).]
Chandler: Y'know, I can't believe I'm getting my nails done! And you said it was gonna be fun! (pause) Which it kinda is. Also, you said there would be other guys here. There are no other guys here!
Rachel: Chandler, theres a guy right over there. (Points to the counter)
Chandler: Thats a mailman! Thats our mailman! (Waves to the mailman) (Sarcastic) Hi. How are ya?
Rachel: Chandler, dont worry! This doesnt make you any less of a guy! (Chandler starts blowing on his fingernails like women do.) That does! (Chandler stops blowing.) What am I sitting on? (She looks and finds a huge nail.)
Chandler: Hey, you know who used to have nails like that?
Rachel: Hmm.
Woman: OH MY GAWD!! (Yep, you guessed it. Its Janice.)
Opening Credits
[Scene: Chandler and Joey's erm, Monica and Rachel's, Rachel and Joey are standing at the counter. Monica is flipping a light switch on and off next to the door.]
Monica: Joey let me ask you a question. What does this light switch do?
Joey: Ohh, Nothing.

Joey: I know what it did! Nothing.
Monica: They wouldnt have put it there if it didnt do something! How can you not care?
Joey: Like this. (Shrugs)
Rachel: Well, heres another question for ya. Uhh, do you know what that silver knob on the toilet does?
Joey: Sure! It flushes it.
Rachel: Okay, good. Now that since you know, when you come over would you mind actually using it?
Chandler: (entering, with Janice in tow) Hello!
Joey: Hey! (Sees Janice.) Ah!! (Janice screams in surprise.)
Rachel: Guess who we ran into today?!
Monica: Janice?!
Chandler: Isnt this amazing?
Monica: How have you been?
Janice: Oh well, Im divorced.
Phoebe: Ohhh, wow.
Janice: Yeah, Im riding the alimony pony. (Does the now famous laugh.)
Joey: And there it is.
Janice: I just came up to say, "Hi!" Hi! (to Chandler) And you, sweetie, Ill see you tonight.
Chandler: Okay. Bye.
Janice: Bye.
Chandler: Bye.
Janice: Bye.
Chandler: Bye.
Janice: Bye.
Chandler: B-bye!
Janice: Bye-bye.
Chandler: Bye. (Finally closes the door on her.) (After its closed) I cant stand the woman! (Phoebe is shocked, Joey is relieved.)
Phoebe: What?!
  Yknow? And shes picked up like nine new ones!
Joey: So what are you doing bringing her here?! Theres people here!
Chandler: Dont worry about it. Im taking care of it tonight. (Chandler opens the fridge and grabs something to drink.)
Rachel: You are not. You have never been able to break up with her.
Chandler: (standing in the door of the fridge) Well, I dont have to break up with her this time. Were not involved! Im going to do a pre-emptive strike! Im going to end it with her before it starts.  (Closes the fridge.)
Joey: Yeah, try sticking it in the freezer for 20 minutes. (They all look around and then back at Joey.) Im tellin ya!
[Scene: A street, Ross and Emily are walking home from a date.]
Emily: I cant believe you really walk alone here!
Ross: No, its really not that bad. I mean, I-I for one, feel perfectly safe.
(At that moment two very large men start screaming and running towards Emily and picking her up.)
Ross: Help! Help!! Help! Help!!
Emily: No, no, no Ross! Ross, these are friends of mine from home. (Introducing them) Liam, Devon, this is Ross.
Devon: Hey, mate.
Liam: How are ya man?
Ross: Oh hey, that was a good one, huh? (Imitating himself) Help! Help!
Emily: So how are you? Ive been meaning to ring you ever since I arrived but umm, well, Ive been rather busy.
Devon: Do you realise that we have not seen each other since the night of that U2 concert?
Emily: Oh my God. I think youre right.
Liam: (puts his arm around her) Well, actually the last time you and I saw each other was that morning.
Emily: Oh, Liam. (Ross laughs and takes her back.)
Ross: Oh, Liam. So uh, what, were you guys playing soccer or somethingor should I call it (In an English accent) football?
Devon: We were playing rugby.
Liam: In fact were playing a game at the park tomorrow. Youre welcome to play too if you want.
Emily: (laughs) Ross play rugby? I dont think so.
Ross: Whats ah, whats so funny about that?
 You dont even have rugby here.
Ross: Well, we didnt have freedom here until 1776, either so
Devon: So good then! Well see you at Riverside Park at 2:00! Cheers!
Liam: Cheers!
Ross: Cheers!
(Liam and Devon both take a swig of their beers, while Ross takes a swig of his coffee. The Brits both crush their cans, and not to be out done, Ross crushes his coffee cup, spilling its contents.)
[Scene: Central Perk, Chandler is attempting his pre-emptive strike.]
Janice: Oh boy, I just love to sing!
Chandler: Yes, I-I know that you do, but I think one of the reasons people were complaining though, was that they paid to hear the actor sing Old Man River.
Janice: Oh, look at us! Who wouldve thought that Cupid had a station at 14th Street Nails. (Does the laugh)
Chandler: (laughs) Okay, we have to talk. Im just getting out of a very serious relationship
Janice: I know! And Im just getting out of a marriage, I mean talk about meant to be!
Chandler: Right! I just think that this is happening too soon.
Janice: Oh, too soon, too schmoon. Face it honey, I am not letting you get away this time.
Chandler: I hear ya. (Pause) But! Unfortunately, my company is transferring me overseas!
Janice: Oh no! Where to? (Gasps) Too Paris?
Chandler: No! No! Not, Paris.
Janice:Too London? No-no, Rome? Vienna? Ooh-ooh, Barcelona?
Chandler: Okay, could you just stop talking for a second? (Thinks) Yemen. Thats right, yes, Im being transferred to Yemen!
Janice: When?
Chandler: I dont know exactly.
Janice: Ugh, well I will just have to soak up every once of Chandler Bing until that moment comes.
Chandler: But I do know that its some time tomorrow.
[Scene: Chandler and Joey's erm, Monica and Rachel's, Phoebe and Monica are plugging in a bunch of electronics.]
Monica: Done?
Phoebe: Yep!
Rachel: (entering, with Joey) Hey!
Joey: Hey! Whats up?
Monica: This switch thing has been driving me crazy. So I turned it off and checked every outlet. Now, four of them dont work. Which means, one of them has to be controlled by the switch. So, I plugged in things in all four of the outlets that-that make noise, so that way, when I turn it on I just follow the noise and find out which one it is.
Joey: (to Rachel) I bet I stopped listening before you did.
Rachel: Yknow, you-you also couldve used uh, lamps and then followed the light.
Monica: Yeah, well, Im using noise. Okay. All right! So, is everybody ready? Here we go. (She flips on the switch and a hum starts.) I hear something! I hear something! Where is it? (They all start looking until Rachel realises its Joey.)
Rachel: Its coming from Joey!
Phoebe: Oh my God, thats so freaky! Turn him off!!
[Scene: Monica and Rachel's erm, Chandler and Joey's, Ross, Joey, and Rachel are watching rugby on TV as Phoebe enters.]
Phoebe: Ooh, hey, could we put on the news? I think it might be raining.
Ross: Oh, just hold on a second. Im watching this rugby thing on ESPN. I dont know what the big deal is.

Janice: (entering) Hey there Ross!
Ross: (shocked) Hey!
Phoebe: (whispering to Ross) Janice.
Chandler: Yknow uh, you didnt really have to help me pack.
Janice: Ohh, well when you said all you were going to be doing between now and the time you leave is packing, you didnt really leave me much choice. Did you?
Chandler: Well, I-I thought I did but, I-I guess I did not!
Joey: Hey-hey, whats going on?
Chandler: Oh, Im packing. Yknow Im-Im packing cause Im moving to Yemen tomorrow.
Joey: Thanks for telling me!
(Janice runs into the bedroom.)
Chandler: Im only going to pretend Im moving to Yemen, its the only way I can get rid off her.
Joey: Ohhhh, good one! And Yemen that actually sounds like a real country.
Janice: (leaning in from the bedroom) Chandler!  Its a real space saver.
Phoebe: Yeah, I know, I do that cause it makes me look taller.
Janice: Okay, Chandler, come on!
Chandler: (to Janice) Okay. (to Joey) Joey, trade lives with me!
Joey: Nope. (To Ross) Man look at this! Ross, I cant believe you said youd play rugby. I mean look how brutal this is!
Ross: Hey, I can handle it! All right?
Rachel: Please, Ross, you-you got hurt playing badminton with my dad.

Joey: (pointing to the TV) Okay, Ross, look-look-look-look, look right here. Thats called a scrum, okay? Its kinda like a huddle.
Ross: And is a hum, kinda like a scruddle?
Joey: Ross!
Phoebe: Well, why are you doing this anyway?
Ross: Well, you shouldve seen the guy that she used to go out with. I mean, hes like Joe Rugby.
Phoebe: Youre kidding! And he plays rugby?! Thats so funny. (Realises) Ohh! I see how you did that. All right.
Ross: Anyway, she thought the very idea of me playing rugby with him was like hilarious. So Im gonna show her how tough I really am!
Rachel: (starts laughing, Ross stares at her) Im sorry. Im sorry. Youre right, you are a tough guy. Youre the toughest palaeontologist I know.
Joey: All right, come on look, Ross can take care of himself! Its not like hes Chandler!
Chandler: (from his bedroom) Thanks!
Ross: Look, dont worry about me. Okay? Ill just stay real energetic and stay away from the ball. Ill uh, Ill be that guy right out of the circle. (He points to a player who starts running and then gets viscously tackled from behind.)
All: Oh!
Rachel: Oh, well maybe there was a dog lookin at him.
(Ross turns and wants to attack Rachel, but Joey stops him.)
Commercial Break
[Scene: The park, everyone is warming up for the rugby game. Only Joey and Phoebe came to support Ross.]
Joey: Ross-Ross-Ross-Ross!  And that oneDude! Theyre all huge!
Ross: They dont look any bigger than me!
Joey: Well, maybe thats because youre closer to you. So you look bigger to you from where you are.
Emily: Im just going to say hi to the lads. All right?
Ross: All right.
Emily: Okay. (Goes to say hi to the lads.)
(A player comes over and picks up a ball in front of Phoebe.)
Phoebe: (to the player) Hi.
(The player stands up and smiles. Showing that he has no front teeth.)
Phoebe: Whoa! (The player leaves and to Joey) I kinda liked it.
(The referee blows the whistle and the players gather to start the game.)
Ross: Okay, I know what I have to do. Ive got to go Red Ross. (Joey and Phoebe dont know what hes talking about.) Yknow, Red Ross!
Joey: I totally dont know what youre talking about.
Ross: Come on! The time we were all waiting in line for Dances With Wolves and that one guy cut in line in front of us and I just lost it?! Screamed at him! Turned all red! Red Ross!!
Joey: No.
Ross: Youll see.
[Cut to Emily, Devon, and Liam]
Emily: Liam, do me a favour. Tell the lads to go easy on Ross, its his first time.
Liam: You dont say! (We see Ross who is hopping about with the ball and spikes it in his face.)
Emily: (to Ross) Good luck, babe.
(The scrum forms and the game is underway.)
Liam: Ross! Ross! Come on! Get in here! (Ross gets pumped up.) Ross! Come on!
(Ross walks over to the scrum, walks around a bit looking for a way to get into the scrum.)
Liam: Ross, come on!  Ross, get in!
(Ross, urged on by his team-mates, jumps on top of the scrum and falls headfirst into the middle, leaving his feet sticking straight up.)
Ross: JOEY!!!!!!
[Scene: Chandler and Joey's erm, Monica and Rachels, Monica is going over some plans as Rachel enters.]
Rachel: You are not going to believe it! Joshua came into work today, and guess what happened?
Monica: He asked you out?!
Rachel: No. But I was showing him some cufflinks and I felt his pulse.
Monica: Saucy!
Rachel: (refers to the table) What are these?
Monica: Electrical plans for the building.
Rachel: Okay, okay, okay should I be scared?
Monica: I know that switch does something, okay? So-so I went down to city hall and got these. All I had to do was pay $25 and wait in line for three hours.
Rachel: Wow! If only more people knew.
[Scene: The airport, the Yemen Express counter, Chandler is still trying to get rid of Janice.]
Chandler: Yknow you, really didnt have to take me to the airport.
Janice: Oh please. Every moment is precious. Yknow?
Chandler: Well, were really not that close. (Pause) Okay, so I guess this is uh, good-bye then.
Janice: On no! No! Its not good-bye, Im not leaving until you get on that plane.
Chandler: Okay. Then I guess its just, wait here then. (Hands her the sign that says, Wait Here.") (To the ticket agent) Hi. I need one fake ticket to Yemen.
Ticket Counter Attendant: One ticket to Yemen?
Chandler: Oh no-no-no, no. No, no, no, I just, I just need a pretend ticket.
Ticket Counter Attendant: Im sorry sir, I dont understand.
Chandler: What would you give to a kid if he wanted a ticket to play with?
Ticket Counter Attendant: Are you travelling with a child?
Chandler: No. All right, yknow what, shes (Points to Janice) gonna think that Im handing you a credit card, but what Im really gonna do is hand you a library card.
Ticket Counter Attendant: Ah, sir a ticket to Yemen is $2,100 and we dont take library cards.
Janice: Whats the matter? Is something wrong? Do you have to stay?
Chandler: (to the ticket agent) American Express?
[Scene: The rugby game, Ross is getting killed.]
Emily: I cant believe theyre doing that to him! I told them to go easy on him!
Phoebe: No offence but, yknow sometimes its hard to understand you, yknow with the accent, so
(The whistle blows.)
Emily: Thats just halftime, theres more of this.
(Ross limps over all covered in mud.)
Ross: Did you see me? I was pretty good, huh? That is one fun game!
Emily: Right.
Ross: (to Emily) Hey, could you do me a favour? Could you just grab me a bottle of water?
Emily: Okay.
Ross: Thanks. (When shes gone he collapses into Joey.) I-I think Im dying. I really do.
Phoebe: Oh, poor baby.
Ross: (to Phoebe) Tell my son that I love him. (Emily returns with the water.) Excellent! Well, okay, I gotta have some more fun!

Ross: (whines "No.") Thats not true!
Phoebe: Shes right! You have to stop!
Ross: What? No! No, Im not stopping. Im Red Ross!

Ross: I dont care! I am not quitting! I insist on finishing this game!
Emily: All right, all right, if you insist on doing this, at least let me help you.
Ross: No, God no! That is no place for a woman. Those guys will grab anything.
Emily: No. Thats not what Im saying. I just may know a few things that might help you inflict some pain.
Ross: I like that.
Emily: Yeah? Listen closely, Devon has got a weak ankle.
Ross: Huh?

Ross: All right, bad ankle, got it!
Emily: And that big bloke with the beard, he has got a trick hip. Yeah. And uh, and David over there, I heard he doesnt wear a cup.
Ross: Yeah? I can use that, trick hip, no cup, okay! Okay!
Emily: And uh, Liam, Liams got bad knees.
Ross: But-but, Liams on my team.
Emily: I dont care! You just get him!
 Okay, I am going back in! (Squeals like a madman.)
Joey: The Red Ross! Okay.
[Scene: Chandler and Joey's erm, Monica and Rachels, Monica is reading a book as Rachel returns.]
Rachel: Hey!
Monica: Hi!
 What-what are-what are these?
Monica: Oh, just some pictures I made and hung up. I thought theyd brighten up the place. They do dont you think?
(Rachel rips one of the wall and finds a huge hole underneath.)
Monica: No-no-no, no!
(Rachel rips off another one, revealing another hole. Rachel then moves onto a third one, but this one doesnt have a hole underneath it.)
Monica: I know that theres no hole there, I just really liked that picture.
(Rachel looks at it and then throws it away. She then removes a fourth one, revealing a third hole.)
Rachel: Oh my God! Look at this!
Monica: Okay, but there is a wire back there! I mean that switch is connected to something!
Rachel: I dont care! The wires have come loose in your head!
Monica: I just thought that if I could follow the wire I could find out what it did.
Rachel: And did you?!
Monica: No. It disappears back there behind that baseboard. For a minute there, I thought it went downstairs.
(Rachel removes a paper on the floor which is covering a hole and gasps.)
Monica: But it didnt. Say hello to Mrs. Chatracus.
Rachel: Oh my God.
Mrs. Chatracus: Hello darling.
Rachel: Hello, Mrs. Chatracus.
[Scene: Central Perk, They are returning from the rugby game, Joey and Emily are carrying Ross.]
Phoebe: Now, are you sure you dont want to go see a doctor?
Ross: Oh no! That-thatll just bring me down! This was great! I mean I-I-I was great! This is a great day! Yknow what? Im buying everyone coffee. All right? If someone would just grab my wallet, its in my pocket.
Joey: Yeah, sure.
Ross: No, not you. (Emily gets it.)

Phoebe: Ooh, ice! I am so in the mood for ice! (They go and get the coffee and the ice leaving Ross and Emily alone.)
Emily: You were amazing out there.
Ross: Oh, I kinda was, wasnt I?
Emily: Oh my God!
Ross: I made a man twice my size cry. I mean, I havent done that since I was four and I washed my dads Porsche with rocks.
Emily: You really enjoyed yourself didnt you?
Ross: Please! Are you kidding?  And its all because of you, wonderful, amazing you.
Emily: I think youve got concussion.
Ross: No, no, Im serious. Thank you.
Emily: Youre welcome. (She hugs him tightly and he winces.) Im sorry. Did I hurt you?
Ross: Its worth the pain. (She goes to hug him again.) Yknow what, you know what? Its not.
[Scene: The airport, the flight to Yemen is being called.]
Ticket Counter Attendant: (on the P.A.) This is the final boarding call for Flight 664 to Yemen.
Chandler: Well, I-I guess I gotta go.
Janice: Oh, my Bing-a-ling. Ill wait for you. Do you even know how long youre going to be gone?
Chandler: Well, just until we find an energy source to replace fuel.
Janice: Oh. Well, Ill right you everyday. (Reading the address) 15 Yemen Road, Yemen.
Chandler: Okay, good-bye. Good-bye.
(He gives the agent his ticket and walks onto the jetway. Janice walks over and looks out the window. Chandler walks back into the terminal and tries to walk right past Janice, but she sees him.)
Janice: Chandler?
Chandler: No!
Janice: Chandler!
Chandler: Janice! There you are! There you are! I had to have one last kiss, and also-also you said that you were going to leave right after I got on the plane!
Janice: No! No! I wanna see you take-off.
Chandler: Well, I then guess Im going to Yemen! Im going to Yemen! (To this old woman also going to Yemen.) When we get to Yemen, can I stay with you?
Closing Credits
[Scene: Chandler and Joey's erm, Monica and Rachels, Monica has finally given up on her search to find what the light switch does and is now flicking it on and off aimlessly.]
Monica: All right. The super couldnt figure out what it did. A $200 an hour electrician couldnt figure out what it did. Ive had seven pretty serious shocks. I officially give up.
Rachel: Thank God.
Monica: I guess Joey was right, it does nothing.
[Cut to Chandler and Joeys, Joey and Phoebe are watching TV. The TV is turning off and on, and each time Phoebe is blinking her eyes like the Genie did. The switch obviously controls the outlet which the TV is plugged into.]
Phoebe: See? Im doing it. I am totally doing it. (Suddenly it stops working.) I lost it.
End


Iteration API
A common operation in graph search is the ability to iterative repeat a search pattern. For example, a ‘friend of a friend’ search may become a ‘friend of a friend of a friend’ search.
In the GripQL language cycles, iterations and conditional operations are encoded using ‘mark’ and ‘jump’ based interface. This operations are similar to using a ‘goto’ statement in a traditional programming language. While more primitive than the repeat mechanisms seen in Gremlin, this pattern allows for a much more simple query compilation and implementation.
Because the mark and jump pattern can be abused for denial of service attacks, ie to create infinite loops, the authorization model will allow this particular set of operations to be turned off for some accounts. This means that queries from unauthorized users that utilize the ‘mark’ or ‘jump’ commands will be rejected by the server without execution. One additional proposed security feature, that is being discussed for in future upgrades, will allow the server to track the total number of iterations a traveler has made in a cycle, and provide a hard cutoff. For example, a user could submit code with a maximum of 5 iterations.
Operation Commands
mark(name)
Mark a segment in the stream processor, with a name, that can receive jumps
jump(dest, condition, emit)
If a condition is true, send traveler to mark. If emit is true, also send a copy down the processing chain. If condition is None, always do the jump.
set(field, value)
Set values within the travelers memory. These values be used to store cycle counts
increment(field, value)
Increment field, ie data[field] = data[field] + value
. Can be used to increment counter every cycle
Example queries
q = G.query().V("Character:1").set("count", 0).as_("start").mark("a").out().increment("$start.count")
q = q.has(gripql.lt("$start.count", 2))
q = q.jump("a", None, True)


def hello(): print "Let's rock with CodeMate~" hello()
Just simply click and paste your problem screenshot here~ (currently works only on Chrome)


Employee Data Management
A comprehensive Directopry of Employee Billable Hours
Current Employees
Employee Name
Role
Start Date
Months Worked
Monthly Rate ($)
Total Billed ($)
Mark
Mark
Mark
Mark
Otto
@mdo
Add Employee
Name
Role
Start Date (DD/MM/YY - ex: 01/01/1989)
Monthly Rate
Submit


NEPALI CHARACTER RECOGNITION
Draw the character
{% if prediction != ''%}
I see:
{{ prediction }}
{% endif %}


UK election: PM Johnson's Conservatives' lead over Labour drops to 6 points
by Eren SengezerSupport for British Prime Minister Boris Johnson's Conservative Party stayed unchanged at 42% while support for the Labour Party increased by 1 point to 36%, bringing Tories' lead down to 6 points, the latest opinion poll (December 6 - December 9) by ICM showed on Monday.
The British pound started to lose strength against its major rivals on this poll. As of writing, the GBP/USD pair was trading at 1.3140, adding 0.04% on a daily basis and the EUR/GBP pair was up 0.12% at 0.8432.


Company profile - Canadian Company Capabilities
Third-Party Information Liability Disclaimer
Some of the information on this Web page has been provided by external sources. The Government of Canada is not responsible for the accuracy, reliability or currency of the information supplied by external sources. Users wishing to rely upon this information should consult directly with the source of the information. Content provided by external sources is not subject to official languages, privacy and accessibility requirements.
International Food Focus Limited
Legal Name:
International Food Focus Limited
Operating Name:
International Food Focus Limited or Food Focus
Alternate Name:
Food Focus
Mailing Address:
East Office211 Carlton St
TORONTO, Ontario
M5A 2K9
Location Address:
East Office211 Carlton St
TORONTO, Ontario
M5A 2K9
Tel.:<PHONE_NUMBER>
Fax:<PHONE_NUMBER>
Logo
Company Profile
Our slogan: "Results that move your business Forward"
Now 22 years young, IFFL is the 'go to' firm recognized for:
1. Complete processed food and food ingredient regulatory compliance services, covering Canada, the US and the EU. Our services range from basic label audits and creation, to preparation and submission of scientific dossiers in support of pre-market regulatory approval of novel foods, food additives, novel dietary fibres, health claims and GRAS applications.
2. Market definition and validation studies - broad experience in several ingredient and product categories including bioactive substances, strictly regulated processed foods such as infant formula and food for special dietary use, agricultural processes and emerging technologies. Our expertise is evident when the market definition study and/or market impact study (see below) requires skilled knowledge and application of the applicable agri-food regulations.
3. Regulatory impact studies pertaining to agricultural crops and processes, emerging technologies and processed foods.
4. Expert witness experience.
5. Seminar and conference speaker: popular and respected "news you can use" informed and engaging speakers.
6. Certified trainer. Several times per month, we deliver industry-specific, customized seminars on the application of agri-food regulations for several jurisdictions: Canada, the USA, the EU, International Food Law. We are known for adept use of the case study technique in these courses, and, provide a three-part food regulatory webinar devoted solely to the case-study approach.
7. Author of Food Fax (R) "written to inform the food industry since 1994" and has been dubbed "the original, and an original two-minute read". Food Fax is a complimentary news-bulletin which identifies one major concern in the agri-food industry, and over the course of four quarterly one-page editions per year, describes the challenges and consequences posed by the issue. Past issues and subscription available at our website: www.foodfocus.on.ca
Some of our credentials:
Certificate in International Food Law from Michigan State University (1996);
MBA (Marketing), University of Ottawa (1985);
Professional Home Economist (University of Ottawa, 1978)
Certified Trainer (NSF-GFTC June 2012)
Part-time Instructor, School of Nutrition, Ryerson University
Member of numerous trade and professional associations:
1. Institute of Food Technology (Member of Nutrition, and, Food Law & Regulations Divisions)
2. Canadian Institute of Food Science & Technology (Chair, Nutrition & Functional Foods Division)
3. Canadian Association of Professionals in Regulatory Affairs
3. Ontario and Toronto Home Economics Association
4. International Federation for Home Economics
Full profile
Full profile
Contact information
Company description
541690 - Other Scientific and Technical Consulting Services
541910 - Marketing Research and Public Opinion Polling
561410 - Document Preparation Services
611690 - All Other Schools and Instruction
711513 - Independent Writers and Authors
Product / Service / Licensing
2. Preparation of food labels incorporating all application legislation, and verifying the compliance of all copy. Includes List of Ingredients, Nutrition Facts Tables and other mandatory information. English and French copy provided where necessary.
Technology profile
Market profile
Alliances:
- Sales/Marketing
- Technology
Strategic alliances:
IFFL provides regulatory compliance services - from basic label audits to preparation of scientific dossiers for pre-market regulatory approval for novel foods, novel fibres, food additives, health claims, GRAS applications, processed foods (including infant formula and food for special dietary use) and Natural Health Products.IFFL also conducts market assessments and market validiation studies for a wide variety of ventures - food technologies, food ingredients, novel foods, novel dietary fibres and food additives.
Industry sector market interests:
- Food and Beverage Manufacturing
Geographic markets:
Export experience:
- Australia
- India
- United Kingdom
- United States
- California
- Illinois
- Massachusetts
- Minnesota
- New Jersey
- Oregon
Sector information
Unique applications:
1. Expert witness experience - requires a knowledge and skills base, as well as documented preparation which is above reproach.2. Highly-respected and sought-after seminar leader - effective use of the case-study approach to maximize learning understanding and retention.
3. Classical training in food science and nutrition, formal training in business, management experience in foodservice operations and multinational food and beverage manufacturing - provides a skill set and cluster which enriches our approach to the business challenge at hand.
Key / Major clients:
Mostly ConfidentialSuccess stories:
Our Motto: "Results that move your business Forward"Regulatory compliance:
- Novel dietary fibre applications. See this link for a description of this category and to view some of our successful submissions: http://www.inspection.gc.ca/english/fssa/labeti/guide/ch6ae.shtml#6.8
- Novel food applications See http://www.hc-sc.gc.ca/fn-an/gmf-agm/appro/index_e.html
- Trademarked brand-name approval (compliant with Food & Drug Regulations)
- Product/formula compositions that are common to both the Canadian and US geograpical markets, with separate labels that are compliant with each country's food laws
- Strictly regulated categories such as health claims and infant formula
- Label audits that bring all label claims and information into compliance while identifying legitimate, yet, unused claims
Regulatory Impact Studies:
- Imported Dairy Blends - completed for the Canadian International Trade Tribunal. See http://www.citt-tcce.gc.ca/refer/Reports/gc97001_e.asp
- Effect of Regulations on producer income for Canadian Agricultural Policy Institute. See http://www.capi-icpa.ca/farm_income_project/section6_regulatory.html
- The Nature and Magnitude of the Economic, Business & Market Value Activity Generated by Health Claims along the Agriculture and Agri-Food Value Chain. See http://www4.agr.gc.ca/AAFC-AAC/display-afficher.do?id=1235655305654&lang=eng
Market Definition & Validation Studies:
Functional Foods & Nutraceuticals: in 1995, conducted first market definition study this sector; since then, completed several market opportunity and validation studies; popular and sought-after speaker on this topic. See http://www.foodfocus.on.ca/reports_main.htm
- regulatory compliance and market validation studies for new bioactive substances;
- Bakery & grain sector: whole grains ~ 10 years before they became popular and trendy; dietary fibres as ingredients to processed food; private/label premium cookies; food-based fundraising; frozen, reconstitutable seafood & lobster salad; allergen-free food; infant formula (US, Cda and EU markets and regulations).
- Snacks: better-for-you potato chips; organic fruit-based snacks.
Testimonial:
"Tremendous job in a short timeframe" Natural Health Product Company"We enjoyed working with you on this project! Thanks for all your efforts" National Association of the Specialty Food Trade
"IFFL is the best kept secret in the bakery sector."
"Your report is all sticky-noted and dog-eared. Every executive in the US has read and used it" Multinational Ingredient Company
"I learned more about my business from Carol's 10-minute presentation than I could by myself over the past many years" Girl Guides of Canada Guider (cookies for fundraising)
"Your report has showed us and our client where we should be placing our efforts and emphasis" Canadian Venture Capitalist
"We had no idea what was going on out there until we read your draft report" Judicial sector
Third-Party Information Liability Disclaimer
Some of the information on this Web page has been provided by external sources. The Government of Canada is not responsible for the accuracy, reliability or currency of the information supplied by external sources. Users wishing to rely upon this information should consult directly with the source of the information. Content provided by external sources is not subject to official languages, privacy and accessibility requirements.
Contacts
Contact information
Description
Company description
541690 - Other Scientific and Technical Consulting Services
541910 - Marketing Research and Public Opinion Polling
561410 - Document Preparation Services
611690 - All Other Schools and Instruction
711513 - Independent Writers and Authors
Products, services and licensing
Product / Service / Licensing
2. Preparation of food labels incorporating all application legislation, and verifying the compliance of all copy. Includes List of Ingredients, Nutrition Facts Tables and other mandatory information. English and French copy provided where necessary.
Technology
Technology profile
Market
Market profile
Alliances:
- Sales/Marketing
- Technology
Strategic alliances:
IFFL provides regulatory compliance services - from basic label audits to preparation of scientific dossiers for pre-market regulatory approval for novel foods, novel fibres, food additives, health claims, GRAS applications, processed foods (including infant formula and food for special dietary use) and Natural Health Products.IFFL also conducts market assessments and market validiation studies for a wide variety of ventures - food technologies, food ingredients, novel foods, novel dietary fibres and food additives.
Industry sector market interests:
- Food and Beverage Manufacturing
Geographic markets:
Export experience:
- Australia
- India
- United Kingdom
- United States
- California
- Illinois
- Massachusetts
- Minnesota
- New Jersey
- Oregon
Sector
Sector information
Unique applications:
1. Expert witness experience - requires a knowledge and skills base, as well as documented preparation which is above reproach.2. Highly-respected and sought-after seminar leader - effective use of the case-study approach to maximize learning understanding and retention.
3. Classical training in food science and nutrition, formal training in business, management experience in foodservice operations and multinational food and beverage manufacturing - provides a skill set and cluster which enriches our approach to the business challenge at hand.
Key / Major clients:
Mostly ConfidentialSuccess stories:
Our Motto: "Results that move your business Forward"Regulatory compliance:
- Novel dietary fibre applications. See this link for a description of this category and to view some of our successful submissions: http://www.inspection.gc.ca/english/fssa/labeti/guide/ch6ae.shtml#6.8
- Novel food applications See http://www.hc-sc.gc.ca/fn-an/gmf-agm/appro/index_e.html
- Trademarked brand-name approval (compliant with Food & Drug Regulations)
- Product/formula compositions that are common to both the Canadian and US geograpical markets, with separate labels that are compliant with each country's food laws
- Strictly regulated categories such as health claims and infant formula
- Label audits that bring all label claims and information into compliance while identifying legitimate, yet, unused claims
Regulatory Impact Studies:
- Imported Dairy Blends - completed for the Canadian International Trade Tribunal. See http://www.citt-tcce.gc.ca/refer/Reports/gc97001_e.asp
- Effect of Regulations on producer income for Canadian Agricultural Policy Institute. See http://www.capi-icpa.ca/farm_income_project/section6_regulatory.html
- The Nature and Magnitude of the Economic, Business & Market Value Activity Generated by Health Claims along the Agriculture and Agri-Food Value Chain. See http://www4.agr.gc.ca/AAFC-AAC/display-afficher.do?id=1235655305654&lang=eng
Market Definition & Validation Studies:
Functional Foods & Nutraceuticals: in 1995, conducted first market definition study this sector; since then, completed several market opportunity and validation studies; popular and sought-after speaker on this topic. See http://www.foodfocus.on.ca/reports_main.htm
- regulatory compliance and market validation studies for new bioactive substances;
- Bakery & grain sector: whole grains ~ 10 years before they became popular and trendy; dietary fibres as ingredients to processed food; private/label premium cookies; food-based fundraising; frozen, reconstitutable seafood & lobster salad; allergen-free food; infant formula (US, Cda and EU markets and regulations).
- Snacks: better-for-you potato chips; organic fruit-based snacks.
Testimonial:
"Tremendous job in a short timeframe" Natural Health Product Company"We enjoyed working with you on this project! Thanks for all your efforts" National Association of the Specialty Food Trade
"IFFL is the best kept secret in the bakery sector."
"Your report is all sticky-noted and dog-eared. Every executive in the US has read and used it" Multinational Ingredient Company
"I learned more about my business from Carol's 10-minute presentation than I could by myself over the past many years" Girl Guides of Canada Guider (cookies for fundraising)
"Your report has showed us and our client where we should be placing our efforts and emphasis" Canadian Venture Capitalist
"We had no idea what was going on out there until we read your draft report" Judicial sector


Nicola trains his mind with anything within reach of his hands. He found several coins on his work-desk and came up with a mind game involving them.
You are given several coins. Each coin has value from 1 to 9. You must write a function that gets a list of the coins as their inputs and calculate the smallest amount of money that cannot be paid for with exact change (excepting zero).
We have one more rule for this challenge: this is a code golf mission and your main goal is to make your code as short as possible. The shorter your code, the more points you earn. Your score for this mission is dynamic and directly related to the length of your code. For reference, scoring is based on the number of characters used. 300 characters is the maximum allowable and it will earn you zero points. For each character less than 300, you earn 1 point. For example, for 200 character long code earns you 100 points.
Input: Coin values as a list with integers.
Output: The smallest amount of money that cannot be paid exactly using these coins as an integer.
Example:
golf([9, 2, 2, 1]) == 6 golf([1, 1, 1, 1]) == 5 golf([1, 2, 3, 4, 5]) == 16
How it is used: This is a classical combinatorial problem. You can use it’s mind game for fun, or to program your snack machine.
Precondition:
0 < len(coins) ≤ 10
all(0 < c < 10 for c in coins)


{% extends 'nehlwebsite/base.html' %} {% load static %} {% block title %} {{ fixture.team_a.club.short_name|default_if_none:fixture.team_a.club.name }} vs. {{ fixture.team_b.club.short_name|default_if_none:fixture.team_b.club.name }} {% endblock %} {% block css %} {% endblock %} {% block content %}
Venue: {{ fixture.venue.name }}
Competition: {{ fixture.competition.parent_competition|default_if_none:"" }} {{ fixture.competition.short_name }}
Date: {{ fixture.date }}
| {{ fixture.team_a.club.name }} {{ fixture.team_a.name }} | {{ fixture.team_b.club.name }} {{ fixture.team_b.name }} |
|---|---|
| {{ appearance_team_a.player }} | {{ appearance_team_b.player }} |
Some quick example text to build on the card title and make up the#} {# bulk of#} {#
Some quick example text to build on the card title and make up the#} {# bulk of#} {#


--- layout: post title: How to argue on the internet type: post published: false status: draft categories: - Senza categoria tags: [] meta: {} author: login: saselli email<EMAIL_ADDRESS>display_name: rantonels first_name: '' last_name: '' ---
Ok, here's the deal: you can't judge explanation Y by comparing it to the original correct notion X. It's not fair. Example:
Him: Well, in a certain sense, vectors are a bit like arrows.
You: Wrong. Vectors are in general elements of a vector space, which is a set with a binary operation...
see the problem? Exactly zero percent of the people involved benefit from your comment. Him, along with any other expert, knows exactly what you mean, which is X, which is what they had in mind when they tried to simplify it into Y. Non-experts look at his comment and see something approachable, they look at yours and understand nothing.
What you can do is imagine yourself in his position. You know X, good. Try to explain X in simple terms, roughly as simple as Y, but give it your own spin, in your head. So you have explanation Z, which should not be harder to understand than Y. Now, compare Y and Z. Is Y really that much worse than Z? Does it completely suck? If you're not completely sure that Z is much, much better than Y, keep it to yourself.
It's really easy to judge a popular explanation by reading it "from above". You might underestimate the work that went into that synthesis.
Yeah, in this case, criticize. Some explanations are oversimplified, granted, but some are flat out dumb.  Example:
Vectors are like flowers. They have a series of petals, but no two flowers will be identical. If you pluck a petal, you also need to pluck the opposite petals so the number of petals is always even.
Just remember to be polite. By the way, you don't need to speak in simple terms. A person providing an incorrect explanation Y of technical concept X should be required to defend themselves when challenged on X on a technical level.
Don't do this. Ever. Nobody likes this.
If you think someone has argued using a faulty logical argument, gently point out explicitly why you think the point does not exactly follow from the premise. Do not refer to a tabulated anthology of classified mistakes and absolutely do not use the f-word.
No exceptions.


Creation from scratch and comparison of numerous Chess Bots fabricated through various learning techniques
Bot made using general minimax algorithm with alpha-beta pruning.
Bot that are trained nerual networks.
Bots implementing reinforcement learning algorithms.


Ventotene Integrated ProjectIn 1998 the Government has carried out the working program of the National Conference about Environment and Energy (ENEA); that devising plan activity has brought to the printing of the White Book, and of the related CIPE, which is a complex of guiding lines that are useful to bring the whole Italian system toward a global emissions level and a quality of life that are the ones that were stated in pot-Kyoto regulations.The approach to that matters with an integrated methodology seems to be an excellent criterion to gain environment compatible objectives such as sustainable development:
Another very important point of this integrated approach is the involving
of local, national and external actors that work on the single territories,
who are able to successful implement what we said before. Starting from this point of view, in March 1999, the Town Ventotene Council, together with an expert people commission set up on purpose to work on Ventotene, has stated for its own area a devising procedure that comes from National procedures that are in force in Italy (Territorial Agreements, Area Contracts, P.R.U.S.S.T.), the aim of that statement is to gain environment-energy objectives in coherence with the commitment that the Italian Government has taken following the post-Kyoto guiding lines. The Town Council, after the developing, through the P.I.V. Commission, of a pre-evaluation of the emergencies and of the problems existing in the area, has stated the launch of the Piano Integrato Ventotene (P.I.V.), this has to be used has a planning and attraction of public and private investor instrument, useful to bring the "Island System", in a four year time, to zero environment impact: that means zero Co2 emissions.
The Town Council has indicated as formal starting date April, 19 ,1999, when the formal task
was given by the Council to the Commission.
|
||||||


Home
One column
Two column
Three column
Four column
Featured posts
Full width
Posts
Image
Video
Components
Alerts
Buttons
Cards
Forms
Icons
Pagination
Tables
Typography
Milø
About
Contact
Buttons
Primary
Secondary
Success
Danger
Warning
Info
Light
Dark
Link
Outline Buttons
Primary
Secondary
Success
Danger
Warning
Info
Light
Dark
Button Sizes
Large button
Large button
Medium button
Medium button
Small button
Small button
Block Buttons
Block level button
Block level button
Disabled Buttons
Primary button
Button
Radio Buttons
Radio 1
Radio 2
Radio 3
Button Group
Left
Middle
Right
Vertical Button Group
Button
Button
Button
Button
Button
Button
Button Toolbar
1
2
3
4
5
6
7
8
Dropdown Buttons
Dropdown button
Action
Another action
Something else here


Ensure that your application specifies the hosts that can connect to its database servers during its deployment procedures.
Restricting the number of production servers that can connect to the backend database can help minimize the risk of unauthorized access to the database server.
Verify that your application has completed its testing cycle. Apply this checklist and the corresponding guideline linked at the end of the article if and only if your application is ready for a release.
Ensure no test hosts are left in the database. During development, test hosts are often used for testing or demonstration purposes. Leaving these host entries in the database increases the risk of a host being used by an attacker as a backdoor for accessing the database server. Enumerate all allowed hosts from the database and ensure those that were used only for testing are deleted.
Ensure only intended hosts are allowed database access. Review your application's design and requirements to determine the hosts that need access to your application's database servers.
Use the following steps when restricting the list of hosts that can connect to the backend database:
Wait until product is in its final release. Applying this guideline during the testing phase of your application's development cycle can lead to leaving unintended backdoors to your application's backend database server. Apply this guideline only after your product is in its final release.
Identify all production servers that require database access. Enumerate all hosts of your application. Identify the hosts that would require access to your backend database server.
Apply the restrictions. After obtaining the list of hosts that will connect to the database server, consult your database server's manual regarding applying such restrictions.
The following snippet shows a list of database accounts and some of their permissions. Because the application's account is not restricted to connections from a specific host, it is possible for an attacker to connect directly to the database from any other host on the network.
sql> select host, user, select_priv, drop_priv, shutdown_priv from user;
+----------------+-------+-------------+-----------+---------------+
| host | user | select_priv | drop_priv | shutdown_priv |
+----------------+-------+-------------+-----------+---------------+
| localhost | root | Y | Y | Y |
| | myapp | Y | N | N |
+----------------+-------+-------------+-----------+---------------+
The following snippet shows a list of database accounts and some of their permissions. Because the application's account is restricted to connections from a specific host, it is impossible for an attacker to connect directly to the database from any other host on the network.
sql> select host, user, select_priv, drop_priv, shutdown_priv from user;
+----------------+-------+-------------+-----------+---------------+
| host | user | select_priv | drop_priv | shutdown_priv |
+----------------+-------+-------------+-----------+---------------+
| localhost | root | Y | Y | Y |
| <IP_ADDRESS> | myapp | Y | N | N |
+----------------+-------+-------------+-----------+---------------+


Input plain text for geolocation prediction
Input a public Twitter user's screen name, e.g., @BarackObama
The system monitors Twitter Streaming API to identify users with geotagged tweets, then it crawls up-to 200 recent tweets from users and predicts the users' geolocations on basis of text data. The system currently makes use of tweet text, user declared location and user declared timezone information for location prediction. The ground truth data is based on GPS labels embedded in tweets. Due to limited network bandwidth, we sub-sample Twitter users in the stream and it usually takes 30 seconds to crawl and predict users depending on the network speed. Additionally, to ensure the quality of evaluation, we only use users with at least 10 geotagged tweets and 50% of geotagged tweets are from one city. As a result, the overall update frequency of report page is more than one minute.
This is a deployment-driven research demo that predicts city-level geolocation on basis of text data. It has been part of my PhD work (in collaboration with my supervisors Paul Cook and Tim Baldwin) on processing social media data such as Twitter messages. New features will be continuously integrated.
Please send me your comments and suggestions to Bo HAN<EMAIL_ADDRESS>where you replace "stupid_robot" with "bohan.academic")
Relevant publications, code and data can be found on my homepage