Tumorigenesis is a multi-step process, involving the acquisition of multiple oncogenic mutations that transform cells, resulting in systemic dysregulation that enables tumor proliferation. High throughput “omics” techniques allow rapid identification of these mutations with the goal of identifying treatments that target them. However, the multiplicity of oncogenes required for transformation (oncogenic collaboration) makes mapping treatments difficult.
To make this problem tractable, we have defined oncogenic collaboration as mutations in genes that interact with an oncogene that may contribute to its dysregulation, a new genomic feature we term “surrogate mutations”. By mapping the mutations to a protein/protein interaction network, we can determine significance of the observed distribution using permutation-based methods.
The above figure shows the general workflow and the statistical framework of the surrogateMutation package. GISTIC files are used to select genes in regions of high copy number variation and their copy number call in each sample. Mutations for each sample are derived from the Mutation Annotation Format (MAF) files. These genomic alterations are then superimposed onto a protein/protein interaction network. For a set of oncogenes of interest (the surrogate gene set), the surrogate analysis is then applied on a per-sample basis.
A permutation-based framework was used to determine significance of a Surrogate Mutation (B). Within a sample and for each gene in the surrogate set, we ask the question whether the number of neighboring mutations is higher than an expected background. The background distribution for each surrogate gene is derived by randomly mutating the entire PPI network with the same number of mutations as observed in the sample. A p-value can be calculated from the proportion of permuted samples that have the observed number of neighboring mutations or higher.
Because some of the package dependencies are from Bioconductor, we suggest running the following install commands before you install the package from source.
install.packages(c("igraph", "Rgraphviz"))
source("http://www.bioconductor.org/biocLite.R")
biocLite(c("BioNet", "DLBCL"))
Additionally, if you want to run the multi-core version of the package, you will need to install the following packages:
install.packages(c("foreach", "doMC"))
The first step is to load in our protein/protein interaction (PPI) network. We first load in the surrogateMutation package. We are using a version of HPRD (Human Protein Reference Database) from the DLBCL package for our PPI network. The Node names from this package are in the format of Gene Symbol(EntrezID), so we first need to make a mapping table to map gene symbols to these node names in both the copy number data and the mutation data. We do this with the buildGeneIntTable() function.
library(surrogateMutation)
## Loading required package: igraph
##
## Attaching package: 'igraph'
## The following objects are masked from 'package:stats':
##
## decompose, spectrum
## The following object is masked from 'package:base':
##
## union
## Loading required package: graph
## Loading required package: BiocGenerics
## Loading required package: parallel
##
## Attaching package: 'BiocGenerics'
## The following objects are masked from 'package:parallel':
##
## clusterApply, clusterApplyLB, clusterCall, clusterEvalQ,
## clusterExport, clusterMap, parApply, parCapply, parLapply,
## parLapplyLB, parRapply, parSapply, parSapplyLB
## The following objects are masked from 'package:igraph':
##
## normalize, union
## The following objects are masked from 'package:stats':
##
## IQR, mad, xtabs
## The following objects are masked from 'package:base':
##
## anyDuplicated, append, as.data.frame, cbind, colnames,
## do.call, duplicated, eval, evalq, Filter, Find, get, grep,
## grepl, intersect, is.unsorted, lapply, lengths, Map, mapply,
## match, mget, order, paste, pmax, pmax.int, pmin, pmin.int,
## Position, rank, rbind, Reduce, rownames, sapply, setdiff,
## sort, table, tapply, union, unique, unsplit, which, which.max,
## which.min
##
## Attaching package: 'graph'
## The following objects are masked from 'package:igraph':
##
## degree, edges, intersection
## Loading required package: BioNet
## Loading required package: RBGL
##
## Attaching package: 'RBGL'
## The following objects are masked from 'package:igraph':
##
## bfs, dfs, transitivity
## Loading required package: Rgraphviz
## Loading required package: grid
## Loading required package: gplots
##
## Attaching package: 'gplots'
## The following object is masked from 'package:stats':
##
## lowess
set.seed(333)
#load in HPRD network from the DLBCL package
library(DLBCL)
## Loading required package: Biobase
## Welcome to Bioconductor
##
## Vignettes contain introductory material; view with
## 'browseVignettes()'. To cite Bioconductor, see
## 'citation("Biobase")', and for packages 'citation("pkgname")'.
data(interactome)
intome <- interactome
geneIntTable <- buildGeneIntTable(intome)
Next, we will load the data from the TCGA Breast Cancer patients. We will directly load in the mutation (MAF) and copy number data (GISTIC calls) from the PanGEA archive from Memorial Sloan Kettering. We also need a couple files from the Broad GISTIC pipeline to filter the copy number set.
Essentially the MAF files have a single line for each called mutation in each patient sample. The GISTIC calls are a gene-level summary of the GISTIC call (2 or 1 = copy number gain, 0 = neutral, -2 or -1 = copy number loss). Each row of the GISTIC file consists of a gene-level call for each of the patient samples in the data.
We also need to transform the patient identifiers for the GISTIC file and the MAF file so they all map to the patients in patientsComplete.
# load surrogate package up
options(stringsAsFactors = FALSE)
# grab BRCA patients from pancan that have both Copy Number and Mutation
# Information
patientsComplete <- read.delim("http://cbio.mskcc.org/cancergenomics/pancan_tcga/case_lists/BRCA_cnamut_complete.txt")
patientsComplete <- patientsComplete[, 1]
patientsComplete <- make.names(patientsComplete)
# read in BRCA mutations for all patients
BRCAmuts <- read.delim("http://cbio.mskcc.org/cancergenomics/pancan_tcga/maf/brca.maf")
# change barcode '-' to '.' to match copy number data
BRCAmutsPatient <- make.names(BRCAmuts$Tumor_Sample_Barcode)
# truncate barcode to match patient data
BRCAmutsPatient <- substr(BRCAmutsPatient, 1, 12)
BRCAmuts <- data.frame(BRCAmuts, Sample = BRCAmutsPatient)
# BRCAmuts$Sample <- as.character(BRCAmutsNodeMapped$Sample)
# length(unique(BRCAmutsPatient) ==)
# read in BRCA copy number for all patients
BRCAcns <- read.delim("http://cbio.mskcc.org/cancergenomics/pancan_tcga/cna/brca_CNA_data.txt")
# set rownames in CN data to be the gene symbols
rownames(BRCAcns) <- BRCAcns[, 1]
# remove extraneous columns in CN/GISTIC data
BRCAcns <- BRCAcns[, -c(1:3)]
# make sure column names map to patientsComplete by subsetting sample names
# to tcga patients
colnames(BRCAcns) <- substr(colnames(BRCAcns), 1, 12)
# confirming this is true
length(colnames(BRCAcns) %in% patientsComplete)
## [1] 847
We need additional information from the BROAD institute for the copy number events. Specifically, we limit our copy number input to those high confidence calls that are available in the amp_genes and del_genes files from the GISTIC pipeline. These files give the high confidence copy number calls sorted by genomic peak. We can parse them using the readPeakFile() function.
# download additional GISTIC info from BROAD
download.file("http://gdac.broadinstitute.org/runs/analyses__2012_12_21/data/BRCA/20121221/gdac.broadinstitute.org_BRCA.CopyNumber_Gistic2.Level_4.2012122100.0.0.tar.gz",
destfile = "brcaGistic.tar.gz")
# grab additional GISTIC info from BROAD - we need the amp_genes and
# del_genes files
untar(tarfile = "brcaGistic.tar.gz")
gisticDir <- "gdac.broadinstitute.org_BRCA-TP.CopyNumber_Gistic2.Level_4.2012122100.0.0/"
ampGenes <- readPeakFile(paste0(gisticDir, "amp_genes.conf_99.txt"))
delGenes <- readPeakFile(paste0(gisticDir, "del_genes.conf_99.txt"))
# cnaGenes is set of high confidence genes that are amplified and deleted
# across all samples
cnaGenes <- c(ampGenes, delGenes)
# show cnaGenes
cnaGenes[1:10]
## chr11.69400218.694879941 chr11.69400218.694879942 chr8.128657453.128779930
## "CCND1" "ORAOV1" "MYC"
## chr8.37487106.376105051 chr8.37487106.376105052 chr8.37487106.376105053
## "ERLIN2" "ZNF703" "LOC728024"
## chr17.37789433.378996871 chr17.37789433.378996872 chr17.37789433.378996873
## "ERBB2" "GRB7" "PNMT"
## chr17.37789433.378996874
## "TCAP"
Now that we have the high confidence calls from GISTIC, we filter the GISTIC copy number file to these high confidence calls. Then we can filter both the copy number and the mutation data, limiting them to patients that have both copy number and mutation calls (i.e., those patients in the patientsComplete vector).
#filter the data set to only those genes
focalBRCA <- BRCAcns[rownames(BRCAcns) %in% cnaGenes,]
##subset copy number data to only patients that have copy number and mutation data
inComplete <- intersect(colnames(focalBRCA), patientsComplete)
focalBRCA <- focalBRCA[,inComplete]
#filter mutation data to only patients with both copy number and patient data
BRCAmuts <- BRCAmuts[BRCAmuts$Sample %in% patientsComplete,]
Now we map the copy number and mutation data to nodes that exist in the HPRD network by using our geneIntTable data frame.
#add gene.symbol column
focalBRCA <- data.frame(Gene.Symbol=rownames(focalBRCA),focalBRCA)
##map copy number data to genes in HPRD network
focalBRCAnodeMapped <- merge(focalBRCA, geneIntTable, by.x = "Gene.Symbol", by.y="Gene")
#map mutation data to network
BRCAmutsNodeMapped <- merge(BRCAmuts, geneIntTable, by.x = "Hugo_Symbol", by.y="Gene")
The other input we need to run the analysis is the surrogate mutation set themselves. This is a set of highly mutated oncogenes and their immediate neighbors. In our analysis we only include neighbors to the oncogene set that have at least two connections to this set. We map this set to the node names using our geneIntTable.
#load surrogate network genes (included for BRCA)
data("surrogateNodes")
surrogateNodes <- as.character(surrogateNodes[,1])
surrogateNodes <- unique(surrogateNodes)
After all of this preparation, we are ready to run the analysis. For the sake of execution time, we only run the analysis on the first three patients in the patientsComplete vector, and limit ourselves to 100 permutations for each patient. Normally, we would run the analysis using at least 10000 permutations and on the entire dataset.
By setting the cores option, we can run the permutation analysis on multiple processors using the foreach() package. Note that we limit the analysis by submiting smallPatient (the first three patients) vector as an argument to samples.
# example run: run results on three patients for 1000 permutations
smallPatient <- patientsComplete[1:3]
smallPatient
surrogateResult <- calcNeighborMutations(intome, nodeset = surrogateNodes, focalBRCAnodeMapped,
BRCAmutsNodeMapped, Samples = smallPatient, cores = NULL, prefix = "pancanBRCA-",
numPermutes = 100, geneIntTable = geneIntTable)
Once the surrogate analysis is complete, we can look at the results. We will first look at results for a single patient. The results object has 3 slots: cellResults, which are the main surrogate results, mutCopyFrames, which gives information about the mutations and copy number alterations. Additionally, files will be generated for each of these structures with the prefix of above and with the sample name in the working directory. Each of these slots consists of a list, where which each slot corresponds to results for a particular sample.
We first look at the cellResults object, which contains p-values and other information for each surrogate gene. cellResults is a list with each slot containing a data.frame.
#examine significant surrogates for the first patient
patient <- patientsComplete[1]
sigTable <- surrogateResult$cellResults[[patient]]
sigTable[1:5,]
## NodeName isMutated degree neighborVec pvalue Gene EntrezID
## 1 ABL1(25) 0 88 5 0.14 ABL1 25
## 2 AKAP3(10566) 0 7 0 1.00 AKAP3 10566
## 3 AKT1(207) 0 107 4 0.40 AKT1 207
## 4 APLP2(334) 0 10 0 1.00 APLP2 334
## 5 APPL(26060) 0 11 0 1.00 APPL 26060
Looking at this table, we can see the information that is provided on a per patient basis. The “isMutated” column reports whether the surrogate gene itself is mutated or not. The “degree” column gives the total number of connection that surrogate gene has. The “neighborVec” column contains the number of neighboring mutations observed for that surrogate gene. Note that in this count, we include the surrogate gene if it is mutated. The “pvalue” column gives the p-value given the permutation analysis. Note that the smallest p-value is limited by the number of mutations (i.e., for 10000 mutations, the smallest p-value available is 10000^-1 = 1e-4).
Given this table, we can filter our results based on the p-value. If there is a desired number of mutated neighbors we can also filter on this criteria.
#look at significant surrogate patients for a patient
filteredSig <- sigTable[sigTable$pvalue < 0.05 & sigTable$neighborVec > 2,]
filteredSig
## NodeName isMutated degree neighborVec pvalue Gene EntrezID
## 47 CTNNB1(1499) 0 120 7 0.04 CTNNB1 1499
## 67 GTF2H1(2965) 0 26 4 0.00 GTF2H1 2965
## 69 HDAC3(8841) 0 57 5 0.03 HDAC3 8841
## 75 HSPCA(3320) 0 74 6 0.00 HSPCA 3320
## 91 MAPK8(5599) 0 63 6 0.02 MAPK8 5599
## 110 PDGFRB(5159) 1 53 5 0.04 PDGFRB 5159
## 127 PTK2(5747) 0 81 7 0.01 PTK2 5747
## 169 UBB(7314) 0 55 5 0.03 UBB 7314
Once we know the significant surrogate gene / sample pairs, we can plot the individual surrogate mutations using the renderSubNetSimple() function.
# grab the first significant candidate
nodeSig <- as.character(filteredSig[1, "NodeName"])
geneSig <- geneIntTable[as.character(geneIntTable$NodeName) %in% nodeSig, "Gene"]
geneSig
## CTNNB1
## CTNNB1
## 9384 Levels: 76P A1BG A2BP1 A2M AAMP AANAT AARS AARSL AASDHPPT AATF ... ZZEF1
# plot a significant network for the surrogates
renderSubNetSimple(NodeName = nodeSig, sampleName = patient, GeneName = geneSig,
intome = intome, resultObj = surrogateResult, fileOut = NULL)
## quartz_off_screen
## 2
The renderSubNetSimple() function generates an SVG file with name format (Sample)-(Gene).svg. SVG files are scalable and better for publication quality figures.
We can also examine patterns across the three patients. The buildSurrogateTable() function aggregates the results object we created and creates a ‘melted’ data frame (as per Hadley Wickham’s reshape2 package). Each line of this data frame corresponds to a Sample/Gene pair.
Using the reshape package, we can convert this melted frame into a matrix of p-values. This matrix of p-values can be filtered according to various criteria to produce interesting candidate surrogate mutations. For more information about the columns returned, please refer to the documentation for the buildSurrogateTable() function.
#build a 'melted' version of the surrogate table for all samples
surrogateTable <- buildSurrogateTable(surrogateResult)
We can aggregate the data into matrix form using the dcast() command from reshape.
Additionally, we can filter this table to only significant candidates. If we are only interested in those mutations that have 4 or more neighbors, we can filter on this crtieria as well.
filteredSurrTable <- surrogateTable[surrogateTable$pvalue < 0.05 & surrogateTable$neighbor > 3,]
filteredSurrTable
## ID Gene Sample
## TCGA.AO.A12D-CDC2 TCGA.AO.A12D-CDC2 CDC2 TCGA.AO.A12D
## TCGA.AO.A12D-CDK5 TCGA.AO.A12D-CDK5 CDK5 TCGA.AO.A12D
## TCGA.AO.A12D-GSK3B TCGA.AO.A12D-GSK3B GSK3B TCGA.AO.A12D
## TCGA.AO.A12D-HMGB1 TCGA.AO.A12D-HMGB1 HMGB1 TCGA.AO.A12D
## TCGA.AO.A12D-HSPCA TCGA.AO.A12D-HSPCA HSPCA TCGA.AO.A12D
## TCGA.AO.A12D-IRS2 TCGA.AO.A12D-IRS2 IRS2 TCGA.AO.A12D
## TCGA.AO.A12D-MAPK9 TCGA.AO.A12D-MAPK9 MAPK9 TCGA.AO.A12D
## TCGA.AO.A12D-MDM2 TCGA.AO.A12D-MDM2 MDM2 TCGA.AO.A12D
## TCGA.AO.A12D-PIK3R1 TCGA.AO.A12D-PIK3R1 PIK3R1 TCGA.AO.A12D
## TCGA.AO.A12D-PIK3R3 TCGA.AO.A12D-PIK3R3 PIK3R3 TCGA.AO.A12D
## TCGA.AO.A12D-PRKDC TCGA.AO.A12D-PRKDC PRKDC TCGA.AO.A12D
## TCGA.AO.A12D-PTEN TCGA.AO.A12D-PTEN PTEN TCGA.AO.A12D
## TCGA.AO.A12D-RAF1 TCGA.AO.A12D-RAF1 RAF1 TCGA.AO.A12D
## TCGA.AO.A12D-SKP2 TCGA.AO.A12D-SKP2 SKP2 TCGA.AO.A12D
## TCGA.AO.A12D-SMARCA4 TCGA.AO.A12D-SMARCA4 SMARCA4 TCGA.AO.A12D
## TCGA.AO.A12D-UBB TCGA.AO.A12D-UBB UBB TCGA.AO.A12D
## TCGA.AO.A12D-UBE2I TCGA.AO.A12D-UBE2I UBE2I TCGA.AO.A12D
## TCGA.AO.A12D-YWHAE TCGA.AO.A12D-YWHAE YWHAE TCGA.AO.A12D
## TCGA.BH.A0DS-CSNK2A1 TCGA.BH.A0DS-CSNK2A1 CSNK2A1 TCGA.BH.A0DS
## TCGA.BH.A0DS-GTF2H1 TCGA.BH.A0DS-GTF2H1 GTF2H1 TCGA.BH.A0DS
## TCGA.BH.A0DS-IRS4 TCGA.BH.A0DS-IRS4 IRS4 TCGA.BH.A0DS
## TCGA.BH.A0DS-MAPK14 TCGA.BH.A0DS-MAPK14 MAPK14 TCGA.BH.A0DS
## TCGA.BH.A0DS-SP1 TCGA.BH.A0DS-SP1 SP1 TCGA.BH.A0DS
## TCGA.BH.A0DS-UBB TCGA.BH.A0DS-UBB UBB TCGA.BH.A0DS
## TCGA.E2.A1B5-CTNNB1 TCGA.E2.A1B5-CTNNB1 CTNNB1 TCGA.E2.A1B5
## TCGA.E2.A1B5-GTF2H1 TCGA.E2.A1B5-GTF2H1 GTF2H1 TCGA.E2.A1B5
## TCGA.E2.A1B5-HDAC3 TCGA.E2.A1B5-HDAC3 HDAC3 TCGA.E2.A1B5
## TCGA.E2.A1B5-HSPCA TCGA.E2.A1B5-HSPCA HSPCA TCGA.E2.A1B5
## TCGA.E2.A1B5-MAPK8 TCGA.E2.A1B5-MAPK8 MAPK8 TCGA.E2.A1B5
## TCGA.E2.A1B5-PDGFRB TCGA.E2.A1B5-PDGFRB PDGFRB TCGA.E2.A1B5
## TCGA.E2.A1B5-PTK2 TCGA.E2.A1B5-PTK2 PTK2 TCGA.E2.A1B5
## TCGA.E2.A1B5-UBB TCGA.E2.A1B5-UBB UBB TCGA.E2.A1B5
## NodeName neighbor degree pvalue isMutated
## TCGA.AO.A12D-CDC2 CDC2(983) 7 114 0.04 0
## TCGA.AO.A12D-CDK5 CDK5(1020) 4 46 0.03 0
## TCGA.AO.A12D-GSK3B GSK3B(2932) 5 59 0.03 0
## TCGA.AO.A12D-HMGB1 HMGB1(3146) 5 52 0.02 1
## TCGA.AO.A12D-HSPCA HSPCA(3320) 6 74 0.02 0
## TCGA.AO.A12D-IRS2 IRS2(8660) 5 35 0.02 1
## TCGA.AO.A12D-MAPK9 MAPK9(5601) 4 37 0.03 0
## TCGA.AO.A12D-MDM2 MDM2(4193) 4 39 0.04 0
## TCGA.AO.A12D-PIK3R1 PIK3R1(5295) 8 126 0.02 0
## TCGA.AO.A12D-PIK3R3 PIK3R3(8503) 4 11 0.00 0
## TCGA.AO.A12D-PRKDC PRKDC(5591) 4 39 0.04 0
## TCGA.AO.A12D-PTEN PTEN(5728) 4 21 0.00 1
## TCGA.AO.A12D-RAF1 RAF1(5894) 7 89 0.01 0
## TCGA.AO.A12D-SKP2 SKP2(6502) 5 25 0.00 0
## TCGA.AO.A12D-SMARCA4 SMARCA4(6597) 6 36 0.00 0
## TCGA.AO.A12D-UBB UBB(7314) 6 55 0.00 0
## TCGA.AO.A12D-UBE2I UBE2I(7329) 7 95 0.03 0
## TCGA.AO.A12D-YWHAE YWHAE(7531) 7 58 0.01 0
## TCGA.BH.A0DS-CSNK2A1 CSNK2A1(1457) 15 159 0.00 0
## TCGA.BH.A0DS-GTF2H1 GTF2H1(2965) 5 26 0.01 0
## TCGA.BH.A0DS-IRS4 IRS4(8471) 4 14 0.01 0
## TCGA.BH.A0DS-MAPK14 MAPK14(1432) 9 76 0.01 0
## TCGA.BH.A0DS-SP1 SP1(6667) 8 87 0.03 0
## TCGA.BH.A0DS-UBB UBB(7314) 6 55 0.02 0
## TCGA.E2.A1B5-CTNNB1 CTNNB1(1499) 7 120 0.04 0
## TCGA.E2.A1B5-GTF2H1 GTF2H1(2965) 4 26 0.00 0
## TCGA.E2.A1B5-HDAC3 HDAC3(8841) 5 57 0.03 0
## TCGA.E2.A1B5-HSPCA HSPCA(3320) 6 74 0.00 0
## TCGA.E2.A1B5-MAPK8 MAPK8(5599) 6 63 0.02 0
## TCGA.E2.A1B5-PDGFRB PDGFRB(5159) 5 53 0.04 1
## TCGA.E2.A1B5-PTK2 PTK2(5747) 7 81 0.01 0
## TCGA.E2.A1B5-UBB UBB(7314) 5 55 0.03 0
We can also plot all of the significant surrogate candidates using plotAllGraphs. Be cautious about using this - it will produce a lot of graphic files depending on how large the surrogateTable you pass to it.
plotAllGraphs(surrogateTable = filteredSurrTable, surrogateResults = res1, intome = intome)
A Shiny app is available for exploring the surrogate mutations in the breast cancer cell lines here: https://tladeras.shinyapps.io/surrogateShiny/ This app presents the surrogate mutation results in the form of a interactive heatmap where columns are samples and rows are surrogate mutations. The surrogate genes can be filtered by p-value, sorted by clustering order in both the rows and the columns, by number of mutations observed in the samples, total number of connections for each surrogate.


