Last updated: 2019-12-13
Checks: 7 0
Knit directory: PMD_project_workflowr/analysis/
This reproducible R Markdown analysis was created with workflowr (version 1.5.0). The Checks tab describes the reproducibility checks that were applied when the results were created. The Past versions tab lists the development history.
Great! Since the R Markdown file has been committed to the Git repository, you know the exact version of the code that produced these results.
Great job! The global environment was empty. Objects defined in the global environment can affect the analysis in your R Markdown file in unknown ways. For reproduciblity it’s best to always run the code in an empty environment.
The command set.seed(20191128)
was run prior to running the code in the R Markdown file. Setting a seed ensures that any results that rely on randomness, e.g. subsampling or permutations, are reproducible.
Great job! Recording the operating system, R version, and package versions is critical for reproducibility.
Nice! There were no cached chunks for this analysis, so you can be confident that you successfully produced the results during this run.
Great job! Using relative paths to the files within your workflowr project makes it easier to run your code on other machines.
Great! You are using Git for version control. Tracking code development and connecting the code version to the results is critical for reproducibility. The version displayed above was the version of the Git repository at the time these results were generated.
Note that you need to be careful to ensure that all relevant files for the analysis have been committed to Git prior to generating the results (you can use wflow_publish
or wflow_git_commit
). workflowr only checks the R Markdown file, but you know if there are other scripts or data files that it depends on. Below is the status of the Git repository when the results were generated:
Ignored files:
Ignored: .Rproj.user/
Untracked files:
Untracked: .gitignore
Untracked: code/
Untracked: data/Input/TFs/
Untracked: data/Input/wgEncodeRegTfbsClusteredV3.bed.gz
Untracked: data/Output/
Note that any generated files, e.g. HTML, png, CSS, etc., are not included in this status report because it is ok for generated content to have uncommitted changes.
These are the previous versions of the R Markdown and HTML files. If you’ve configured a remote Git repository (see ?wflow_git_remote
), click on the hyperlinks in the table below to view them.
| File | Version | Author | Date | Message |
|---|---|---|---|---|
| Rmd | 19ceff7 | GitHub | 2019-12-13 | Add files via upload |
In this section I am adding chromatin annotations to the regions using publicly available ChromHMM data. This data contains chromatin annotations for both normal and cancer prostate cell lines. The interest here is that the chromatin states and other epigenetic marks present within PMD regions might help explain why the PMD is there in the first place or how PMDs regulate gene expression within the regions(?). Furthermore, finding some pattern in the epigenetic marks present in PMDs might help aid in their use as potential prognostic markers.
ChromHMM data reference: https://www.ncbi.nlm.nih.gov/pubmed/24916973 General ChromHMM info: http://compbio.mit.edu/ChromHMM/ And some more: https://www.nature.com/articles/nprot.2017.124
library(rtracklayer)
library(GenomicRanges)
library(splicejam)
library(dplyr)
library(ggplot2)
load(file = '../data/Output/df_pairs_cor_methsd')
I am starting here with loading in the BED files containing the ChromHMM annotations for two prostate cell lines - a prostate cancer cell line (PC3) and a normal prostate cell line (PrEC).
PC3:https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3426349/
PrEC: https://www.ncbi.nlm.nih.gov/pubmed/16618209
Annoyingly, the files are not in a nice format like the original regions BED file, and both are formatted differently. It is therefore necessary to add chromosome names and column names to the data, which can then be converted into GRanges and added to the regions data.
#Starting with PC3 (cancer cell line)
PC3_chrom_annots <- import.bed("../data/Input/GSE57498_PC3_ChromHMM.bed")
df.PC3.annots <- data.frame(PC3_chrom_annots$thick, PC3_chrom_annots$name)
df.PC3.annots$chr <- NA
df.PC3.annots <- df.PC3.annots[, c('chr', 'start', 'end', 'width', 'PC3_chrom_annots.name')]
#To find where the ends/beginnings of the chromosomes are:
subset(df.PC3.annots, df.PC3.annots$start == 1)
chr start end width PC3_chrom_annots.name
1 NA 1 81600 81600 Heterochromatin
15154 NA 1<PHONE_NUMBER>00 Heterochromatin
33168 NA 1 73800 73800 Heterochromatin
49148 NA 1 19172800 19172800 Heterochromatin
57991 NA 1 19003600 19003600 Heterochromatin
67608 NA 1 20000800 20000800 Heterochromatin
78864 NA 1 60400 60400 Heterochromatin
89643 NA 1 13400 13400 Heterochromatin
105431 NA 1 11600 11600 Heterochromatin
111719 NA 1<PHONE_NUMBER>00 Heterochromatin
124821 NA 1 10000 10000 Heterochromatin
155715 NA 1<PHONE_NUMBER>00 Heterochromatin
166480 NA 1 9437200 9437200 Heterochromatin
170239 NA 1 16166400 16166400 Heterochromatin
176574 NA 1 11400 11400 Heterochromatin
201576 NA 1<PHONE_NUMBER>00 Heterochromatin
220923 NA 1 10200 10200 Heterochromatin
234294 NA 1 10200 10200 Heterochromatin
250944 NA 1<PHONE_NUMBER>00 Heterochromatin
267456 NA 1 30000 30000 Heterochromatin
284959 NA 1<PHONE_NUMBER>00 Heterochromatin
299670 NA 1 11200 11200 Heterochromatin
312444 NA 1 400 400 CTCF+Promoter
312467 NA 1 2721000 2721000 Heterochromatin
320785 NA 1 9909200 9909200 Heterochromatin
#Adding names to each of the regions:
df.PC3.annots$chr <- c(rep('chr10', 15153), rep('chr11', 18014), rep('chr12', 15980), rep('chr13', 8843), rep('chr14', 9617),
rep('chr15', 11256), rep('chr16', 10779), rep('chr17', 15788), rep('chr18', 6288), rep('chr19', 13102),
rep('chr1', 30894), rep('chr20', 10765), rep('chr21', 3759), rep('chr22', 6335), rep('chr2', 25002),
rep('chr3', 19347), rep('chr4', 13371), rep('chr5', 16650), rep('chr6', 16512), rep('chr7', 17503),
rep('chr8', 14711), rep('chr9', 12774), rep('chrM', 23), rep('chrX', 8318), rep('chrY', 152))
#Making a GRanges object from the above data frame
PC3.annots.gr <- makeGRangesFromDataFrame(df.PC3.annots,
keep.extra.columns = TRUE,
seqnames.field = "chr",
start.field = "start",
end.field = "end")
#Now to do the same with the PrEC normal prostate cell line
PrEC_chrom_annots <- import.bed("../data/Input/GSE57498_PrEC_ChromHMM.bed")
df.PrEC.annots <- data.frame(PrEC_chrom_annots@ranges@start, PrEC_chrom_annots@ranges@width, PrEC_chrom_annots$name)
#Ok annoyingly the PrEC data is not in the same format as the PC3 data so I will have to re-organize and clean it up a bit
df.PrEC.annots$chr <- NA
df.PrEC.annots$end <- NA
df.PrEC.annots <- df.PrEC.annots[, c('chr', 'PrEC_chrom_annots.ranges.start', 'end', 'PrEC_chrom_annots.ranges.width', 'PrEC_chrom_annots.name')]
#df.PrEC.annots$PrEC_chrom_annots.type <- gsub('hg19_custom_', '', df.PrEC.annots$PrEC_chrom_annots.type)
df.PrEC.annots$end <- df.PrEC.annots$PrEC_chrom_annots.ranges.start + df.PrEC.annots$PrEC_chrom_annots.ranges.width
names(df.PrEC.annots)[2] <- 'start'
names(df.PrEC.annots)[4] <- 'width'
names(df.PrEC.annots)[5] <- 'annots.type'
#To find where the ends/beginnings of the chromosomes are:
subset(df.PrEC.annots, df.PrEC.annots$PrEC_chrom_annots.ranges.start == 1)
[1] chr start end width annots.type
<0 rows> (or 0-length row.names)
#Adding names to each of the regions:
df.PrEC.annots$chr <- c(rep('chr10', 17898), rep('chr11', 19786), rep('chr12', 19065), rep('chr13', 9817), rep('chr14', 12644),
rep('chr15', 12851), rep('chr16', 13171), rep('chr17', 18042), rep('chr18', 8637), rep('chr19', 13516),
rep('chr1', 37335), rep('chr20', 10964), rep('chr21', 5004), rep('chr22', 8100), rep('chr2', 31022),
rep('chr3', 24901), rep('chr4', 18881), rep('chr5', 20390), rep('chr6', 22454), rep('chr7', 19577),
rep('chr8', 17142), rep('chr9', 16559), rep('chrM', 23), rep('chrX', 7809), rep('chrY', 707))
#Making a GRanges object from the above data frame
PrEC.annots.gr <- makeGRangesFromDataFrame(df.PrEC.annots,
keep.extra.columns = TRUE,
seqnames.field = "chr",
start.field = "start",
end.field = "end")
rm(PC3_chrom_annots, PrEC_chrom_annots)
Once the data has been loaded and formatted, the “df.pairs.FINAL” object can be annotated with it using splicejam.
Splicejam: https://rdrr.io/github/jmw86069/splicejam/
#Getting the chromatin regions onto the df.region.pairs.FINAL
pairs.FINAL.gr <- makeGRangesFromDataFrame(df.pairs.FINAL,
keep.extra.columns = TRUE,
ignore.strand = TRUE,
seqnames.field = 'seqnames',
start.field = 'start',
end.field = 'end')
pairs.FINAL.gr <- splicejam::annotateGRfromGR(GR1 = pairs.FINAL.gr,
GR2 = PC3.annots.gr)
pairs.FINAL.gr <- splicejam::annotateGRfromGR(GR1 = pairs.FINAL.gr,
GR2 = PrEC.annots.gr)
df.pairs.FINAL <- as.data.frame(pairs.FINAL.gr)
names(df.pairs.FINAL)[16] <- 'PC3.annots'
names(df.pairs.FINAL)[17] <- 'PrEC.annots'
#Last step is to get rid of overlapping regions
chrom.regions <- c('CTCF', 'CTCF+Enhancer', 'CTCF+Promoter', 'Enhancer', 'Heterochromatin', 'Poised_Promoter', 'Promoter', 'Repressed', 'Transcribed')
df.pairs.FINAL <- df.pairs.FINAL[df.pairs.FINAL$PC3.annots %in% chrom.regions & df.pairs.FINAL$PrEC.annots %in% chrom.regions, ]
df.pairs.FINAL <- df.pairs.FINAL[ , c(1, 2, 3, 6:17)]
pairs.FINAL.gr <- makeGRangesFromDataFrame(df.pairs.FINAL,
keep.extra.columns = TRUE,
ignore.strand = TRUE,
seqnames.field = 'seqnames',
start.field = 'start',
end.field = 'end')
rm(chrom.regions)
Now that the PC3 and PrEC annotations have been added to df.pairs.FINAL, I can test for some association between the correlation coefficients and the chromatin annotation present in a given region using an ANOVA(?)
PMDs <- dplyr::filter(df.pairs.FINAL, region=='commonPMD')
HMDs <- dplyr::filter(df.pairs.FINAL, region=='commonHMD')
Neither <- dplyr::filter(df.pairs.FINAL, region=='neither')
#The next three lines are just to get percentages of each annotation within each region, I'll look more at this enrichment in the next code chunk
PMD.pc3.annots <- table(PMDs$PC3.annots) / nrow(PMDs) * 100
HMD.pc3.annots <- table(HMDs$PC3.annots) / nrow(HMDs) * 100
Neither.pc3.annots <- table(Neither$PC3.annots) / nrow(Neither) * 100
#Unrelated thought:
#CTCF are located at the border of lamina-associated domains, makes sense then that they are enriched in PMDs
res.aov <- aov(r ~ PC3.annots, data = df.pairs.FINAL)
summary(res.aov)
Df Sum Sq Mean Sq F value Pr(>F)
PC3.annots 8 11.8 1.4766 73.06 <2e-16 ***
Residuals 95767 1935.7 0.0202
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
TukeyHSD(res.aov)
Tukey multiple comparisons of means
95% family-wise confidence level
Fit: aov(formula = r ~ PC3.annots, data = df.pairs.FINAL)
$PC3.annots
diff lwr upr
CTCF+Enhancer-CTCF 0.0204126160 0.003734643 0.037090589
CTCF+Promoter-CTCF 0.0142634154 0.003308864 0.025217967
Enhancer-CTCF -0.0427596023 -0.055414700 -0.030104504
Heterochromatin-CTCF 0.0013485724 -0.008395186 0.011092331
Poised_Promoter-CTCF 0.0175555288 0.005701870 0.029409188
Promoter-CTCF 0.0133321154 0.003780369 0.022883861
Repressed-CTCF 0.0080313582 -0.004848462 0.020911179
Transcribed-CTCF -0.0163080133 -0.029032460 -0.003583567
CTCF+Promoter-CTCF+Enhancer -0.0061492005 -0.021099705 0.008801304
Enhancer-CTCF+Enhancer -0.0631722182 -0.079410041 -0.046934395
Heterochromatin-CTCF+Enhancer -0.0190640435 -0.033151493 -0.004976594
Poised_Promoter-CTCF+Enhancer -0.0028570872 -0.018478375 0.012764200
Promoter-CTCF+Enhancer -0.0070805006 -0.021035831 0.006874830
Repressed-CTCF+Enhancer -0.0123812577 -0.028794824 0.004032309
Transcribed-CTCF+Enhancer -0.0367206292 -0.053012558 -0.020428701
Enhancer-CTCF+Promoter -0.0570230177 -0.067295035 -0.046751001
Heterochromatin-CTCF+Promoter -0.0129148430 -0.019263359 -0.006566327
Poised_Promoter-CTCF+Promoter 0.0032921133 -0.005974604 0.012558831
Promoter-CTCF+Promoter -0.0009313001 -0.006980984 0.005118384
Repressed-CTCF+Promoter -0.0062320572 -0.016779692 0.004315577
Transcribed-CTCF+Promoter -0.0305714287 -0.040928762 -0.020214095
Heterochromatin-Enhancer 0.0441081747 0.035138618 0.053077732
Poised_Promoter-Enhancer 0.0603151310 0.049089208 0.071541054
Promoter-Enhancer 0.0560917176 0.047331125 0.064852310
Repressed-Enhancer 0.0507909605 0.038486413 0.063095508
Transcribed-Enhancer 0.0264515890 0.014309774 0.038593404
Poised_Promoter-Heterochromatin 0.0162069563 0.008408836 0.024005076
Promoter-Heterochromatin 0.0119835429 0.008586883 0.015380203
Repressed-Heterochromatin 0.0066827858 -0.002601137 0.015966708
Transcribed-Heterochromatin -0.0176565857 -0.026723723 -0.008589448
Promoter-Poised_Promoter -0.0042234134 -0.011780245 0.003333418
Repressed-Poised_Promoter -0.0095241705 -0.021002830 0.001954489
Transcribed-Poised_Promoter -0.0338635420 -0.045167585 -0.022559499
Repressed-Promoter -0.0053007571 -0.014382951 0.003781437
Transcribed-Promoter -0.0296401286 -0.038500603 -0.020779654
Transcribed-Repressed -0.0243393715 -0.036715232 -0.011963511
p adj
CTCF+Enhancer-CTCF 0.0046427
CTCF+Promoter-CTCF 0.0017663
Enhancer-CTCF 0.0000000
Heterochromatin-CTCF 0.9999694
Poised_Promoter-CTCF 0.0001508
Promoter-CTCF 0.0005077
Repressed-CTCF 0.5898154
Transcribed-CTCF 0.0022888
CTCF+Promoter-CTCF+Enhancer 0.9385061
Enhancer-CTCF+Enhancer 0.0000000
Heterochromatin-CTCF+Enhancer 0.0009042
Poised_Promoter-CTCF+Enhancer 0.9997451
Promoter-CTCF+Enhancer 0.8193546
Repressed-CTCF+Enhancer 0.3180881
Transcribed-CTCF+Enhancer 0.0000000
Enhancer-CTCF+Promoter 0.0000000
Heterochromatin-CTCF+Promoter 0.0000000
Poised_Promoter-CTCF+Promoter 0.9741254
Promoter-CTCF+Promoter 0.9999308
Repressed-CTCF+Promoter 0.6602818
Transcribed-CTCF+Promoter 0.0000000
Heterochromatin-Enhancer 0.0000000
Poised_Promoter-Enhancer 0.0000000
Promoter-Enhancer 0.0000000
Repressed-Enhancer 0.0000000
Transcribed-Enhancer 0.0000000
Poised_Promoter-Heterochromatin 0.0000000
Promoter-Heterochromatin 0.0000000
Repressed-Heterochromatin 0.3841904
Transcribed-Heterochromatin 0.0000001
Promoter-Poised_Promoter 0.7257850
Repressed-Poised_Promoter 0.1976933
Transcribed-Poised_Promoter 0.0000000
Repressed-Promoter 0.6754165
Transcribed-Promoter 0.0000000
Transcribed-Repressed 0.0000000
res.aov2 <- aov(r ~ PC3.annots + region, data = df.pairs.FINAL)
summary(res.aov2)
Df Sum Sq Mean Sq F value Pr(>F)
PC3.annots 8 11.8 1.4766 73.19 <2e-16 ***
region 2 3.7 1.8668 92.53 <2e-16 ***
Residuals 95765 1932.0 0.0202
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#Ok from the ANOVA done above it looks like region and annotation do have some influence on gene expression/promoter methylation correlation
So based on the ANOVA above it looks like the region and annotation do influence correlation coefficient to a certain extent.
Now I am looking at the enrichment of certain annotations within certain regions.
summary.regions <- group_by(df.pairs.FINAL, PC3.annots, region) %>%
dplyr::summarise(
count = n(),
mean = mean(r, na.rm = TRUE),
sd = sd(r, na.rm = TRUE))
sum(summary.regions[summary.regions$region=='commonHMD',]$count)
[1] 46854
sum(summary.regions[summary.regions$region=='commonPMD',]$count)
[1] 14105
sum(summary.regions[summary.regions$region=='neither',]$count)
[1] 34817
#The three numbers that are repeated below are gotten from the above 3 expressions, they're the total number of all annotations in each region
summary.regions$total <- rep(c(46854, 14105, 34817), 9)
summary.regions$percent <- summary.regions$count / summary.regions$total * 100
ggplot(summary.regions, aes(fill=region, y=percent, x=PC3.annots)) +
geom_bar(position="dodge", stat="identity") +
ggtitle("Chromatin annotations in PMDs, HMDs, and neither regions for PC3 cells") +
theme(legend.position="top") +
labs(x='Annotation', y='Percent total annotations', fill='Region') +
theme(legend.background = element_rect(fill="lightblue", size=0.5, linetype="solid", colour ="darkblue")) +
coord_flip()
So as expected PMDs are really enriched in heterochromatic regions but also surprisingly slightly enriched in CTCF binding sites. I’ll look more at this later when I annotate with TF binding sites
CTCFs: https://www.nature.com/articles/emm201533
CTCFs & prostate cancer: https://www.nature.com/articles/s41467-019-12079-8
More: https://www.spandidos-publications.com/mmr/18/2/2245
Heterochromatin enrichment in PMDs: https://www.ncbi.nlm.nih.gov/pmc/articles/PMC6161375/
https://journals.plos.org/plosgenetics/article?id=10.1371/journal.pgen.1004143
I am now performing the same enrichment analysis on the PrEC cell line.
#Ok from the above figure it confirms what I've been seeing, PMDs are enriched in heterochromatin and CTCFs
df.sig.corr <- subset(df.pairs.FINAL, p.value < 0.05 & r < (-0.75))
#Doing the same in PrEC cells
PMD.prec.annots <- table(PMDs$PrEC.annots) / nrow(PMDs) * 100
HMD.prec.annots <- table(HMDs$PrEC.annots) / nrow(HMDs) * 100
Neither.prec.annots <- table(Neither$PrEC.annots) / nrow(Neither) * 100
summary.regions2 <- group_by(df.pairs.FINAL, PrEC.annots, region) %>%
dplyr::summarise(
count = n(),
mean = mean(r, na.rm = TRUE),
sd = sd(r, na.rm = TRUE))
sum(summary.regions2[summary.regions2$region=='commonHMD',]$count)
[1] 46854
sum(summary.regions2[summary.regions2$region=='commonPMD',]$count)
[1] 14105
sum(summary.regions2[summary.regions2$region=='neither',]$count)
[1] 34817
#See comment in last code chunk, same thing here.
summary.regions2$total <- rep(c(46854, 14105, 34817), 9)
summary.regions2$percent <- summary.regions2$count / summary.regions2$total * 100
ggplot(summary.regions2, aes(fill=region, y=percent, x=PrEC.annots)) +
geom_bar(position="dodge", stat="identity") +
ggtitle("Chromatin annotations in PMDs, HMDs, and neither regions for PrEC cells") +
theme(legend.position="top") +
labs(x='Annotation', y='Percent total annotations', fill='Region') +
theme(legend.background = element_rect(fill="lightblue", size=0.5, linetype="solid", colour ="darkblue")) +
coord_flip()
#From comparing the PC3 and PrEC enrichment graphs, it maybe seems like there is a decrease in repressed annotations in PMDs from the normal cell line (PrEC) to PC3
Interestingly it looks like PrEC cells show a similar pattern as the PC3 cells. I’m not sure if this is expected but it doesn’t really look like much changes. It does seem like there are fewer poised promoter and repressed regions however in PMDs in the PC3 cell line when compared with PrEC cells.
save(df.pairs.FINAL, file ='../data/Output/df_pairs_cor_methsd_chromhmm')
save(pairs.FINAL.gr, file ='../data/Output/GR_pairs_cor_methsd_chromhmm')
sessionInfo()
R version 3.5.2 (2018-12-20)
Platform: x86_64-redhat-linux-gnu (64-bit)
Running under: CentOS Linux 7 (Core)
Matrix products: default
BLAS/LAPACK: /usr/lib64/R/lib/libRblas.so
locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
[3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8
[5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8
[7] LC_PAPER=en_US.UTF-8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] parallel stats4 stats graphics grDevices utils datasets
[8] methods base
other attached packages:
[1] ggplot2_3.2.1 dplyr_0.8.3 splicejam_<IP_ADDRESS>0
[4] rtracklayer_1.42.2 GenomicRanges_1.34.0 GenomeInfoDb_1.18.2
[7] IRanges_2.16.0 S4Vectors_0.20.1 BiocGenerics_0.28.0
loaded via a namespace (and not attached):
[1] Biobase_2.42.0 httr_1.4.1
[3] tidyr_1.0.0 jsonlite_1.6
[5] viridisLite_0.3.0 shiny_1.4.0
[7] assertthat_0.2.1 GenomeInfoDbData_1.2.0
[9] Rsamtools_1.34.1 yaml_2.2.0
[11] pillar_1.4.2 backports_1.1.5
[13] lattice_0.20-38 glue_1.3.1
[15] digest_0.6.22 promises_1.1.0
[17] XVector_0.22.0 colorspace_1.4-2
[19] htmltools_0.4.0 httpuv_1.5.2
[21] Matrix_1.2-15 XML_3.99-0
[23] pkgconfig_2.0.3 jamba_<IP_ADDRESS>0
[25] zlibbioc_1.28.0 purrr_0.3.3
[27] xtable_1.8-5 scales_1.0.0
[29] whisker_0.4 later_1.0.0
[31] BiocParallel_1.16.6 git2r_0.26.1
[33] tibble_2.1.3 withr_2.1.2
[35] SummarizedExperiment_1.12.0 lazyeval_0.2.2
[37] magrittr_1.5 crayon_1.3.4
[39] mime_0.7.1 evaluate_0.14
[41] fs_1.3.1 shinydashboard_0.7.1
[43] tools_3.5.2 data.table_1.12.6
[45] lifecycle_0.1.0 matrixStats_0.55.0
[47] stringr_1.4.0 plotly_4.9.0
[49] munsell_0.5.0 DelayedArray_0.8.0
[51] Biostrings_2.50.2 compiler_3.5.2
[53] rlang_0.4.0 grid_3.5.2
[55] RCurl_1.96-0 shinydashboardPlus_<IP_ADDRESS>00
[57] htmlwidgets_1.5.1 labeling_0.3
[59] shinyWidgets_0.4.9 bitops_1.0-6
[61] rmarkdown_1.16 gtable_0.3.0
[63] R6_2.4.0 GenomicAlignments_1.18.1
[65] knitr_1.25 fastmap_1.0.1
[67] zeallot_0.1.0 workflowr_1.5.0
[69] rprojroot_1.3-2 stringi_1.4.3
[71] Rcpp_1.0.2 vctrs_0.2.0
[73] tidyselect_0.2.5 xfun_0.10


[§98-3] Applicability. This chapter applies to all legal material in an electronic record that is designated as official under section 98-4 and first published electronically on or after [July 1, 2013]. [L 2013, c 11, pt of §1]


G-Dragon's PEACEMINUSONE x Nike collab shoes resell for over $8K
by germainejG-Dragon's 'PEACEMINUSONE' and Nike collaboration shoes have resold for 10 million Won ($8,570.90 USD).
Earlier this month, G-Dragon and Nike released limited edition 'Air Force 1 Para-Noise' collaboration sneakers. On release, the sneakers were sold at 219,000 Won ($187.74 USD), but collectors and sneaker-heads bought the 818 pairs, which were only available to winners of the 'Shock Draw' raffle. It's reported a huge crowd lined up at the Nike Store in Hongdae, Soul just to enter the raffle and get a chance to buy a pair of 'Air Force 1 Para-Noise' sneakers.
The sneakers are now being resold at around 10 million Won ($8,570.90 USD), but they'll be available to buy globally on November 23.


business cards r dead!
just
XMARK IT!
GENERATE
XMARK
Android APP
EDIT
EXPORT
⬢
⬢
⬢
⬢
⬢
⬢
⬢
⬢
⬢
⬢
⬢
⬢
⬢
⬢
⬢
⬢
⬢
⬢
⬢
⬢
⬢
⬢
⬢
⬢
⬢
⬢
⬢
⬢
⬢
⬢
⬢
⬢
⬢
⬢
⬢
⬢
⬢
⬢
⬢
⬢
⬢
⬢
⬢
⬢
⬢
⬢
⬢
⬢
⬢
⬢
⬢
⬢
⬢
⬢
⬢
⬢
⬢
⬢


JavaScript is disabled on your browser.
Skip navigation links
Package
Class
Tree
Deprecated
Index
Help
Prev
Next
Frames
No Frames
All Classes
A
F
S
A
assembleFile(Path, Path, boolean)
- Static method in class se.codeslasher.io.
FileAssembler
Assembles a file from a directory.
assembleFile(List<Path>, Path, boolean)
- Static method in class se.codeslasher.io.
FileAssembler
Assembles a file from a List of files (Path) in the order that the List has them in
F
FileAssembler
- Class in
se.codeslasher.io
Assembles files from a List of sources (Path)
FileAssembler()
- Constructor for class se.codeslasher.io.
FileAssembler
FileSplitter
- Class in
se.codeslasher.io
Splits a file into smaller files.
FileSplitter()
- Constructor for class se.codeslasher.io.
FileSplitter
S
se.codeslasher.io
- package se.codeslasher.io
splitFileByParts(Path, Path, int, String, boolean)
- Static method in class se.codeslasher.io.
FileSplitter
Splits a file into smaller parts based on number of parts and optionally deletes the source file after it's finished.
splitFileBySize(Path, Path, long, String, boolean)
- Static method in class se.codeslasher.io.
FileSplitter
Splits a file into smaller parts based on size and optionally deletes the source file after it's finished.
A
F
S
Skip navigation links
Package
Class
Tree
Deprecated
Index
Help
Prev
Next
Frames
No Frames
All Classes


Getting started with WXT
You will find a reference to some sites that
describes (some of) the potential of WXT. You have hopefully downloaded and unzipped
the catalog introdemos. All the material referenced from this page is
contained in this catalog.
Each of the sites are completely selfcontained within the catalog with their name.
The demosites are:
- demo A
- A minimalistic site that introduce the basic mechanisms.
demo A is reflective in the sense that its content is aimed at describing itself.
Go to demo A
-
- demo B
- Built on demo A and introduce efficient use of fragments and multiple templates.
demo B is also reflective in the sense that its content is aimed at describing itself.
Go to demo B
- demo C
- Built on demo B and introduce efficient use of images and references.
demo C introduce Eurpean soccer teams as content.
Go to demo C


Every month of your pregnancy, you'll get a carefully selected box of goodies to nuture you.
We curate and select items based on who you are and what you need. Our focus is on your wellness and nutrition during your pregnancy.
Our subscription is flexible, so you can join us at any stage. Gift a full nine month subscription to a friend or join us from month two or three or six - the choice is yours.
+
+


Get the recently active camera devices id.
Example
try{
const activeCamera = stream.getActiveCamera();
console.log(activeCamera);
} catch (error) {
console.log(error);
}
''
: The video flag is false
in media constraints.'default'
: No camera device id is passed to startVideo
and it will use system default camera.string
: Recently active camera devices id.Get the active device id of microphone.
device id
Get the active device of speaker.
device id
Get the recently active video id.
Example
try{
const activeVideoId = stream.getActiveVideoId();
console.log(activeVideoId);
} catch (error) {
console.log(error);
}
0
: No video is active or the video flag is false
in media constraints.number
: Id of current active video.Get the current camera devices list.
Note
Example
try{
const currentCameraDevicesList = stream.getCameraList();
console.log(currentCameraDevicesList);
} catch (error) {
console.log(error);
}
[]
: The video flag is false
in media constraints.Array<CameraDevice>
: A CameraDevice interface has following property:label: string
: The label of camera device.deviceId: string
: The string of camera device.Get the available microphones.
Get the dimension of received video.
Get the available speakers.
Whether the user is muted.
Default undefined
boolean
Get the isCameraTaken flag status.
Example
try{
const isCameraTaken = stream.isCameraTaken();
console.log(isCameraTaken);
} catch (error) {
console.log(error);
}
true
: The camera is taken by other program.false
: The camera is taken by other program.Get the isCaptureForbidden flag status.
Example
try{
const isCaptureForbidden = stream.isCaptureForbidden();
console.log(isCaptureForbidden);
} catch (error) {
console.log(error);
}
None.
true
: The capture is forbidden by user.false
: The capture is not forbidden by user or the video flag is false
in media constraints.Get the isCapturingVideo flag status.
Example
try{
const isCapturingVideo = stream.isCapturingVideo();
console.log(isCapturingVideo);
} catch (error) {
console.log(error);
}
true
: The stream object is capturing video.false
: The stream object is not capturing video.Get the isReceivingVideo flag status.
Example
try{
const isReceivingVideo = stream.isReceivingVideo();
console.log(isReceivingVideo);
} catch (error) {
console.log(error);
}
true
: The stream object is receiving video.false
: The stream object is not receiving.Get the isRemoteVideoActive flag status.
Example
try{
const isRemoteVideoActive = stream.isRemoteVideoActive();
console.log(isRemoteVideoActive);
} catch (error) {
console.log(error);
}
true
: There is active remote video.false
: There is not active remote video or the video flag is false
in media constraints.Whether the host locked the share
Lock the privilege of screen share, only the host(manager) can share.
// host
stream.lockShare(true);
// sharing user
client.on('passively-stop-share',payload=>{
if(payload.reason==='PrivilegeChange'){
console.log('passively stop share because of privilege change')
}
})
set true to lock share, or false to unlock.
Mute audio
Default undefined
Pause screen share
Start render current active video.
Note
Example
try{
const canvas = document.querySelector('#canvas-id');
const id = stream.getActiveVideoId();
await stream.renderVideo(canvas, 2, id);
} catch (error) {
console.log(error);
}
The html canvas element where render video at.
The quality of rendered video. Cannot be higher than captured resolution.
The video source id.
Resume screen share
Join audio by the microphone and speaker.
true
in the media constraints.await client.init();
await client.join(topic, signature, username, password);
const stream = client.getMediaStream();
await stream.startAudio();
executed promise. Following are the possible error reasons:
USER_FORBIDDEN_MICROPHONE
: The user has blocked accesses to the microphone from the sdk, try to grant the privilege and rejoin the meeting.Start screen share.
Required. The id of canvas which renders the screen share content.
executed promise.
Render the received screen share content.
active-share-change
callback.client.on('active-share-change',payload=>{
if(payload.state==='Active'){
stream.startShareView(payload.activeUserId,canvas);
}else if(payload.state==='Inactive'){
stream.stopShareView();
}
})
Required. active share user id
Required. the canvas to render the share content
Start capture video by a specified camera.
Note
Example
try{
const canvas = ['capture-canvas-1', 'capture-canvas-2'];
const video = 'capture-video';
await stream.startVideo(canvas, video);
} catch (error) {
console.log(error);
}
The id of HTMLCanvasElement
to display captured content.
If the provided canvas is an array, only the first canvas in the array will be used. Canvas in the array to be used can be switched by switchCanvasForVideoCapture
.
The id of HTMLVideoElement
to display captured content.
''
: SuccessError
: Failure. Errors besides ErrorTypes that may be returned are listed below.CAN_NOT_DETECT_CAMERA
: Cannot detect camera device.CAN_NOT_FIND_CAMERA
: The provided camera device id is not included in camera device list.VIDEO_USER_FORBIDDEN_CAPTURE
: The user has forbidden use camera, he/she can allow camera and rejoin the meeting.VIDEO_ESTABLISH_STREAM_ERROR
: Video websocket is broken.VIDEO_CAMERA_IS_TAKEN
: User's camera is taken by other programs.Leave the computer audio
true
in the media constraints.Stop current rendering video.
Example
try{
await stream.stopRenderVideo();
} catch (error) {
console.log(error);
}
Stop screen share
Stop screen share
Stop current video capturing.
Example
try{
await stream.stopVideo();
} catch (error) {
console.log(error);
}
''
: SuccessError
: Failure. Details in ErrorTypes.Change camera device for capturing video.
Note
Example
try{
const newCameraDeviceId = stream.getCameraList()[0];
await stream.switchCamera(newCameraDeviceId);
} catch (error) {
console.log(error);
}
The id of camera device.
Switch the canvas for rendering local captured video.
Note
startVideo
.Example
try{
const canvas = ['capture-canvas-1', 'capture-canvas-2'];
const video = 'capture-video';
const deviceId = 'default';
await stream.startVideo(canvas, video, deviceId);
await stream.switchCanvasForVideoCapture('capture-canvas-2');
} catch (error) {
console.log(error);
}
Required. The id of html canvas element it will switch to.
Switch the microphone
const microphones = stream.getMicList();
const microphone = microphones.length>0 && microphones[0];
await switchMicrophone(microphone);
the device id of microphone
Switch the speaker
the device id of speaker
Unmute audio
// unmute myself
if(stream.isAllowToUnmute()){
await stream.unmuteAudio();
}
// host unmute others
await stream.unmuteAudio(userId);
// participant side
client.on('unmute-audio-consent',(payload)=>{
console.log('Host ask me to unmute');
})
Default undefined
Generated using TypeDoc
The Stream interface provides methods that define the behaviors of a Stream object, such as the mute audio, capture video.
The Stream object is created by the
getMediaStream
method..


--- layout: "default" title: "From Animal Crackers to Zuckercookies, nobody knows biscuits like we knows biscuits." author: "Robert 'Rich-Tea' Thumpston Jnr." ---
Don't be fooled by imposters. Only Bob's Biscuit Bazzaar can be counted on for high-end flour-based food products.
Whether it's snickerdoodles, stroopwafels or shortbread, we have you covered.
By appointment to HRH Queen Latifah.


Version control has many benefits to a developer. Version control records all the changes made to a file over time. This allows you to go back to a previous version if needed. Version control is critical for collaborative projects. It allows multiple people to work on the same file without stepping on eachother's toes or worse overwriting someone else’s changes. After everyone completes their portion, it can all be merged together into the master file.
Git helps you keep track of your changes throughout the lifecycle of your project. Git does this by viewing the project as a “tree”. By doing this it allows you to create “branches” on that tree. The branches are a current file or group of files you’re working on. you can work on the file or files without affecting the “trunk” of the tree. Once you are happy with the files and believe they will not ruin the trunk, you can add them in.
You use Github to store your code because it allows you to backup your repositories to the website that can be accessed from anywhere with an internet connection. This also allows multiple people to work on the same project and merge all their work together.


@* * Copyright 2017 HM Revenue & Customs * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *@ @import models.SupportingDocumentsUploadModel @import uk.gov.hmrc.play.views.html.helpers.form @import common.Constants @import views.html.helpers.{errorSummary, formInputRadioGroup, backButtonWithProgress, formHiddenYesNoRadioNoError, formHint} @()(implicit request: Request[_], messages: Messages) @main_template(title = Messages("page.supportingDocuments.SupportingDocuments.title"), bodyClasses = None) { @backButtonWithProgress(routes.HomeController.redirectToHub().url, Messages("common.back.dashboard"))
@Messages("page.supportingDocumentsUpload.outFlow.heading")
@Messages("page.supportingDocumentsUpload.docs.current")


Recipe 19.21. Computing a Summary Report with itertools.groupbyCredit: Paul Moore, Raymond Hettinger ProblemYou have a list of data grouped by a key value, typically read from a spreadsheet or the like, and want to generate a summary of that information for reporting purposes. SolutionThe itertools.groupby function introduced in Python 2.4 helps with this task: from itertools import groupby from operator import itemgetter def summary(data, key=itemgetter(0), field=itemgetter(1)): """ Summarise the given data (a sequence of rows), grouped by the given key (default: the first item of each row), giving totals of the given field (default: the second item of each row). The key and field arguments should be functions which, given a data record, return the relevant value. """ for k, group in groupby(data, key): yield k, sum(field(row) for row in group) if _ _name_ _ == "_ _main_ _": # Example: given a sequence of sales data for city within region, # _sorted on region_, produce a sales report by region sales = [('Scotland', 'Edinburgh', 20000), ('Scotland', 'Glasgow', 12500), ('Wales', 'Cardiff', 29700), ('Wales', 'Bangor', 12800), ('England', 'London', 90000), ('England', 'Manchester', 45600), ('England', 'Liverpool', 29700)] for region, total in summary(sales, field=itemgetter(2)): print "%10s: %d" % (region, total) DiscussionIn many situations, data is available in tabular form, with the information naturally grouped by a subset of the data values (e.g., recordsets obtained from database queries and data read from spreadsheetstypically with the csv module of the Python Standard Library). It is often useful to be able to produce summaries of the detail data. The new groupby function (added in Python 2.4 to the itertools module of the Python Standard Library) is designed exactly for the purpose of handling such grouped data. It takes as arguments an iterator, whose items are to be thought of as records, along with a function to extract the key value from each record. itertools.groupby yields each distinct key from the iterator in turn, each along with a new iterator that runs through the data values associated with that key. The groupby function is often used to generate summary totals for a dataset. The summary function defined in this recipe shows one simple way of doing this. For a summary report, two extraction functions are required: one function to extract the key, which is the function that you pass to the groupby function, and another function to extract the values to be summarized. The recipe uses another innovation of Python 2.4 for these purposes: the operator.itemgetter higher-order function: called with an index i as its argument. itemgetter produces a function f such that f(x) extracts the ith item from x, operating just like an indexing x[i]. The input records must be sorted by the given key; if you're uncertain about that condition, you can use groubpy(sorted(data, key=key), key) to ensure it, exploiting the built-in function sorted, also new in Python 2.4. It's quite convenient that the same key-extraction function can be passed to both sorted and groupby in this idiom. The groupby function itself does not sort its input, which gains extra flexibility that may come in handyalthough most of the time you will want to use groupby only on sorted data. See Recipe 19.10 for a case in which it's quite handy to use groupby on nonsorted data. For example, if the sales data was in a CSV file sales.csv, the usage example in the recipe's if _ _name_ _ == `_ _main_ _' section might become: import csv sales = sorted(cvs.reader(open('sales.csv', 'rb')), key=itemgetter(1)) for region, total in summary(sales, field=itemgetter(2)): print "%10s: %d" % (region, total) Overall, this recipe provides a vivid illustration of how the new Python 2.4 features work well together: in addition to the groupby function, the operator.itemgetter used to provide field extraction functions, and the potential use of the built-in function sorted, the recipe also uses a generator expression as the argument to the sum built-in function. If you need to implement this recipe's functionality in Python 2.3, you can start by implementing your own approximate version of groupby, for example as follows: class groupby(dict): def _ _init_ _(self, seq, key): for value in seq: k = key(value) self.setdefault(k, [ ]).append(value) _ _iter_ _ = dict.iteritems This version doesn't include all the features of Python 2.4's groupby, but it's very simple and may be sufficient for your purposes. Similarly, you can write your own simplified versions of functions itemgetter and sorted, such as: def itemgetter(i): def getter(x): return x[i] return getter def sorted(seq, key): aux = [(key(x), i, x) for i, x in enumerate(seq)] aux.sort( ) return [x for k, i, x in aux] As for the generator expression, you can simply use a list comprehension in its placejust call sum([field(row) for row in group]) where the recipe has the same call without the additional square brackets, [ ]. Each of these substitutions will cost a little performance, but, overall, you can build the same functionality in Python 2.3 as you can in version 2.4the latter just is slicker, simpler, faster, neater! See Alsoitertools.groupy, operator.itemgetter, sorted, and csv in the Library Reference (for Python 2.4). |


I am Sakthisundar Arivudainambi from Chennai, TN, IN
I am pursuing my M. S. in Data Science from NJIT, NJ, USA
2 Years of Work Experience from Consulting firm as Associate Research Executive
B. E. in Mechanical Engineering, Anna University, Chennai, India (2017)
M. S. in Data Science, NJIT, USA (Expected Year: 2021)
LinkedInHello everyone, I am Dhaval Dipen Patania from Mumbai, MH, IN
I am pursuing my M. S. in Business & Information Systems from NJIT, NJ, USA
2 Years of Work Experience as Product and Sales Manager
Diploma in Information Technology, M. S. B. S. H. S. E., India (2015)
B. E. in Information Technology, University of Mumbai, India (2018)
M. S. in Business & Information Systems, NJIT, USA (Expected Year: 2022)
LinkedIn


|
Bosch XDK110 Solace MQTT App
2.0.1
MQTT Reference Application for the Bosch XDK110
|
Go to the source code of this file.
| #define | MILLISECONDS(x) ((portTickType) x / portTICK_RATE_MS) |
| Calculate ticks from milliseconds. | |
| #define | SECONDS(x) ((portTickType) (x * 1000) / portTICK_RATE_MS) |
| Calculate ticks from seconds. | |
| void | AppMisc_InitDeviceId (void) |
| Initializes the device id. Call before any other module, most of them use the device id. | |
| const char * | AppMisc_GetDeviceId (void) |
| Returns the internal device id. Call after initialized. | |
| cJSON * | AppMisc_GetVersionsAsJson (void) |
| Returns the version numbers of the XDK and this App as JSON. More... | |
| void | AppMisc_PrintVersionInfo (void) |
| Prints the version info on the console. | |
| char * | AppMisc_FormatTopic (const char *template, const char *method, const char *baseTopic, const char *deviceId) |
| Create a topic string according to the template. More... | |
| void | AppMisc_UserFeedback_InSetup (void) |
| Sets the LEDs into rolling mode to indicate to user that device is in 'set-up'/'connecting' mode. More... | |
| void | AppMisc_UserFeedback_Ready (void) |
| Switches the orange LED into blinking mode to indicate to user that device is ready/operational. More... | |
| char * | copyString (const char *str) |
| Creates a copy of a NULL terminated string. More... | |
| size_t | countCharOccurencesInString (char *str, char c) |
| Counts the number of occurences of c in str. More... | |
| void | printJSON (cJSON *jsonHandle) |
| Prints the json onto the console. More... | |


bibleclipper
Look up and copy Scripture straight into your clipboard.
Select translation: NASB | ESV
1 Peter 3:15 but sanctify Christ as Lord in your hearts, always being ready to make a defense to everyone who asks you to give an account for the hope that is in you, yet with gentleness and reverence;


In a world where Barack Obama and Donald Trump have switched lives, headlines are pretty weird
Previous
Random
Next


--- layout: plainarticle permalink: '/what-we-do/' title: What we do ---
As members of the Alumni Association, you have access to the following services:
The online newsletter informs about the Alumni Association and their recent projects. It offers an interesting read towards relevant issues and stories concerning the Alumni world and you can find out important happenings and events on and around campus.
RefWorks, the online research management, writing and collaboration tool used at Jacobs University is designed to help researchers easily gather, manage, store and share all types of information, as well as generate citations and bibliographies. The Alumni Office will provide you with a group code so you can use the program even after your time at Jacobs!
If you want to set-up your Alumni E-mail, need info concerning events or would like to buy the latest university merchandise – feel free to contact the Alumni Office! … and if you need anything else not provided here, we will do our best to arrange this for you as well. You can check your alumni emails by logging into the email system.
Contact the Alumni Office! You can use the sports facilities, library, even get free WLAN.
You can get access to the library with a „Library Guest Card“. For 10,-€ deposit you will receive the card and be able to use the library. Due to publishers’ license restrictions, Jacobs alumni can only access electronic resources on campus.  Get in touch with the Alumni Office to get your login credentials before you arrive on campus.
The gym in our new Sports and Convention Centre (SCC) is to your full disposal. The Recreation Card with your personal settings is available for 50,-€ per semester. Contact the Alumni Office to receive access. Find more informmation here http://www.jacobs-university.de/sports-and-convention-center


On the lookout for a Flight Ticket, maybe?
We got you.
{{ flight["origin.name"] }}
{{flight["destination.name"]}}
{{ flight.class }}
-
From:
{{ flight["origin.name"] }} ({{ flight["source_airport.name"] }})
-
To:
{{ flight["destination.name"] }} ({{ flight["dest_airport.name"] }})
-
Flight Type:
{{ flight.type }}
-
Boarding Date and Time
{{
flight.flight_datetime }}
-
Ticket Price
${{ flight.ticket_price }}


Kristen Bell, Idina Menzel Say ‘Frozen 2’ Teaches Boys ‘It’s Okay’ To Let Go Of Their Emotions
by Aynslee DarmonIt’s been six years since “Frozen” premiered, becoming a fan favourite among young girls everywhere. But with the highly anticipated sequel just weeks away, stars Kristen Bell and Idina Menzel say “Frozen 2” will have an important message for all its male fans.
The actresses stopped by the SiriusXM studios Thursday to spill some details about the upcoming flick.
“We talked so much about it being this female empowerment film but were really proud of how Kristoph [Jonathan Groff] is portrayed and the kind of role model that he’s become,” Menzel, who voices Elsa, explained. “He’s this more emotional, expressive man.”
Bell, who is behind the character Anna, continued, “In his song, which you just don’t see very often, he’s got all these huge emotions and I feel like, as far as a representation for young boys to go like, ‘Yeah, you have all these huge emotions and it’s okay to have them.’”
And for the pair, it’s refreshing to see such a role reversal.
“And he’s the one pining over the woman, actually,” Menzel said, “which is a really cool change.”
Bell added, “Then in the beginning of his song, which is called ‘Lost In The Woods’, he’s singing about all these big things and it says, ‘You feel your feelings and your feelings are real,’ and it’s just the tiny encapsulated way to say, ‘Yeah, it’s okay to have big feelings even if you’re a guy.’”
“He rescues her in the midst of a battle and the first thing he says to her is, ‘I’m here. What do you need?’”
“Frozen 2” hits big screens Nov. 22.


Reference
¶
Sequence
View
Views and Adaptors
Raw view
Drop view
Take view
Slice view
<boost/static_views/static_map.hpp>
Configuration
Specifying the error handling policy
<boost/static_views/chunk.hpp>
<boost/static_views/transform.hpp>
<boost/static_views/errors.hpp>
<boost/static_views/detail/invoke.hpp>
<boost/static_views/wrapper.hpp>


weather right now:
Wind:
Athmospheric pressure:
Humidity:
View Precipitation Map
Type your location in the 'location name' field and press the 'search' button.
Selecting a country is optional.
FancyWeather - Vicentiu Vitriuc 2019 - API Source: OpenWeatherMap
weather right now:
Wind:
Athmospheric pressure:
Humidity:
Your resolution is too small to properly display FancyWeather. Please use a desktop PC or resize your browser window.


Select a font-scale:
Proportional font-sizing is tricky for a few reasons. Firstly, we need to scale against the original font-size (in pixels) for each element, so we have to traverse the DOM tree twice — once to find font-size information and once to apply it.
Then, once applied, the font-size is "fixed" — it will no longer respond to changes in the parent. So class changes triggered by scripts won't work as expected for font-sizing.
The approach taken here mitigates the amount of behavioural modification as a result of font-size changes. Primarily, whenever the scale is unset (by choosing —), all font-size changes are reversed so that full inheritance can again cascade.
To see this:


Written statement to Parliament
The Permanent Secretary’s review into possible warnings to the Department for Education, relating to extremism in Birmingham schools.
I am today (16 January 2015) publishing the results of a review by my Permanent Secretary into whether the Department for Education (or predecessor departments) had received warnings relating to extremism in Birmingham schools, and how any such warnings had been dealt with. Copies of this report will be laid in the libraries of both Houses.
This review was commissioned by my predecessor in June 2014. It was prompted by the receipt of the ‘Trojan Horse’ letter in Birmingham in December 2013, and subsequent reviews by Peter Clarke, Ian Kershaw and Ofsted, which noted, amongst other things, that warning signs about potential extremism in Birmingham schools had been missed by local agencies over a long period of time. Media reports in May and June 2014 suggested that specific warnings had been given to the department, in 2010, 2008 to 2009 and 1994.
The review has looked at a 20-year period between 1994 and December 2013, focusing specifically on:
The review has found no instances where specific warnings were ignored by the department and no cases where departmental officials or ministers acted inappropriately. It has, however, found that the department has in the past lacked inquisitiveness on this issue, and that procedures could have been tighter than they were. It notes that the department needs always to be vigilant and inquisitive, and have robust systems in place if it is to play its part in preventing and countering the issues identified in Peter Clarke’s report.
I endorse this view and all of the recommendations contained in the review. In light of the review’s findings and events in Birmingham, the Permanent Secretary is taking further measures within the department:
The department’s internal audit function will conduct a review of these actions after 3 months and will advise the Permanent Secretary and the department’s management committee on implementation progress. There will be regular 6-monthly checks by internal audit on implementation, with advice to the management committee.
The aims of these actions are threefold:
These actions should apply equally to warnings of ‘extremism’ from whatever source.
Work is ongoing on the wider issues relating to Birmingham, and I will update the House in due course.
(1) The current unit, established in 2010, has thus far reported to a Director who also had other responsibilities.
Published: 16 January 2015


--- layout: empty title: Not Found permalink: /404.html css: css/bsod.css ---
A problem has been detected and your browsing experience has been paused to prevent additional happiness hemorrhaging
PAGE_NOT_FOUND
Much like the second page of a Google search result, you won't find what you are looking for here. Seriously.

Or go back to safety by pressing the back key or try some of these friendly links:
Technical information:
***HOME: 0x00000054 (0x68697320, 0x00000069, 0x73206661, 0xFFEC4574)
***ABOUT: 0x00000052 (0x74A5BC77, 0x00004339, 0xA5F3AC21, 0xBC41001A)
***JOIN_US: 0x00000054 (0x68697320, 0x0066FF69, 0x73206661, 0x00006B65)
***FAQ: 0x00000054 (0x68697320, 0x0CD59069, 0xEC58AA61, 0x00000000)


Merges the
else
branch of an
if-else
statement if the
else
contains nothing but a nested
if-else
statement.


The Great Roboger
Click to Start
Enter a number and see what Roboger says:
Enter a whole number greater than 0
Enter


[gecode-users] IntVarArray
Alexis Cothenet
alexis.cothenet at gmail.com
Mon Mar 12 09:48:32 CET 2012
Hi all,
I'm trying to model something with Gecode:
I'm used with ILOG to add constraints like this:
I have 2 variables for example :
IntVar toto1 ([0,1,2])
IntVar toto2 ([0,2]).
I have a relationship with the preceding domain values :
Array [0] = 8
Array [1] = 9
Array [2] = 8
I have an intVarArray:
IntVarArray glob;
glob << Array [toto1] (domain = [8,9])
glob << Array [toto2] (domain = [8])
And add constraint:
distinct (glob);
So that it constrains glob[0] ->[9] and so it constrains toto1->[1]
Could you explain me how i could model it with Gecode ?
Thank you.
Best regards,
Alexis
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.gecode.org/pipermail/users/attachments/20120312/22fc4a4b/attachment.htm>
More information about the users
mailing list


J has no declarations. Good riddance! No more will you have to warn the computer of all the names you intend to use, and their types and sizes. No more will your program crash if you step outside an array bound. You specify the calculations you want to perform; if, along the way, you want to assign a result to a name, J will allocate enough space for the data. It will free the space when the name is no longer needed.
Seasoned C programmers have learned to use declarations to create a web of type-checking, making sure that objects pointed to are of the expected type. This is an example of making a virtue of necessity. Since J avoids pointer trouble much more directly--by not having pointers at all--you will soon lose your uneasiness with weak typing.
But, you ask, Without declarations, how does the computer know that a name represents an array? For that matter, how do I know that a name represents an array?
The answer affords a first glimpse of the power of J. Every J verb, whether a primitive (operator) or a user-written verb (function), accepts arguments that can be arrays, even multidimensional arrays. How is this possible? Like this: Suppose you write a verb that works with 2-dimensional arrays. Part of your verb definition will indicate that fact. If your verb is executed with an argument that is a 3-dimensional array, J will automatically split the 3-dimensional array into a sequence of 2-dimensional arrays, call your verb for each one, and put the results together into an array of results.
We will very soon go into this procedure in great detail. For now, you should learn the vocabulary J uses to deal with arrays.
What C calls an n-dimensional array of rank ixjx...xk is in J an array of rank n with axes of length i,j,...,k.
Every noun (variable or object) has a shape which is the array (of rank 1) made by concatenating the lengths of all its axes. For example, if q is the array corresponding to the C array defined by the declaration
int
q[4][5][6];
its shape is the array 4 5 6 . As you can see, the number of items in the shape is exactly the rank.
Note: a sequence of numbers written with no intervening punctuation defines a numeric array of rank 1 (i. e. a list). You may have to use parentheses if you have adjacent numbers that you don't want to have made into a list.
Unlike in C, an array in J may have one or more axes of length 0. Such an array has no atoms, but its rank is still the number of its axes.
A single number or character is called an atom (object of basic type) which is said to have the type numeric or character as appropriate. (Actually, there are types other than number and character, including a type that resembles a structure and can contain components of different types, but we won't get to them for a while). An atom is also called a scalar. An atom is defined to have rank 0; therefore, its shape is an array with 0 items, i. e. an empty array of rank 1.
An atom is a degenerate array, with no axes, but it follows the rules for arrays nonetheless.
Just as in C, every atom of an array must have the same type.
Because the execution of every J verb involves breaking the argument into pieces, presenting the pieces to the verb, and assembling results, J has a vocabulary for describing these operations.
A rank-3 array of shape 4 5 6 such as the one defined in C by the declaration
int
q[4][5][6];
can be thought of as an array of 4 elements, each with rank 2 and shape 5 6, or as a 4x5 array of elements, each with rank 1 and shape 6, or as a 4x5x6 array of rank-0 atoms. These smaller arrays, which can be arrayed together to constitute the larger array, are called cells. As seen in the example above, the axes of a cell are a suffix of the axes of the entire array. A cell of rank k is called a k-cell: a 0-cell is an atom, a 1-cell is an element of rank 1, a 2-cell is an element of rank 2, and so on. You can view an array as an array of its cells, and in more than one way, depending on what cell-size you choose.
Each time you operate on an array, you decide the rank of the cells to be operated on. The rank of the cells is not a property of the array; rather, it indicates how you want to group the atoms of the array for a single operation. When you have decided to operate on cells of rank n, you can think of your noun as an array of n-cells; the shape of that array of cells is called the frame of the noun relative to n-cells. It follows that the frame, concatenated with the shape of the cells, will be equal to the shape of the noun. The frame itself (like all shapes) is an array of rank 1.
The diagram illustrates cells of different ranks. Note that the twenty 6-atom 1-cells are arranged in a 4x5 array; this is the meaning of the frame of the 1-cells. The four 5x6 2-cells are arranged as a vector of 2-cells; this is the meaning of their frame.
A selected cell is analogous to the subarray selected by indexing in C. Using q as defined above, in C q[3] is a 5x6 array (i. e. a 2-cell); q[1][0] is a 6-element vector (i. e. a 1-cell); q[2][0][3] is a scalar (0-cell).
The noun q we have been using as an example can be thought of in any of the following 4 ways:
|
|
Frame |
Cells |
||
|
as an array of |
Length |
Value |
Rank |
Shape |
|
0-cells |
3 |
4 5 6 |
0 |
(empty) |
|
1-cells |
2 |
4 5 |
1 |
6 |
|
2-cells |
1 |
4 |
2 |
5 6 |
|
3-cells |
0 |
(empty) |
3 |
4 5 6 |
|
|
Because J verbs operate on cells of nouns, you should choose an order of axes that makes the cells meaningful for your application. Referring to the figure, we can see that the groups of items that fall into horizontal strips (1-cells) or horizontal slabs (2-cells) will be easy to operate on individually. Vertical strips or slabs will not correspond to cells and so will not be accessible individually; to work on them we may have to reorder the axes of the noun to make them correspond to cells. Such reordering of axes is easy in J but it can often be avoided by ordering the axes properly in the first place.
In some cases, you may know the length of the frame and want to define the cells to have whatever rank is left over (for example, you may have a noun with one cell per employee, but you may not know the rank of the cells). We say that you are selecting the cells of the noun relative to the given frame. Negative cell-ranks indicate this. A _1-cell has the shape corresponding to a frame of length 1 (5 6 in our example), a _2-cell has the shape corresponding to a frame of length 2 (6 in our example), and so on. If the specified frame is longer than the rank of the noun, the entire shape of the noun is used for the frame (and the cells are 0-cells, i. e. atoms). In our example, a _3-cell, a _4-cell, a _5-cell, etc., all refer to atoms. As an important case of this, the _1-cell of an atom is the atom itself.
_1-cells are so important in J that they are given the name items. Our example has 4 items, each of shape 5 6 . An atom has one item, itself.
Remember: an atom has one item: itself.
The index of an item in an array is the sequence number of the item from the beginning of the array. The first item in an array has the index 0, just as in C.
When we choose to view a non-atomic
When the word 'list' is used without any indication of what the list contains, the list is assumed to contain atoms. So, 'the list x' refers to an array of rank 1 (one-dimensional array). 0 3 5 is a numeric list.
Note that J's use of the term 'list' has nothing to do with linked lists such as you are familiar with, where an element in the list contains a pointer to other elements. Since J has no pointers at all, you will not need that meaning, and you can get used to calling rank-1 arrays 'lists'. A list can also be called a vector.
A non-atomic array is a list of its items.
An atom has one item, itself.
The rank of a noun is the length of its shape.
The shape of an atom is the empty list.
The suffixes of the shape of a noun give the shapes of its cells: the k trailing atoms of the shape of a noun give the shape of its k-cell.
The frame of a noun with respect to k-cells is the shape of the noun, with the last k atoms of the shape removed.
The terminology of nouns is summarized in the following table.
|
Summary of Terminology
for Nouns in J |
||||
|
|
Atom |
Non-Atomic Array |
||
|
Rank |
0 |
1 |
2 |
higher n |
|
Name |
Atom |
List |
Table |
Rank-n Array |
|
Shape (always a list) |
(empty list) |
1-item list ,l |
2-item list r,c for an rxc table with r rows and c columns |
n-item list |
|
Items |
The atom itself |
atoms |
lists (each with shape ,c) |
(n-1)-cells |
|
Name/Shape if |
impossible |
empty list |
empty table |
empty array |
|
,0 |
0,c |
0,... |
|
|
A character or numeric list can be created simply by including the list in a sentence. We have seen that a sequence of numbers separated by spaces is recognized as a single word representing the list. Similarly, a character or a character list can be represented directly by a quoted string. C distinguishes between single-character constants (such as 'a') and strings (such as "abc"), using single quotes for characters and double quotes for strings. J uses only single quotes for defining character constants (the " character is a primitive in its own right). If exactly one character is between the quotes, the value is an atom; if none or more than one, the result is a list.
Now that we know how to talk about arrays, we might as well create a few and see what they look like. As mentioned earlier, every J verb can be used to create an array--there are no special 'declaration' verbs--but we will start with a couple that do little else. The J lines are taken from an interpreter session; you can type them into your own session and get the same results. The indented lines were typed into J, and the unindented ones are J's responses.
Dyad $ ($hape) and monad $ ($hape Of)
The verb dyad $ is invoked as x $ y . The result of dyad $ has the frame x relative to the rank of the items of y, and is made up of the items of y, repeated cyclically as needed. It follows that the shape of this result is x concatenated with the shape of an item of y .
We will have to work together on this. Confronted with a definition like that, you might: (a) decide that J must be a language for tax accountants, and give up; (b) decide the definition is Greek and go on, hoping it will make sense later; (c) try a few examples to get an idea for what the definition means; (d) read it over and over again until you understand it. I hope you will eschew (a) and (b), and settle for no less than full understanding. For my part, I will offer a few useful examples that you can compare against the definition. Not everything in J will be as abstract as this.
5 $ 2
2 2 2 2 2
The simplest case, creating (and displaying) a list of 5 items, each of which is 2 . Let's see how this result matches the definition. y is a scalar, so it has one item, which is also a scalar. Therefore, the result has the shape 5 (x (i. e. 5) concatenated with the shape of an item of y; the shape of a scalar item of y is the empty list; 5 concatenated with an empty list is a list with the single element 5). The scalar is repeated to fill the 5 items of the result. J displays a 1-cell on a single line, as shown.
5 $ 'ab'
ababa
Now y is a list, but its items are still scalars, with rank 0 and shape empty; so the result still has the shape 5 . The 5 items come from the items of y, cyclically.
We can distill the foregoing analysis above to the observation that when y is an atom or a list, x specifies the shape of x $ y .
4 4 $ 'There is a tide in the affairs of men'
Ther
e is
a t
ide
The items of y are still scalars, with rank 0 and shape empty; the result has the shape 4 4 . The 16 items come from the items of y, cyclically. Not all items of y are used. J displays a rank-2 array as a sequence of lines, one for each 1-cell.
0 $ 2
(The display is a single blank line) Just like 5 $ 2, but the resulting list has 0 items, i. e. it is an empty list.
1 $ 2
2
Similarly, a 1-item list.
(0 $ 2) $ 2
2
Here (0 $ 2) produces an empty list, as we saw above, and that is the x to the second $ . The items of y are still scalars, so the result has shape empty (an empty list concatenated with an empty list), i. e. it is a scalar.
The displays of a scalar and a 1-item list are identical. Does that mean that a scalar is the same thing as a 1-item list? No. I mean no. NO! They are not (I say this with the same resignation as when I tell my kids not to rollerblade too fast down our street, knowing that only painful experience will drive the message home). How can you tell them apart? What we need is a way to see the shape of a noun.
That way is monad $ . The result of $ y is the shape of y (always a numeric list). For example:
$ 1 2 3 4
4
A 4-item list has the shape 4 . Did you forget that 1 2 3 4 is a single list rather than 4 separate numbers? You can ask the interpreter how it splits a line into words by using monad ;: :
;: '$ 1 2 3 4'
+-+-------+
|$|1 2 3 4|
+-+-------+
The words are shown in boxes. The list 1 2 3 4 is recognized as a single word.
$ 6
The shape of a scalar is a 0-length list, as we have seen.
$ 1 $ 2
1
Remember, all sentences are executed right-to-left, so this is $ (1 $ 2), which gives the shape of the 1-item list. When a verb can be invoked dyadically, it is, so the rightmost $ is executed as a dyad, not as a monad.
$ (0 $ 2) $ 2
Here, we get the shape of the scalar--an empty list.
$ 'a'
A single character is an atom, whose shape is the empty list.
$'abc'
3
A 3-item list, one item for each character.
$ ''
0
'' is the empty character string, which you will see a lot of. Because it is easy to type, it is the value most often used when an empty list of any type will do.
Executing monad $ twice gives the rank: $ $ y is the rank of y (as a single-item list). I suggest you not read on until you understand why.
Resuming our inquiries into dyad $, we have
2 5 $ 1 10
1 10 1 10 1
10 1 10 1 10
Again y is a list, so the items of y are scalars. The shape of the result is 2 5, and the items of y are repeated to fill that shape. Note that the corresponding atoms in each cell are aligned in the display.
1 5 $ 1 10
1 10 1 10 1
Similarly, but now the result has shape 1 5. This is not the same as a 5-item list, which has shape 5 . Again, monad $ shows the shape:
$ 1 5 $ 1 10
1 5
When y is not a scalar or a list, its items are not scalars, and x does not give the shape of the result. Let us work through an example using the definition of x $ y :
3 $ 1 5 $ 1 10
1 10 1 10 1
1 10 1 10 1
1 10 1 10 1
Remember, this is processed as 3 $ (1 5 $ 1 10). The parenthesized part produces an array of shape 1 5; since this has rank 2, its items are its 1-cells, each with shape 5. The shape of the overall result is x concatenated with the shape of an item of y, to wit 3 5. This is populated with the cells of y, of which there is only 1.
3 $ 2 5 $ 'There is a tide in the affairs of men'
There
is a
There
You should be able to explain where each line came from, and you should note that in general, x specifies the frame of x $ y with respect to items of y . When y is a list or an atom, its items are atoms and x gives the entire shape of the result.
2 2 $ 2 5 $ 1 10
1 10 1 10 1
10 1 10 1 10
1 10 1 10 1
10 1 10 1 10
$ 2 2 $ 2 5 $ 1 10
2 2 5
Now the shape of the result is 2 2 5, a rank-3 array. J displays the 2-cells with a blank line in between. Similarly, a rank-4 array is displayed as all the 3-cells with 2 blank lines in between, and so on for higher ranks.
We have seen that the display of a zero-length list is a single blank line: proper, as there is one list, and it has no items. The display of a rank-2 array with no items is different: here we have zero lists, so we should expect no lines at all. This is indeed what happens:
0 0$0
(there is no blank line). This is the result you should produce if you want a function to display nothing.
Here are two exercises. Once you can explain each result, you will be well on your way to becoming a J programmer. What will each of these sentences produce (answer on the next page)?
3 1 $ 2 5 $ 1 10
2 3 $ 2 5 $ 1 10 15
Solutions:
3 1 $ 2 5 $ 1 10
1 10 1 10 1
10 1 10 1 10
1 10 1 10 1
2 3 $ 2 5 $ 1 10 15
1 10 15 1 10
15 1 10 15 1
1 10 15 1 10
15 1 10 15 1
1 10 15 1 10
15 1 10 15 1
Monad # (Tally)
The result of # y is a scalar, the number of items in y . This is the first item in the list $y, except that if y is an atom, $y is empty but #y is 1 (because, remember, an atom has one item, itself). If y is a list, #y is the length of the list. Quiz question: What is the difference between the results of $ 1 2 3 and # 1 2 3?
$ 1 2 3
3
# 1 2 3
3
Answer: the result of monad $ is always a list, but the result of monad # is a scalar:
$ $ 1 2 3
1
$ # 1 2 3
#$y, like $$y, gives the rank of y . Since monad # produces a scalar rather than a list, #$y is usually preferred. Just remember that the length of the shape is the rank.
Monad i. (Integers)
Monad i. accepts a scalar or vector operand and creates an array. i. y produces the same result as y $ ints, where ints is the list of all nonnegative integers in order. Examples:
i. 5
0 1 2 3 4
A list of 5 items; the items are ascending integers.
i. 2 3
0 1 2
3 4 5
A rank-2 result.
i. 2 3 4
0 1 2 3
4 5 6 7
8 9 10 11
12 13 14 15
16 17 18 19
20 21 22 23
A rank-3 result.
i. 0
A list of 0 items.
i. _5
4 3 2 1 0
When the argument is negative, the absolute value is used for the shape, but the items run in reverse order.


@(ggLoginUrl: String)(implicit request: Request[_], messages: Messages) @contentHeader = {
To use this service you should sign in with an 'organisation' account, but it looks like you've tried to use either an 'individual' or 'agent' account.
If you don't have an organisation account you can register for a new one.


da65 is a disassembler for 6502/65C02 code. It is supplied as a utility with the cc65 C compiler and generates output that is suitable for the ca65 macro assembler.
Besides generating output for ca65, one of the design goals was that the user is able to feed additional information about the code into the disassembler, for improved results. This information may include the location and size of tables, and their format.
One nice advantage of this concept is that disassembly of copyrighted binaries may be handled without problems: One can just pass the information file for disassembling the binary, so everyone with a legal copy of the binary can generate a nicely formatted disassembly with readable labels and other information.
The assembler accepts the following options:
---------------------------------------------------------------------------
Usage: da65 [options] [inputfile]
Short options:
-g Add debug info to object file
-h Help (this text)
-i name Specify an info file
-o name Name the output file
-v Increase verbosity
-F Add formfeeds to the output
-s Accept line markers in the info file
-S addr Set the start/load address
-V Print the disassembler version
Long options:
--argument-column n Specify argument start column
--comment-column n Specify comment start column
--comments n Set the comment level for the output
--cpu type Set cpu type
--debug-info Add debug info to object file
--formfeeds Add formfeeds to the output
--help Help (this text)
--hexoffs Use hexadecimal label offsets
--info name Specify an info file
--label-break n Add newline if label exceeds length n
--mnemonic-column n Specify mnemonic start column
--pagelength n Set the page length for the listing
--start-addr addr Set the start/load address
--sync-lines Accept line markers in the info file
--text-column n Specify text start column
--verbose Increase verbosity
--version Print the disassembler version
---------------------------------------------------------------------------
Here is a description of all the command line options:
--argument-column n
Specifies the column where the argument for a mnemonic or pseudo instruction starts.
--comment-column n
Specifies the column where the comment for an instruction starts.
--comments n
Set the comment level for the output. Valid arguments are 0..4. Greater values will increase the level of additional information written to the output file in form of comments.
--cpu type
Set the CPU type. The option takes a parameter, which may be one of
6502x is for the NMOS 6502 with unofficial opcodes. huc6280 is the CPU of the PC engine. 4510 is the CPU of the Commodore C65. Support for the 65816 currently is not available.
-F, --formfeeds
Add formfeeds to the generated output. This feature is useful together
with the
--pagelength
option.
If --formfeeds
is given, a formfeed is added to the output after each
page.
-g, --debug-info
This option adds the .DEBUGINFO
command to the output file, so the
assembler will generate debug information when re-assembling the generated
output.
-h, --help
Print the short option summary shown above.
--hexoffs
Output label offsets in hexadecimal instead of decimal notation.
-i name, --info name
Specify an info file. The info file contains global options that may override or replace command line options plus informations about the code that has to be disassembled. See the separate section Info File Format.
-o name
Specify a name for an output file. The default is to use stdout
, so
without this switch or the corresponding
global option
OUTPUTNAME
,
the output will go to the terminal.
--label-break n
Adds a newline if the length of a label exceeds the given length. Note: If the label would run into the code in the mid column, a linefeed is always inserted regardless of this setting.
This option overrides the
global option
LABELBREAK
.
--mnemonic-column n
Specifies the column where a mnemonic or pseudo instrcuction is output.
--pagelength n
Sets the length of a listing page in lines. After this number of lines, a
new page header is generated. If the
--formfeeds
is also given, a formfeed is inserted before
generating the page header.
A value of zero for the page length will disable paging of the output.
-S addr, --start-addr addr
Specify the start/load address of the binary code that is going to be disassembled. The given address is interpreted as an octal value if preceded with a '0' digit, as a hexadecimal value if preceded with '0x', '0X', or '$', and as a decimal value in all other cases. If no start address is specified, $10000 minus the size of the input file is used.
-s, --sync-lines
Accept line markers in the info file in the following syntax:
#line <lineno> ["<filename>"]
# <lineno> "<filename>" [<flag>] ...
This option is intended for preprocessing info files with "cpp" or "m4".
--text-column n
Specifies the column where additional text is output. This additional text consists of the bytes encoded in this line in text representation.
-v, --verbose
Increase the disassembler verbosity. Usually only needed for debugging purposes. You may use this option more than one time for even more verbose output.
-V, --version
Print the version number of the assembler. If you send any suggestions or bugfixes, please include the version number.
The default (no CPU given on the command line or in the GLOBAL
section of
the info file) is the 6502 CPU. The disassembler knows all "official" opcodes
for this CPU. Invalid opcodes are translated into .byte
commands.
With the command line option
--cpu
, the
disassembler may be told to recognize either the 65SC02 or 65C02 CPUs. The
latter understands the same opcodes as the former, plus 16 additional bit
manipulation and bit test-and-branch commands.
When disassembling 4510 code, due to handling of 16-bit wide branches, da65 can produce output that can not be re-assembled, when one or more of those branches point outside of the disassembled memory. This can happen when text or binary data is processed.
While there is some code for the 65816 in the sources, it is currently unsupported.
The disassembler works by creating an attribute map for the whole address space ($0000 - $FFFF). Initially, all attributes are cleared. Then, an external info file (if given) is read. Disassembly is done in several passes. In all passes, with the exception of the last one, information about the disassembled code is gathered and added to the symbol and attribute maps. The last pass generates output using the information from the maps.
Some instructions may generate labels in the first pass, while most other
instructions do not generate labels, but use them if they are available. Among
others, the branch and jump instructions will generate labels for the target
of the branch in the first pass. External labels (taken from the info file)
have precedence over internally generated ones, They must be valid identifiers
as specified for the ca65 assembler. Internal labels (generated by the
disassembler) have the form Labcd
, where abcd
is the hexadecimal
address of the label in upper case letters. You should probably avoid using
such label names for external labels.
The info file is used to pass additional information about the input code to the disassembler. This includes label names, data areas or tables, and global options like input and output file names. See the next section for more information.
The info file contains lists of specifications grouped together. Each group directive has an identifying token and an attribute list enclosed in curly braces. Attributes have a name followed by a value. The syntax of the value depends on the type of the attribute. String attributes are places in double quotes, numeric attributes may be specified as decimal numbers or hexadecimal with a leading dollar sign. There are also attributes where the attribute value is a keyword; in this case, the keyword is given as-is (without quotes or anything). Each attribute is terminated by a semicolon.
group-name { attribute1 attribute-value; attribute2 attribute-value; }
Comments start with a hash mark (#
) or a double slash (//
);
and, extend from the position of the mark to the end of the current line.
Hash marks or double slashes inside of strings will not start a comment,
of course.
Global options may be specified in a group with the name GLOBAL
. The
following attributes are recognized:
ARGUMENTCOLUMN
This attribute specifies the column in the output, where the argument for
an opcode or pseudo instruction starts. The corresponding command line
option is
--argument-column
.
COMMENTCOLUMN
This attribute specifies the column in the output, where the comment starts
in a line. It is only used for in-line comments. The corresponding command
line option is
--comment-column
.
COMMENTS
This attribute may be used instead of the
--comments
option on the command line. It takes a numerical
parameter between 0 and 4. Higher values increase the amount of information
written to the output file in form of comments.
CPU
This attribute may be used instead of the
--cpu
option on the command line. For possible values see
there. The value is a string and must be enclosed in quotes.
HEXOFFS
The attribute is followed by a boolean value. If true, offsets to labels are
output in hex, otherwise they're output in decimal notation. The default is
false. The attribute may be changed on the command line using the
--hexoffs
option.
INPUTNAME
The attribute is followed by a string value, which gives the name of the input file to read. If it is present, the disassembler does not accept an input file name on the command line.
INPUTOFFS
The attribute is followed by a numerical value that gives an offset into the input file which is skipped before reading data. The attribute may be used to skip headers or unwanted code sections in the input file.
INPUTSIZE
INPUTSIZE
is followed by a numerical value that gives the amount of
data to read from the input file. Data beyond INPUTOFFS + INPUTSIZE
is ignored.
LABELBREAK
LABELBREAK
is followed by a numerical value that specifies the label
length that will force a newline. To have all labels on their own lines,
you may set this value to zero.
See also the
--label-break
command line option. A LABELBREAK
statement in the info file will
override any value given on the command line.
MNEMONICCOLUMN
This attribute specifies the column in the output, where the mnemonic or
pseudo instruction is placed. The corresponding command line option is
--mnemonic-column
.
NEWLINEAFTERJMP
This attribute is followed by a boolean value. When true, a newline is
inserted after each JMP
instruction. The default is false.
NEWLINEAFTERRTS
This attribute is followed by a boolean value. When true, a newline is
inserted after each RTS
instruction. The default is false.
OUTPUTNAME
The attribute is followed by string value, which gives the name of the
output file to write. If it is present, specification of an output file on
the command line using the
-o
option is
not allowed.
The default is to use stdout
for output, so without this attribute or
the corresponding command line option
-o
the output will go to the terminal.
PAGELENGTH
This attribute may be used instead of the
--pagelength
option on the command line. It takes a numerical
parameter. Using zero as page length (which is the default) means that no
pages are generated.
STARTADDR
This attribute may be used instead of the
--start-addr
option on the command line. It takes a numerical
parameter. The default for the start address is $10000 minus the size of
the input file (this assumes that the input file is a ROM that contains the
reset and irq vectors).
TEXTCOLUMN
This attribute specifies the column, where the data bytes are output
translated into ASCII text. It is only used if
COMMENTS
is set to at least 4. The
corresponding command line option is
--text-column
.
The RANGE
directive is used to give information about address ranges. The
following attributes are recognized:
COMMENT
This attribute is only allowed if a label is also given. It takes a string
as argument. See the description of the
LABEL
directive for an explanation.
END
This gives the end address of the range. The end address is inclusive, that means, it is part of the range. Of course, it may not be smaller than the start address.
NAME
This is a convenience attribute. It takes a string argument and will cause
the disassembler to define a label for the start of the range with the
given name. So a separate
LABEL
directive is not needed.
START
This gives the start address of the range.
TYPE
This attribute specifies the type of data within the range. The attribute value is one of the following keywords:
ADDRTABLE
The range consists of data and is disassembled as a table of words
(16 bit values). The difference to the WORDTABLE
type is that
a label is defined for each entry in the table.
BYTETABLE
The range consists of data and is disassembled as a byte table.
CODE
The range consists of code.
DBYTETABLE
The range consists of data and is disassembled as a table of dbytes (double byte values, 16 bit values with the low byte containing the most significant byte of the 16 bit value).
DWORDTABLE
The range consists of data and is disassembled as a table of double words (32 bit values).
RTSTABLE
The range consists of data and is disassembled as a table of words (16 bit
values). The values are interpreted as words that are pushed onto the
stack and jump to it via RTS
. This means that they contain
address-1
of a function, for which a label will get defined by the
disassembler.
SKIP
The range is simply ignored when generating the output file. Please note
that this means that reassembling the output file will not generate
the original file, not only because the missing piece in between, but also
because the following code will be located on wrong addresses. Output
generated with SKIP
ranges will need manual rework.
TEXTTABLE
The range consists of readable text.
WORDTABLE
The range consists of data and is disassembled as a table of words (16 bit values).
The LABEL
directive is used to give names for labels in the disassembled
code. The following attributes are recognized:
ADDR
Followed by a numerical value. Specifies the value of the label.
COMMENT
Attribute argument is a string. The comment will show up in a separate line before the label, if the label is within code or data range, or after the label if it is outside.
Example output:
foo := $0001 ; Comment for label named "foo"
; Comment for label named "bar"
bar:
NAME
The attribute is followed by a string value which gives the name of the label. Empty names are allowed, in this case the disassembler will create an unnamed label (see the assembler docs for more information about unnamed labels).
SIZE
This attribute is optional and may be used to specify the size of the data
that follows. If a size greater than 1 is specified, the disassembler will
create labels in the form label+offs
for all bytes within the given
range, where label
is the label name given with the NAME
attribute, and offs
is the offset within the data.
PARAMSIZE
This optional attribute is followed by a numerical value. It tells the assembler that subroutine calls to this label are followed by "inline parameters" with the given number of bytes, like this:
JSR LabelWithParamSize2
.byte $00, $10
(return here)
code...
The SEGMENT
directive is used to specify a segment within the
disassembled code. The following attributes are recognized:
START
Followed by a numerical value. Specifies the start address of the segment.
END
Followed by a numerical value. Specifies the end address of the segment. The end address is the last address that is a part of the segment.
NAME
The attribute is followed by a string value which gives the name of the segment.
All attributes are mandatory. Segments must not overlap. The disassembler will
change back to the (default) .code
segment after the end of each defined
segment. That might not be what you want. As a rule of thumb, if you're using
segments, you should define segments for all disassembled code.
The ASMINC
directive is used to give the names of input files containing
symbol assignments in assembler syntax:
Name = value
Name := value
The usual conventions apply for symbol names. Values may be specified as hex (leading $), binary (leading %) or decimal. The values may optionally be signed.
NOTE: The include file parser is very simple. Expressions are not allowed, and
anything but symbol assignments is flagged as an error (but see the
IGNOREUNKNOWN
directive below).
The following attributes are recognized:
FILE
Followed by a string value. Specifies the name of the file to read.
COMMENTSTART
The optional attribute is followed by a character constant. It specifies the
character that starts a comment. The default value is a semicolon. This
value is ignored if IGNOREUNKNOWN
is true.
IGNOREUNKNOWN
This attribute is optional and is followed by a boolean value. It allows to ignore input lines that don't have a valid syntax. This allows to read in assembler include files that contain more than just symbol assignments. Note: When this attribute is used, the disassembler will ignore any errors in the given include file. This may have undesired side effects.
The following is a short example for an info file that contains most of the directives explained above:
# This is a comment. It extends to the end of the line
GLOBAL {
OUTPUTNAME "kernal.s";
INPUTNAME "kernal.bin";
STARTADDR $E000;
PAGELENGTH 0; # No paging
CPU "6502";
};
# One segment for the whole stuff
SEGMENT { START $E000; END $FFFF; NAME "kernal"; };
RANGE { START $E612; END $E631; TYPE Code; };
RANGE { START $E632; END $E640; TYPE ByteTable; };
RANGE { START $EA51; END $EA84; TYPE RtsTable; };
RANGE { START $EC6C; END $ECAB; TYPE RtsTable; };
RANGE { START $ED08; END $ED11; TYPE AddrTable; };
# Zero-page variables
LABEL { NAME "fnadr"; ADDR $90; SIZE 3; };
LABEL { NAME "sal"; ADDR $93; };
LABEL { NAME "sah"; ADDR $94; };
LABEL { NAME "sas"; ADDR $95; };
# Stack
LABEL { NAME "stack"; ADDR $100; SIZE 255; };
# Indirect vectors
LABEL { NAME "cinv"; ADDR $300; SIZE 2; }; # IRQ
LABEL { NAME "cbinv"; ADDR $302; SIZE 2; }; # BRK
LABEL { NAME "nminv"; ADDR $304; SIZE 2; }; # NMI
# Jump table at end of kernal ROM
LABEL { NAME "kscrorg"; ADDR $FFED; };
LABEL { NAME "kplot"; ADDR $FFF0; };
LABEL { NAME "kiobase"; ADDR $FFF3; };
LABEL { NAME "kgbye"; ADDR $FFF6; };
# Hardware vectors
LABEL { NAME "hanmi"; ADDR $FFFA; };
LABEL { NAME "hares"; ADDR $FFFC; };
LABEL { NAME "hairq"; ADDR $FFFE; };
da65 (and all cc65 binutils) is (C) Copyright 1998-2011, Ullrich von Bassewitz. For usage of the binaries and/or sources, the following conditions do apply:
This software is provided 'as-is', without any expressed or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.
Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:


Music Station
Home
Search
Type Of Search:
Album
Songs
Back
Search Results for {{songName}}
{% for songID,image,songs_title in zip(songIDs,images,songs_titles) %}
Song: {{songs_title|safe}}
{% endfor %}


@(customers: List[Customer]) @customerListVar = {
List of customers:
Total @customers.length customers


huh. I think I've heard of only dfinity and telegram before. It's turning in to shitcoinbase now.
actionslacks20-Sep-19 03:47 PM
it's a basket of walls st defi vc garbage. the geniuses who handle the hedge funds are moving over to crypto in a big way and your open source idealism isn't invited. coinbase probably made a bunch of money in this deal.(edited)
Why isn't Coinbase listing KMD? It is, after all, the best tech.
1
Neko20-Sep-19 05:31 PM
probably because of atomicdex
siu - Chainmakers20-Sep-19 05:35 PM
what could be stopping KMD from being listed in coinbase then ??? @Steve Lee@Audo
jl777c20-Sep-19 05:41 PM
probably lack of million dollar payment
ZEC paid millions for their coinbase listing
likely a million wouldnt be enough (unless you have shared ownership between coinbase)
Neko20-Sep-19 05:44 PM
interesting, you have inside sources on this one jl777c?
jl777c20-Sep-19 06:06 PM
zcash published a financial report, i think they paid $6 mil+ worth of ZEC for coinbase, not sure the exact details, but it is published
it is common knowledge it is pay to play in crypto, unless you have shared ownerships
Neko20-Sep-19 06:14 PM
thats a lot of dosh
no wonder the price only falls, they must be selling everything from the dev tax
mobipoi20-Sep-19 06:27 PM
@Tek "technically you shouldnt even fuck your woman for the complete 9 months she is pregnant" in regards to that nature has it so , as it been researched that women are most highly sexually aroused in their pregnant months , which makes sense as it makes the male high on sex during her most vulnerable month , she could barely move and has to rely on a male in those moment so if he leaves her survival reduces, hence why women grave sex alots when pregnant and that makes sure the man comes back also oxytocin is released during sex which encourages more pair bonding , again ensuring male comes back after hunt , and preparing for child rearing also testosterone drops in male and self sacrificial act becomes more pronounced etc... so yes sex in those nine months are imprinted in human nature(edited)
Obviously in today's world some of those instincts are not applicable , it like old legacy code running on new software but serves no purpose
Tek20-Sep-19 06:31 PM
>> as it has been researched
by who?

Realization that old money still knows how to manipulate any market


{% include head.html %}
{% include sidebar.html %}
Hello All.
Stop Completing
Start Living
Work Hard
{% include footer.html %}
{% include js.html %}


Puppet on Windows
This documentation applies to Puppet versions ≥ 2.7.6 and Puppet Enterprise ≥ 2.5. Earlier versions may behave differently.
Puppet runs on Microsoft Windows® and can manage Windows systems alongside *nix systems. These pages explain how to install and run Puppet on Windows, and describe how it differs from Puppet on *nix.
Installing
Puppet Labs provides pre-built, standalone .msi packages for installing Puppet on Windows.
Downloads
Supported Platforms
Puppet runs on the following versions of Windows :
- Windows Server 2003 and 2003 R2
- Windows Server 2008 and 2008 R2
- Windows 7
More
For full details, see Installing Puppet on Windows.
Running
Puppet Subcommands and Services
Windows nodes can run the following Puppet subcommands:
- Puppet agent, to fetch configurations from a puppet master and apply them
- The agent functions as a standard Windows service, and agent runs can also be triggered manually.
- Windows nodes can connect to any *nix puppet master server running Puppet 2.7.6 or higher.
- Puppet apply, to apply configurations from local manifest files
- Puppet resource, to directly manipulate system resources
- Puppet inspect, to send audit reports for compliance purposes
Because the installer doesn’t alter the system’s PATH variable, you must choose Start Command Prompt with Puppet from the Start menu to run Puppet commands manually.
Windows nodes can’t act as puppet masters or certificate authorities, and most of the ancillary Puppet subcommands aren’t supported on Windows.
Puppet’s Environment on Windows
- Puppet runs as a 32-bit process.
- Puppet has to run with elevated privileges; on systems with UAC, it will request explicit elevation even when running as a member of the local Administrators group.
- Puppet’s configuration and data are stored in
%ALLUSERSPROFILE%\Application Data\PuppetLabs
on Windows 2003, and in%PROGRAMDATA%\PuppetLabs
on Windows 7 and 2008.
More
For full details, see Running Puppet on Windows.
Writing Manifests for Windows
Resource Types
Some *nix resource types aren’t supported on Windows, and there are some Windows-only resource types.
The following resource types can be managed on Windows:
More
For full details, see Writing Manifests for Windows.
Troubleshooting
The most common points of failure on Windows systems aren’t the same as those on *nix. For full details, see Troubleshooting Puppet on Windows.
For Developers and Testers
To test pre-release features, or to hack and improve Puppet on Windows, you can run Puppet from source. This requires a fairly specific version of Ruby and several important gems. For full details, see Running Puppet from Source on Windows.


Just like the teeth nature gave you, teeth restored with veneers need gentle brushing and flossing every day. This will remove dental plaque and ensure good gum tissue health around the veneers. Regular checkups at the dental office will remain as important as always to your oral and general health. And keep in mind that as tough as veneers are, they may not be able to withstand forces that come from using your teeth as tools (to open packages, for example) or biting into very hard foods like candy apples — which isn't good for your natural teeth, either! And if you grind or clench your teeth at night, you might be advised to get a custom-made nightguard to protect your veneers — and your investment.
There are some situations in which veneers would be inappropriate. For example, if you have significantly misaligned teeth or a large gap, orthodontics might be a more appropriate solution than veneers. And if you have lost a lot of tooth structure from decay or trauma (or a particularly severe grinding habit), it might be better to restore your teeth with porcelain crowns that cover the entire tooth.


The size of the image is the first argument. This is in W x H for example: 800x600
Gummy image also supports aspects in X:Y format in Width or height for example 1920x10:9
There are some predefined sizes to use:
| Keyword |
Shortcuts |
Size |
| mediumrectangle | medrect | 300×250 |
| squarepopup | sqrpop | 250×250 |
| verticalrectangle | vertrec | 240×400 |
| largerectangle | lrgrec | 336×280 |
| rectangle | rec | 180×150 |
| popunder | pop | 720×300 |
| fullbanner | fullban | 468×60 |
| halfbanner | halfban | 234×60 |
| microbar | mibar | 88×31 |
| button1 | but1 | 120×90 |
| button2 | but2 | 120×60 |
| verticalbanner | vertban | 120×240 |
| squarebutton | sqrbut | 125×125 |
| leaderboard | leadbrd | 728×90 |
| wideskyscraper | wiskyscrpr | 160×600 |
| skyscraper | skyscrpr | 120×600 |
| halfpage | hpge | 300×600 |
| Keyword |
Size |
| cga | 320x200 |
| qvga | 320x240 |
| vga | 640x480 |
| wvga | 800x480 |
| svga | 800x480 |
| wsvga | 1024x600 |
| xga | 1024x768 |
| wxga | 1280x800 |
| wsxga | 1440x900 |
| wuxga | 1920x1200 |
| wqxga | 2560x1600 |
| Keyword |
Size |
| ntsc | 720x480 |
| pal | 768x576 |
| hd720 | 1280x720 |
| hd1080 | 1920x1080 |


Methods to compute linear h-step ahead prediction coefficients based on localised and iterated Yule-Walker estimates and empirical mean squared and absolute prediction errors for the resulting predictors. Also, functions to compute autocovariances for AR(p) processes, to simulate tvARMA(p,q) time series, and to verify an assumption from Kley et al. (2017), Preprint <http://personal.lse.ac.uk/kley/forecastSNSTS.pdf>.
| Version: | 1.2-0 |
| Depends: | R (≥ 3.2.3) |
| Imports: | Rcpp |
| LinkingTo: | Rcpp |
| Suggests: | testthat |
| Published: | 2017-06-18 |
| Author: | Tobias Kley [aut, cre], Philip Preuss [aut], Piotr Fryzlewicz [aut] |
| Maintainer: | Tobias Kley <t.kley at lse.ac.uk> |
| BugReports: | http://github.com/tobiaskley/forecastSNSTS/issues |
| License: | GPL-2 | GPL-3 [expanded from: GPL (≥ 2)] |
| URL: | http://github.com/tobiaskley/forecastSNSTS |
| NeedsCompilation: | yes |
| Materials: | NEWS |
| CRAN checks: | forecastSNSTS results |
| Reference manual: | forecastSNSTS.pdf |
| Package source: | forecastSNSTS_1.2-0.tar.gz |
| Windows binaries: | r-devel: forecastSNSTS_1.2-0.zip, r-release: forecastSNSTS_1.2-0.zip, r-oldrel: forecastSNSTS_1.2-0.zip |
| OS X binaries: | r-release: forecastSNSTS_1.2-0.tgz, r-oldrel: forecastSNSTS_1.2-0.tgz |
| Old sources: | forecastSNSTS archive |
Please use the canonical form https://CRAN.R-project.org/package=forecastSNSTS to link to this page.


Before Change
Set up the INSTEON PLM device class for the hass platform.
plm = hass.data["insteon_plm"]
device_list = []
for device in discovery_info:
name = device.get("address")
address = device.get("address_hex")
_LOGGER.info("Registered %s with binary_sensor platform.", name)
device_list.append(
InsteonPLMBinarySensorDevice(hass, plm, address, name)
)
async_add_devices(device_list)
class InsteonPLMBinarySensorDevice(BinarySensorDevice):
A Class for an Insteon device.
After Change
new_entity = InsteonPLMBinarySensor(device, state_key)
async_add_devices([new_entity])
class InsteonPLMBinarySensor(InsteonPLMEntity, BinarySensorDevice):
A Class for an Insteon device entity.