| Parameter | Value |
|---|---|
| hashtag | #gi2018 |
| start_day | 2018-09-17 |
| end_day | 2018-09-20 |
| timezone | Europe/London |
| theme | theme_light |
| accent | skyblue3 |
| accent2 | #B5D2E6 |
| kcore | 2 |
| topics_k | 6 |
| bigram_filter | 3 |
| fixed | TRUE |
| seed | 1 |
An analysis of tweets from the #gi2018 hashtag for the Genome Informatics conference, 17-20 September 2018, at the Wellcome Genome Campus, Hinxton UK.
A total of 2516 tweets from 533 users were collected using the rtweet
R package.
Filtered for dates 2018-09-17 - 2018-09-20 in the Europe/London timezone.
The “replies network”, composed from users who reply directly to one another, coloured by PageRank.
The “mentions network”, where users mention other users in their tweets. Filtered for a k-core of 2. Node colour and size adjusted according to PageRank score.
| screen_name | text | retweet_count |
|---|---|---|
| aaronquinlan | RI’s Key points: 1. Be skeptical of thy data 2. Plot thy data 3. Plot it different ways: by data processed, by source, by batch, etc. #gi2018 | 57 |
| lazappi | Second #GI2018 keynote @rafalab “Variability in high throughput data” https://t.co/yukgjoHvSZ | 33 |
| lazappi | If you prefer your science in meme form here is one of the key points from @rafalab #GI2018 keynote this morning https://t.co/Xy9ra15Cd3 | 22 |
| sexchrlab | Genome Informatics #GI2019 November 6 - 9, 2019 Abstract Deadline: August 16, 2019 https://t.co/w7wLlPt6Uh #GI2018 | 21 |
| ksamocha | Laura Huerta #GI2018: Expression Atlas (https://t.co/vBdOlZP3Bn) is an open-access resource for gene expression data that has >3300 datasets currently. | 18 |
| lauhuema | Slides from my presentation about @emblebi @ExpressionAtlas at #GI2018 are available at @F1000Research in case anyone wants to have a look! https://t.co/hbCI1dPvyn https://t.co/cXUAPHq39w | 17 |
| AliciaOshlack |
I’ll be tweeting from #GI2018 which is getting underway in a few hours and I’m super excited! Program: https://t.co/gUIz4y6CgY Poster channel: https://t.co/xrktvzLo6G |
16 |
| JavierHerrero7 | .@GreeneScientist — After the controversy on ‘research parasites’ (see https://t.co/aBGwIlZAS5 and https://t.co/57AsQAWCvj), new awards for researchers re-using data at https://t.co/0UTHhiIG77. Deadline approaching fast (30 Sep) #gi2018 | 16 |
| imarmean | Sarah Teichmann on the exponential growth of single cell methods #GI2018 https://t.co/ByqAS2XT3P https://t.co/803Rj2Bv8k | 16 |
| sexchrlab |
Next at #GI2018 @srikosuri Reminding us that every person has 4-5 million deviations from the reference, pointing us to a preprint from the lab: Many rare genetic variants have unrecognized large-effect disruptions to exon recognition https://t.co/DACPefBheE |
15 |
| screen_name | text | favorite_count |
|---|---|---|
| aaronquinlan | RI’s Key points: 1. Be skeptical of thy data 2. Plot thy data 3. Plot it different ways: by data processed, by source, by batch, etc. #gi2018 | 169 |
| lazappi | Second #GI2018 keynote @rafalab “Variability in high throughput data” https://t.co/yukgjoHvSZ | 110 |
| lazappi | If you prefer your science in meme form here is one of the key points from @rafalab #GI2018 keynote this morning https://t.co/Xy9ra15Cd3 | 57 |
| AliciaOshlack |
I’ll be tweeting from #GI2018 which is getting underway in a few hours and I’m super excited! Program: https://t.co/gUIz4y6CgY Poster channel: https://t.co/xrktvzLo6G |
46 |
| aaronquinlan | Thank you to everyone that attended and presented at this year’s #gi2018 meeting. The quality of the work was exceptionally high, and a sign of great things to come. Genome Informatics is in great hands with @sexchrlab and @AliciaOshlack. See you at #gi2019! | 46 |
| sexchrlab |
On my way to Genome Informatics 2018 #GI2018 The difference is gonna be like night and day. :) https://t.co/15B4de1wFB |
41 |
| ZaminIqbal | My awesome student Rachel Colquhoun @rmcolq talking about pan genome SNP/indel and variation calling in bacteria! (Primarily for @nanopore ) #GI2018 https://t.co/MAYfDbgwpX | 37 |
| AliciaOshlack | You might have noticed that the #GI2018 conference logo is actually a clustering tree by @_lazappi_ https://t.co/QhIFyFHnzU | 36 |
| imarmean | Barbara Englehardt (@BeEngelhardt) : Machine learning: biggest open question: could we have used logistic regression instead? Always ask yourself that! #gi2018 | 36 |
| AliciaOshlack | Hanging out in Cambridge with @sexchrlab after #GI2018 https://t.co/KlyidQQOAC | 32 |
| screen_name | text | quote_count |
|---|---|---|
| deniseOme | .@ACSCevents. Looking forward to the 18th edition of #genomeinformatics on this beautiful @wellcomegenome campus. Will be live tweeting my #GI2018 impressions, peppered with some #OpenTargets @targetvalidate flavour. https://t.co/OjIxIbgmwo | 3 |
| HKhiabanian | Thrilled for the opportunity to present at #GI2018 on the results of our collaboration with Precision Medicine Program @RutgersCancer. Here are the slides for my upcoming talk: https://t.co/JbqHgwO04L https://t.co/ugUgKi9Vcv | 3 |
| ConnectingSci | Welcome to everyone arriving for #GI2018 today! https://t.co/bHloGWSdk9 | 3 |
| AliciaOshlack | The three commandments #gi2018 https://t.co/1MZv9JBxLD | 2 |
| Nicola_Lady | The “Our Father” of doing biological data analysis 🙏. Enjoying following the #GI2018 tweets - keep em coming! https://t.co/Gj8HoMoejP | 2 |
| imarmean | Hagen Tilgner presenting their recent work : preprint below #GI2018 https://t.co/5t7dTepWiY | 1 |
| GreeneScientist |
Opportunity at Novartis in Basel 👇 Potentially of interest to a number of folks in the #GI2018 audience! https://t.co/LyexAtPS3n |
1 |
| sexchrlab | As we watch and discuss all the amazing computational and methodological advances at Genome Informatics, we should be keenly aware of who we are (and are not) training, and how we can do better in the future. https://t.co/cn3YxACUjp #GI2018 | 1 |
| JesperMaag | Shameless plug for #GI2018. gganatogram: VIsualize the human/mouse anatograms from @ExpressionAtlas using ggplot2 https://t.co/BNyFinyZZo | 1 |
| imarmean | Genome Informatics 2018: soon to start, see below for online program and posters #GI2018 https://t.co/Hsl1sPetRj | 1 |
| screen_name | text | favorite_count |
|---|---|---|
| lazappi | Second #GI2018 keynote @rafalab “Variability in high throughput data” https://t.co/yukgjoHvSZ | 110 |
| sexchrlab |
On my way to Genome Informatics 2018 #GI2018 The difference is gonna be like night and day. :) https://t.co/15B4de1wFB |
41 |
| ZaminIqbal | My awesome student Rachel Colquhoun @rmcolq talking about pan genome SNP/indel and variation calling in bacteria! (Primarily for @nanopore ) #GI2018 https://t.co/MAYfDbgwpX | 37 |
| AliciaOshlack | You might have noticed that the #GI2018 conference logo is actually a clustering tree by @_lazappi_ https://t.co/QhIFyFHnzU | 36 |
| AliciaOshlack | Hanging out in Cambridge with @sexchrlab after #GI2018 https://t.co/KlyidQQOAC | 32 |
| GreeneScientist |
As a heads up, the title of my #GI2018 talk has changed. But feel free to tweet any of the content. I’ve exported PNGs of the slides in case you want to tweet about one or more of them: https://t.co/GoG64RH9zP https://t.co/FmvYSnWTlr |
27 |
| michaelhoffman | Loving the #GI2018 tweets but twitter needs a redundancy filter: https://t.co/J0izh4NktB | 27 |
| lauhuema | Slides from my presentation about @emblebi @ExpressionAtlas at #GI2018 are available at @F1000Research in case anyone wants to have a look! https://t.co/hbCI1dPvyn https://t.co/cXUAPHq39w | 27 |
| GreeneScientist | Now @rafalab is judging my #piechart at #GI2018. https://t.co/KWujRuWzuc | 25 |
| markrobinsonca | Front row at #gi2018 .. @rafalab https://t.co/rwu80kEtTA | 25 |
The top 100 words used 3 or more times.
Words that were tweeted next to each other at least 3 times.
Top 10 words associated with 6 topics identified by LDA.
Most representative tweets for each topic
| screen_name | text | gamma |
|---|---|---|
| pmelsted | JC: De novo SV in parents can be verified lacking grandparents and transmitted in offsprint. High power to verify true de novo SV. Can visually audit de novo SV calls with SV-Plaudit. Scored using academic mechanical turk (Pizza) #GI2018 | 0.9930245 |
| pmelsted | JB: explanation of 5K deletion, non-allelic homologous recombination, most likely a variant but not de novoe. Estimate of 1SV per 10samples, (compare to 50-70 SNPs per sample de novo), based on 7 calls in 74 parents. Finds lower (possibly) de novo SV in second generation #GI2018 | 0.9925124 |
| pmelsted | IF: scRNA detection rate of variants is a function of gene expression. Highly sparse data. Mutations identify tumor cells, overlays variant assignments with clustering based on expression. Detected TP53 mutant cluster with allele specific expression. #GI2018 | 0.9925124 |
| pmelsted | ST: @humancellatlas project, 22 tissues, 185 projects. Highlighting the maternal-fetal interface. How is fetal co-existence possible wrt immune response? Single cell reveals clusters of maternal and fetal cells (clustered by expression, revealed by dna sequecing). #GI2018 | 0.9922271 |
| imarmean | .@koenvdberge_Be: several papers have noted that bulk RNA-seq DE methods are not worse than fine tuned scRNA-seq tools. BUT zero inflation in scRNA-seq data still has an effect -> lets make bulk RNA-seq DE methods account for zero inflation! #gi2018 | 0.9922271 |
| pmelsted | KP: Sequence motifs fail to explain key aspects of protein-DNA binding. Evidence for high affinity, but no nucleotide sequence motif. Different sequences can have the same DNA shape. Hypothesis: DBPs can detect other things than sequence motifs. #GI2018 | 0.9912239 |
| imarmean | KPollard: nice introduction of the hypotesis that DNA binding proteins (DBPs) recognize shape of DNA and not sequence motifs! one of the many arguments: most DNA binding proteins have high affinity for sequences that lack a nucleotide sequence motif #gi2018 | 0.9912239 |
| JavierHerrero7 | .@nishadi_desilva talking about fungus Z. tritici, a pathogen for wheat. MFS1 gene seems to be the main player in multi-drug resistance (showing an #Ensembl GeneTree, taking me down memory lane). Community annotation allows to give pathogen genomes some extra TLC. #gi2018 | 0.9912239 |
| pmelsted | NDS: Multidrug resistance in Z. tritici fungi, high mutation rates, overexpression of MFS1 confers resistance to drugs, inactivation of MFS1 increases efficiency. PHI-Base: annotations to find orthologs in related fungi #GI2018 | 0.9908294 |
| imarmean |
Teichmann: CellPhoneDB: that combines 1. selected and membrane proteins 2. curated protein complexes 3 protein-protein interactions to build cell-cell communication networks from single-cell transcriptomes , paper in press #gi2018 |
0.9908294 |
| screen_name | text | gamma |
|---|---|---|
| pmelsted | RC: Index reference graph, map to collection of graphs, generate consensus and genotype. Indexed using minimizers rather than k-mers. Sketch reads (seed) compare to index, pick path between hits using maximum likelihood (extend). Genotyping using a poisson model. #GI2018 | 0.9925124 |
| pmelsted | LB: Long read alignment, find anchor k-mers (seed) that are in long and short reads. Find paths between anchors (extend). Heuristics developed for genomic data (e.g. uniform cov) don’t translate to transcriptome data. Coverage varies more, branching nodes for splicing #GI2018 | 0.9922271 |
| pmelsted | LB: IGV plot after correction shows cleaner data with fewer errors and accurate splice junctions. Two methodologies, align short reads to long reads and correct, second is to build a graph structure from short reads, align long reads to graph. #GI2018 | 0.9919192 |
| pmelsted | Prithika Sritharan: using variation graphs to encode yeast diversity #GI2018 National Collection of Yeast Cultures, contains 4K strains from 530 species. Looking at variant discovery, limitations of reference based variant calling. Worse for diverse strains. | 0.9915859 |
| AnillaManrique | My design team is looking for enterprise data science professionals with >3 years experience as research subjects. Help us create intuitive and painless user experiences for your field! #gi2018 #DataScientist #DataScience #DataGovernance #DataOps #Data | 0.9903978 |
| nmensah5 | Patrick Brennan at #GI2018 : @nationwidekids plan to build a big data warehouse (using #hadoop and #spark) for querying genomic variants, but currently no data sharing with other hospitals. Would be a v. good future direction for the national #bioinformatics solution @NHSgmc | 0.9903978 |
| pmelsted | LB: Methods designed for genomic data. Short read alignments suffer from bias towards major isoform, CPU time. Long reads graph alignment faster, but graph complexity is hard #GI2018 | 0.9903978 |
| ksamocha | Guillaume Gautreau #GI2018: The pangenome is the union of sequence entities shared by genomes of interest. Can partition the pangenome to show core elements shared across genomes vs accessory elements. As you add more elements, though, the number of core genes drops. | 0.9903978 |
| imarmean | Sritharan: comparing the read alignment quality between linear and graph-based reference, the graph based ref alignments lead to 8-41% of reads having increased read alignment quality scores! #GI2018 | 0.9899234 |
| JavierHerrero7 | .@NikkaRyanK — Supernova outputs phased diploid genome. Supernova v2.0 produces higher contig N50. From contigs, generate lines, micro-assemblies, super-scaffolding… several steps to get the final assembly #gi2018 | 0.9899234 |
| screen_name | text | gamma |
|---|---|---|
| sexchrlab |
First @rafalab goes through a toy example that makes a great point: Summary statistics of height: Average: 6.1 ft Standard deviation: 7.8 ft EDA shows an outlier - b/c EU student reported in cm, not inches. Fix this: Average 5.75 ft, StDev 3 inches #GI2018 #LookAtData |
0.9922271 |
| ksamocha | .@ellenleffler #GI2018: Testing for host-parasite associations using 1690 SNPs in merozoite surface genes (parasite) and 4055 SNPs in blood group genes (host). Flat QQ plot, but one apparent association signal (parasite: MSP4 and MSP2). | 0.9912239 |
| asier_gonzalez_ | Nice work of Minerva Trejo Arellano studying the links of methylation and darkness induced senescence in Arabidopsis. Only modest methylation changes were found, but differential gene expression and pathway analyses support the finding of local changes in methylation #gi2018 | 0.9912239 |
| JavierHerrero7 | .@RmMasa — Evolutionary turnover: conserved or diverged if elements is present but not active. Active promoter evolve more slowly than active enhancers and than primed enhancers. Differences between tissue-specific vs tissue shared elements EXCEPT for primed enhancers. #gi2018 | 0.9908294 |
| MKarimzade | #GI2018 Ellen Leffler tested for 7 million pairwise association of 1690 SNPs in 148 malaria merozite surface genes with 4055 SNPs in 39 human blood group genes. Two hits: both close to each other at chromosome 2, with OR of 0.39 for GCNT2 and 2.89 for GBGT1 | 0.9908294 |
| pmelsted | EL: new view: take parasite variation into account. sequence parasite genomes, test for assoc between host and parasite, infected blood samples should yield dna from the parasite at good coverage. Sequenced 900 blood samples #GI2018 | 0.9908294 |
| ksamocha | Gaither #GI2018: Use ViennaRNA package to estimate structural tendencies of all human synonymous SNPs. Focusing on delta minimum free energy (dMFE) measure. Low dMFE = stabilizing; high dMFE = destabilizing. | 0.9903978 |
| pmelsted | EL: Look for associations between 1.6K snps in parasites vs 4K snps in blood group genes. 7million pairwise tests. Flat QQ plot corresponding to lack of structure between the two sets. Two peaks on the manhattan plot #GI2018 | 0.9903978 |
| pmelsted | First talk of 3rd session, @ellenleffler on host and parasite genomes in malaria. How does genetic variation influence susceptibility to severe malaria? Gwas approach using 5K cases and controls. new assoca with large structural variant #GI2018 | 0.9903978 |
| aaronquinlan | Fabulous, engaging story from @nishadi_desilva about wheat domestication and the consequent many mode of pathogen attack. Weaving in data resources, pathogen-host interactions, and cool biology. A truly enthralling, exceptional talk. #gi2018 | 0.9903978 |
| screen_name | text | gamma |
|---|---|---|
| pmelsted | GG: highlighting Bandage (fantastic software from @rrwick ) which supports GFA. New software GfaViz, interactive and cli mode, supports GFA2, selection of layout algorithms, can save layout/options into the GFA file (I can haz software?) #GI2018 | 0.9919192 |
| pmelsted | NDS: Z. tritici 519bp insert on accessory chromosome in anti-fungal resistance strains, overexpresses MFS1. EnsemblFungi community based projects to spread knowledge, neccessary to standardize gene names (often using manual annotation) #GI2018 | 0.9915859 |
| pmelsted | MWS: mask out PAR, look for evidence of Y, if there is not evidence of Y, remove it from the reference. Depth ratio of chr19 to Y shows that reads map to Y, but lower depth ratio. Read balance of variants, typically two copies ratio of 0.5, for hets. Y is messed up #GI2018 | 0.9915859 |
| pmelsted | SY: plotting metrics from cloud VMs allows users to identify issues. Worklow engine allows “self healing”, detect anomalies and restart/relaunch workers automatically, outputs to email and slack for human consumption #GI2018 | 0.9908294 |
| pmelsted | SY: separating data analysis from workflow execution. Focusing on operations management: tracking and monitoring execution of workflow in the cloud. Using https://t.co/FabIANAAzH for cross cloud operations, https://t.co/VFb2YZeZew for config, workflows using airflow #GI2018 | 0.9908294 |
| imarmean | .@JeffreyMKidd : current genome reference is a boxer-derived genome BUT not perfect 19k gaps, 3.2k unplaced contigs, missing gene models … -> genome assembly of a new individual will capture more genetic diversity #gi2018 | 0.9908294 |
| MKarimzade | #GI2018 Ever wonder how large scale data processing is managed in #PCAWG? Sergei Yakneen discusses 4 main steps: Provisioning with Terraform, configuration with Saltstack, workflow with Airflow, and an in-house developed self-healing operation management. | 0.9903978 |
| pmelsted | GG: GfaViz can vizualize scaffolding between contigs, can visualize read to read alignments, pipeline taking minimap2 PAF output to GFA2, also for read to contigs (sam to GFA2). GfaViz coming out later this year #GI2018 | 0.9903978 |
| pmelsted | JK: Breed structure enables trait mapping. Existing genome, canfam3, 19K gaps, incomplete or missing gene models. From the old days of yore done with sanger sequencing of plasmids and fosmids #GI2018 | 0.9903978 |
| pmelsted | Sarah Carey: Genome analysis in a polymorphic moss with large ancient sex chromosomes. Haploid genome, with UV sex chromosomes. U (female) and (V) male. Third of the genome is sex chromosomes. Assembled using PacBio #GI2018 | 0.9899234 |
| screen_name | text | gamma |
|---|---|---|
| pmelsted | SK: rare variants seem to play a role in underexpression. inserted synthetic library into exons to report splicing. Took 28K variants from ExAC in exons. Splice disrupting variants, occur at exon intron boundaries, but SNP density is lower at boundary #GI2018 | 0.9925124 |
| pmelsted | RI: Batch effect from sequencer removed, turns out to be similar. Showing earlier results from microarray with similar results (species signal stronger than tissues). What are the “probe effects” in RNA-Seq. Number of transcripts in genes explains variability, GC bias too #GI2018 | 0.9919192 |
| pmelsted | BE: tGPLVM, Q factors (latent vars), noiseless obs drawn from Gaussian process, composite kernel and observations with heavy tail residuals (I’m pretty sure that explains the acronym), trust me the slides were comprehensible as well as the delivery, not this tweet though #GI2018 | 0.9912239 |
| pmelsted | .@rmcolq: Pangenome variation inference from nanopore of illumina data #GI2018. Looking for variation within genes accross species/strains as well as inclusion of genes. 3K core genes, 90K total number of genes, normal E. coli has 5K genes | 0.9912239 |
| pmelsted | KP: in autism patients, we don’t see depletion of deletions at TAD boundaries, not enough time for evolution to act. Keynote message: Variant effect predictor tools should model the TAD explicitly. First results of tools look like Hi-C generated maps #GI2018 | 0.9912239 |
| imarmean | .@rafalab Comparing species (mouse/human) RNA-seq from microarrays and RNA-seq: initially no correlation BUT there are probe effects, difference in no of transcripts per species, GC content effects that interfere .. #gi2018 | 0.9899234 |
| pmelsted | SY: Pan Cancer Analysis of Whole Genomes, analysing genomes from 2834 donors. Data processing timeline, across 2 years, 16K compute cores, processing issues cause delays, hard to keep sustained throughput #GI2018 | 0.9899234 |
| JavierHerrero7 | .@HKhiabanian —LOHGIC: LOH-Germline Inference Calculator. Tested on 64 patients. Generally correct. One curious case where a BRCA2 mutation was inferred to be somatic instead of germline. In that patient, mutation was indeed germline but reverted in the tumour #gi2018 | 0.9893998 |
| MKarimzade | #GI2018 @HKhiabanian: 1/ Often in clinic you have tumour only data. Your expected allele frequency for each depends on tumour purity, estimated by a pathologist without estimate of variance. Solution? Use binomial likelihood of each possible genotype in an interval of purity. | 0.9893998 |
| pmelsted | KP: deleterious deletions will be depleted over time, looking at rare variants in patients and healthy people, fixed differences between primates. Deletions are depleted at the BE, 10-fold reduction compared to background #GI2018 | 0.9893998 |
| screen_name | text | gamma |
|---|---|---|
| MKarimzade | #GI2018 1/ @nameluem used 733 DNase-seq data from 439 different human cell types, covering 21% of the genome in total and 3.5 million DNase hypersensitive sites. They used NMF with k=16 and labeled each DHS based on its assigned cell type. This provides a new vocabulary .. | 0.9908294 |
| pmelsted | KP: enters minefield territory, “challenges and limitations of ML in genomics”. Training data: pairs of enhancer promoter sites, annotated by strength of interaction (actually binary). Predictions are better than “closest gene”. #GI2018 | 0.9903978 |
| pmelsted | RI: Technical vs biological variability. Need technical replicates to distinguish variability that is natural vs variability due to technologies. NGS does not eliminate biological variability. Moves into DNA methylation examples #GI2018 | 0.9899234 |
| pmelsted | KP: cryptic errors made: most ML models assume IID, methods use this aggressively. Genomic data is not IID, dependent observations can appear in training and test set, they “bleeding over” overestimating performance #GI2018 | 0.9899234 |
| ACSCevents | 17 years after the first #Genome #Informatics conference (in 2001), today participants arrive for #GI2018. Thanks to advances in technology this continues to be one of our most popular topics, as the human #genetics community strives to progress in this fast moving field. #ACSC30 https://t.co/2LSRvQ2XcY | 0.9899234 |
| sexchrlab | Patrick Brennan: Nationwide Children’s has both clinical genetics (CLIA) and research genetics to interplay and improve diagnosis and treatment of childhood cancers (typically fresh-frozen, but sometimes fixed samples). #GI2018 | 0.9899234 |
| ksamocha | Jordana Bell (@jordanatbell) #GI2018: Studied methylation variability in 400 twins from the TwinsUK cohort. Looked at 772k CpGs after QC. Correlation in twin methylation profiles were consistent with heritability. | 0.9893998 |
| JavierHerrero7 | .@nameluem — Uses DNAse I to look at accessible chromatin. Current maps of the human regulatory regions have scope for improvements. Unclear what the landscape is for any particular gene. Still unclear how to interpret non-coding regulatory elements. #gi2018 | 0.9888188 |
| deniseOme | .@jon_belyeu Great to see a talk at #gi2018 using the CEPH Human Genome Diversity Cell Line Panel. The precursors of 1000G, 10K, 100K genome resources for human genetics/genomics. https://t.co/lUyZnoACac | 0.9888188 |
| pmelsted | KP: Results revealed distinct genomic signatures of looping DNA. Common ML errors: “always no” predictors can give good performance in unbalanced sets (most E-P sites are not interacting) #GI2018 | 0.9881705 |
Links to GitHub, GitLab, BitBucket, Bioconductor or CRAN mentioned in Tweets.
| Name | Tweets | Retweets | Type | Link |
|---|---|---|---|---|
| SV-plaudit | 3 | 5 | GitHub | jbelyeu/sv-plaudit |
| GrapeTree | 2 | 5 | GitHub | achtman-lab/grapetree |
| edgeR.html | 1 | 6 | Bioc | bioconductor.org/packages/edgeR.html |
| tximport.html | 1 | 6 | Bioc | bioconductor.org/packages/tximport.html |
| vartrix | 4 | 2 | GitHub | 10xgenomics/vartrix |
| XYalign | 4 | 1 | GitHub | wilsonsayreslab/xyalign |
| samplot | 2 | 3 | GitHub | ryanlayer/samplot |
| vg | 2 | 3 | GitHub | vgteam/vg |
| clustree | 1 | 4 | GitHub | lazappi/clustree |
| pandora | 4 | 0 | GitHub | rmcolq/pandora |
| graphtyper | 1 | 3 | GitHub | decodegenetics/graphtyper |
| PPanGGOLiN | 1 | 3 | GitHub | ggautreau/ppanggolin |
| clustree | 1 | 2 | CRAN | CRAN.R-project.org/package=clustree |
| DESCHRAMBLER | 1 | 2 | GitHub | jkimlab/deschrambler |
| SpatialDE | 2 | 0 | GitHub | teichlab/spatialde |
| multi-plier | 1 | 1 | GitHub | greenelab/multi-plier |
| zinbwave | 1 | 1 | GitHub | drisso/zinbwave |
| zingeR | 1 | 1 | GitHub | statomics/zinger |
| bifrost | 1 | 0 | GitHub | pmelsted/bifrost |
| bifrost | 1 | 0 | GitHub | pmelsted/bifrost |
| butler | 1 | 0 | GitHub | llevar/butler |
| DEXSeq.html | 1 | 0 | Bioc | bioconductor.org/packages/DEXSeq.html |
| DRIMSeq.html | 1 | 0 | Bioc | bioconductor.org/packages/DRIMSeq.html |
| GFA-spec | 1 | 0 | GitHub | gfa-spec/gfa-spec |
| gi2018-twitter | 1 | 0 | GitHub | lazappi/gi2018-twitter |
| Index | 1 | 0 | GitHub | altius/index |
| IsoformSwitchAnalyzeR.html | 1 | 0 | Bioc | bioconductor.org/packages/IsoformSwitchAnalyzeR.html |
| lumpy-sv | 1 | 0 | GitHub | arq5x/lumpy-sv |
| NanoSim | 1 | 0 | GitHub | bcgsc/nanosim |
| pathoscore | 1 | 0 | GitHub | quinlan-lab/pathoscore |
| Pathoscore | 1 | 0 | GitHub | quinlan-lab/pathoscore |
| PLIER | 1 | 0 | GitHub | wgmao/plier |
| scRNA-tools | 1 | 0 | GitHub | oshlack/scrna-tools |
| shinyngs | 1 | 0 | GitHub | pinin4fjords/shinyngs |
| stageR.html | 1 | 0 | Bioc | bioconductor.org/packages/stageR.html |
| targetfinder | 1 | 0 | GitHub | shwhalen/targetfinder |
## ─ Session info ───────────────────────────────────────────────────────────────
## setting value
## version R version 4.0.0 (2020-04-24)
## os macOS Catalina 10.15.6
## system x86_64, darwin17.0
## ui X11
## language (EN)
## collate en_US.UTF-8
## ctype en_US.UTF-8
## tz Europe/Berlin
## date 2020-09-01
##
## ─ Packages ───────────────────────────────────────────────────────────────────
## package * version date lib source
## askpass 1.1 2019-01-13 [1] CRAN (R 4.0.0)
## assertthat 0.2.1 2019-03-21 [1] CRAN (R 4.0.0)
## backports 1.1.8 2020-06-17 [1] CRAN (R 4.0.0)
## bitops 1.0-6 2013-08-17 [1] CRAN (R 4.0.0)
## callr 3.4.3 2020-03-28 [1] CRAN (R 4.0.0)
## clamour * 0.1.0 2020-09-01 [1] Github (lazappi/clamour@c8ea1c7)
## cli 2.0.2 2020-02-28 [1] CRAN (R 4.0.0)
## colorspace 1.4-1 2019-03-18 [1] CRAN (R 4.0.0)
## crayon 1.3.4 2017-09-16 [1] CRAN (R 4.0.0)
## curl 4.3 2019-12-02 [1] CRAN (R 4.0.0)
## digest 0.6.25 2020-02-23 [1] CRAN (R 4.0.0)
## dplyr * 1.0.1 2020-07-31 [1] CRAN (R 4.0.2)
## ellipsis 0.3.1 2020-05-15 [1] CRAN (R 4.0.0)
## emo * <IP_ADDRESS>00 2020-08-17 [1] Github (hadley/emo@3f03b11)
## evaluate 0.14 2019-05-28 [1] CRAN (R 4.0.0)
## fansi 0.4.1 2020-01-08 [1] CRAN (R 4.0.0)
## farver 2.0.3 2020-01-16 [1] CRAN (R 4.0.0)
## forcats * 0.5.0 2020-03-01 [1] CRAN (R 4.0.0)
## fs * 1.5.0 2020-07-31 [1] CRAN (R 4.0.2)
## generics 0.0.2 2018-11-29 [1] CRAN (R 4.0.0)
## ggforce 0.3.2 2020-06-23 [1] CRAN (R 4.0.2)
## ggplot2 * 3.3.2 2020-06-19 [1] CRAN (R 4.0.2)
## ggraph * 2.0.3 2020-05-20 [1] CRAN (R 4.0.0)
## ggrepel * 0.8.2 2020-03-08 [1] CRAN (R 4.0.0)
## ggtext * 0.1.0 2020-06-04 [1] CRAN (R 4.0.2)
## glue 1.4.1 2020-05-13 [1] CRAN (R 4.0.0)
## graphlayouts 0.7.0 2020-04-25 [1] CRAN (R 4.0.0)
## gridExtra 2.3 2017-09-09 [1] CRAN (R 4.0.0)
## gridtext 0.1.1 2020-02-24 [1] CRAN (R 4.0.2)
## gtable 0.3.0 2019-03-25 [1] CRAN (R 4.0.0)
## here * 0.1 2017-05-28 [1] CRAN (R 4.0.0)
## highr 0.8 2019-03-20 [1] CRAN (R 4.0.0)
## htmltools 0.5.0 2020-06-16 [1] CRAN (R 4.0.0)
## httr 1.4.2 2020-07-20 [1] CRAN (R 4.0.2)
## igraph * 1.2.5 2020-03-19 [1] CRAN (R 4.0.0)
## janeaustenr 0.1.5 2017-06-10 [1] CRAN (R 4.0.0)
## jsonlite 1.7.0 2020-06-25 [1] CRAN (R 4.0.0)
## kableExtra * 1.2.1 2020-08-27 [1] CRAN (R 4.0.2)
## knitr * 1.29 2020-06-23 [1] CRAN (R 4.0.0)
## labeling 0.3 2014-08-23 [1] CRAN (R 4.0.0)
## lattice 0.20-41 2020-04-02 [1] CRAN (R 4.0.0)
## lifecycle 0.2.0 2020-03-06 [1] CRAN (R 4.0.0)
## lubridate * 1.7.9 2020-06-08 [1] CRAN (R 4.0.0)
## magick * 2.4.0 2020-06-23 [1] CRAN (R 4.0.0)
## magrittr 1.5 2014-11-22 [1] CRAN (R 4.0.0)
## markdown 1.1 2019-08-07 [1] CRAN (R 4.0.0)
## MASS 7.3-51.6 2020-04-26 [1] CRAN (R 4.0.0)
## Matrix 1.2-18 2019-11-27 [1] CRAN (R 4.0.0)
## modeltools 0.2-23 2020-03-05 [1] CRAN (R 4.0.0)
## munsell 0.5.0 2018-06-12 [1] CRAN (R 4.0.0)
## NLP 0.2-0 2018-10-18 [1] CRAN (R 4.0.0)
## openssl 1.4.2 2020-06-27 [1] CRAN (R 4.0.0)
## pillar 1.4.6 2020-07-10 [1] CRAN (R 4.0.2)
## pkgconfig 2.0.3 2019-09-22 [1] CRAN (R 4.0.0)
## plyr 1.8.6 2020-03-03 [1] CRAN (R 4.0.0)
## png 0.1-7 2013-12-03 [1] CRAN (R 4.0.0)
## polyclip 1.10-0 2019-03-14 [1] CRAN (R 4.0.0)
## processx 3.4.3 2020-07-05 [1] CRAN (R 4.0.2)
## ps 1.3.3 2020-05-08 [1] CRAN (R 4.0.0)
## purrr * 0.3.4 2020-04-17 [1] CRAN (R 4.0.0)
## R6 2.4.1 2019-11-12 [1] CRAN (R 4.0.0)
## RColorBrewer * 1.1-2 2014-12-07 [1] CRAN (R 4.0.0)
## Rcpp 1.0.5 2020-07-06 [1] CRAN (R 4.0.0)
## RCurl 1.98-1.2 2020-04-18 [1] CRAN (R 4.0.0)
## reshape2 1.4.4 2020-04-09 [1] CRAN (R 4.0.0)
## rlang 0.4.7 2020-07-09 [1] CRAN (R 4.0.2)
## rmarkdown 2.3 2020-06-18 [1] CRAN (R 4.0.0)
## rprojroot 1.3-2 2018-01-03 [1] CRAN (R 4.0.0)
## rstudioapi 0.11 2020-02-07 [1] CRAN (R 4.0.0)
## rtweet * 0.7.0 2020-01-08 [1] CRAN (R 4.0.0)
## rvest * 0.3.6 2020-07-25 [1] CRAN (R 4.0.2)
## scales 1.1.1 2020-05-11 [1] CRAN (R 4.0.0)
## selectr 0.4-2 2019-11-20 [1] CRAN (R 4.0.0)
## sessioninfo 1.1.1 2018-11-05 [1] CRAN (R 4.0.0)
## slam 0.1-47 2019-12-21 [1] CRAN (R 4.0.0)
## SnowballC 0.7.0 2020-04-01 [1] CRAN (R 4.0.0)
## stringi 1.4.6 2020-02-17 [1] CRAN (R 4.0.0)
## stringr * 1.4.0 2019-02-10 [1] CRAN (R 4.0.0)
## tibble 3.0.3 2020-07-10 [1] CRAN (R 4.0.2)
## tidygraph 1.2.0 2020-05-12 [1] CRAN (R 4.0.0)
## tidyr * 1.1.1 2020-07-31 [1] CRAN (R 4.0.2)
## tidyselect 1.1.0 2020-05-11 [1] CRAN (R 4.0.0)
## tidytext * 0.2.5 2020-07-11 [1] CRAN (R 4.0.2)
## tm 0.7-7 2019-12-12 [1] CRAN (R 4.0.0)
## tokenizers 0.2.1 2018-03-29 [1] CRAN (R 4.0.0)
## topicmodels * 0.2-11 2020-04-19 [1] CRAN (R 4.0.0)
## tweenr 1.0.1 2018-12-14 [1] CRAN (R 4.0.0)
## usethis 1.6.1 2020-04-29 [1] CRAN (R 4.0.0)
## utf8 1.1.4 2018-05-24 [1] CRAN (R 4.0.0)
## vctrs 0.3.2 2020-07-15 [1] CRAN (R 4.0.2)
## viridis * 0.5.1 2018-03-29 [1] CRAN (R 4.0.0)
## viridisLite * 0.3.0 2018-02-01 [1] CRAN (R 4.0.0)
## webshot * 0.5.2 2019-11-22 [1] CRAN (R 4.0.0)
## withr 2.2.0 2020-04-20 [1] CRAN (R 4.0.0)
## wordcloud * 2.6 2018-08-24 [1] CRAN (R 4.0.0)
## xfun 0.16 2020-07-24 [1] CRAN (R 4.0.2)
## xml2 * 1.3.2 2020-04-23 [1] CRAN (R 4.0.0)
## yaml 2.2.1 2020-02-01 [1] CRAN (R 4.0.0)
##
## [1] /Library/Frameworks/R.framework/Versions/4.0/Resources/library


A tour guide app for you
You can visit anywhere with our guides
We will make your tour memorable
PLAN LESS, TRAVEL MORE
We are here to help you
Your preference is our first priority


if ( car.price <= 8000 ) System.out.println("Affordable"); else System.out.println("Too Expensive!");
Augustus De Morgan was a nineteenth century British mathematician
who showed the importance of several rules of logic.
Two of these,
!(A && B)
is equivalent to!A || !B
!(A || B)
is equivalent to!A && !B
These rules are very useful, and worth your time to memorize. This truth table shows why the first rule is true.
| A | B | (A && B) | !(A && B) | !A | !B | !A || !B |
|---|---|---|---|---|---|---|
| F | F | F | T | T | T | T |
| F | T | F | T | T | F | T |
| T | F | F | T | F | T | T |
| T | T | T | F | F | F | F |
The fourth column and the last column have the same truth values. This shows the the expressions at the top of those columns are equivalent.
Rewrite the following fragment (from a previous example):
boolean reject = !(speed > 2000 && memory > 512)


More...
|
|
YearlyRecurrencePatternTypeEnum | YearlyRecurrencePatternType [get, set] |
| |
|
bool | YearlyRecurrencePatternTypeSpecified [get, set] |
| |
|
int | ScheduledDay [get, set] |
| |
|
bool | ScheduledDaySpecified [get, set] |
| |
|
WeekOfMonthEnum | ScheduledWeek [get, set] |
| |
|
bool | ScheduledWeekSpecified [get, set] |
| |
|
MonthOfYearEnum | ScheduledMonth [get, set] |
| |
|
bool | ScheduledMonthSpecified [get, set] |
| |
|
DayOfWeekEnum | ScheduledDayOfWeek [get, set] |
| |
|
bool | ScheduledDayOfWeekSpecified [get, set] |
| |
The documentation for this class was generated from the following file:
- FuelSDK-CSharp/ExactTargetSOAP.cs


|
The small3d library
|
Vulkan helper functions. More...
#include <vulkan/vulkan.h>
Go to the source code of this file.
Functions | |
| int | vh_copy_depth_to_shadow_image () |
| Copy the depth image to the shadow image. | |
| void | vh_wait_gpu_cpu_fence (uint32_t idx) |
| Wait on a GPU-CPU fence. More... | |
| int | vh_create_instance (const char *application_name, const char **enabled_extension_names, size_t enabled_extension_count) |
| Create a vulkan instance. More... | |
| int | vh_clear_depth_image (VkCommandBuffer *command_buffer) |
| Clear the depth image. More... | |
| int | vh_init (uint32_t max_frames) |
| Initialise. Internally this means create physical device, select queue families and create logical device. More... | |
| int | vh_set_width_height (const uint32_t width, const uint32_t height) |
| Set width and height for all rendering calculations. More... | |
| int | vh_create_swapchain () |
| Create the swapchain that will be used. This will also create the associated image views. More... | |
| int | vh_destroy_swapchain (void) |
| Destroy the swapchain. More... | |
| int | vh_create_pipeline (const char *vertex_shader_path, const char *fragment_shader_path, int(*set_input_state)(VkPipelineVertexInputStateCreateInfo *), int(*set_pipeline_layout)(VkPipelineLayoutCreateInfo *), uint32_t *index) |
| Create a pipeline. This will also create associated Vulkan objects. More... | |
| int | vh_destroy_pipeline (uint32_t index) |
| Destroy a pipeline. More... | |
| int | vh_begin_draw_command_buffer (VkCommandBuffer *command_buffer) |
| Begin creating a drawing command buffer. More... | |
| int | vh_bind_pipeline_to_command_buffer (uint32_t pipeline_index, const VkCommandBuffer *command_buffer) |
| Bind a pipeline to a command buffer. More... | |
| int | vh_end_draw_command_buffer (VkCommandBuffer *command_buffer) |
| Finish recording a command buffer. More... | |
| int | vh_destroy_draw_command_buffer (VkCommandBuffer *command_buffer) |
| Destroy a command buffer. More... | |
| int | vh_create_sync_objects (void) |
| Create sync objects. More... | |
| int | vh_destroy_sync_objects (void) |
| Destroy sync objects. More... | |
| int | vh_recreate_pipelines_and_swapchain (void) |
| Recreate the swapchain and the pipelines. More... | |
| int | vh_acquire_next_image (uint32_t pipeline_index, uint32_t *image_index, uint32_t *frame_index_out) |
| Acquire next swapchain image. More... | |
| int | vh_present_next_image (void) |
| Present next swapchain image (the one acquired by vh_acquire_next_image()) More... | |
| int | vh_draw (VkCommandBuffer *command_buffer, int only_shadows) |
| Send draw commands (will take effect on the current pipeline image acquired by vh_acquire_next_image()) More... | |
| int | vh_create_buffer (VkBuffer *buffer, VkBufferUsageFlags buffer_usage_flags, uint32_t buffer_size, VkDeviceMemory *memory, VkMemoryPropertyFlags memory_property_flags) |
| Create a buffer. More... | |
| int | vh_destroy_buffer (VkBuffer buffer, VkDeviceMemory memory) |
| Destroy a buffer. More... | |
| int | vh_copy_buffer (VkBuffer source, VkBuffer destination, VkDeviceSize size) |
| Copy a buffer to another. More... | |
| int | vh_create_image (VkImage *image, uint32_t image_width, uint32_t image_height, VkFormat image_format, VkImageTiling image_tiling, VkImageUsageFlags image_usage_flags, VkDeviceMemory *memory, VkMemoryPropertyFlags memory_property_flags) |
| Create a Vulkan image. More... | |
| int | vh_destroy_image (VkImage image, VkDeviceMemory image_memory) |
| Destroy a Vulkan image. More... | |
| int | vh_transition_image_layout (VkImage image, VkFormat format, VkImageLayout old_layout, VkImageLayout new_layout, int only_depth) |
| Transition the layout of a Vulkan image. More... | |
| int | vh_copy_buffer_to_image (VkBuffer buffer, VkImage image, uint32_t width, uint32_t height) |
| Copy a buffer to an image. More... | |
| int | vh_create_image_view (VkImageView *image_view, VkImage image, VkFormat format, VkImageAspectFlags aspect_flags) |
| Create a Vulkan image view. More... | |
| int | vh_create_sampler (VkSampler *sampler, VkSamplerAddressMode addressMode) |
| Create a Vulkan sampler. More... | |
| int | vh_create_depth_to_shadow_copy_cmd () |
| Create command buffer that copies depth to shadow image. | |
| int | vh_destroy_depth_to_shadow_copy_cmd () |
| Destroy command buffer that copies depth to shadow image. | |
| int | vh_shutdown (void) |
| Cleanup the memory, destroy any debug callbacks, as well as the logical device and the Vulkan instance. More... | |
Variables | |
| uint32_t | vh_new_pipeline_state |
| Has a pipeline just been created or recreated? | |
| VkInstance | vh_instance |
| The Vulkan instance. | |
| VkSurfaceKHR | vh_surface |
| The surface on which graphics will be presented. | |
| VkPhysicalDevice | vh_physical_device |
| The physical device that is selected vh_init(). | |
| VkDevice | vh_logical_device |
| The logical device that is created by vh_init(). | |
| VkPipelineLayout * | vh_pipeline_layout |
| The pipeline layouts, one for each pipeline created. | |
| uint32_t | vh_swapchain_image_count |
| Number of images in the swapchain, set by vh_create_swapchain(). | |
| VkClearColorValue | vh_clear_colour |
| The colour used to clear the screen. | |
| VkImage | vh_shadow_image |
| The image used for shadow mapping. | |
| VkDeviceMemory | vh_shadow_image_memory |
| The image memory used for shadow mapping. | |
| VkImageView | vh_shadow_image_view |
| The image view used for shadow mapping. | |
| VkCommandBuffer | cmd_buffer_copy_depth_to_shadow |
Vulkan helper functions.
Created on: 2018/05/01 License: MIT Copyright 2017 - 2022 Dimitri Kourkoulis
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
 IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
| int vh_acquire_next_image | ( | uint32_t | pipeline_index, |
| uint32_t * | image_index, | ||
| uint32_t * | frame_index_out | ||
| ) |
Acquire next swapchain image.
| pipeline_index | The index of the pipeline |
| image_index | The index of the acquired swapchain image |
| frame_index_out | [out] The frame index (used for async rendering - different from image_index) |
| int vh_begin_draw_command_buffer | ( | VkCommandBuffer * | command_buffer | ) |
Begin creating a drawing command buffer.
| command_buffer | Pointer to the command buffer. |
| int vh_bind_pipeline_to_command_buffer | ( | uint32_t | pipeline_index, |
| const VkCommandBuffer * | command_buffer | ||
| ) |
Bind a pipeline to a command buffer.
| pipeline_index | The index of the pipeline |
| command_buffer | Pointer to the command buffer. |
| int vh_clear_depth_image | ( | VkCommandBuffer * | command_buffer | ) |
Clear the depth image.
| command_buffer | The command buffer to record the clearing command to |
| int vh_copy_buffer | ( | VkBuffer | source, |
| VkBuffer | destination, | ||
| VkDeviceSize | size | ||
| ) |
Copy a buffer to another.
| source | The source buffer |
| destination | The destination buffer |
| size | The size of the buffer to be copied, in bytes |
| int vh_copy_buffer_to_image | ( | VkBuffer | buffer, |
| VkImage | image, | ||
| uint32_t | width, | ||
| uint32_t | height | ||
| ) |
Copy a buffer to an image.
| buffer | The buffer |
| image | The image |
| width | The width of the image |
| height | The height of the image |
| int vh_create_buffer | ( | VkBuffer * | buffer, |
| VkBufferUsageFlags | buffer_usage_flags, | ||
| uint32_t | buffer_size, | ||
| VkDeviceMemory * | memory, | ||
| VkMemoryPropertyFlags | memory_property_flags | ||
| ) |
Create a buffer.
| buffer | Variable in which to store the buffer |
| buffer_usage_flags | Vulkan usage flags for the buffer |
| buffer_size | The size of the buffer, in bytes |
| memory | The GPU memory reserved for the buffer |
| memory_property_flags | Vulkan properties of the reserved memory |
| int vh_create_image | ( | VkImage * | image, |
| uint32_t | image_width, | ||
| uint32_t | image_height, | ||
| VkFormat | image_format, | ||
| VkImageTiling | image_tiling, | ||
| VkImageUsageFlags | image_usage_flags, | ||
| VkDeviceMemory * | memory, | ||
| VkMemoryPropertyFlags | memory_property_flags | ||
| ) |
Create a Vulkan image.
| image | Variable in which to store the image |
| image_width | The width of the image |
| image_height | The height of the image |
| image_format | The format of the image |
| image_tiling | The tiling of the image |
| image_usage_flags | The usage flags of the image |
| memory | The GPU memory reserved for the image |
| memory_property_flags | Vulkan properties of the reserved memory |
| int vh_create_image_view | ( | VkImageView * | image_view, |
| VkImage | image, | ||
| VkFormat | format, | ||
| VkImageAspectFlags | aspect_flags | ||
| ) |
Create a Vulkan image view.
| image_view | The image view to be created |
| image | The image for which the image view will be created |
| format | The image view format |
| aspect_flags | The aspect flags (mask) e.g. VK_IMAGE_ASPECT_COLOR_BIT |
| int vh_create_instance | ( | const char * | application_name, |
| const char ** | enabled_extension_names, | ||
| size_t | enabled_extension_count | ||
| ) |
Create a vulkan instance.
| application_name | The name of the application that will be using Vulkan |
| enabled_extension_names | Names of extensions used |
| enabled_extension_count | Number of extensions used |
| int vh_create_pipeline | ( | const char * | vertex_shader_path, |
| const char * | fragment_shader_path, | ||
| int(*)(VkPipelineVertexInputStateCreateInfo *) | set_input_state, | ||
| int(*)(VkPipelineLayoutCreateInfo *) | set_pipeline_layout, | ||
| uint32_t * | index | ||
| ) |
Create a pipeline. This will also create associated Vulkan objects.
| vertex_shader_path | The path to the SPV file for the vertex shader that will be used in the pipeline. |
| fragment_shader_path | The path to the SPV file for the fragment shader that will be used in the pipeline. |
| set_input_state | Callback function, allowing e.g. the addition of information on buffers that will be used by the pipeline (vertex, uniform) before the pipeline is created. If there is no such information to be added, NULL should be passed here. |
| set_pipeline_layout | Callback function, allowing e.g. the addition of information on descriptors that will be used by the pipeline before the pipeline is created. If there is no such information to be added, NULL should be passed here. |
| index | If 100 is passed here, a new "slot" will be used for the pipeline and returned via the same variable. If not, the pipeline will be created over a previously deleted pipeline at the index position of the internal array containing pipelines. In that case, the shader path parameters will be ignored, because the previously used shaders will be reused. Also in that case the callback functions parameters will be ignored. |
| int vh_create_sampler | ( | VkSampler * | sampler, |
| VkSamplerAddressMode | addressMode | ||
| ) |
Create a Vulkan sampler.
| sampler | The sampler to be created |
| int vh_create_swapchain | ( | ) |
Create the swapchain that will be used. This will also create the associated image views.
| int vh_create_sync_objects | ( | void | ) |
Create sync objects.
| int vh_destroy_buffer | ( | VkBuffer | buffer, |
| VkDeviceMemory | memory | ||
| ) |
Destroy a buffer.
| buffer | The buffer to be destroyed |
| memory | The GPU memory previously reserved for the buffer, to be released |
| int vh_destroy_draw_command_buffer | ( | VkCommandBuffer * | command_buffer | ) |
Destroy a command buffer.
| command_buffer | Pointer to the command buffer. |
| int vh_destroy_image | ( | VkImage | image, |
| VkDeviceMemory | image_memory | ||
| ) |
Destroy a Vulkan image.
| image | The image to be destroyed |
| image_memory | The GPU memory previously reserved for the image, to be released |
| int vh_destroy_pipeline | ( | uint32_t | index | ) |
Destroy a pipeline.
| index | The index of the pipeline to destroy |
| int vh_destroy_swapchain | ( | void | ) |
Destroy the swapchain.
| int vh_destroy_sync_objects | ( | void | ) |
Destroy sync objects.
| int vh_draw | ( | VkCommandBuffer * | command_buffer, |
| int | only_shadows | ||
| ) |
Send draw commands (will take effect on the current pipeline image acquired by vh_acquire_next_image())
| command_buffer | Pointer to the command buffer containing the commands. |
| only_shadows | Only drawing shadows? |
| int vh_end_draw_command_buffer | ( | VkCommandBuffer * | command_buffer | ) |
Finish recording a command buffer.
| command_buffer | Pointer to the command buffer. |
| int vh_init | ( | uint32_t | max_frames | ) |
Initialise. Internally this means create physical device, select queue families and create logical device.
| max_frames | Maximum number of frames to be rendering to asynchronously |
| int vh_present_next_image | ( | void | ) |
Present next swapchain image (the one acquired by vh_acquire_next_image())
| int vh_recreate_pipelines_and_swapchain | ( | void | ) |
Recreate the swapchain and the pipelines.
| int vh_set_width_height | ( | const uint32_t | width, |
| const uint32_t | height | ||
| ) |
Set width and height for all rendering calculations.
| width | The new width |
| height | The new height |
| int vh_shutdown | ( | void | ) |
Cleanup the memory, destroy any debug callbacks, as well as the logical device and the Vulkan instance.
| int vh_transition_image_layout | ( | VkImage | image, |
| VkFormat | format, | ||
| VkImageLayout | old_layout, | ||
| VkImageLayout | new_layout, | ||
| int | only_depth | ||
| ) |
Transition the layout of a Vulkan image.
| image | The Vulkan image |
| format | The image format |
| old_layout | The old layout |
| new_layout | The new layout |
| only_depth | Only a depth image? |
| void vh_wait_gpu_cpu_fence | ( | uint32_t | idx | ) |
Wait on a GPU-CPU fence.
| idx | The GPU-CPU fence index |


The effect of this at-rule can be noticed only when the document is being printed or a preview of a print is displayed.
Paragraphs are moved away from the left side of the page and have a slightly lower position than by default.


这是主标题
You are never too old to set another goal or to dream a new dream.
这是副标题
无论何时，你设定新目标或拥有新梦想都为时不晚。
这还是主标题
You are never too old to set another goal or to dream a new dream.
这还是副标题
无论何时，你设定新目标或拥有新梦想都为时不晚。
You are never too old to set another goal or to dream a new dream.
无论何时，你设定新目标或拥有新梦想都为时不晚。
You are never too old to set another goal or to dream a new dream.
无论何时，你设定新目标或拥有新梦想都为时不晚。


--- layout: post title: Oh. My. God. date: 2010-11-17 21:22:38.000000000 -06:00 categories: - General tags: - movies - win status: publish type: post published: true meta: _edit_last: '1' author: login: Blake email<EMAIL_ADDRESS>display_name: Blake first_name: Blake last_name: Harley ---


7
Warning Visions
1 This is what the Lord GOD showed me: behold, he was forming locusts when the latter growth was just beginning to sprout, and behold, it was the latter growth after the king's mowings.
2 When they had finished eating the grass of the land, I said,
“O Lord GOD, please forgive!
How can Jacob stand?
He is so small!”
3 The LORD relented concerning this;
“It shall not be,” said the LORD.
4 This is what the Lord GOD showed me: behold, the Lord GOD was calling for a judgment by fire, and it devoured the great deep and was eating up the land.
5 Then I said,
“O Lord GOD, please cease!
How can Jacob stand?
He is so small!”
6 The LORD relented concerning this;
“This also shall not be,” said the Lord GOD.
7 This is what he showed me: behold, the Lord was standing beside a wall built with a plumb line, with a plumb line in his hand.
8 And the LORD said to me, “Amos, what do you see?” And I said, “A plumb line.” Then the Lord said,
“Behold, I am setting a plumb line
in the midst of my people Israel;
I will never again pass by them;
9 the high places of Isaac shall be made desolate,
and the sanctuaries of Israel shall be laid waste,
and I will rise against the house of Jeroboam with the sword.”
Amos Accused
10 Then Amaziah the priest of Bethel sent to Jeroboam king of Israel, saying, “Amos has conspired against you in the midst of the house of Israel. The land is not able to bear all his words.
11 For thus Amos has said,
“ ‘Jeroboam shall die by the sword,
and Israel must go into exile
away from his land.’ ”
12 And Amaziah said to Amos, “O seer, go, flee away to the land of Judah, and eat bread there, and prophesy there,
13 but never again prophesy at Bethel, for it is the king's sanctuary, and it is a temple of the kingdom.”
14 Then Amos answered and said to Amaziah, “I was no prophet, nor a prophet's son, but I was a herdsman and a dresser of sycamore figs.
15 But the LORD took me from following the flock, and the LORD said to me, ‘Go, prophesy to my people Israel.’
16 Now therefore hear the word of the LORD.
 ”


Import the filter rules to uBlock Origin (or see the text file)
The other recommended filter list: "I don't care about cookies", scroll down to the "Add to Adblock Plus" link.


Australia v Pakistan: Marnus Labuschagne hits century as Yasir Shah sets unwanted record
| First Test, The Gabba, Brisbane, day three of five: |
| Pakistan 240 & 64-3: Masood 27; Starc 2-25 |
| Australia 580: Labuschagne 185, Warner 154, Burns 97; Yasir 4-205 |
| Pakistan trail Australia by 276 runs with 7 wickets remaining |
| Scorecard |
Marnus Labuschagne scored his maiden Test century as Australia strengthened their grip on the first Test against Pakistan on day three at The Gabba.
The hosts resumed on 312-1 but David Warner added three to his 151 before Steve Smith (4) was dismissed by Yasir Shah for the seventh time in six Tests.
Labuschagne hit 20 boundaries in his 185 but was one of five wickets to fall for 35 runs as Australia totalled 580.
Mitchell Starc then took two wickets as Pakistan reached 64-3, 276 runs adrift.
Earlier, leg-spinner Yasir had picked up two of the final three Australia wickets, but his bowling analysis of 4-205 means he is the first bowler to concede more than 200 runs in a Test match on three occasions.
The day belonged to Australia number three Labuschagne, although the South Africa-born batsman reached his first century, in his 16th Test innings, with one of his few false strokes - a thick outside-edge through third man to the boundary.
The 25-year-old batted for a touch over six hours and when he was eventually dismissed, caught in the gully by Babar Azam off Shaheen Afridi, he left to congratulations from the Pakistan players.
Warner had previously become 16-year-old debutant Naseem Shah's maiden Test wicket, edging to wicketkeeper Mohammad Rizwan after adding just three runs off 25 balls.
That had brought Smith to the crease, but after hitting a boundary, he was bowled by Yasir. Only England's Stuart Broad has removed Smith more often in Tests than the leg-spinner, although his eight dismissals have come in 24 matches.
Matthew Wade scored 60 in a 110-run fourth-wicket partnership with Labuschagne and Travis Head chipped in with 24 as the hosts posted a mammoth total.


Chapter 6 Data for the chapter
We begin by activating the required packages:
Next, we create a large population with 100,000 people using the get_height_population() command:
The glimpse() command can be used to confirm that the population contains 100,000 people.
## Rows: 100,000
## Columns: 3
## $ id <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,…
## $ sex <chr> "male", "female", "female", "male", "male", "male", "female", …
## $ height <dbl> 177, 150, 171, 157, 169, 187, 163, 173, 172, 193, 190, 181, 15…
We can use the head() command to illustrate that each row in pop_data represents a single person.
## # A tibble: 10 x 3
## id sex height
## <int> <chr> <dbl>
## 1 1 male 177
## 2 2 female 150
## 3 3 female 171
## 4 4 male 157
## 5 5 male 169
## 6 6 male 187
## 7 7 female 163
## 8 8 male 173
## 9 9 female 172
## 10 10 male 193
6.1 Notation
In the formulas below, when we refer the population, we use uppercase letters when indicating members (\(X\)) or the size (\(N\)). In contrast, when we refer to the sample, we use lowercsae letters when indicating members (\(x\)) or the size (\(n\)). Make sure you notice the similarities between population and sample formulas even when the notation differs.
6.2 Estimating the mean
We are interested in sample means (\(\bar{x}\)) to the extent that they provide an estimate of the population mean (\(\mu\)).
The population mean, \(\mu\), is a parameter calculated using Formula (6.1)
\[\begin{equation} \mu = \frac{\sum{X}}{N} \tag{6.1} \end{equation}\]
We can calculate the population mean for the height column of pop_data using the summarise() and mean() commands. The mean() command uses Formula (6.1). We see from the output that the population mean is 172.48 (\(\mu = 172.48\)).
## pop_mean
## 1 172.4762
As noted previously, we rarely has access to data from an entire population. Consequently, we use the sample mean as an estimate of the population mean. The sample mean, \(\bar{x}\), is a statistic calculated using the using Formula (6.2). The bar of above the \(x\), indicates that it is a mean. Notice that Formula (6.1) and Formula (6.2) are the same - even though they use different notation.
\[\begin{equation} \bar{x} = \frac{\sum{x}}{n} \tag{6.2} \end{equation}\]
Because a sample mean (a statistic) is calculated using a random subset of the population it is likely to differ from the population mean (a parameter). If you, inaccurately, believe that you can learn something meaningful from a single study, this fact may be concerning. Statisticians know, however, that you can rarely learn anything from a single study or even a small set of studies. Consequently, they are more interested in what is true, on average, over a large number of studies.
One way of assessing the quality of the sample mean as an estimate of the population mean is by examining bias. If the average of many sample means is equal to the population mean, then we consider the sample mean to be an unbiased estimator of the population mean.
Fortunately, the average of many sample means does equal the population mean - so the sample mean is an unbiased estimator of the population mean. This fact can be illustrated with a computer simulation. In the code below, we use the get_M_samples() command to obtain 5000 samples from the population, each composed of 10 people. For each of these 5000 samples we calculate a variety of statistics and place themm in the many_samples data frame. Each row of many_samples represents a sample of 10 people. Each column of many_samples indicates a sample statistic or the population parameter the statistic is estimating.
many_samples <- get_M_samples(pop.data = pop_data,
pop.column.name = height,
n = 10,
number.of.samples = 5000)
We use the head() command to see the first 10 rows (i.e., 10 samples of 5000 samples):
## n pop.mean sample.mean pop.var sample.var.n sample.var.n_1
## 1 10 172.48 174.3 157.46 27.810 30.90
## 2 10 172.48 161.8 157.46 83.358 92.62
## 3 10 172.48 173.2 157.46 139.158 154.62
## 4 10 172.48 180.0 157.46 321.804 357.56
## 5 10 172.48 172.8 157.46 160.956 178.84
## 6 10 172.48 172.0 157.46 159.597 177.33
## 7 10 172.48 166.5 157.46 86.454 96.06
## 8 10 172.48 173.5 157.46 139.446 154.94
## 9 10 172.48 177.7 157.46 167.013 185.57
## 10 10 172.48 168.5 157.46 262.647 291.83
You can see the for each sample we indicate n (the sample size), pop.M (the mean of the population), sample.mean (the mean of the sample), and a few other statistics. Because all the samples came from the same population you can that the population mean (pop.M) is constant across rows/samples. In contrast, the sample mean (sample.mean) varies across samples due to random sampling error.
You can see the full extent to which the sample means vary by creating a graph with the code below. In this code, we use the pull() command to extract the value from the sample.mean column and then we send them to the base R hisogram command, hist().
You can see the 5000 sample means plotted in this graph. Recall the population mean for heights is \(\mu = 172.48\) cm. Notice that most of the sample means cluster around this value. Also notice there is considerable variability about this value. Any given sample mean (\(\bar{x}\)) may differ substantially from the population mean (\(\mu = 172.48\)). This variability illustrates the challenges with learning something from a single study - particularly a study with a small sample size.
Statisticians, recognizing the limitations of a single study, are not particularly concerned if a single sample deviates from the popualtion mean. That said, statisticians are very concerned whether the results of a large number of studies are correct – on average. That is, does the average of many sample means correspond to the population mean. If, on average, the sample mean is accurate we refer to it as an unbiased estimator.
In the code below we calculate the average of the 5000 sample means to determine if the sample mean is an unbiased estimator.
## mean_of_sample.mean
## 1 172.4078
We find that the average of the 5000 sample means is 172.47 which is very close to the population mean of 172.48. Note that when we did this, we used the same formula to calculate the sample mean as we did the population mean. The average of the sample means was not identical to the population mean but it was very close - it would have been exactly the same with many more samples. Consequently, the sample mean provides an unbiased estimate of the population mean. In other words, it makes sense to use the sample mean as an estimate of the population mean. If we try to estimate the population mean with a sample mean we will, on average, be correct; although any given sample/study mean might be “wrong”.
6.3 Estimating variance
We are interested in sample variances (\(s^2\)) to the extent that they provide an estimate of the population mean (\(\sigma^2\)). Recall, the population variance, \(\sigma^2\), is a parameter calculated using Formula (6.3).
\[\begin{equation} \sigma^2 = \frac{\sum{(X - \mu)^2}}{N} \tag{6.3} \end{equation}\]
The sample variance, \(s^2\), is a statistic calculated using Formula (6.4). The formula is the same as at the population level but we use a different notation because it is a sample.
\[\begin{equation} s^2 = \frac{\sum{(x - \bar{x})^2}}{n} \tag{6.4} \end{equation}\]
Examine the output for 5000 samples we created using the head() command. Notice in this output we see the population variance is 157.46 (see the pop.var column). The values in this column were calculated, based on everyone in the poulation, using Formula (6.3).
## n pop.mean sample.mean pop.var sample.var.n sample.var.n_1
## 1 10 172.48 174.3 157.46 27.810 30.90
## 2 10 172.48 161.8 157.46 83.358 92.62
## 3 10 172.48 173.2 157.46 139.158 154.62
## 4 10 172.48 180.0 157.46 321.804 357.56
## 5 10 172.48 172.8 157.46 160.956 178.84
## 6 10 172.48 172.0 157.46 159.597 177.33
## 7 10 172.48 166.5 157.46 86.454 96.06
## 8 10 172.48 173.5 157.46 139.446 154.94
## 9 10 172.48 177.7 157.46 167.013 185.57
## 10 10 172.48 168.5 157.46 262.647 291.83
Now inspect the sample.var.n column the values in this column were calculated based on sample data using Formula (6.4). In this column we present the sample variance calculated, using the above formula, with \(n\) in the denominator. That is, in this column we have calculated sample variance using the same formula (but with different notation) as we used at the population level. Notice the values in the sample.var.n column vary due to random sampling.
As we did with the mean, we can take the average of the 5000 sample variances (each using \(n\) in the denominator) to determine if the sample variance provides a biased or unbiased estimate of the population variance.
## mean_of_var.n
## 1 141.0726
We find that the average of the 5000 sample variances is 141.86 which is not close to the population variance of 157.46. Note that when we did this, we used the same formula to calculate the sample variance as we did the population variance.
The average of the sample variances (141.86) was different from the population variancee (157.46). The average of the sample variance was much smaller than the population variance. Consequently, the sample variance provides a biased estimate of the population variance. If we try to estimate the population variance with a sample variance we will, on average, be wrong.
Fortunately, there is a way around the fact that the sample variance provides a biased estimate of the population variance. We can derive a formula at the sample level that estimate the population variance that is not biased (see Hayes). An unbiased estimate of the population variance can be obtained if we calculate the sample variance but divide by \(n - 1\) instead of \(n\). The unbiased estimate is calculated using Formula (6.5).
\[\begin{equation} s^2 = \frac{\sum{(x - \bar{x})^2}}{n-1} \tag{6.5} \end{equation}\]
The values in the sample.var.n_1 column were calculated, based on sample data, using Formula (6.5). Check out this column using the head() command:
## n pop.mean sample.mean pop.var sample.var.n sample.var.n_1
## 1 10 172.48 174.3 157.46 27.810 30.90
## 2 10 172.48 161.8 157.46 83.358 92.62
## 3 10 172.48 173.2 157.46 139.158 154.62
## 4 10 172.48 180.0 157.46 321.804 357.56
## 5 10 172.48 172.8 157.46 160.956 178.84
## 6 10 172.48 172.0 157.46 159.597 177.33
## 7 10 172.48 166.5 157.46 86.454 96.06
## 8 10 172.48 173.5 157.46 139.446 154.94
## 9 10 172.48 177.7 157.46 167.013 185.57
## 10 10 172.48 168.5 157.46 262.647 291.83
We can evaluate the quality of Formula (6.5), using \(n-1\), by averaging over values in the sample.var.n_1 column.
## mean_of_var.n_1
## 1 156.7474
We see that the average of the 5000 values using \(n-1\) in the denominator is 157.62 which is very close to the population varaince of 157.46. Consequently, we when we use \(n-1\) in the denominator we have an unbiased estimate of the population variance. If we try to estimate the population variance with a sample variance, using \(n-1\) in the denominator, we will, on average, be right.
You may wonder at this point, when we use \(n-1\) in the denominator of the sample variance, can we still think of it as the average of the squared deviations from the mean. The short answer is yes. When you use \(n-1\) in the denominator of the sample variance you are not calculating the variance for the group people in the sample. Rather, you are estimating the variance for the much larger group of people in the population. Consequently, it makes sense to think of sample variance, using \(n-1\), as an estimate of the average of the squared errors in the population. That is, it makes sense to think of sample variance, using \(n-1\), as an estimate of the average of the squared differences between each person in the population and the population mean.
6.4 Estimating standard deviation
Due to the above findings for variance, we tend to estimate the population standard deviation using Formula (6.6).
\[\begin{equation} s = \sqrt{\frac{\sum{(x - \bar{x})^2}}{n-1}} \tag{6.6} \end{equation}\]
6.5 Estimating SMD
female_pop_data <- pop_data %>% filter(sex == "female")
male_pop_data <- pop_data %>% filter(sex == "male")
For females:
\[ \begin{aligned} \mu_{female} &= 165 \\ \sigma_{female} &= 10\\ \end{aligned} \]
For males:
\[ \begin{aligned} \mu_{male} &= 180 \\ \sigma_{male} &= 10\\ \end{aligned} \]
6.5.1 Population SMD
In original units: \[ \begin{aligned} \Delta M &= (\mu_{male} - \mu_{female}) \\ &= (180 - 165) \\ &= 15 \\ \end{aligned} \]
Formula (6.7) below illustrates….
\[\begin{equation} \delta = \frac{(\mu_{male} - \mu_{female})}{\sigma} \tag{6.7} \end{equation}\]
Calculation:
\[ \begin{aligned} \delta &= \frac{(\mu_{male} - \mu_{female})}{\sigma} \\ &= \frac{(180 - 165)}{10} \\ &= \frac{15}{10} \\ &= 1.50 \\ \end{aligned} \]
6.5.2 Sample SMD
Formula (6.8) below illustrates….
\[\begin{equation} d = \frac{(\bar{x}_{male} - \bar{x}_{female})}{s_{pooled}} \tag{6.8} \end{equation}\]
<IP_ADDRESS> Estimating means
<IP_ADDRESS> Estimating variance
<IP_ADDRESS> Combining everything
\[ \begin{aligned} d &= \frac{(\bar{x}_{male} - \bar{x}_{female})}{s_{pooled}} \\ \end{aligned} \]
6.6 Meta-analysis
6.7 Overview
| Name | Parameter | Estimated by this statistic |
|---|---|---|
| Mean | \(\mu = \frac{\sum{X}}{N}\) | \(\bar{x} = \frac{\sum{x}}{n}\) |
| Variance | \(\sigma^2 = \frac{\sum{(X - \mu)^2}}{N}\) | \(s^2 = \frac{\sum{(x - \bar{x})^2}}{n-1}\) |
| Standard deviation | \(\sigma = \sqrt{\frac{\sum{(X - \mu)^2}}{N}}\) | \(s =\sqrt{\frac{\sum{(x - \bar{x})^2}}{n-1}}\) |
| Cohen’s \(d\) or SMD | \(\delta= \frac{\mu_{1} - \mu_{2}}{\sigma}\) | \(d = \frac{\bar{x}_{1} - \bar{x}_{2}}{s_{pooled}}\) |


Medical History
Example Blockchain Application for Introduction to Hyperledger Fabric LFS171x
Register new patient
Success! Tx ID: {{create_patient}}
Id:
CPF:
Name:
Sex:
Phone number:
E-mail:
Height:
Weight:
Age:
Blood type:
Register new doctor
Success! Tx ID: {{create_doctor}}
Id:
Name:
E-mail:
Phone number:
CPF:
CRM:
Register new Hospital or Clinic
Success! Tx ID: {{create_enterprise}}
Id:
CNPJ:
Name:
Phone number:
Email:


MailtoUI.js Quick Demo
Mailto link with subject
Mailto link with body
{{ emailDisplay }}
- Created in Vue


On way to "solve" the representation problem is to have not much of an a priori model and let the system decide. Like, agents are made of some pseudo-code and this kind of code can work on games and on other agents code as well. Maybe you put agents on different levels according to the material they work on:
|
Unfortunately, the fewer ad hoc representations you put into it, the more computing power you'll need to equal nature :^)
[JPN] There always is the possibility of some simple machine language where all bytes are both code and data. Admittedly most random lists of bytes are going to be non-sense, but learning how to write meaningful programs is quite similar to learning how to make meaningful and useful moves on a board. The main difference will be in the dimension of the state space (the set of meaningful programs seems hugely greater than the set of good strategies)
Players are programs that optimize their strategies, i.e., have their own methods to learn by experience of auto-games or by analyzing the game rules. In this sense, players and games are structurally different!
Oh, I wasn't going that far. I was thinking of players close to your strategies, without any further goal in their short life than winning a game. But since you had the idea of libraries and university of knowledge and I didn't know who would be able to isolate parts of strategies as valuable knowledge that could be reused, I thought you could add a layer of dumb genetic experimenters or scholars above the dumb players.
They would experiment with pools of players and deal with the mutation and maybe the selection. Competing scholars (and their best players) would then represent something like your evolving library of knowledge. I thought you could add a layer of dumb genetic experimenters or scholars above the dumb players.
and the best alchemists get they way for the next turn
I would rather forget about any look ahead so as to play quickly and go through more games and more evolutionary steps. To increase the chance of seeing something emerging that wasn't there.
I would like that also, but the point - in many games - is not the search procedure, is the evaluation that you make on a certain position. That seems to be the place where the knowledge must emerge... but I may be wrong. In fact, that is not the way to play well the game of Go, but hey, I'm not that ambitious!
I agree it rather looks hopeless since the players are going to start and probably stay very dumb. But I believe it would be even worse if you add an alpha-beta skeleton unfortunately, Because of speed. And even if moves at depth 0 and moves at depth 5 were played at the same speed, I think the quantity and quality of evolution observed might be the same. Like learning to swim versus learning to sail. It looks like you go faster on a boat, but are you smarter and more experienced?!
Actual data so far points that that is not true (while some specific theoretic results about pathologic games shows the opposite). Check Deep-Blue. Also, evolutionary Checkers seemed to need depth 4 to get somewhere. Information at depth zero is too thin for the computer to see (or most people for that matter, even chess GM's need to see below the surface to make a decision)
[Check Chaunier's page on N players Alpha-Beta]
I just finished "A Jump Ahead" by Jonathon Schaeffer, about the Chinook checker program. He said that he liked all the "computer science" type stuff: the searching, pruning, calcualting end-game databases, but he didn't like adding and tuning the "knowledge" part of the program. Devising and tuning the knowledge is exactly what I like. To me, everything else is brute force.
Precisely my point of view! It's good to have competitive game players, like it's good to have fast calculators. But to enlighten the obscure path of learning, those methods don't contribute with a single bit of useful data.
One of the things that has concerned me about this kind of heuristic scheme is, how do you prevent the learning of the strategies from going off into some dead-end, ignoring effective techniques, due to the effects of random events early in the learning process.
There are no magic solutions to that, no free lunch. Just insert some mutation into the pool of solutions and hope to find a new hill to climb
Perhaps the mutation rate could vary over time, high in the beginning, and lower toward the end, but the standard deviation of the mutations would make a difference.
A possible idea. The same used in simulated annealing, less changes as the system converges.
Is the knowledge in the academy placed there by you, or by high-performing agents?
By some fast change on the winning ratio of the agent, for e.g.. Who does that, right now, I don't now, perhaps the agent itself, or by some higher judge
For real world applications, you'd want to initialize the system and go out drinking, and come in the next afternoon and examine the "gene pool" and the "academy" for the result. After you get it working and tuned, it might be fun to alter the environment to see how the agents respond. To take an example from chess, start with Shatranj, and then change the rules one-by-one until you get FIDE chess, and see what happens. You'd be creating a situation where knowledge in the academy was wrong, and would have to be corrected or ignored. This could have real-life applications.
Think real world. Any pure scientific study could ultimately result in a useful application. Your agent scheme could be used to make decisions where there was no human input available, like long-range space exploration. So the agents are addressing some problem with exploring Uranus while the scientific programs are gathering data. New or refined data could be discovered while the agents where still "evolving". You would want them to be able to "switch gears" based on the new data without outside help. That would be artificial intelligence!
I see! In fact, maybe the system would then learn how and when to learn, since besides the facts that it learns are dynamic (it will only search and evaluate a small set of all possible positions), the rules that create those facts are changing too (the rule-set changed)
I think of your agents, in real applications, as a computational device to create knowledge of complex systems. The goal is the creation of the Academy, which would then be a knowledge template for some control process that was taking action in the physical world.
Yes, and of course, a side effect is that it also give the best performance agent for the specified task.
An unavoidable point, is that some knowledge must be inserted! The solution is to reduce it to the minimum possible. That is itself a worthy investigation point.
But doesn't that compromise at least part of the investigation? Don't you want to see what knowledge is generated by the LUDĘ system alone, without "hints"?
I will insert vague meta-game knowledge, and the minimum possible. There will be no specific game knowledge on the system, besides validMoves() and endgame(). If I get nice results, I can try to strip the meta-knowledge off, bit by bit, and see what happens! This is a curious dilemma: from when am I inserting knowledge? Since I start programming, the effect is turned on, but since it's obvious that I cannot wait for a quantum effect to build a meta-player, I must do something :-) That's the all point of the weak theory of the game domain, give tools as abstract as possible, in order to get specific information that the system could not know before the process begins.
I have no idea how a "pre-experience" evaluation could be coded without actually building in knowledge. What you are proposing is what we humans all do naturally: before we ever play we try to make a plan toward the goal, rather than play randomly.
Precisely! Of course, the planning structure could itself evolve... and if we don't stop it, an endless meta-planning phases arise!
 Eventually you have to do something, not just think. Else it would be like those old cartoons of chess players with cobwebs on them. As a first approximation, a simple time deadline would be enough: think for two minutes, then you must start playing!
I think the idea of designing a program able to play different games and learn winning strategies is rather old [check the introduction]. When I was a student (1975-1982!) I programmed several strategy games and tried to design one such program. At that time, a popular technology was abstract data types, so I used abstract data types to represent the board and valid moves, such that generating the basic code for a given game was "simply" a matter of compiling abstract data types to a virtual machine (at that time, a popular target was P-code... but it was actually not very different of the currently fashionable Java VM). The core algorithm was a mini-max algorithm, but the key question was "how to design an abstract value function that will be also able to learn".
The agent should be able to a) get some active immediate knowledge from the game rules (mobility...); b) Learn from self-play and incorporate that in its evaluation function, or c) just use natural selection to fetch the best architecture!
I made some attempts with polynomial decomposition with self varying coefficient, but that did not prove very successful. Retrospectively, I think I was trying to find a concept like the self learning neural network.. but without the massive effect that makes it (relatively) successful!
One possible architecture is evolving neural nets. Check Fogel's work.
Restricting to square boards and one or two kinds of pieces (which I did not even think to do in my ambitious young days), one can use a product of matrices, with a matrix of varying coefficients. This approach has been used by several Othello/Reversi programs (including one I wrote at that time), but it was more to adapt the program response to the opponent strategy than to actually learn.
Concerning the repository of knowledge question, I think that declarative rules have been used, at least for some small games, at the time expert systems and other inference engine were popular. I thought of using Prolog for such a purpose but did not made it.


Odo Video
A lightweight html5 video wrapper.
Support
IE9. No flash fallback. IE9 will need a classList
polyfill.
Dependencies
screenfull.js. Assumes ES2015 Promise
and Object.assign
are available.
Styles
Features
- Autoplay support callbacks
- Skinnable UI controls
- Fullscreen mode
- Click-to-seek
- Dynamically update source
- Hide controls & mouse in fullscreen when idle
- Spacebar pauses video in fullscreen mode
- Function to define control structure
- Callback for updating controls on video progress
- Callback for video data events
Markup
You may also add any attributes you normally would to the <video>
element.

<video>
<source src="https://giant.gfycat.com/CandidImmaterialDromedary.webm" type="video/webm">
<source src="https://giant.gfycat.com/CandidImmaterialDromedary.mp4" type="video/mp4">

Your browser does not support the video element. Source.

</video>

Setup
var player = new OdoVideo(document.querySelector('#video-wrapper'));
Control Styles
OdoVideo comes with three built-in styles: below (default), overlay, and on top. All you need to do is add a class (or multiple) to the main .odo-video
element.

<video>…</video>

<video>…</video>

Control Layouts
OdoVideo comes with three built-in styles: none, inline progress (default), and stacked progress. There is also a fourth option: custom, which lets you define the structure of the controls.
// Stacked progress (the one above)
var instance = new OdoVideo(document.querySelector('#stacked'), {
controls: OdoVideo.Controls.STACKED_PROGRESS
});
// No controls
var instance = new OdoVideo(document.querySelector('#video-wrapper'), {
controls: OdoVideo.Controls.NONE
});
// Custom
var instance = new OdoVideo(document.querySelector('#video-wrapper'), {
controls: OdoVideo.Controls.CUSTOM,
layoutControls: function(elements) {
// Create your layout here.
},
updateControls: function(seconds) {
// Update any controls here.
console.log(seconds, instance.getPrettyTime(seconds)); // 2, '0:02'
}
});
Custom Layout - layoutControls(elements)
When using a custom controls layout, you must specify the layoutControls
option. The elements
has all the default controls. This is what OdoVideo does internally with the default layout:
Controls.prototype._createInline = function(elements) {
elements.controls.appendChild(elements.playToggle);
elements.controls.appendChild(elements.progressContainer);
elements.controls.appendChild(elements.currentTime);
elements.controls.appendChild(elements.volumeToggle);
elements.controls.appendChild(elements.fullScreenToggle);
};
The elements.controls
element is then appended to the OdoVideo element.
Custom Layout - updateControls(seconds)
When using a custom layout, you might need to update your controls display as the video progresses. This is a hook to do exactly that and nothing more. The function receives a float with the currentTime
value of the video.
Autoplay
This component tests the browser to see if it can autoplay videos. It does this on page load by inserting a base64-encoded video into the page with the autoplay attribute set and then checks to see if it started. This test can occasionally give false negatives (mostly in IE) due to page load speed. OdoVideo will save the result of the autoplay test in the browser's localStorage as videoautoplay
. To mitigate false negatives, if the test fails, OdoVideo will run the test again on the next page load - up to 3 times.
To provide a different fallback for browsers which cannot autoplay videos, use the autoplay
promise of the instance or the static autoplay
promise of the class.
In order to autoplay videos on iOS, there are some stipulations you must follow. Setting the muted
and playsinline
attributes should usually be all you need.
function handleAutoplay(canAutoplay) {
if (canAutoplay) {
console.log('Can autoplay');
} else {
console.log('Cannot autoplay');
}
}
player.autoplay.then(handleAutoplay);
// Or
OdoVideo.autoplay.then(handleAutoplay);
API
Public methods of OdoVideo
instances.
play()
Play the video.
pause()
Pause the video.
togglePlayback()
If the video is playing, pause it. If the video is paused, play it.
getElement()
Returns the main element of the OdoVideo component.
getVideoElement()
Returns the <video>
element.
listenOnData(event, cb)
Fires a callback function when the video readyState
is greater than 1, or the video event passed as the event
parameter.
getCurrentTime()
Returns the video element’s currentTime
property.
mute()
Mute the video.
unmute()
Unmute the video.
toggleVolume()
If the volume is muted, unmute it. If the volume is unmuted, mute it.
isMuted()
Returns whether the video is currently muted.
updateSource(src)
Update the current video source. This method changes the appropriate <source> src
property because IE9 does not work when the <video>s src
property or attribute is updated. The parameter is an absolute or relative path to the video, without the extension. .e.g. "/videos/cool-feature"
. OdoVideo will pick the correct extension/type based on its support.
getPrettyTime()
Converts a time value to MMSS, so 91 seconds is "1:31".
toggleFullscreen()
Request or exit from fullscreen.
dispose()
Remove all event listeners, references to DOM elements, and generated elements.
DOM Video Events
These exist within the OdoVideo.VideoEvent
object.
LOADED_METADATA
{
name: 'loadedmetadata',
readyState: 1
}
Corresponds to the loadedmetadata
event. Video metadata, such as dimensions and track, have been loaded.
LOADED_DATA
{
name: 'loadeddata',
readyState: 2
}
Corresponds to the loadeddata
event. Video data for the current frame has been loaded, but not enough to play the next frame.
CAN_PLAY
{
name: 'canplay',
readyState: 3
}
Corresponds to the canplay
event. The browser has downloaded enough of the video to play, but may still need buffering during playback.
CAN_PLAYTHROUGH
{
name: 'canplaythrough',
readyState: 4
}
Corresponds to the canplaythrough
event. The browser has downloaded enough of the video to play without buffering.
Removing focus box.
Although not recommended, you may remove the focus state from the buttons.
.odo-video__play-toggle:focus,
.odo-video__volume:focus,
.odo-video__fullscreen:focus {
box-shadow: none;
}
Options
pauseOnClick: true
When the video element is clicked, pause the video.
controls, layoutControls, updateControls
All described above.


Often you know that a document is a good match for a query, but it doesn't match the current query.
This lets you find that document and give it a grade, which then influences your scorer. For example,
NDCG is based on your global scores, so if your top 10 are all 1
's, and you find and rate a document as a 3
,
then the score will drop if that 3
rated document doesn't show up first!


Bubble charts display three variables: two using position and a third used for the circles' size. They are similar to scatter plots with the crucial difference of having varying size for the dots.
They are useful when the volume like quantity related to the entities is to be shown beyond the correlations provided by the positions.
It can be very crowded if too many data points are shown. Also, if the size dimension spans multiple scales, small bubbles are hard to detect.


You Can Now Play As A Star Wars Stormtrooper In Fortnite
Let's hope it doesn't impact your aim
by Damien McFerranFortnite has seen quite a few crossover events over the past few months, and now the game is getting a visit from one of the most iconic baddies in movie history.
You can now purchase an Imperial Stormtrooper skin in the game, a crossover that is presumably intended to build hype for Star Wars Jedi: Fallen Order and the upcoming Rise of Skywalker movie, which hits cinemas in December.
We'd hope that buying this skin won't reduce your accuracy – stormtroopers are famously poor shots, at least in the films.
It would seem that more Star Wars content is on the way, too:
Let us know if you'll be investing in this by posting a comment below.
[via gonintendo.com]


?THE
NEW
YORK
BOTANICAL
GARDEN
Plants
of
Puerto
Rico
Manilkara
bidentata
(A.DC.)
Chev
6
7
8
9
10
T
XT
v
The
New
York
copyright
reserved
botanical
Garden
NEW
YORK
BOTANICAL
GARDEN
029025
Puerto
Rico:
Guajataca
Gorge
near
Quebradillas,
90-100
m;
moist
semi-evergreen,
seasonal
forest
over
limestone.
Ca.
18¡26'N,
66¡58'W.
Tree
to
7
m
tall;
mature
fruit
to
6
cm
diam.,
brown.
AGED
James
L.
Luteyn
11,496
Maria
Lebron-Luteyn
3
Apr
1985
01029025
Legend -
Level of confidence that token is an accurately-transcribed word
extremely low
very low
low
undetermined
medium
high
very high


The C++ Standard Library includes templates for data stream input/output. Before the current ANSI/ISO standard, most C++ compilers were delivered with a class library commonly known as the iostreams library. In this manual, we refer to this library as the traditional iostreams, in contrast to the standard iostreams that are now part of the ANSI/ISO C++ Standard Library. The standard iostreams are to some extent compatible with the traditional iostreams, in that the overall architecture and the most commonly used interfaces are retained. Chapter 45 describes the incompatibilities in greater detail.
We can compare the standard iostreams not only with the traditional C++ iostreams library, but also with the I/O support in the Standard C Library. Many former C programmers still prefer the input/output functions offered by the C library, often referred to as C stdio. Their familiarity with the C library is justification enough for using the C stdio instead of C++ iostreams, but there are other reasons as well. For example, calls to the C functions printf() and scanf() are admittedly more concise with C stdio. However, C stdio has drawbacks, too, such as type insecurity and inability to extend consistently for user-defined classes. We'll discuss these in more detail in the following sections.
Let us compare a call to stdio functions with the use of standard iostreams. The stdio call reads as follows:
int i = 25; char name[50] = "Janakiraman"; fprintf(stdout, "%d %s", i, name);
It correctly prints: 25 Janakiraman.
But what if we inadvertently switch the arguments to fprintf()? The error is detected no sooner than run time. Anything can happen, from peculiar output to a system crash. This is not the case with the standard iostreams:
std::cout << i << ' ' << name << '\n';
Since there are overloaded versions of the shift operator operator<<(), the right operator is always called. The expression std::cout << i calls std::ostream::operator<<(int), and std::cout << name calls std::ostream::operator<< (std::ostream&, const char*). Hence, the standard iostreams are typesafe.
Another advantage of the standard iostreams is that user-defined types can be made to fit in seamlessly. Consider a type Pair that we want to print:
struct Pair { int x; string y; }
All we need to do is overload operator<<() for this new type Pair, and we can output pairs this way:
Pair p = { 5, "May" }; std::cout << p;
The corresponding operator<<() can be implemented as:
std::ostream& operator<<(std::ostream& o, const Pair& p) { return o << p.x << ' ' << p.y; }


TreeView / Export to JSON
This example presents how to export the data of TreeView to a JSON formatted string. You can export the data either as a flat list or a tree hierarchy, using only fields that you want to have exported.
In our example, although each item has multiple fields set, only small subset of these fields will be exported. That is only their 'id', 'pid' and text' fields will be exported. You can filter which fields you want to include in the final output in your code. The final result is shown in console window.
Note As it is shown in the console window, the exported data holds the custom names used as a replacement for default field names of item objects. For more information about binding an arbitrary data source to the TreeView, check out the Data Binding sample.
To export data, the following method is used:
- exportToJSON(name, fields, flat, spacing) - exports the content of TreeView to a JSON formatted string
For more information check out the source code of this sample.
You can use exported data to populate the TreeView on demand from local or remote data source, by simply providing it as parameter to the loadData method.


Demo
This is a test to make sure the
event tracking
is working.
What you should see in google analytics


Recently got a chance to experiment with using JSON Schema to test-drive new APIs. My motivation behind this was to find a better way to document and more thoroughly test an API with low overhead.
In the past, I've used tools like Swagger and Grape Entity to provide auto-generated API docs, but it wasn't integrated into tests and require duplication of similar information.
Another large project of mine used a custom documentation toolchain of rake, markdown, and curl to execute and record requests to a development server embedded in markdown documentation. This worked well, but had to be manually kept up to date as changes to the API couldn't easily be detected.
Ultimately I want a way to get decent API documentation (entity structure and endpoints) extracted from my tests. At one point I even experimented with building an RSpec formatter to generate documentation.
So when I saw a blog post about using JSON Schema to test APIs I wanted to explore it further to see what was possible.
Creating the schema
JSON Schema, at a basic level, gives you a way to describe properties and types of a JSON structure. It also has support for composing schemas which I found useful for API testing.
For our RSpec setup, we will put all our schemas under spec/support/schemas
. In this folder I created a special definitions.json
file which describes all the entities in the API. Similar to how you might have spec/support/factories.rb
define all your test factories.
// definitions.json
{
"definitions": {
"author" : {
"type" : "object",
"required" : [
"id",
"name",
"active"
],
"properties" : {
"id" : { "type" : "integer" },
"name" : { "type" : "string" },
"active" : { "type" : "boolean" }
}
},
"comment" : {
"type" : "object",
"required" : [
"id",
"content",
"author"
],
"properties" : {
"id" : { "type" : "integer" },
"content" : { "type" : "string" },
"author" : { "$ref" : "#/definitions/author" }
}
},
"post" : {
"type" : "object",
"required" : [
"id",
"title",
"content",
"author"
],
"properties" : {
"id" : { "type" : "integer" },
"title" : { "type" : "string" },
"content" : { "type" : "string" },
"author" : { "$ref" : "#/definitions/author" },
"comments": {
"type": "array",
"items": { "$ref": "#/definitions/comment" }
}
}
}
}
}
Then I also created a series of API endpoint specific files such as posts.json
that describe how that specific API endpoint uses the schema definitions.
// posts.json
{
"type": "object",
"required": ["posts"],
"properties": {
"posts": {
"type": "array",
"items": { "$ref": "definitions.json#/definitions/post" }
}
}
}
Using in Schema in Tests
Following the original blog post I created a RSpec matcher to make matching schemas in tests easier.
# spec/support/api_schema_matcher.rb
RSpec::Matchers.define :match_response_schema do |schema|
match do |response|
schema_directory = "#{Dir.pwd}/spec/support/schemas"
schema_path = "#{schema_directory}/#{schema}.json"
JSON::Validator.validate!(
schema_path,
response.body,
strict: true
)
end
end
This matcher will compare our API response
with the schema
specified and determine if they match using a class from the json-schema gem.
Then in our tests, we can call our custom matcher to ensure request matches the schema. In addition I usually "spot check" a couple of the values to ensure the data is correct and not just in the right format.
The schema will be used to validate the types of the rest of the properties and that all require properties are included. Our test will also fail if extra properties that we didn't define are included in the response.
# spec/api/posts.rb
require 'rails_helper'
RSpec.describe PostsController, type: :request do
include_context 'API'
describe 'GET index' do
context 'get all published posts' do
let!(:author) do
Author.create!(name: 'Test Author')
end
let!(:draft_post) do
Post.create!(
author: author,
title: 'Draft',
content: 'Great stuff'
)
end
let!(:published_post) do
Post.create!(
author: author,
title: 'Published',
published_at: 1.day.ago,
content: 'Better stuff'
)
end
let!(:comment) do
Comment.create!(
author: author,
post: published_post,
content: 'Well done'
)
end
before { api_get 'posts' }
specify do
expect(json_body['posts'].count).to eq 1
expect(response).to match_response_schema('posts')
expect(
json_body['posts'].first['author']['name']
).to eq author.name
end
end
end
end
If our server's response didn't match the expected schema, we'd see a well-formed error like this:
JSON::Schema::ValidationError:
The property '#/posts/0' did not contain
a required property of 'author'
Next Steps
This is a decent example of testing a read-only API, but would like to explore how usage might change when testing create/update responses. Things would also be a bit different if using JSON API format for your API as relationship are side loaded rather than inlined.
Additionally, I think there is an interesting possibility to create a "documentation viewer" that could parse the schema files and build simple API documentation. Hope to explore that in a future post.
A full example app for this post is available on my Github account.


Me and my friends went camping. We figured to make it a little more comical we'd bring along a handle of Jack Daniel's.  Then we break out the Jack. I had never drank before. So my friend said its pretty easy to mix with Cherry Coke. So we proceded to do about a shot of Jack for ever 10 oz of Cherry Coke. I drank 3 of those. Each one had a little more alcohol in than the rest. Then I took 2 straight shots, just for the experience. So I figured about 6 drinks total. This was over about a 2 hour time period, and with food in the stomach.
Now I felt weird. I felt fuzzy, and just plain dumb. It basically mimicked sleep deprivation I thought. Just a plain careless, dumb, inhibiting feeling.  I had about 20oz of water before I went to bed to make sure I wasn't so dehydrated. I woke up with a weird headache. Then I puked about 10 minutes later. I figured whatever... just remnants left over I'll be fine. So I take some water to get some fluid in my system. I puked again. I tried different things to make me stop puking but nothing would stop it. I ended up puking about 6 times. It was horrible. I mean I barely had anything to drink based on the amount of time I took it in.
I don't plan on drinking anytime soon ever again. I don't know what I did wrong, cause I've seen guys smaller than me do 6 shots within 15 minutes and wake up just fine. I just figure maybe my hangovers will be really bad. It was a horrible experience though, not something I would try again in the near future thats for sure.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


Zsuzsanna Rigó
Jurist, translator
Budapest, HU
Budapest, HU
During my university studies, I realized that I really enjoy learning a language and I have a sense of it. Over the years, I have had some opportunities to translate legal documents as well, but I have undertaken other projects as well. I am currently translating into English and French , but I am also learning Italian.
2016-2018: Ministry of Justice, international law department.
I had the opportunity to translate submissions, judgments of ECHR and other documents primarily in English, although on some occasions I also had to translate from French.
2019-2020: dr. Pintér Attila Law Office.
I translated contracts, internal regulations, court judgements and official letters into English.
2020-2021: dr. Pintér Attila Law Office, Dorothée Hevér French lawyer.
On a voluntary basis, I continued to make translations for the law office in English, and I was in contact with a French lawyer, for whom I prepared summaries and prospectuses on criminal law in French.
Summer of 2021 (3 months): ClimateScience organisation.
I translated articles about environment protection in English.
Since September 2021 - I have been trasnlating TED videos from French and English.
According to my qualification, I would like to translate legal documents but I am also interested in trasnlating other documents.