Code for Gauss-Newton and conjugate-gradient inversion and optimization. See documents in doc/opt_package/ for a description of the design and API.


Getting Started
Requirements
jsreports uses standard web technologies (HTML, JavaScript, and CSS) and does not require any browser plug-ins to run. Excel and PDF files are generated entirely in JavaScript, on the client. No server component is required - you only need to include the jsreports JavaScript library in your web page.
jsreports requires jQuery v1.9.0 or higher.
Browser compatibility
jsreports supports all modern web browsers.
- Internet Explorer 9+
- Firefox 3.0+
- Chrome 20.0+
- Safari 4.0+
- Opera 9+
- iOS Safari 3.0+
- Android Web Browser 2.0+
Installation
Extract the jsreports distribution into a folder within your web application. Include the jsreports JavaScript and CSS files in your page. (Note that the src attribute will need to match the location where you installed jsreports.)
Javascript:
<script src="jsreports-all.min.js" type="text/javascript">
CSS:
<link href="jsreports-all.min.css" rel="stylesheet" type='text/css' />
Your first report
First, define a data source. Data sources for jsreports are JSON or CSV data. You can point to a data source on a server by its URL, or you can provide actual data as a literal JavaScript array. See Working with Data for more details and examples.
To get started with a simple data source, copy and paste the following code. This will be a simple data source with just three rows of data.
var orderData = [{
"userId": "1X39AN4Z92Y",
"userName": "John Smith",
"accountType": "INDIVIDUAL",
"orderTotal": 19.95,
"orderDate": "2016-02-24"
},{
"userId": "1AC43L30HR8",
"userName": "Alison Jones",
"accountType": "BUSINESS",
"orderTotal": 180.50,
"orderDate": "2016-02-25"
},{
"userId": "1CM499NA94R",
"userName": "Becky Sanderson",
"accountType": "BUSINESS",
"orderTotal": 85.00,
"orderDate": "2016-02-27"
}];
// A schema is used to assist the report designer and report engine to know
// about the data types used in the data source.
var orderSchema = {
fields: [{
name: "userId",
type: "text"
},{
name: "userName",
type: "text"
},{
name: "accountType",
type: "text"
},{
name: "orderTotal",
type: "number"
},{
name: "orderDate",
type: "date"
}]
};
var dataSource = {
id: "orders", // Internal reference ID
name: "Orders", // Data source name shown to report designer
data: orderData,
schema: orderSchema
};
Now, we'll define a very simple report that uses this data. You can use the report component to create reports, but here we'll use the report builder API to assemble a report definition in code.
// Create a report definition
var report = jsreports.createReport()
.data('orders') // The report will look for a data source with ID "orders"
.groupBy('accountType', 'accountType', 'desc')
.header(0.35)
.text('[accountType] Accounts:')
.footer(0.5)
.text('Total: [SUM(orderTotal)]', 2, 0, 2, 0.25, {
pattern: '$#,##0.00',
align: 'right',
bold: true
})
.detail()
.text('[userName]')
.text('[orderDate]', 1.75, 0, 1, 0.25, {
pattern: 'M/D/YY'
})
.text('[orderTotal]', 3, 0, 1, 0.25, {
pattern: '$#,##0.00',
align: 'right'
})
.done();
// Render the report
jsreports.render({
report_def: report,
target: $('body').css('min-height', '500px'),
datasets: [ dataSource ]
});
When you run this code, you should get a result like the following:
Next, check out the examples to see how to implement other types of reports.


This is the demo of
Neon font JQuery plugin
Source
Neon Light
Basic
Neon Light
Basic with blinking
Neon Light
Custom
N
eon
Li
g
ht
Auto generates
Neon Light


--- layout: post status: publish published: true title: Calling Stevesw... author: display_name: Tomas Restrepo login: tomasr email<EMAIL_ADDRESS>url: http://winterdom.com/ author_login: tomasr author_email<EMAIL_ADDRESS>author_url: http://winterdom.com/ wordpress_id: 890 wordpress_url: http://winterdom.com/2003/04/callingstevesw date: '2003-04-21 09:45:04 +0000' date_gmt: '2003-04-21 09:45:04 +0000' categories: - Blogging tags: [] comments: - id: 607 author: Bruce author_email<EMAIL_ADDRESS>author_url: '' date: '2003-04-21 11:46:10 +0000' date_gmt: '2003-04-21 11:46:10 +0000' content: |
I saw that too, and sent him a mail.
---Can someone who can contact Steve Swartz let him know that his RSS feeds still point out DouglasP as the title and managingEditor?


Photography is a great Ambition everyone needs to enroll into as reduces presure of life ,it makes our mind feel cool and settled
Professional photographer
and video production
based at Embakasi
East Nairobi along Manyanja
road.
We shooting hotels,real estates
,luxury interiors,
wedddings,portraits and
more events.
CEO Jane Bush
Macdonald Francis


DigiSign Oracle
With manifest
Without manifest
Key from server
Key from file
PGP Server (HKP)
Key ID (0x format) or E-mail address
Public key file
Manifest file
Manifest signature file
Package to be verified
Verify
Signature file
Package to be verified
Verify


State:
Region:
District:
Neighborhood:
Specialty:
Opened:
Number of Customers:
Total Number of Visits:
Latitude (GPS):
Longitude(GPS):
Services:
Owner:
Mobile number:


SeeSharper
1.0
Drawing App
Class Index
A
|
B
|
C
|
D
|
E
|
H
|
I
|
L
|
M
|
P
|
R
|
S
|
T
|
U
|
V
A
ArrowDownStrategy
(
Strategy
)
ArrowLeftStrategy
(
Strategy
)
ArrowRightStrategy
(
Strategy
)
ArrowUpStrategy
(
Strategy
)
B
BrushStrategy
(
Strategy
)
C
CircleStrategy
(
Strategy
)
D
DrawingMemento
(
Memento
)
E
ElipseStrategy
(
Strategy
)
EraserStrategy
(
Strategy
)
H
HeartStrategy
(
Strategy
)
HexagonStrategy
(
Strategy
)
I
IModel
(
Shared
)
InvalidExtensionException
(
Shared
)
IPresenter
(
Shared
)
IsoscelesTriangleStrategy
(
Strategy
)
IView
(
Shared
)
L
LineStrategy
(
Strategy
)
M
Model
(
Model
)
ModelTests
(
Model.Tests
)
MultiplePointStrategy
(
Strategy
)
P
PentagonStrategy
(
Strategy
)
Presenter
(
Presenter
)
R
RectangleStrategy
(
Strategy
)
RhombStrategy
(
Strategy
)
RightTriangleStrategy
(
Strategy
)
S
SquareStrategy
(
Strategy
)
StarStrategy
(
Strategy
)
Strategy
(
Strategy
)
T
TwoPointStrategy
(
Strategy
)
U
UndoStack
(
Model
)
V
View
(
View
)
Generated by
1.9.1


Database Web Quickstart
account_circle
Sign in with Google
Database Web Quickstart
account_circle
Sign out
new_releases
Recent
home
My posts
trending_up
My top posts
mode_edit
New Post
Post title...
Post message...
Add post


Address
Special Instructions
Success!
Your order has been place
and will arrive in 20 minutes
Back to Home
Order Now
Bonus marks are always appreciated
123 test drive
Cart
$11.70
Meal:
Tax:
Total:
$10.50
$1.20
1x - Veg Chili
Additions:
Ingredient 3
Ingredient 4
Ingredient 6


Pig cow ground round pork loin. Sirloin spare ribs fatback kevin shoulder bresaola flank short ribs andouille ham hock. Meatball ham hock pork, tenderloin biltong cupim tri-tip ribeye boudin chuck meatloaf venison t-bone. Shankle bresaola t-bone meatball tenderloin ham prosciutto porchetta.
Pig cow ground round pork loin. Sirloin spare ribs fatback kevin shoulder bresaola flank short ribs andouille ham hock. Meatball ham hock pork, tenderloin biltong cupim tri-tip ribeye boudin chuck meatloaf venison t-bone. Shankle bresaola t-bone meatball tenderloin ham prosciutto porchetta.
Pig cow ground round pork loin. Sirloin spare ribs fatback kevin shoulder bresaola flank short ribs andouille ham hock. Meatball ham hock pork, tenderloin biltong cupim tri-tip ribeye boudin chuck meatloaf venison t-bone. Shankle bresaola t-bone meatball tenderloin ham prosciutto porchetta.
Pig cow ground round pork loin. Sirloin spare ribs fatback kevin shoulder bresaola flank short ribs andouille ham hock. Meatball ham hock pork, tenderloin biltong cupim tri-tip ribeye boudin chuck meatloaf venison t-bone. Shankle bresaola t-bone meatball tenderloin ham prosciutto porchetta.


About Me
Hi, I'm Johnny. I'm now actively seeking a user experience design internship in summer 2019!
Currently I'm a first-year graduate student majoring in Human-Computer Interaction/design at Indiana University Bloomington. I'm a user experience designer with a background of microelectronics science and engineering. My passion for visual design and day-to-day visual design practice led me to finally became a designer.
These days, my focus has shifted mostly to the user experience design, targeting at promoting the overall experience via user-centered design.


Nuuk is the capital, the largest city of Greenland, and the seat of government for the Sermersooq municipality. It is however probably one of the smallest capital cities in the world by population (photo by Jimmy Cornell, Midsummers Day 2014).
It is located at the mouth of the Nuup Kangerlua (Danish: Godthåbsfjorden) inlet on the west coast of Greenland, about 240 km (150 mi) south of the Arctic Circle.
The old city name was Godthåb ("Good Hope") in Danish, although since 1979, when home rule was granted to Greenland, the official name of the city has been Nuuk, its Greenlandic name.
The town centre is a 20 minute walk up the hill from the harbour and left at the roundabout. Everything is available in Nuuk, 3 different supermarkets, even a mall with everything you can dream of at European quality.
As of 2014, a new harbour is under construction for large to medium sized ships, which will release a lot of space in the old harbour. It is s expected to be completed by 2016.
The Harbour Master is located in the Royal Arctic building on the other side of the basin. They will call customs.
Nuuk has a very safe, protected harbour, however it's very busy and there is alot of traffic all year long
As of summer 2014, the port authority have cleared up the main docking facility for yachts (Lystbådehavnen) which was cluttered with abandoned boats or long term liveaboards. Some electric access points have been installed and as a result a fee will be charged for docking here. It is unclear how much for now.
It is not advisable to moor at any of the commercial docks: while no one will complain (very peaceful society) movements around the clock forbid you to leave the boat alone or just for a few hours.
Anchoring is possible inside the harbour but not very practical.
Right at the centre of the harbour, there are two strong moorings normally with abandoned boats attached. It is possible to berth alongside these boats and use the moorings.
The Nuuk shipyard side of the harbour is very busy as well and movements are constant. Whilst haulout and all repairs are possible here, prices are very high.
Last updated May 2014.


Website URL *:
Level *:
Technical difficulties, Please try later.
Bad Request,Please enter correct URL format
Please select tab to check the progress and report
Preparing to generate Quality Report
Please note the response time to your
query will depend on the number of links and responsiveness of the
URLs provided.


Path Of Exile Download
Path Of Exile Download 2021 Latest For Windows 10 8 7
Path Of Exile Free Download Pc Game Full Version
Path Of Exile Ps4 Guide How To Download And Play Poe On Ps4
Path Of Exile
Path Of Exile Pc Torrents Games
Gameplay Help And Discussion Unofficial Path Of Exile Mac Client Download V 2 Released Forum Path Of Exile
Download Path Of Exile Rpg Free To Play With Microtransactions Free Games Utopia
Path Of Exile Free Ps4 Download Find How To Get Infernal Skull Helmet Fire Frog Pet
Path Of Exile 2 Apk Android Full Version Game Free Download Hut Mobile
Community Showcase Every Unique In Poe One Wallpaper Poster Ultra High Res Free Download Forum Path Of Exile
Download Path Of Exile Mobile Apk Obb For Android
Path Of Exile Mobile Pre Register Download Taptap
Path Of Exile Update 1 72 Patch Notes Today Download Size Jan 25 Gameplayerr
Path Of Exile Item Duplicate Free Download Proof Youtube
Path Of Exile Lutris
Hideout Showcase Necropolis Gore Hideout Links To Download And Gallery Forum Path Of Exile
Path Of Exile Is Available Now On Xbox One Xbox Wire
Path Of Exile The Awakening 3 2 2c Download For Pc Free
Path Of Exile Poe Mobile For Android Apk Download
How To Play Path Of Exile On Linux
Path Of Exile Ps4 Version Full Game Free Download Gf
How To Download Path Of Exile For Ps4 With Free Ps Plus Bundle
Path Of Exile Ps4 Download Now Live For Us And Eu Along With Free Ps Bundle
You Ll Need To Re Download Path Of Exile Soon But You Ll Get Faster Updates Mmo Bomb
Path Of Exile For Mac Brownlook
Path Of Exile Ps3 Torrents Games
Path Of Exile Update 1 69 Patch Notes Download Update Size Gameplayerr
Hideout Showcase Betrayal Hideout Secret Laboratory Download Forum Path Of Exile


12
1 The people of Israel do only what is useless;
they do only things that will destroy them.
They tell more and more lies; they do more and more acts of violence.
They make a treaty with Assyria,
and they send olive oil to Egypt,
to persuade those nations to protect them.
2 Yahweh is also accusing the people of Judah of breaking his covenant.
He will punish those descendants of Jacob for what they have done.
He will pay them back; he will give them what they deserve.
3 When Jacob was in his mother's womb, he grabbed his brother Esau's heel because he wanted to take his brother's place and be the firstborn.
When Jacob grew up, he wrestled with God.
4 When the angel appeared to him, he struggled with him and won.
Jacob cried out to the angel and begged him to bless him.
Jacob found Yahweh at Bethel;
it was there that Yahweh spoke with him.
5 This is Yahweh, the God of the angel armies!
"Yahweh" is the name by which we should worship him.
6 Turn to your God!
Obey his covenant and do what is right.
Never stop trusting in your God for him to help you.
7 The merchants are wicked; they use scales that give wrong weights and measures,
so they can cheat those who buy from them.
8 The people of Israel boast,
"We are very rich,
and we have found ways to make ourselves even more wealthy than we are now.
In all our buying and selling, no one can see anything wrong in what we do."
9 But Yahweh says, "I am Yahweh, whom you should worship;
I am the one who brought your ancestors out of Egypt.
I will force you away from your homes and make you live in tents again,
just as when you live in tents for a few days every year
when you celebrate the Festival of Shelters.
10 Many times I spoke to the prophets and gave them messages, for them to give to you;
and I gave them many visions for you,
and I gave them parables, for them to speak to you."
11 The prophet says that if it is true that the people in the region of Gilead are wicked,
then surely they are also worthless!
In Gilgal they kill bulls and offer them to their idols;
but these altars will be pulled down and turn into piles of stones in their fields.
12 Jacob fled to the land of Aram;
he, whose name God would later change to Israel, worked many years so he could marry a woman.
He took care of his uncle's sheep in order to marry her.
13 Yahweh used the prophet Moses to bring Israel out of Egypt,
and he took care of them by the prophet who led them.
14 The people of Israel have caused Yahweh to become very angry;
their Lord says that they are guilty of the death of many, and that their guilt remains on them.


Before Change
if isinstance(A, Variable) or isinstance(b, Variable):
raise RuntimeError("LinearCG is not intended to operate directly on Variables or be used with autograd.")
if not isinstance(A, torch.Tensor) or not isinstance(b, torch.Tensor):
raise RuntimeError("LinearCG is intended to operate on tensors.")
if x is None:
x = self.precondition_closure(b)
residual = b - A.mv(x)
After Change
mv_closure = lambda v: A.mv(v)
else:
// Probably fairly difficult to implement a default preconditioner for an arbitrary mv closure.
if self.precondition_closure is None:
self.precondition_closure = lambda v: v
mv_closure = A
self._reset_precond = True
if b.ndimension() > 1:
return self._solve_batch(A, b, x)


from __future__ import print_function, division
from sympy.tensor.indexed import Idx
from sympy.core.mul import Mul
from sympy.core.singleton import S
from sympy.core.symbol import symbols
from sympy.concrete.expr_with_intlimits import ExprWithIntLimits
from sympy.functions.elementary.exponential import exp, log
from sympy.polys import quo, roots
from sympy.simplify import powsimp
from sympy.core.compatibility import range
[docs]class Product(ExprWithIntLimits):
r"""Represents unevaluated products.
``Product`` represents a finite or infinite product, with the first
argument being the general form of terms in the series, and the second
argument being ``(dummy_variable, start, end)``, with ``dummy_variable``
taking all integer values from ``start`` through ``end``. In accordance
with long-standing mathematical convention, the end term is included in
the product.
Finite products
===============
For finite products (and products with symbolic limits assumed to be finite)
we follow the analogue of the summation convention described by Karr [1],
especially definition 3 of section 1.4. The product:
.. math::
\prod_{m \leq i < n} f(i)
has *the obvious meaning* for `m < n`, namely:
.. math::
\prod_{m \leq i < n} f(i) = f(m) f(m+1) \cdot \ldots \cdot f(n-2) f(n-1)
with the upper limit value `f(n)` excluded. The product over an empty set is
one if and only if `m = n`:
.. math::
\prod_{m \leq i < n} f(i) = 1 \quad \mathrm{for} \quad m = n
Finally, for all other products over empty sets we assume the following
definition:
.. math::
\prod_{m \leq i < n} f(i) = \frac{1}{\prod_{n \leq i < m} f(i)} \quad \mathrm{for} \quad m > n
It is important to note that above we define all products with the upper
limit being exclusive. This is in contrast to the usual mathematical notation,
but does not affect the product convention. Indeed we have:
.. math::
\prod_{m \leq i < n} f(i) = \prod_{i = m}^{n - 1} f(i)
where the difference in notation is intentional to emphasize the meaning,
with limits typeset on the top being inclusive.
Examples
========
>>> from sympy.abc import a, b, i, k, m, n, x
>>> from sympy import Product, factorial, oo
>>> Product(k, (k, 1, m))
Product(k, (k, 1, m))
>>> Product(k, (k, 1, m)).doit()
factorial(m)
>>> Product(k**2,(k, 1, m))
Product(k**2, (k, 1, m))
>>> Product(k**2,(k, 1, m)).doit()
factorial(m)**2
Wallis' product for pi:
>>> W = Product(2*i/(2*i-1) * 2*i/(2*i+1), (i, 1, oo))
>>> W
Product(4*i**2/((2*i - 1)*(2*i + 1)), (i, 1, oo))
Direct computation currently fails:
>>> W.doit()
Product(4*i**2/((2*i - 1)*(2*i + 1)), (i, 1, oo))
But we can approach the infinite product by a limit of finite products:
>>> from sympy import limit
>>> W2 = Product(2*i/(2*i-1)*2*i/(2*i+1), (i, 1, n))
>>> W2
Product(4*i**2/((2*i - 1)*(2*i + 1)), (i, 1, n))
>>> W2e = W2.doit()
>>> W2e
2**(-2*n)*4**n*factorial(n)**2/(RisingFactorial(1/2, n)*RisingFactorial(3/2, n))
>>> limit(W2e, n, oo)
pi/2
By the same formula we can compute sin(pi/2):
>>> from sympy import pi, gamma, simplify
>>> P = pi * x * Product(1 - x**2/k**2, (k, 1, n))
>>> P = P.subs(x, pi/2)
>>> P
pi**2*Product(1 - pi**2/(4*k**2), (k, 1, n))/2
>>> Pe = P.doit()
>>> Pe
pi**2*RisingFactorial(1 + pi/2, n)*RisingFactorial(-pi/2 + 1, n)/(2*factorial(n)**2)
>>> Pe = Pe.rewrite(gamma)
>>> Pe
pi**2*gamma(n + 1 + pi/2)*gamma(n - pi/2 + 1)/(2*gamma(1 + pi/2)*gamma(-pi/2 + 1)*gamma(n + 1)**2)
>>> Pe = simplify(Pe)
>>> Pe
sin(pi**2/2)*gamma(n + 1 + pi/2)*gamma(n - pi/2 + 1)/gamma(n + 1)**2
>>> limit(Pe, n, oo)
sin(pi**2/2)
Products with the lower limit being larger than the upper one:
>>> Product(1/i, (i, 6, 1)).doit()
120
>>> Product(i, (i, 2, 5)).doit()
120
The empty product:
>>> Product(i, (i, n, n-1)).doit()
1
An example showing that the symbolic result of a product is still
valid for seemingly nonsensical values of the limits. Then the Karr
convention allows us to give a perfectly valid interpretation to
those products by interchanging the limits according to the above rules:
>>> P = Product(2, (i, 10, n)).doit()
>>> P
2**(n - 9)
>>> P.subs(n, 5)
1/16
>>> Product(2, (i, 10, 5)).doit()
1/16
>>> 1/Product(2, (i, 6, 9)).doit()
1/16
An explicit example of the Karr summation convention applied to products:
>>> P1 = Product(x, (i, a, b)).doit()
>>> P1
x**(-a + b + 1)
>>> P2 = Product(x, (i, b+1, a-1)).doit()
>>> P2
x**(a - b - 1)
>>> simplify(P1 * P2)
1
And another one:
>>> P1 = Product(i, (i, b, a)).doit()
>>> P1
RisingFactorial(b, a - b + 1)
>>> P2 = Product(i, (i, a+1, b-1)).doit()
>>> P2
RisingFactorial(a + 1, -a + b - 1)
>>> P1 * P2
RisingFactorial(b, a - b + 1)*RisingFactorial(a + 1, -a + b - 1)
>>> simplify(P1 * P2)
1
See Also
========
Sum, summation
product
References
==========
.. [1] Michael Karr, "Summation in Finite Terms", Journal of the ACM,
Volume 28 Issue 2, April 1981, Pages 305-350
http://dl.acm.org/citation.cfm?doid=322248.322255
.. [2] http://en.wikipedia.org/wiki/Multiplication#Capital_Pi_notation
.. [3] http://en.wikipedia.org/wiki/Empty_product
"""
__slots__ = ['is_commutative']
def __new__(cls, function, *symbols, **assumptions):
obj = ExprWithIntLimits.__new__(cls, function, *symbols, **assumptions)
return obj
def _eval_rewrite_as_Sum(self, *args):
from sympy.concrete.summations import Sum
return exp(Sum(log(self.function), *self.limits))
@property
def term(self):
return self._args[0]
function = term
def _eval_is_zero(self):
# a Product is zero only if its term is zero.
return self.term.is_zero
def doit(self, **hints):
f = self.function
for index, limit in enumerate(self.limits):
i, a, b = limit
dif = b - a
if dif.is_Integer and dif < 0:
a, b = b + 1, a - 1
f = 1 / f
if isinstance(i, Idx):
i = i.label
g = self._eval_product(f, (i, a, b))
if g in (None, S.NaN):
return self.func(powsimp(f), *self.limits[index:])
else:
f = g
if hints.get('deep', True):
return f.doit(**hints)
else:
return powsimp(f)
def _eval_adjoint(self):
if self.is_commutative:
return self.func(self.function.adjoint(), *self.limits)
return None
def _eval_conjugate(self):
return self.func(self.function.conjugate(), *self.limits)
def _eval_product(self, term, limits):
from sympy.concrete.delta import deltaproduct, _has_simple_delta
from sympy.concrete.summations import summation
from sympy.functions import KroneckerDelta, RisingFactorial
(k, a, n) = limits
if k not in term.free_symbols:
if (term - 1).is_zero:
return S.One
return term**(n - a + 1)
if a == n:
return term.subs(k, a)
if term.has(KroneckerDelta) and _has_simple_delta(term, limits[0]):
return deltaproduct(term, limits)
dif = n - a
if dif.is_Integer:
return Mul(*[term.subs(k, a + i) for i in range(dif + 1)])
elif term.is_polynomial(k):
poly = term.as_poly(k)
A = B = Q = S.One
all_roots = roots(poly)
M = 0
for r, m in all_roots.items():
M += m
A *= RisingFactorial(a - r, n - a + 1)**m
Q *= (n - r)**m
if M < poly.degree():
arg = quo(poly, Q.as_poly(k))
B = self.func(arg, (k, a, n)).doit()
return poly.LC()**(n - a + 1) * A * B
elif term.is_Add:
p, q = term.as_numer_denom()
p = self._eval_product(p, (k, a, n))
q = self._eval_product(q, (k, a, n))
return p / q
elif term.is_Mul:
exclude, include = [], []
for t in term.args:
p = self._eval_product(t, (k, a, n))
if p is not None:
exclude.append(p)
else:
include.append(t)
if not exclude:
return None
else:
arg = term._new_rawargs(*include)
A = Mul(*exclude)
B = self.func(arg, (k, a, n)).doit()
return A * B
elif term.is_Pow:
if not term.base.has(k):
s = summation(term.exp, (k, a, n))
return term.base**s
elif not term.exp.has(k):
p = self._eval_product(term.base, (k, a, n))
if p is not None:
return p**term.exp
elif isinstance(term, Product):
evaluated = term.doit()
f = self._eval_product(evaluated, limits)
if f is None:
return self.func(evaluated, limits)
else:
return f
def _eval_simplify(self, ratio, measure):
from sympy.simplify.simplify import product_simplify
return product_simplify(self)
def _eval_transpose(self):
if self.is_commutative:
return self.func(self.function.transpose(), *self.limits)
return None
[docs] def is_convergent(self):
r"""
See docs of Sum.is_convergent() for explanation of convergence
in SymPy.
The infinite product:
.. math::
\prod_{1 \leq i < \infty} f(i)
is defined by the sequence of partial products:
.. math::
\prod_{i=1}^{n} f(i) = f(1) f(2) \cdots f(n)
as n increases without bound. The product converges to a non-zero
value if and only if the sum:
.. math::
\sum_{1 \leq i < \infty} \log{f(n)}
converges.
References
==========
.. [1] https://en.wikipedia.org/wiki/Infinite_product
Examples
========
>>> from sympy import Interval, S, Product, Symbol, cos, pi, exp, oo
>>> n = Symbol('n', integer=True)
>>> Product(n/(n + 1), (n, 1, oo)).is_convergent()
False
>>> Product(1/n**2, (n, 1, oo)).is_convergent()
False
>>> Product(cos(pi/n), (n, 1, oo)).is_convergent()
True
>>> Product(exp(-n**2), (n, 1, oo)).is_convergent()
False
"""
from sympy.concrete.summations import Sum
sequence_term = self.function
log_sum = log(sequence_term)
lim = self.limits
try:
is_conv = Sum(log_sum, *lim).is_convergent()
except NotImplementedError:
if Sum(sequence_term - 1, *lim).is_absolutely_convergent() is S.true:
return S.true
raise NotImplementedError("The algorithm to find the product convergence of %s "
"is not yet implemented" % (sequence_term))
return is_conv
[docs] def reverse_order(expr, *indices):
"""
Reverse the order of a limit in a Product.
Usage
=====
``reverse_order(expr, *indices)`` reverses some limits in the expression
``expr`` which can be either a ``Sum`` or a ``Product``. The selectors in
the argument ``indices`` specify some indices whose limits get reversed.
These selectors are either variable names or numerical indices counted
starting from the inner-most limit tuple.
Examples
========
>>> from sympy import Product, simplify, RisingFactorial, gamma, Sum
>>> from sympy.abc import x, y, a, b, c, d
>>> P = Product(x, (x, a, b))
>>> Pr = P.reverse_order(x)
>>> Pr
Product(1/x, (x, b + 1, a - 1))
>>> Pr = Pr.doit()
>>> Pr
1/RisingFactorial(b + 1, a - b - 1)
>>> simplify(Pr)
gamma(b + 1)/gamma(a)
>>> P = P.doit()
>>> P
RisingFactorial(a, -a + b + 1)
>>> simplify(P)
gamma(b + 1)/gamma(a)
While one should prefer variable names when specifying which limits
to reverse, the index counting notation comes in handy in case there
are several symbols with the same name.
>>> S = Sum(x*y, (x, a, b), (y, c, d))
>>> S
Sum(x*y, (x, a, b), (y, c, d))
>>> S0 = S.reverse_order(0)
>>> S0
Sum(-x*y, (x, b + 1, a - 1), (y, c, d))
>>> S1 = S0.reverse_order(1)
>>> S1
Sum(x*y, (x, b + 1, a - 1), (y, d + 1, c - 1))
Of course we can mix both notations:
>>> Sum(x*y, (x, a, b), (y, 2, 5)).reverse_order(x, 1)
Sum(x*y, (x, b + 1, a - 1), (y, 6, 1))
>>> Sum(x*y, (x, a, b), (y, 2, 5)).reverse_order(y, x)
Sum(x*y, (x, b + 1, a - 1), (y, 6, 1))
See Also
========
index, reorder_limit, reorder
References
==========
.. [1] Michael Karr, "Summation in Finite Terms", Journal of the ACM,
Volume 28 Issue 2, April 1981, Pages 305-350
http://dl.acm.org/citation.cfm?doid=322248.322255
"""
l_indices = list(indices)
for i, indx in enumerate(l_indices):
if not isinstance(indx, int):
l_indices[i] = expr.index(indx)
e = 1
limits = []
for i, limit in enumerate(expr.limits):
l = limit
if i in l_indices:
e = -e
l = (limit[0], limit[2] + 1, limit[1] - 1)
limits.append(l)
return Product(expr.function ** e, *limits)
[docs]def product(*args, **kwargs):
r"""
Compute the product.
The notation for symbols is similar to the notation used in Sum or
Integral. product(f, (i, a, b)) computes the product of f with
respect to i from a to b, i.e.,
::
b
_____
product(f(n), (i, a, b)) = | | f(n)
| |
i = a
If it cannot compute the product, it returns an unevaluated Product object.
Repeated products can be computed by introducing additional symbols tuples::
>>> from sympy import product, symbols
>>> i, n, m, k = symbols('i n m k', integer=True)
>>> product(i, (i, 1, k))
factorial(k)
>>> product(m, (i, 1, k))
m**k
>>> product(i, (i, 1, k), (k, 1, n))
Product(factorial(k), (k, 1, n))
"""
prod = Product(*args, **kwargs)
if isinstance(prod, Product):
return prod.doit(deep=False)
else:
return prod


Skimmed quickly from mobile & Added it to ToRead list. Bitcoin's timestamp property which secure single blockchain $BTC is extended by jl777 to secure multiple blockchains with lesser PoW security. BTC timestamp security is second layer security for those chains, called d...


DESTINATIONS FOOD & DRINK NEWS STAY VIDEO Search SPIRIT OF INDIA Indian food: The best dishes in each region Kate Springer, CNN • Updated 7th September 2020 Facebook Twitter Email India ultimate food guide - Goa spices India ultimate food guide - Jalebi India ultimate food guide - paratha Jammu and Kashmir India ultimate food guide - paratha Jammu and Kashmir India ultimate food guide - saffron India ultimate food guide - delhi paneer tikka new delhi streetfood 04 india ultimate food guide nepalese food 11 01 india ultimate food guide 08 india ultimate food guide indian street food 40 mumbai foods bombay sandwich 40 mumbai food gujarati thali 40 mumbai foods samosas 6. Kolkata food 3. Kolkata food 06 india ultimate food guide 02 india ultimate food guide 03 india ultimate food guide 06 india bourdain 1021 India ultimate food guide - Hyderabad masala dosa 1/22 Food journey through India: There's no such thing as one type of "Indian" cuisine. With 29 states -- each with its own topography and traditions -- the country's food experiences vary based on the landscape, climate, immigration patterns, trade links, rulers and religions. INDRANIL MUKHERJEE/AFP/AFP/Getty Images Editor's Note — CNN's series often carry sponsorship originating from the countries and regions we profile. However, CNN retains full editorial control over all of its reports. Our sponsorship policy. (CNN) — When ordering "Indian" food in places such as the United States or the UK, garlic naan, biryani, butter chicken and dal are ubiquitous. However, when you travel to India, don't expect anything close to a standard menu. In this vast country, there are 29 states -- each with its own topography and traditions. Head 100 miles in any direction and the religion, language and culinary customs will be completely different. The food experiences vary based on the landscape and climate, not to mention historic immigration patterns, spices, trade links, rulers and religions. In northern destinations, you might find flatbreads and tandoor-grilled kebabs, while southern Indians dine on sweet coconut fish curries and rice. Across the country, the diversity spans more than nine religions, all of which influence the relationship with food. For example, Hindus eschew beef, Muslims avoid pork and Jains practice strict vegetarianism. With Covid-19 impacting international tourism, those of us in other countries probably can't taste these delicious dishes in India right now, but there's no harm in whetting our appetites. From north to south, east to west, we take a deep dive into each region's history and traditional dishes with insights from experts in each region. Northern India The markets of Amritsar, in Punjab, are a great way to explore the local spices, vegetables and street foods. The markets of Amritsar, in Punjab, are a great way to explore the local spices, vegetables and street foods. NARINDER NANU/AFP/AFP/Getty Images Comprising states such as Punjab, Haryana, Uttarakhand and Indian-administered Jammu and Kashmir, northern India is heavily influenced by its history and topography. It's here where you'll encounter the majestic Himalayas and the Indo-Gangetic Plain -- fertile alluvial flatlands that have been considered the "food bowl" of India for centuries. "The Himalayas have a huge influence on Northern India," Palash Mitra, the chef at New Punjab Club in Hong Kong, tells CNN Travel. "The mountains create a temperate, arid, less humid climate compared to Kolkata or Mumbai. In addition, the landscape is full of hills and valleys. As you head up to the borders of Punjab, you'll see huge steppes." Related content India's Punjab: What to see in Amritsar and beyond Mitra, who grew up in western India and worked in northern India for much of his early career, says the climate results in an abundance of specific ingredients, such as wheat, rice, maize, dairy, mustard seed, dried fruits, pistachios, almonds, saffron, turmeric and cumin. The cuisine in this part of India tends to be rustic, with an emphasis on the seasons. "Even though the presentation is simple, I would say it's a celebratory style of food -- they are celebrating the flavors, the seasons, the bounties of nature and spirituality," says the chef. Another major influence can be attributed to immigrants, traders and conquerors. “They are celebrating the flavors, the seasons, the bounties of nature and spirituality.” Palash Mitra, New Punjab Club Genghis Khan, Alexander the Great, Nader Shah, Amir Timur... many of the world's best known conquerors rolled through Northern India. "The diverse food culture reflects many waves of migration from Mongolia, Persia, Turkey, Africa and many other regions," explains Mitra. "Communities moved there and set up a life. They brought their traditions with them, adding to the wide spectrum of regional foods in the north. The Mughal empire, which ruled during the 16th and 17th centuries, for example, dined on many milk proteins, such as paneer (an Indian cheese), ghee and yogurt. Of course, within the vast northern region, there are significant differences between food traditions. In Punjab, Mitra says dishes tend to revolve around the tandoor (clay oven), whereas lamb chops, beef kebabs, chicken tikka and all kinds of skewered meats are cooked. Aside from tandoor dishes, Mitra recommends amritsari macchi -- river fish that's coated in a chickpea batter then deep-fried and served with various chutneys. Related content Best 23 cities for street food from Miami to Tokyo He also recommends sarson da saag and makki ki roti. To make this dish, corn flour roti are cooked on a griddle, then stir-fried with mustard greens, spinach and other leafy greens and then served alongside onions and butter. "Punjab food is meatier and they use yogurts to sweeten and tenderize the meats in dishes such as murgh (chicken) tikka. "People in Himachal and Haryana use a lot more vegetables, fish and foods like that. But the most common thing among them is the use of dairy. They all use it, but in different ways." By comparison, in places like Kashmir, there's a distinct Muslim influence. A notable dish here, called roghan ghosht (a.k.a rogan josh), is a slow-cooked lamb stew using fennel, ginger and rattan jyot (made from tree bark). In Northern India, jalebi -- batter fried into swirling shapes -- are a beloved sweet, especially when paired with condensed milk and topped with spices. In Northern India, jalebi -- batter fried into swirling shapes -- are a beloved sweet, especially when paired with condensed milk and topped with spices. NARINDER NANU/AFP/AFP/Getty Images And in the mountains, there's a pronounced Tibetan and Nepali influence featuring more dumplings, noodles and stews.  "It's about nourishing both the soul and the body." Throughout the North, jalebi with rabdi -- swirls of deep-fried batter, topped with a creamy condensed-milk sauce, spices, sugar and nuts -- is a must-try. You can find it on every street corner, though Mitra claims those in Haridwar, in North India's Uttarakhand state, are the most exceptional. "If you go to Kashmir, you have to go to Dal Lake and try the local food around this area," says Mitra. "There is a big Muslim community, so you want to try to rogan josh and the Kashmiri muji gaad. It's like minced meat, cooked in a stew." Related content The world's 50 best foods Central India In Central India -- covering the states of Uttar Pradesh, Madhya Pradesh, Chhattisgarh, Bihar and Jharkhand -- the food packs a punch. "Generally, people of this region don't like bland or monotonous food," Amit Pamnani, a professional chef who runs a culinary homestay experience called Stay with a Chef in Indore, in Madhya Pradesh, tells CNN Travel. "They want it to be somewhat heavy on spices. The flavor of any dish will be strong -- a mix of spicy, salty, sweet and sour all at once." Related content All aboard the Maharajas' Express, India's most luxurious train The climate of this inland region is hot and dry, which is part of the reason behind the penchant for spice. Chilies, for example, are thought to keep the body cool while the anti-microbial properties of some spices can keep food from spoiling quickly in the heat. Pamnani says a history of Mughal influence -- a Muslim empire that ruled the region from the early 16th century to the mid 19th century -- has also shaped the cuisine. "While the Mughals enjoyed meaty dishes, such as the country's kebabs and biryanis, we also have a large community of Jains (an ancient Indian religion known as Jain Dharma) who are strict vegetarians," says Pamnani. "Some actually don't eat ingredients that grow underground, such as garlic or onions. Instead, they use a lot of cumin and asafoetida [an aromatic herb that tastes of leeks when cooked] to add flavor to their food." “The flavor of any dish will be fairly strong -- a mix of spicy, salty, sweet, and sour all at once.” Amit Pamnani, Stay with a Chef In Lucknow, the capital of Uttar Pradesh, Pamnani says Galouti kebabs are a must-try: "It's almost like a meat pâté. Legend has it that they were invented by a cook in the Mughal Darbar [king's court] for a toothless king who couldn't chew meat, so he made this melt-in-your-mouth kebab." Indore, the chef's homebase, is one of the most famous places in Central India to dig into street food. The two most well-known street markets -- Chappan Dukan (meaning "56 Shops") and Sarafa -- are brimming with vendors. Here, Pamnani recommends hunting down local staples, such as sev (a savory crispy fried noodle snack), dahi vada (lentil dumplings covered in yogurt and chutney), chole tikki (boiled chickpeas in a spice stew), coconut crush (coconut water smoothie) and Kachori samosas (deep-fried pastry puffs filled with vegetables). Capital cuisine: Delhi New Delhi streetfood New Delhi's old city streets of Chandni Chowk are a hub for the city's best street food. AFP/Getty Images If you only have time to visit one food city in India, it has to be Delhi. The capital of India is the melting pot of all of India's regions and ethnicities, providing a round-the-country tour of culinary traditions. Alongside world-famous butter chicken, stuffed parathas, chaat and kebabs, Delhi's dining scene also plays host to a variety of international influences. "If you want to try food from any region in India, you can find it here," Anubhav Sapra, founder of Delhi Food Walks, tells CNN Travel. "The noisy labyrinthine lanes of Chawri Bazar and Chandni Chowk have an extremely rich culinary culture to offer to tourists and residents alike." Related content New Delhi: Insider Travel Guide Old Delhi is considered to be the street food capital of India, so Sapra suggests you start your food crawl there. "Many of the authentic Delhi dishes can be found here, such as bedmi puri (puffed bread with lentils), chole kulche (a popular breakfast of spiced chickpeas in a curry), nagori halwa (a sweet treat of puffed bread with a semolina- and ghee-based paste) or paaya (trotters)," says Sapra. "At Jama Masjid mosque and Turkman Gate, you can relish nihari (a slow-cooked meat stew) at Kallu, biryani at Taufeeq ki Biryani, or enjoy Hussain's fried chicken." You can find Tibetan thukpa in Delhi's Majnu-ka-Tilla district. You can find Tibetan thukpa in Delhi's Majnu-ka-Tilla district. jenni marsh Beyond Old Delhi, travelers can explore Tibetan cuisine beyond momo dumplings in the city's northern neighborhoods. "Close to the Yamuna river is Majnu-ka-Tilla, a residential area that's also known as Little Tibet," says Sapra. "In the narrow lanes of this area, you will find a huge variety of traditional Tibetan foods -- much more than momos." There are lots of food stalls and humble restaurants, serving up meaty stews, chicken thukpa (a Himalayan noodle soup) and spicy fried pork with steamed rice. “You will find a huge variety of traditional Tibetan foods -- much more than momos.” Anubhav Sapra, Delhi Food Walks South Delhi is also worth visiting on any food adventure. Home to a vast Afghan settlement of migrant workers, it's known as Little Kabul. "There are rows of Afghan tandoor shops and restaurants in this area, serving some of the tastiest tandoor cooked meals," says Sapra. He recommends exploring narrow Kashmiri Lane, where the scents of freshly baked roht (Afghan sweet bread), mantu (lamb and onion dumplings) and juicy mutton kebabs topped with sour sumac (a citrus-like spice) permeate the air. Eastern India Bengali food is often cooked in mustard oil. Bengali food is often cooked in mustard oil. Divya Dugar/CNN Set against the Bay of Bengal, eastern states like West Bengal and Odisha are home to a largely humid climate, epic rainfalls, rivers and lakes. As a result, there's no shortage of green vegetables, fruit and rice. In addition, fish and cooling yogurts make appearances at almost every meal, as do nourishing mustard seeds and hearty ghee. Best enjoyed at street stalls, the regional staples include dalma (hearty lentil stews), machher jhol (a tomato-based fish curry), pakhala (a fermented rice dish seasoned with spices, curd and lemon), badi chura (dried lentil cakes), aloo dum dahi vada (potato curry with lentil dumplings and yogurt), red chili chutney and delicious chhena poda (roasted cottage cheese with cashews and raisins). "It's very humid, very hot, so you will see a lot of cooling desserts and thin yogurts -- almost like buttermilk -- that keep people feeling full and hydrated," says Sapra. You'll encounter dramatic variations in food traditions between the states in this region. While Bengali cuisine tends to be simple yet packed with flavor, Oriya dishes are subtle and delicately spiced. "I think Odisha's food is one of the most underrated in India." To the north, there's heavy influence from Mongolian and Chinese food traditions with momos and mutton on every corner. Within the region, Bengali cuisine is by far the best known, thanks in part to its delicious street snacks and beloved desserts. "Almost everything in Bengali cuisine is cooked in mustard oil," says Sapra. "Mustard is a very important part of Bengali food, along with vegetables. They leave no stone unturned when it comes to greens -- Bengalis are known for using every part of the vegetable." A puchka vendor makes a small hole in the fried dough ball, which will then be stuffed with filling and dunked into a tamarind and green mango sauce. A puchka vendor makes a small hole in the fried dough ball, which will then be stuffed with filling and dunked into a tamarind and green mango sauce. Divya Dugar/CNN Among the most popular dishes in West Bengal, you'll want to taste various bhaja -- fried snacks -- as well as chana dal (thick chickpea dal) cooked in lots of spices. A light, fluffy accompaniment to most meals is luchi, a deep-fried flatbread made from maida (white flour). "Bengali cuisine has a lot to offer to all street food lovers," says Sapra.  Sapra also recommends fresh singhara (a crispy fried snack filled with potatoes, peas and other vegetables), mughlai parathas (fried bread stuffed with minced meat and onions), or kati rolls (super spicy skewer-roasted kebab rolled in paratha bread) that are best enjoyed on a night out with friends. Related content Hidden India: Odisha's secrets revealed "We can't talk about Bengali food without mentioning sweets," says Sapra. "Bengalis love their sweet dishes and why not? They are delicious." He points to specialties such as rasgulla (dumplings full of paneer and sugary syrup) and ras malai -- similar to a crustless cheesecake made from chhena (cheese curds). "Another one of their special desserts is payesh, which is rice pudding sweetened with jaggery (cane sugar and date palm sap)," says Sapra. "This sweet dish tastes so good that you can never be satisfied with just one bowl." Northeastern India In northeastern India, the eight sisters -- Assam, Meghalaya, Nagaland, Arunachal Pradesh, Manipur, Mizoram, Tripura and Sikkim -- are secluded from the rest of the country. Bhutan and the Himalayas hug the region to the north, while Bangladesh borders to the south. Highly remote, this is one of India's most underrated provinces when it comes to food. Related content Exploring Meghalaya, India's abode of the clouds "It's green and lush, with rainforests, deep rivers and valleys -- it's like heaven," Chef Atul Lahkar, a celebrity chef and owner of Heritage Khorikaa in Assam, tells CNN Travel. "Because of the rainfall, it's easy to cultivate food here. People tend to live very closely with nature... foraging, farming and fishing." Known for its tribal communities, micro climates and lush rice paddies -- Meghalaya is said to have the highest annual rainfall in the world -- the food varies from state to state. "It's impossible to generalize because we have so many subcommunities -- 28 in Assam alone -- all with their own traditions," says Lahkar. But they do share a few common traits, namely simple, rustic food that eschews oil, ghee, milk and spice mixes. You'll often see baked, grilled or steamed dishes, such as chicken, fish or pork steamed with endemic herbs inside bamboo leaves. "The traditional meat dishes are pork or chicken barbecue, because most of the tribal communities are hunters. This is the lifestyle," says Lahkar. Other common ingredients include bamboo shoots, white gourd, lentils, aromatic herbs, ginger, garlic, chili and more than 230 types of rice every color and texture imaginable. Related content Global cuisine: Around the world in 18 dishes "Rice is a staple food in this region. We often eat it pounded in a traditional way, with vegetables, meat or fish," says Lahkar. "We also use a lot of aromatic herbs, like borage (also called starflower). This herb is often paired with fish and meat to add a punch of flavor to the dish." Around the region, you can also find iterations of apong or xaj -- a homemade rice beer often infused with herbs or fruits -- almost everywhere. In terms of foods to try in Assam, Lahkar recommends baah gajor gahori -- pork with bamboo shoots and sticky rice (steamed rice wrapped in banana leaves). In Meghalaya, he says one of the most popular dishes is Khasi-style pork with rice cooked in pork blood with sesame seeds, ginger and garlic. And in Nagaland, the region's staple smoked pork should be consumed with akhuni -- an intensely aromatic type of chutney made with fermented soybeans. "In every part of the northeast, they have their own heritage style of cooking," Lahkar. "It's all very simple and rustic." Western India Mumbai's famous Bombay Sandwich. Mumbai's famous Bombay Sandwich. saaleha bamjee/flickr/cnn In Western India, states such as Rajasthan and Gujarat lie in largely dry stretches of desert where fresh vegetables and fruits are not always available. "Food was influenced by both the war-like lifestyles of its inhabitants and the availability of ingredients in this arid region," Manish Joshi, the executive chef of Taj Lake Palace hotel in Udaipur, tells CNN Travel. "Food that could last for several days and could be eaten without heating was preferred. Scarcity of water and fresh green vegetables have all had their effect on the cooking." You'll find lots of dried lentils and beans, dairy and liberal use of ghee, as well as millet- and barley-based breads. The area is also known for snacks like bikaneri bhujia (crispy moth beans and spices), mirchi vada (fresh green chillies stuffed with spicy potato filling) and pyaaj kachori (a fried pastry filled with a spicy onion filling). Other famous dishes include bajre ki roti (a millet-based flatbread), lasun ki chutney (hot garlic paste) and mawa kachori (puffed pastries full of creamy mawa cheese) from Jodhpur. Related content 40 Mumbai foods we can't live without The region has seen centuries of influence from Central and West Asia -- especially Persian, Arabic and Urdu communities that settled here over the years. It's also important to note that Rajasthan has one of the most plant-based diets of all Indian states, home to roughly 75% vegetarians. "Originating for the Marwar region (southwestern Rajasthan state), the concept of Marwari Bhojnalaya, or purely vegetarian restaurants, are found in many parts of Rajasthan," says Joshi. However, there's plenty of influence here, too, from the Rajputs, who are avid hunters. "Their diet consisted of game meat and dishes like laal maas (mutton curry), safed maas (mutton with cream, yogurt and dry fruits) and khad khargosh (curried rabbit)," adds Joshi. "The natives of the Rajputi areas also prepare a wide variety of chutneys made of turmeric, garlic, mint and coriander." Heading west toward the coast, the state of Gujarat share similar food traditions with Rajasthan, though they tend to cook with more sugar due to historic influences from Chinese invaders and immigrants. “Food was influenced by both the war-like lifestyles of its inhabitants and the availability of ingredients in this arid region.” Manish Joshi, Taj Lake Palace With a long stretch of coastline, the "Jewel of Western India" sees more seafood, chutneys, pickled vegetables and fruits. Among the must-try experiences is the Gujarati thali -- a platter of various dals, kadhi (a sour yogurt curry with vegetable fritters), sabzi (a mixed vegetarian dish), steamed basmati rice and rotli bread -- which is often served on a glimmering silver platter. With influence from the Jain culture, Gujarat is also a heavily vegetarian state, but the dishes are varied with flavors that often combine sweet, spicy and sour. The broad range of spices -- from turmeric to cumin, cardamom, coriander, tamarind, saffron, mint, cloves, ginger, cayenne, curry leaves, chili and more -- make the masala mixes here particularly notable. Southwestern India Mumbai, India's financial capital, is renowned for its vast array of street food. Mumbai, India's financial capital, is renowned for its vast array of street food. AFP/Getty Images Maharashtra -- where Mumbai is located -- enjoys a long stretch of coastline and a tropical climate where the monsoon season can last for months. However, there's also a wide swath of hinterland that's far removed from the sea. "The natural produce, cereals and vegetables vary greatly," Pushpesh Pant, Indian food critic, historian and author of "India: The Cookbook," tells CNN Travel. "Fish and seafood are part of the daily diet along the seaboard while millet, mutton and different seasonal vegetables and lentils predominate elsewhere." Within the mix, there are several sub-regional cuisines, including coastal Malvani-style food in South Konkan -- known for its coconut-based seafood curries with sour, fiery flavors -- and Vidarbha cuisine, a particularly spicy style that can be found in and around Nagpur city, in the central part of Maharashtra. “The straight jacket of caste, orthodox prescriptions and prohibitions no longer fetter the young.” Pushpesh Pant, Indian food critic, historian and author Nagpur is also home to ultra-spicy Saoji cuisine, which has its own unique style of non-vegetarian cuisine that often features goat meat, fish, lentil dumplings, boiled rice and roti. "There is a great difference in the cuisines inhabiting this region ... Hindus aren't a monolith. Brahmins, Marathas and other castes, as well as Parasi, Muslims, Christians, Sindhis, refugee Punjabis and Anglo-Indians all have left their mark on food of this region," says Pant. In Mumbai, on the western coast, the food culture has long been shaped by industry and waves of immigration throughout the 20th century. "Bombay was once a city full of textile mills," says Pant. "It serves as home to India's film industry and the country's financial capital. As an important port, it continues to draw immigrants like a magnet." As a result, the city's cuisine is a "melting pot on full boil," says Pant. Related content India in 2 weeks? How first-timers can pull it off "Gujarati-Parsi, Goan and various strains and streams of South Indian foods intermingle here. The straightjacket of caste, orthodox prescriptions and prohibitions no longer fetter the young." He says a few of the must-try dishes around the city include sol kadi (a pink-hued coconut and kokum drink), fish Koliwada (spicy battered and fried fish), Kolhapuri mutton rassa (a highly aromatic mutton curry), puran poli (an Indian sweet flatbread) and jhunka bhakri (a chickpea flour porridge) -- to name a few. Elsewhere in the region, look for kombdi vade (chicken curry and deep-fried bread) from the Malvan region, tambda rassa and pandhra rassa (mutton cooked in two different kind of curries) from Kolhapur, sumai or pomfret fish curry and mud crabs -- many of which are often paired with thalipeeth (local flatbread) and kokum sharbat (a cooling fruit juice). Of course, the street foods of Mumbai are part of the experience. In particular, food experts recommend seeking out misal pav, vada pav and Bombay grilled chutney sandwiches. Goa Goa cuisine features an array of exotic spices, thanks to its role as an important trade city. Goa cuisine features an array of exotic spices, thanks to its role as an important trade city. INDRANIL MUKHERJEE/AFP/AFP/Getty Images Sitting on the western coast of India, Goa is a popular beach destination about an hour south via plane from Mumbai. Despite the proximity, the cuisine here is completely distinct, due in part to 400 years as a Portuguese colony and trade port. As a coastal state, the food in Goa is dominated by ingredients like seafood, rice, potatoes, chili, vinegar (via Portugal), tamarind, kokum (a variety of mangosteen), tirphal (a kind of Sichuan-stye numbing peppercorn), cashew and coconut. "The Portuguese were responsible for bringing chili peppers to the Goan coast, and today, the spice features prominently in the state's cuisine," says Karan Anand, head of relationships at Cox & Kings travel agency. "Sourness is another flavor that finds prominence, whether in the form of vinegar, kokum or tamarind." “Sourness is another flavor that finds prominence, whether in the form of vinegar, kokum or tamarind.” Karan Anand, Cox & Kings He says Goan food can broadly be divided into two types: Goan Hindu (Saraswat) and Goan Catholic. "Hindu dishes to try include humon-xit (curry and rice), kismur (a salad of sorts made using dried shrimp or fish, coconut and onions) and tondak (a stew made using lentils or grams)," says Anand. Meanwhile, must-try Catholic dishes are xacuti (a thick, coconut-heavy gravy with chicken or lamb), choris pao (local bread stuffed with the local pork sausage), sorpotel (a spicy pork dish) and bebinca (a multilayered pudding traditionally served at festivals like Christmas). In addition, local staples like Goan vindaloo, fish curry and sausage pao are not to be missed. Anand recommends getting your fill at restaurants like Mum's Kitchen or Peep Kitchen in Goa's capital city of Panaji. Southern India Home to the states of Andhra Pradesh, Karnataka, Kerala, Tamil Nadu and Telangana, Southern India's landscape and climate are dramatically different than the dry deserts of the north. Also known as Peninsular India, the south is hugged by the Arabian Sea to the west and the Bay of Bengal to the east, creating a predominately tropical climate that hosts humid temperatures and heavy monsoons. Related content Kerala's backwaters: See India at a relaxing pace Across the region, recurring ingredients include lentils, dried chilies, coconut, tamarind, plantains and ginger -- all ingredients that grow easily in the tropical climate. "The food in Southern India has earned fame across the world, particularly for delicious dishes like dosas, vada (savory fried snacks), idli (fluffy rice cakes) and uttapam (thick dosa-like pancakes) which are typically served with a coconut chutney and sambar (South Indian-style vegetable stew)," Sudip Misra, chef of Bengaluru Marriott Hotel Whitefield, tells CNN Travel. Though selecting a few dishes can't do justice to the region's diversity, Misra recommends bisibelebath (a rice and dal dish seasoned with curry and mustard leaves), chicken chettinad (yogurt-marinated chicken curry with coconut), mutton pepper fry and appam (pancakes made from fermented rice batter and coconut milk). There's also meen moilee (a coconut and fish curry dish) and the delectable neer dosa (lacy crêpes made with a rice batter). A man selling kebabs waits for customers by the side of a busy road in Bangalore, in the southern Karnataka state. A man selling kebabs waits for customers by the side of a busy road in Bangalore, in the southern Karnataka state. DIBYANGSHU SARKAR/AFP/Getty Images "You can expect robust flavors, since spices are used generously here," says Misra. "The region is known for its varied range of high-quality spices like cloves, cardamom, cinnamon, nutmeg and pepper. But the level of spice and method of cooking differs from each state." The cuisine also draws influence from Ayurvedic traditions -- an ancient system of Indian medicine. "Considered extremely healthy, South Indian food incorporates specific herbs and ingredients that are meant to be part of a holistic way to regain the mind and body's health and vitality," says Misra. When it comes to preparation methods, most dishes are cooked or steamed using very little oil, ensuring that they taste light and are easy to digest. Related content The lunar landscapes of India's Great Rann of Kutch A food tour of the region might take you to Udupi, in Karnataka, to sample breakfast staples like idli and dosas and over to Chennai, the capital of Tamil Nadu, to dig into famous Chettinad cuisine -- said to be one of the fieriest in all of India. Influenced by seafaring Southeast Asian traders and, later, British and French colonizers, the cuisine in Chennai includes spongy rice cakes, sambar, dosas, coconut chutney, mutton pallipalayam (a slow-cooked curry mixed with ginger, tomato, chili and coconut) and lots of rice. Misra also recommends a visit to Kozhikode, in Kerala, which known for its Malabar paratha (a flaky, layered flatbread), chatti pathiri (a pastry stuffed with nuts and raisins) and famous pazham pori (banana fritters). A former French settlement, Pondicherry is a paradise for fusion food, while Madurai, in Tamil Nadu serves the most mouth-watering lamb dishes. "Andhra Pradesh is known for its fiery food and, on the flip side, Pondicherry and Kerala serve up very subtle spices in their cuisine," says Misra. "The list is really endless, but you can be sure you will eat well in South India." This feature was originally published in 2018 and updated in September 2020. Paid Content Recommended by Portland shooting victim wasn't an agitator or radical, friend saysPortland shooting victim wasn't an agitator or radical, friend says U.S. Portland shooting victim wasn't an agitator or radical, friend says After being forcefully arrested, a Black jogger in San Antonio says he was 'guilty before proven innocent'After being forcefully arrested, a Black jogger in San Antonio says he was 'guilty before proven innocent' U.S. After being forcefully arrested, a Black jogger in San Antonio says he was 'guilty before proven innocent' A couple received a note shaming them for their unpainted house, but now hundreds have donated to help themA couple received a note shaming them for their unpainted house, but now hundreds have donated to help them U.S. A couple received a note shaming them for their unpainted house, but now hundreds have donated to help them Paid Content More from CNN Japanese company successfully tests a manned flying car for the… Flood waters reach the toes of China's famous giant Buddha statue 313 million-year-old fossil footprints at Grand Canyon are the… Paradise islands reopen only to visitors who've had Covid-19 Some of America's wildest places are in our backyard By More from CNN Misty Copeland offers a glimpse inside her elegant New York home Misty Copeland offers a glimpse… Celebrities gracing the 'green' carpet show Oscar-worthy sustainable dresses can still be glamorous Celebrities gracing the… Huge empty 'ghost' cruise ships lure tourists Huge empty 'ghost' cruise… This mini Buckingham Palace is now taking reservationsThis mini Buckingham Palace is now taking reservations This mini Buckingham… Why new hotels are opening amid the pandemic Why new hotels are opening… A year of the world's Best Beaches There's a perfect beach for every week of the year. Join us on a 12-month journey to see them all Go to the best beaches More from CNN Left behind because of Covid-19, a tiny dog travels 10,000 miles to rejoin her owners Left behind because of Covid-19, a tiny dog travels 10,000 miles to rejoin her owners Baby boom for Uganda's endangered mountain gorillas Baby boom for Uganda's endangered mountain… Ice, ice... maybe. Austrian man in freezing 2.5-hour record attempt Ice, ice... maybe. Austrian man in freezing 2.5-hour record… Thailand managed 101 days without local coronavirus cases. Will it open borders soon? Thailand managed 101 days without local… This young fashion brand is tackling two of fashion's biggest issues head-on This young fashion brand is tackling two of fashion's…  Here's the problem for Donald Trump with the Atlantic story Donald Trump accidentally revealed something very important in a… Comac C919: China takes on Airbus and Boeing Recommended by Search CNN... Search US Crime + Justice Energy + Environment Extreme Weather Space + Science World Africa Americas Asia Australia China Europe India Middle East United Kingdom Politics 45 Congress SCOTUS Facts First 2020 Candidates Business Markets Tech Media Success Perspectives Videos Opinion Political Op-Eds Social Commentary Health Food Fitness Wellness Parenting Vital Signs Entertainment Stars Screen Binge Culture Media Tech Innovate Gadget Mission: Ahead Upstarts Work Transformed Innovative Cities Style Arts Design Fashion Architecture Luxury Beauty Video Travel Destinations Food & Drink News Stay Videos Sports Pro Football College Football Basketball Baseball Soccer Olympics Videos Live TV Digital Studios CNN Films HLN TV Schedule TV Shows A-Z CNNVR Coupons CNN Underscored Explore Wellness Gadgets Lifestyle CNN Store More Photos Longform Investigations CNN Profiles CNN Leadership CNN Newsletters Work for CNN FOLLOW CNN Terms of Use Privacy Policy Accessibility & CC AdChoices About Us CNN Studio Tours Modern Slavery Act Statement Advertise with us CNN Store Newsletters Transcripts License Footage CNN Newsource Sitemap © 2020 Cable News Network.A Warner Media Company.All Rights Reserved. CNN Sans ™ & © 2016 Cable News Network.


--- layout: page title: Who we are header: Pages group: navigation share_title: "200 Nights of Freedom: Who We Are" order: 2 ---
200 Nights of Freedom is being organized by March On Milwaukee 50th, a diverse group of volunteers from a broad range of communities. This includes, but is not limited to NAACP Youth Commandos and Council Members, activists, academics, educators, artists, professionals, students and more.
Our first meeting took place in February 2016 and we formed our Coordinating Committee in summer of 2016. Currently, the work needed to create 200 Nights of Freedom is in being done by volunteer committees, which include Communication, Community, Digital, Education, Event, Faith, Finance and Youth.
If you are interested in joining our team, we’d be more than happy to have you. Click here to volunteer.


Timestamp Selector Task
The timestamp selector task displays an Options tab containing a combo box. The choices in the combobox are:
- Specify timestamp - an input field prompting for a timestamp appears
- Current date and time
- Current date and time previous year
- Current date and time next year
- Current hour
- Next hour
- Previous hour
- Current minute
- Next minute
- Previous minute
- N minutes ago - an input field prompts for an integer
- N minutes from now - an input field prompts for an integer
- N hours ago - an input field prompts for an integer
- N hours from now - an input field prompts for an integer
When a selection made and values are specified in any dependent controls the following macro variables are created and set as follows:
- timestamp - the timestamp specified or a function that calculates the value of the selection, formatted as DDMMMYYYY HH:MM:SS
- timestamp_rel - a code that represents the selection made
- timestamp_label - the common name of the selection
An example of the code generated by this task when "Current date and time" is selected:
%global timestamp;
%global timestamp_rel;
%global timestamp_label;
%let timestamp = %sysfunc(datetime(), DATETIME20.);
%let timestamp = %sysfunc(catx(%str( ), %substr(×tamp, 1, 9),
%substr(×tamp, 11, 8)));
%let timestamp_label = Current date and time;
%let timestamp_rel = T0m;
%put _GLOBAL_;
The macro variable values set by this example code are as follows if it is March 22, 2017 at 11:27:27 AM.
GLOBAL TIMESTAMP 22MAR2017 11:33:03
GLOBAL TIMESTAMP_LABEL Current date and time
GLOBAL TIMESTAMP_REL T0m


No blog entries found. Add some to your blogfeed or select a feed in the inspector.
No blog entries found.


--- layout: newsstory title: SAFE IN STYLE match: Yeltz 4 Gloucester 2 and Burton 2 Yeltz 4 ---
The mighty Yeltz finally ensured safety over the Bank Holiday weekend with two brilliant 4-2 victories .
Saturday brought struggling Gloucester to The Grove desperately needing 3 points to have any chance of staying out of the relegation spots. However a powerful attacking performance from Halesowen meant they were never likely to achieve their aim, and goals from Reed, Clinton, an own goal and a wonder goal from Forrest Gump confirmed we were definitely going to be in the Premier Division next season.
Monday then brought what's probably our best result of the season with a fantastic 4-2 win away to second-placed Burton . Two more from big Clinton , another from Birchy and a late one from young Aldridge clinched another excellent result.
Two more games left now. Saturday brings relegated Rothwell to The Grove for our last home game of the season. Good news for all you youngsters out there is that's it's free to get in for under 16's . Bring all your mates down and show them how brilliant we are now :-)
Burton Albion: Goodwin, Davies (Starbuck 59), Henshaw, Lyons (Garner 72), Blount, Glasser, Stride, Anderson, Moore, Clough, Holmes. Subs: Garner, Starbuck (Forsyth 60), Forsyth.
Halesowen Town: McDonnell, Brown, Owen, Lloyd, Smith, Gardiner, Birch, Aldridge, Thomas, Cartwright, Reed. Subs: Cooper, Gennard, Collins.
Booked: Cartwright, Lloyd, Brown Referee: S. Bratt (Walsall) Attendance: 957
Happy Halesowen bagged their eighth Easter goal to extend their remarkable end-of-season flourish with a comprehensive victory at second placed Burton.
The Yeltz signalled their intentions after 11 minutes when experienced play-maker Paul Birch netted from a tight angle after Nick Goodwin parried Ian Reed's volley, but the goal was disallowed for offside. Burton gradually came into the game and the alert Danny McDonnell made two fine blocking saves from Christian Moore before Halesowen took charge to build a three goal lead.
In the 30th minute, Birch played a lovely ball for Ian Aldridge to lob the Burton keeper, but the defensive clearance fell for Clinton Thomas to cleverly rifle home from 10 yards. Thomas and Reed then went close as the visitors turned up the pressure with Aldridge causing confusion for the Burton defence. Halesowen extended their lead three minutes before the break with a wicked 20 yard Birch volley following Reed's corner.
The Yeltz should have gone further ahead in the 58th minute when Reed's free kick struck the arm of Darren Stride and the referee awarded a penalty, but Reed's tame spot-kick was easily saved by Goodwin. With Burton struggling to make any impression, it was no surprise when Thomas powered in his second goal in the 73rd minute from another precise midfield pass from Birch.
Halesowen almost unwound their good work when a hesitant defence watched a David Holmes left wing cross sail directly into the net in the 77th. minute and just two minutes later player manager Nigel Clough drilled home from the edge of the area, watched from the stands by famous father Brian.
Agile Aldridge made the points safe for Halesowen in the 88th minute when he nipped in between the defence and goalkeeper Goodwin to net with a neat chip.