--- layout: newsstory title: ALMOST match: Hednesford 3 Yeltz 2 ---
Despite twice coming from behind, the Yeltz lost their first game of the season to old foes Hednesford.
We went 1-0 down just before the break, but then pulled one back through Rob Elmes . They took the lead again before a second equaliser from Les looked like it'd earned a point. However they got their winner in the 87th minute to leave us with just a single point from the first two games.
As an aside, I got regular updates from the Scorecheck SMS service which seems pretty reliable in sending me the depressing news :-(
Saturday takes us back to delightful Grantham , before Stafford Rangers visit The Grove on Bank Holiday Monday evening.
Hednesford Town: Gayle; Simkin, Lucas, Robinson, Brindley, Ryder (Airdrie 66), Wray, Rae, Francis (Piearce 77), Jones, Adams. Unused Subs: Williams, Charie, Jenkins.
Halesowen Town: Clarke; Colwell, Burnham, Smith, L. Collins, Skidmore, Spencer (Quiggin 59), Leadbeater, Elmes, Taylor, Hines. Unused Subs: Newall, Reece, Ashby, Garvey.
Booked: Francis (31), Colwell (86). Referee: C. Henry Attendance: 802
Halesowen twice battled back from behind in an excellent second-half display but still left Keys Park empty-handed due to defensive frailty.
The home side had the better of the first half with Derek Rae hitting a rebound over the bar after 6 minutes but Halesowen's Richard Leadbeater flashed a header wide of the post from a Les Hines corner a minute later. Mark Jones turned Jason Burnham in the 9th minute and drove wide from 12 yards before hitting inches high from 20 yards in the 14th minute. Shaun Wray then drove wide from 20 yards as the home side sought an opener.
Lee Collins headed a Jason Burnham free-kick just wide of the post after 22 minutes and 4 minutes later Collins made a timely tackle on the edge of his own box from the advancing Wray.
Hednesford took the lead in the 41st minute when Neil Smith brought down Wray in the box and *b*RICHARD LUCAS*cb* hit the penalty into the top left corner of the net. Leadbeater almost equalised on the stroke of half-time when put through by Spencer but he poked the ball just wide of the post.
Halesowen started brightly at the start of the second period and gradually took control of the game. Good work from Andy Spencer set up Richard Colwell after 47 minutes but there was no-one on the end of his dangerous cross. The Yeltz deservedly equalised in the 58th minute with a splendid goal on the break. Tim Clarke collected a corner and sent a long kick out to Spencer down the left who then fed Les Hines and his left-wing cross was sidefooted home on the volley at the far post by *b*ROB ELMES*cb*. Quiggin almost scored a second in the 67th minute when set free but he hit wide of Mark Gayle's post.
A minute later Halesowen paid the price when Hednesford re-gained the lead out of the blue. A Collins clearance could only find Wray and his right-wing cross was headed home beyond the grasp of Clarke from 15 yards by the unmarked *b*MARK JONES*cb*. However, Halesowen equalised for a second time in the 75th minute when a Burnham cross was headed against the post by Elmes and *b*LES HINES*cb* was on hand to turn in the rebound from 5 yards out.
Substitute Stuart Airdrie then went on a great run from his own half ending with Clarke making a fine save from his 20 yard shot and in the 80th minute Clarke saved a quickly taken free-kick from Carl Adams.
Three minutes from time Hednesford grabbed the winner when Lucas hit a long free-kick into the Halesowen area. Clarke called for the ball, but *b*CHRIS BRINDLEY*cb* nipped in before Clarke collected to head into an empty net. A minute from time Hines curled in a free-kick from the edge of the box but goalkeeper Gayle managed to punch the ball clear from under his crossbar.


Coderetreat is a volunteer-based, globally coordinated effort to improve software developer's skills.
In 2017 {{site.data.events_gdcr2017 | size}} Global Day of Coderetreat events were held in cities all over the globe. We will continue to provide community support for more events thoughout 2018.


Registration
personnal
company
male
female
by clicking register , you agree on our
terms and condition


@(title: String) @main("contact us"){ @layout.headercontent("Contact")
Your email address will not be published. Required fields are marked *


P-Brain Users
If you're not an admin you will only see your user.
If you're not an admin, any changes to admin level have no effect.
Passwords will not be updated if the password input is blank.
User ID
Username
Password
Admin?
Action


What's your name?
What's your favorite restaurant?
What about your favorite thing to do in Seattle?
Who would you choose to join you on this perfect day?


Methods
access_rule (AuthorizeMe::AbilityChecker)
add_authorization_rule (AuthorizeMe::Model::ClassMethods)
authorization_rules (AuthorizeMe::Model::ClassMethods)
authorize (AuthorizeMe::Model::ClassMethods)
authorize_me (AuthorizeMe::Model::ClassMethods)
build_model_object (AuthorizeMe::AbilityChecker)
call_method (AuthorizeMe::AbilityChecker)
check (AuthorizeMe::AbilityChecker)
check_ability_on_object (AuthorizeMe::Model::InstanceMethods)
included (AuthorizeMe::Model)
message (AuthorizeMe::AuthorizationRuleMissing)
method_missing (AuthorizeMe::RoleDefinition)
new (AuthorizeMe::AuthorizationRuleMissing)
new (AuthorizeMe::AbilityChecker)
new (AuthorizeMe::RoleDefinition)
object (AuthorizeMe::AbilityChecker)
rules (AuthorizeMe::AbilityChecker)


Prefix:
Mr.
Mrs.
First Name:
Middle Name:
Last Name:
Street Address:
Zip/Postal Code:
City:
State:
Country:
Select a country ...
Afghanistan
Albania
Algeria
American Samoa
Andorra
Angola
Anguilla
Antarctica
Antigua and Barbuda
Argentina
Armenia
Aruba
Australia
Austria
Azerbaijan
Bahamas
Bahrain
Bangladesh
Barbados
Belarus
Belgium
Belize
Benin
Bermuda
Bhutan
Bolivia
Bosnia and Herzegovina
Botswana
Bouvet Island
Brazil
British Antarctic Territory
British Indian Ocean Territory
British Virgin Islands
Brunei
Bulgaria
Burkina Faso
Burundi
Cambodia
Cameroon
Canada
Canton and Enderbury Islands
Cape Verde
Cayman Islands
Central African Republic
Chad
Chile
China
Christmas Island
Cocos [Keeling] Islands
Colombia
Comoros
Congo - Brazzaville
Congo - Kinshasa
Cook Islands
Costa Rica
Croatia
Cuba
Cyprus
Czech Republic
Côte d’Ivoire
Denmark
Djibouti
Dominica
Dominican Republic
Dronning Maud Land
East Germany
Ecuador
Egypt
El Salvador
Equatorial Guinea
Eritrea
Estonia
Ethiopia
Falkland Islands
Faroe Islands
Fiji
Finland
France
French Guiana
French Polynesia
French Southern Territories
French Southern and Antarctic Territories
Gabon
Gambia
Georgia
Germany
Ghana
Gibraltar
Greece
Greenland
Grenada
Guadeloupe
Guam
Guatemala
Guernsey
Guinea
Guinea-Bissau
Guyana
Haiti
Heard Island and McDonald Islands
Honduras
Hong Kong SAR China
Hungary
Iceland
India
Indonesia
Iran
Iraq
Ireland
Isle of Man
Israel
Italy
Jamaica
Japan
Jersey
Johnston Island
Jordan
Kazakhstan
Kenya
Kiribati
Kuwait
Kyrgyzstan
Laos
Latvia
Lebanon
Lesotho
Liberia
Libya
Liechtenstein
Lithuania
Luxembourg
Macau SAR China
Macedonia
Madagascar
Malawi
Malaysia
Maldives
Mali
Malta
Marshall Islands
Martinique
Mauritania
Mauritius
Mayotte
Metropolitan France
Mexico
Micronesia
Mvalueway Islands
Moldova
Monaco
Mongolia
Montenegro
Montserrat
Morocco
Mozambique
Myanmar [Burma]
Namibia
Nauru
Nepal
Netherlands
Netherlands Antilles
Neutral Zone
New Caledonia
New Zealand
Nicaragua
Niger
Nigeria
Niue
Norfolk Island
North Korea
North Vietnam
Northern Mariana Islands
Norway
Oman
Pacific Islands Trust Territory
Pakistan
Palau
Palestinian Territories
Panama
Panama Canal Zone
Papua New Guinea
Paraguay
People's Democratic Republic of Yemen
Peru
Philippines
Pitcairn Islands
Poland
Portugal
Puerto Rico
Qatar
Romania
Russia
Rwanda
Réunion
Saint Barthélemy
Saint Helena
Saint Kitts and Nevis
Saint Lucia
Saint Martin
Saint Pierre and Miquelon
Saint Vincent and the Grenadines
Samoa
San Marino
Saudi Arabia
Senegal
Serbia
Serbia and Montenegro
Seychelles
Sierra Leone
Singapore
Slovakia
Slovenia
Solomon Islands
Somalia
South Africa
South Georgia and the South Sandwich Islands
South Korea
Spain
Sri Lanka
Sudan
Suriname
Svalbard and Jan Mayen
Swaziland
Sweden
Switzerland
Syria
São Tomé and Príncipe
Taiwan
Tajikistan
Tanzania
Thailand
Timor-Leste
Togo
Tokelau
Tonga
Trinvaluead and Tobago
Tunisia
Turkey
Turkmenistan
Turks and Caicos Islands
Tuvalu
U.S. Minor Outlying Islands
U.S. Miscellaneous Pacific Islands
U.S. Virgin Islands
Uganda
Ukraine
Union of Soviet Socialist Republics
United Arab Emirates
United Kingdom
United States
Unknown or Invalvalue Region
Uruguay
Uzbekistan
Vanuatu
Vatican City
Venezuela
Vietnam
Wake Island
Wallis and Futuna
Western Sahara
Yemen
Zambia
Zimbabwe
Åland Islands
Phone Number:
Email:


--- layout: post authors: ["Greg Wilson"] title: "Reminder: June 2014 Lab Meeting" date: 2014-06-17 time: "09:00:00" tags: ["Community", "Lab Meeting"] ---
The next Software Carpentry lab meeting will take place next week at 10:00 am and 7:00 pm Eastern time on Thursday, June 26. (My apologies to people in Australia: I promised we'd hold the evening meeting first this time around, but unfortunately that slot conflicts with instructor training.) Our agenda is up on this Etherpad; we'll be discussing plans for the July sprint and voting on several pull requests and proposals. If you'd like to cast a few votes, please take a few minutes before the meeting to look through the items that are on the agenda.


20,000 passengers hit as Finnair crippled by strikes
by Alastair JamiesonFinland’s flag-carrier airline, Finnair, said it has been forced to cancel almost 300 flights amid a nationwide solidarity strike for postal workers.
The carrier, whose home airport at Helsinki acts as a major hub for Europe-Asia connections, said around 20,000 passengers would be affected by Monday's action.
It comes after the Finnish airport workers’ union joined a solidarity strike on behalf of 9,000 employees at the publicly-owned postal service Posti, who have been on a two-week strike against pay cuts.
Finland’s chief labour conciliator, Vuokko Piekkala, said on Sunday attempts to forge an agreement in the dispute had failed, after extensive negotiations over the weekend.
Finnair spokeswoman Paivyt Tallqvist said: “Our current estimate is that we could operate some 120 of our 377 flights scheduled for tomorrow.”
The solidarity strikes were expected to largely stall public bus transport in Finland’s capital Helsinki on Monday, while the Finnish Seafarers’ Union said it would stop all passenger and cargo vessels flying the Finnish flag in Finnish ports starting on Monday until further notice.
The strike has also led to mail deliveries being interrupted in Finland ahead of the busy Christmas season.
Apart from the postal strike, there might be more widespread strikes on the way, potentially affecting other Finnish industries, as three other employee unions called at least 85,000 workers to join a three-day strike starting December 9 in separate wage disputes.


Welcome to anime logger, if you don't want to manually configure websites for this addon I recommend you pick some of these preconfigured ones:
Animerush
Add Website(s)


Ping
The UHST implementation of ping measures the round-trip time for messages sent from the originating browser (client) to a destination browser (host) that are echoed back to the source. It shows how to create a basic UHST host and client, and confirm the establishing of network connection between them.
Host Info
HostId:
Diagnostic Log:
Client
Result:


library(tidyverse)
library(cowplot)
library(viridis)
library(knitr)
library(kableExtra)
library(patchwork)
library(tidyr)
library(broom)
knitr::opts_chunk$set(tidy.opts=list(width.cutoff=60),tidy=TRUE, echo = TRUE, message=FALSE, warning=FALSE, fig.align="center")
source("../../../IDA/tools/echem_processing_tools.R")
source("../../../IDA/tools/plotting_tools.R")
theme_set(theme_1())
This notebook contains the plots for figure S1, which includes controls and extra information about the LC-MS colony extractions. Specifically the data are for: * WT +/- sonication control * dPHZ* phenazine retention * WT no membrane control
For the first two the concentrations were quite low, so leading the PDA to miss some of the quantifications. Therefore I decided to use MS (QDA) channels to quantify these sample peaks.
In order to use the MS for quantification, let’s first see how well we can calibrate from peak area to concentration. This works very well for peaks in uv-vis, but anecdotally MS does not work as well.
I manually quantified the peaks for the standard curve run on 8/29/18 for each of the phenazines in their respective mass channels (PCA = 225, PCN = 224, PYO = 211 approximately). Here’s the data:
std_PCA <- c(1438945, 2524756, 6219139, 10130937, 16712822, 30545647,
45106329)
std_PYO <- c(743240, 1604480, 4839401, 11509642, 26253622, 65574941,
113804512)
std_PCN <- c(3319415, 6644637, 15856302, 29044060, 52325756,
90144409, 135780468)
phz_stds <- tibble(measured_phenazine = c(rep("PCA", 7), rep("PYO",
7), rep("PCN", 7)), concentration = rep(c(0.1, 0.2, 0.5,
1, 2, 5, 10), 3), area = c(std_PCA, std_PYO, std_PCN), )
head(phz_stds)
## # A tibble: 6 x 3
## measured_phenazine concentration area
## <chr> <dbl> <dbl>
## 1 PCA 0.1 1438945
## 2 PCA 0.2 2524756
## 3 PCA 0.5 6219139
## 4 PCA 1 10130937
## 5 PCA 2 16712822
## 6 PCA 5 30545647
Let’s see how the curves look.
ggplot(phz_stds %>% filter(concentration < 10), aes(x = area,
y = concentration, color = measured_phenazine)) + geom_point() +
geom_smooth(method = "lm", formula = y ~ x + 0) + facet_wrap(~measured_phenazine,
scales = "free")
Here I already excluded all the standards above 10uM, because I assumed the MS would saturate. You can see that the curves definitely increase, but they are not super nice calibration curves (except PYO is pretty good). Well let’s move forward, but we’ll make sure to look at the raw peak area for each of the plots before we calibrate into concentrations.
We can simply fit the linear model to this data, and because we force the fit through zero we can use the slopes to calibrate.
std_slopes <- phz_stds %>% filter(concentration < 10) %>% group_by(measured_phenazine) %>%
do(tidy(lm(concentration ~ area + 0, data = .)))
std_slopes
## # A tibble: 3 x 6
## # Groups: measured_phenazine [3]
## measured_phenazine term estimate std.error statistic p.value
## <chr> <chr> <dbl> <dbl> <dbl> <dbl>
## 1 PCA area 0.000000147 0.0000000116 12.6 5.53e-5
## 2 PCN area 0.0000000494 0.00000000394 12.6 5.68e-5
## 3 PYO area 0.0000000767 0.00000000123 62.2 2.04e-8
So now we can just multiply our peak areas by the estimate for the slope.
So let’s start with the PDA data for the colonies +/- sonication. Hopefully you can see why I had to move to the MS channels.
son_data <- read_csv("../data/06_24_18_HPLC_pda_WTcolony_sonication.csv") %>%
mutate(calcConc = Amount * 2 * (800/62))
ggplot(son_data, aes(x = condition, y = calcConc)) + geom_point() +
facet_wrap(~measured_phenazine, scales = "free") + ylim(0,
NA)
It looks reasonable, but we are missing PCA and 1 of the PYO data points.
These peaks are clearly visible in the MS channels, so I decided to go back and requantify using the MS channels.
Here are the manually quantified MS peaks:
PCA = c(5079971, 4383790, 5226988, 5561765, 5213071, 4652306)
PYO = c(32954513, 30874145, 29976749, 33291160, 31197443, 30785841)
PCN = c(175851779, 173966518, 176536668, 173807308, 156877918,
154243451)
son_data_ms <- tibble(measured_phenazine = c(rep("PCA", 6), rep("PYO",
6), rep("PCN", 6)), condition = rep(c(rep("withSon", 3),
rep("noSon", 3)), 3), rep = rep(c(1, 2, 3), 6), Area = c(PCA,
PYO, PCN)) %>% group_by(condition, measured_phenazine) %>%
mutate(mean = ifelse(rep == 1, mean(Area), NA))
# Plot layout
plot_ms_son <- ggplot(son_data_ms, aes(x = condition, y = Area)) +
geom_col(aes(y = mean, fill = condition)) + geom_jitter(shape = 21,
size = 2, height = 1, width = 0.1) + facet_wrap(~measured_phenazine,
scales = "free") + ylim(0, NA)
# Plot styling
plot_ms_son_styled <- plot_ms_son + labs(x = NULL, y = "MS peak area") +
theme(axis.title.x = element_text(size = 14)) + scale_fill_manual(guide = F,
values = c("#66CCFF", "#FFCC66")) + scale_x_discrete(breaks = c("noSon",
"withSon"), labels = c("-", "+"))
plot_ms_son_styled
Ok, so the values look pretty consistent among replicates and there are no obvious differences between sonicated and normal samples!
Here’s a quick t-test:
son_data_ms %>% spread(condition, Area) %>% group_by(measured_phenazine) %>%
summarise(conf_int_low = t.test(noSon, withSon, alternative = "less")$conf.int[1],
conf_int_high = t.test(noSon, withSon, alternative = "less")$conf.int[2],
p_value = t.test(noSon, withSon, alternative = "less")$p.value)
## # A tibble: 3 x 4
## measured_phenazine conf_int_low conf_int_high p_value
## <chr> <dbl> <dbl> <dbl>
## 1 PCA -Inf 1036918. 0.728
## 2 PCN -Inf 3860322. 0.0755
## 3 PYO -Inf 3005305. 0.651
The t.test indicates that none of the differences are signficant p<0.05. There might be a small difference for PCN, but it is not clear.
Just for completeness, let’s calculate the concentrations for these colonies. Look up the dilution for these colonies - was it 1mL or 800uL? did I dilute by 2x?
son_data_ms_cal <- son_data_ms %>%
mutate(concentration = case_when(
measured_phenazine == 'PCA' ~ Area*std_slopes$estimate[1],
measured_phenazine == 'PYO' ~ Area*std_slopes$estimate[2],
measured_phenazine == 'PCN' ~ Area*std_slopes$estimate[3]
)) %>%
mutate(calcConc = concentration*2*(800 / 62)) %>% #Dilution factor
group_by(measured_phenazine, condition) %>%
mutate(mean = ifelse(rep=='1',mean(calcConc),NA))
# Plot layout
plot_ms_son_cal <- ggplot(son_data_ms_cal, aes(x = condition, y = calcConc)) +
geom_col(aes(y = mean, fill = condition))+
geom_jitter(shape = 21, size = 2, height = 1, width = 0.1) +
facet_wrap(~measured_phenazine, scales = 'free') +
ylim(0,NA)
#Plot styling
plot_ms_son_cal_styled <- plot_ms_son_cal +
labs(x = NULL, y = "Biofilm concentration uM") +
theme(axis.title.x = element_text(size = 14)) +
scale_fill_manual(guide = F, values = c("#66CCFF","#FFCC66")) +
scale_x_discrete(breaks = c('noSon','withSon'),
labels=c("-","+"))
plot_ms_son_cal_styled
Ok, so no matter how we look at it there doesn’t seem to be a real difference.
Can we see evidence that the sonication actually lysed a bunch of the cells? CFU counts were plated for all these colonies, so that should clarify.
cfu_data <- tibble(condition = c(rep("+", 3), rep("-", 3)), count = c(2,
3, 10, 15, 15, 10))
ggplot(cfu_data, aes(x = condition, y = count)) + geom_jitter(height = 0,
width = 0.1) + ylim(0, NA)
# t.test(c(2,3,10), c(15,15,10), alternative = 'less')
This difference doesn’t look super convincing, but at the 10^-5 dilution all of the sonicated samples look to have clearly fewer colonies, however the colonies grew together so it is difficult to count. Also, the biofilms could have started with different numbers of cells…
Anyway, based on the means of 13 and 5, at least 50 percent of the cells were lysed and it was likely more like 80%. With that difference in lysis, I think we would have seen a difference in the extracts if there were truly some large intracellular pool of phenazines (that was still there and not already secreted when we lysed).
Ok, so now let’s quantify the dPHZstar retention in the same way. First, here’s the PDA data:
pda_data <- read_csv("../data/dPHZstar_PDA_PHZretention_08_29_18.csv") %>%
mutate(calcConc = Amount * 2 * (800/62)) %>% group_by(Name,
Day, Phenazine) %>% mutate(mean = ifelse(Rep == 1, mean(calcConc),
NA))
dphz_ret_pda_plot <- ggplot(pda_data %>% filter(Phenazine ==
"PHZ"), aes(x = Day, y = calcConc, )) + geom_col(aes(y = mean,
fill = Day)) + geom_jitter(height = 0, width = 0.1, shape = 21) +
facet_wrap(~Name, scales = "free") + ylim(0, NA)
# Plot styling
dphz_ret_pda_plot_styled <- dphz_ret_pda_plot + labs(x = NULL,
y = "Phenazine Concentration") + theme(axis.title.x = element_text(size = 14)) +
scale_fill_manual(guide = F, values = c("#66CCFF", "#FFCC66")) +
scale_x_discrete(breaks = c("3", "4"), labels = c("Day 3",
"Day 4"))
dphz_ret_pda_plot_styled
So here it’s obvious why we need to go to the MS channel. We really want to get values for both Day 3 and 4, and we only get that for PYO.
So here’s the manually quantified MS peaks:
day3 <- c(2597946, 3508218, 2687107, 90652840, 91660115, 91168200,
66702800, 67639961, 75507519)
day4 <- c(NA, NA, NA, 15384042, 16353567, 19682638, 5261483,
6216937, 5551978)
dphz_col_data <- tibble(measured_phenazine = rep(c(rep("PCA",
3), rep("PYO", 3), rep("PCN", 3)), 2), rep = rep(c(1, 2,
3), 6), day = c(rep("D3", 9), rep("D4", 9)), area = c(day3,
day4)) %>% group_by(measured_phenazine, day) %>% mutate(mean = ifelse(rep ==
"1", mean(area), NA))
dphz_ret_area_plot <- ggplot(dphz_col_data, aes(x = day, y = area,
)) + geom_col(aes(y = mean, fill = day)) + geom_jitter(height = 0,
width = 0.1, shape = 21) + facet_wrap(~measured_phenazine,
scales = "free") + ylim(0, NA)
# Plot styling
dphz_ret_area_plot_styled <- dphz_ret_area_plot + labs(x = NULL,
y = "MS peak area") + theme(axis.title.x = element_text(size = 14)) +
scale_fill_manual(guide = F, values = c("#66CCFF", "#FFCC66")) +
scale_x_discrete(breaks = c("D3", "D4"), labels = c("Day 3",
"Day 4"))
dphz_ret_area_plot_styled
Ok, so now this is much more convincing. We can see PCN and PYO peaks on Day 3 and Day 4 and we can see PCA peaks on day 3 (when concentrations are higher). It looks to me like PYO is retained more than PCN and PCA. Let’s look at the percentage of phenazine retained (based on means).
dphz_col_data %>% group_by(measured_phenazine, day) %>% summarise(mean = mean(area)) %>%
spread(day, mean) %>% mutate(percent_remaining = D4/D3)
## # A tibble: 3 x 4
## # Groups: measured_phenazine [3]
## measured_phenazine D3 D4 percent_remaining
## <chr> <dbl> <dbl> <dbl>
## 1 PCA 2931090. NA NA
## 2 PCN 69950093. 5676799. 0.0812
## 3 PYO 91160385 17140082. 0.188
So about 19% of PYO is retained, about 8% of PCN is retained and an undetectable amount of PCA is retained after 24hrs.
Let’s try to calibrate for concentration. This is how the measurements fall on the calibration curve:
ggplot(phz_stds %>% filter(concentration < 10), aes(x = area,
y = concentration, color = measured_phenazine)) + geom_point() +
geom_smooth(method = "lm", formula = y ~ x + 0) + geom_point(data = dphz_col_data,
aes(y = 0), shape = 2) + facet_wrap(~measured_phenazine,
scales = "free")
Not perfect, but let’s move forward.
dphz_col_cal_data <- dphz_col_data %>% mutate(concentration = case_when(measured_phenazine ==
"PCA" ~ area * std_slopes$estimate[1], measured_phenazine ==
"PYO" ~ area * std_slopes$estimate[2], measured_phenazine ==
"PCN" ~ area * std_slopes$estimate[3])) %>% mutate(calcConc = concentration *
2 * (800/62)) %>% group_by(measured_phenazine, day) %>% mutate(mean = ifelse(rep ==
"1", mean(calcConc), NA))
dphz_ret_conc_plot <- ggplot(dphz_col_cal_data, aes(x = day,
y = calcConc, )) + geom_col(aes(y = mean, fill = day)) +
geom_jitter(height = 0, width = 0.1, shape = 21) + facet_wrap(~measured_phenazine,
scales = "free") + ylim(0, NA)
# Plot styling
dphz_ret_conc_plot_styled <- dphz_ret_conc_plot + labs(x = NULL,
y = "Phenazine Concentration") + theme(axis.title.x = element_text(size = 14)) +
scale_fill_manual(guide = F, values = c("#66CCFF", "#FFCC66")) +
scale_x_discrete(breaks = c("3", "4"), labels = c("Day 3",
"Day 4"))
dphz_ret_conc_plot_styled
If you compare to the PDA quantifications above, PYO looks spot on, PCN looks off and PCA we don’t know how close.
I’m going to go back and manually integrate the PCN peaks from the PDA. Otherwise I think we should just stick with the MS peak area quantifications.
For the record here’s the QDA chromatograms for PCA showing that it is indeed undetectable on Day 4 in the colony.
This is for the samples discussed above that were incubated with all 3 phenazines at once.
knitr::include_graphics("../data/dPHZ_retention_PHZ_QDA_chromatogram.png")
This was for colonies that were incubated with just PCA at a higher concentration.
knitr::include_graphics("../data/dPHZ_retention_PCA_QDA_chromatogram.png")
In both cases the peaks are only visible on day 3. At day 4 both chromatograms show baseline.


For top-k classification tasks, cross entropy is widely used as the learning objective even though it is the optimal metric only in the limit of infinite data.
The paper introduces a family of smoothed loss functions that are specially designed for top-k optimization.
Here s denotes the output of the classifier model to be learnt, y is the ground truth label, s[p] denotes the kth largest element of s and s\p denotes the vector s without pth element.
This lk loss has two limitations:
It is continous but not differentiable in s.
Its weak derivatives have at most 2-nonzero elements.
The loss can be reformulated by adding and subtracting the k-1 largest scores of s\y and sy and by introducing a temperature parameter τ.
For any τ > 0, Lkτ is infinite-differentiable and has non-sparse gradients.
Under mild conditions, Lkτ apporachs lk (in a pointwise sense) as τ approaches to 0++.
It is an upper bound on the actual loss (up to a constant factor).
It is a generalization of the cross-entropy loss for different values of k, and τ and higher margins.
nCk number of terms needs to be evaluated for computing the loss for one sample (n is number of classes).
Loss Lkτ can be expressed in terms of elementary symmetric polynomials σi(e) (sum of all products of i distinct elements of vector e). Thus the challenge is to compute σk efficiently.
Compute σk(e) where e is a n-dimensional vector and k« n and e[i]!=0 for all i.
σi(e) can be computed using the coefficients of the polynomial (X+e1)(X+e2)…(X+en) by divide and conquer approach with polynomial multiplication.
With some more optimizations (eg log(n) levels of recursion and each level being parallelized on a GPU), the resulting algorithms scale well with n on a GPU.
Operations are performed in the log-space using the log-sum-exp trick to achieve numerical stability in single floating point precision.
The backward pass uses optimizations like computing derivative of σj with respect to ei in a recursive manner.
Appendix of the paper describes these techniques in detail.
Experiments are performed on CIFAR-100 (with noise) and Imagenet.
For CIFAR-100 with noise, the labels are randomized with probability p (within the same top-level class).
The proposed loss function is very robust to both noise and reduction in the amount of training dataset as compared to cross-entropy loss function for both top-k and top-1 performance.


miRNA miR maize miR, plant levels expression miRNAs target targets light hormone regeneration regulation hormones (Figure Plant embryogenic GRMZMG_T darkness callus observed depletion somatic stress-related VS- embryogenesis presence RNA {border-style Arabidopsis changes px;} #ffffff;} Figure However, highly transcript transcription AGO Cell gene photoperiod conserved reduction response Target analysis correlation development-related genotypes immature tissue tissues EC, Material, SE. analyzed genotype increased inverse predicted protein used Chen Shen VS-, Zhang additional data decreased developmental differences embryo expressed induction patterns process using ./journal.pone. AGOc Liu embryos genes high involved mRNA potential required showed Yang behavior both, dedifferentiation factor important increase initial lanes miRa-p microRNAs particularly photoperiod. plantlets px; sequencing shown small specific suggesting tested vs. {font-family (Supplementary Bartel Maize Northern Table USA) Zea abundance consistent control development different differentiation early factors font-size higher maintained mays previously reported represent species target: translation (Luo (Shen CUC H-. Lin Mexico NAC Physiol. Supplementary Therefore, Wang copper cultivars darkness, differential double; greater hormones, identified induced major medium microRNA performed qRT-PCR regeneration. relevance seed set shoot stages strongly subculture subcultured targets, undifferentiated validated weeks zygotic Arabidopsis. Biol. Click GA-MYB LINK MicroRNA RNAs Res. S). SBP SBP, SE, according apical border-color border-width change condition contrasting corresponding decrease degradome dependent depending derived detected effect effects file. formation fractions hand, including indicated known level light. lower maize, meristem miR) miRNA-mediated miRNA/target particular remained solid; study target, targets. transcripts {font-style {font-weight (,-D (Li (Sekhon (Wu ./s--- ./tpc.. Alejandri-Ramirez, B). Bartel, Biochem. City, Dinkova GRMZMG_T, Genome-wide Green H-, Jiang Methods MicroRNAs Mol. NA, PLC Science TD. Total Xie absence abundant article auxin background bars biological bold characterized collected concentration conditions courier; cues cultivars, culture degradation described display displayed distribution em; environmental expected family function half identification influence inhibition kinetin) lane levels. light, low obtained probably proliferation pt;} rRNA regulated regulatory related relationship respect results reveals rice roles samples seedlings signals significant similar species-specific stage stress sucrose support thaliana translational two-fold vitro


Flip Direction Speed Control
Clicking at any point in the window prints its normalized device coordinates on the console.


Loading assets, please wait.
It seems javascript is disabled. To display the content, enable javascript in your browser.
Review and follow the instructions provided by your browser:
Chrome
Firefox
Opera
Safari
Internet Explorer
IOS
Android


Concierge
UX/UI Design
Connecting travelers to share in unique local experiences.
Upcomer
UX/UI Design
Increasing user engagement of the eSports community.
Burger Records
UX/UI Design
Creating a cohesive e-commerce experience.
Connecting travelers to share in unique local experiences.
Increasing user engagement of the eSports community.
Creating a cohesive e-commerce experience.


The most important thing you need to know about attributed
variables is that Prolog application programmers
normally need not use them. This chapter is intended
mainly for Prolog library authors who want to
improve or implement more declarative language constructs.
Attributed variables are a low-level mechanism for
implementing declarative constructs. However, when considered in
isolation, they have the potential to prevent and run counter to
the declarative reading
we want to apply to pure
Prolog programs.
For this reason, attributed variables should only be used as
a building block
for higher-level mechanisms.
If you are a Prolog library author, your interest in this topic
may be warranted. To application programmers, my recommendation is
to use existing libraries that provide equivalent functionality
under more declarative wrappers.
Prolog implementors may be interested in
the Minato task and
in the Equivalence task to
assess the generality of their interface predicates.
How it started
Already the first Prolog system, sometimes
called Prolog 0, supported the
constraintdif/2.
To Prolog implementors and practitioners, the question soon
became: By which general mechanism can we we implement
further constraints conveniently, correctly and efficiently?
When considering existing approaches of extensions to syntactic
unification, we observe: highly specialized implementations, where the
unification algorithm cannot be manipulated by the user
(e.g. [Col87,JaLa87,vH89]), approaches too general to be
implemented efficiently and too general to allow the reuse of existing
Prolog programs [Ko84], or extensions allowing definitions in a
procedural language [CLiST89] only.
Our approach focuses on a sufficient abstract yet efficient
interface, which permits to write implementations of constraints in
Prolog, neglecting the actual representation of the constrained
variables. Metastructures are applicable, but not restricted to the
following areas:
...
Among the projected use cases, stream-based side effect free I/O
is already mentioned in the paper. This is now available
in library(pio).
How it continued
Christian Holzbaur, who back then was a very close colleague of
Ulrich Neumerkel, used metastructures in his
1990 dissertation, Specification of Constraint Based
Inference Mechanism through Extended Unification, in which he
implemented CLP(Q).
After this experience, and having observed some shortcomings of
metastructures, Holzbaur proposed an alternative yet very strongly
related mechanism called attributed variables.
This package implements attributed variables. It provides a means of
associating with variables arbitrary attributes, i.e. named properties
that can be used as storage locations as well as to extend the default
unification algorithm when such variables are unified with other terms
or with each other.
This facility was primarily designed as a clean interface between
Prolog and constraint solvers, but has a number of other uses as well.
The basic idea is due to Christian Holzbaur and he was actively
involved in the final design. For background material, see the
dissertation [Holzbaur 90].
If you are interested in more information about the origin of
these developments, I recommend you ask the involved people
in person.
The same interface is also implemented in other Prolog systems,
such as in Scryer Prolog
and Ciao.
What we have now
The concrete features of attributed variables vary between
Prolog systems. However, in all systems that provide
attributed variables, we have essentially the following features
at our disposal:
We can attach information to variables.
This information can be taken into account when a variable
is being unified.
This information can be displayed in answers on the
Prolog toplevel.
In the following, we consider one specific implementation of these
features in more detail.
Attributed variables in Scryer Prolog
Preliminaries
To illustrate the key concepts of attributed variables, we
consider Scryer Prolog because it is freely available, and it
implements the same interface for attributed variables as
SICStus Prolog.
I would like to stress again that attributed variables normally
need not and also should not be used in
typical Prolog applications. Instead, and also in
Scryer Prolog, attributed variables are available to
implement features from Constraint Logic Programming such
as dif/2 and CLP(ℤ), and you should use these
higher-level predicates instead in typical use cases.
When working with attributed variables, you need to know
3 kinds of interface predicates, in accordance with the
features outlined above:
Predicates for adding, changing and removing attributes.
Predicates to reason about the unification of
variables that have attributes attached.
Predicates that let you display attributes on the toplevel in some form.
We now consider these kinds of predicates in turn. For more
information, see especially
Attributed
Variables in the SICStus Prolog manual. Even though
the details differ in other Prolog systems, the kinds of
predicates are the same also in other systems.
Adding and changing attributes
An attributed variable is a relation between
a variable, a module and
a value.
With the interface of SICStus and Scryer Prolog, we declare
attributes in a module with the attribute/1 directive, using Name/Arity pairs:
This directive is made available via library(atts).
An attribute can be added and changed via:
Module:put_atts(Var, AccessSpec):
If AccessSpec is of the form +(Attribute),
then the corresponding attribute is set to the specified value.
If AccessSpec is of the form -(Attribute),
then the attribute is removed. For convenience, the
wrapper + can be omitted.
To try this, let us define a sample module,
say attrmod.pl, where we declare
the attribute a/1:
We see that in response, the Prolog toplevel simply repeats what
we said. Thus, the toplevel retains the important invariant
that the answer is declaratively equivalent to the original
query. In this concrete case, all there is to say is: The
attribute a(test) is associated with the
variable X in module attrmod, and that's
exactly what this answer states. We call a variable that has an
attribute attached an attributed variable.
Importantly, when you use put_attr/3repeatedly
with the same variable and module, then any previously attached
value is simply overwritten. For example:
Thus, after these two calls, a(ho) is the single
remaining attributed that is attached to X in
module attrmod.
We say that put_atts/2destructively modifies an
attribute. For this reason, you can use put_atts/2 also
as a somewhat more declarative and less error-prone alternative
to setarg/3.
Note also that the effect of put_atts/2 is undone
on backtracking. For example:
When the alternative is reported, we see from the absence of any
goals besides true that no more attribute is
attached to X. For this reason, assigning attributes
to variables blends well with Prolog's
built-in search strategy, and
is similar to unification in that respect. We say that the
modification is backtrackable.
Unification of attributed variables
The key distinction between variables and attributed
variables is what happens at the time of unification.
Attributed variables are special in that an extensible
predicate is automatically invoked when they are
unified. In SICStus and Scryer, the particular predicate that is invoked
is verify_attributes/3 residing in the module where
the attribute is attached. You, the Prolog programmer, can
provide a custom definition of this predicate, and it will
be automatically invoked by the Prolog engine when a variable
that has attributes attached is being unified.
For example, let us define a very rudimentary version
of verify_attributes/3 in our
module attrmod:
verify_attributes(X, Y, _) :- throw(cannot_unify(X,Y)).
With this definition, which simply throws an exception when
it is invoked, we get for example:
?- attrmod:put_atts(X, a(1)),
attrmod:put_atts(Y, a(2)),
X = Y.
throw(cannot_unify(_397,_399)).
M:verify_attributes(-Var, +Value, -Goals):
This predicate is called whenever a variable Var that might have
attributes in Module is about to be bound to Value (it might
have none). The unification resumes after the call to
verify_attributes/3. Value is a nonvariable, or another
attributed variable. Var might have no attributes present in
Module.
verify_attributes/3 is called beforeVar has
actually been bound to Value. If it fails, the unification is
deemed to have failed. It may succeed nondeterminately, in which
case the unification might backtrack to give another answer. It
is expected to return, in Goals, a list of goals to be called
after Var has been bound to Value. Finally, after calling Goals,
any goals blocked on Var are called.
verify_attributes/3 may invoke arbitrary Prolog goals,
but Var should not be bound by it. Binding Var will result in
undefined behavior.
If Value is a nonvariable, verify_attributes/3
will typically inspect the attributes of Var and check that they
are compatible with Value and fail otherwise. If Value is
another attributed variable, verify_attributes/3 will typically
copy the attributes of Var over to Value, or merge them with
Value’s, in preparation for Var to be bound
to Value. In either case, verify_attributes/3 may
determine Var’s current attributes by calling get_atts(Var, List)
with an unbound List.
In the case when a single unification binds multiple attributed
variables, first all such bindings are undone, then the
following actions are carried out for each relevant variable:
For each relevant module M, M:verify_attributes/3 is called, collecting a list of returned Goals.
The variable binding is redone.
Any Goals are called.
Any blocked goals are called.
First, let us try out what the documentation states: For example,
let us make the unification fail.
verify_attributes(_, _, _) :- false.
Example query and answer:
?- attrmod:put_atts(X, a(n(1))),
attrmod:put_atts(Y, a(n(2))),
X = Y.
false.
OK, this works as advertised. In this example and the following,
we use
compound terms of the
form n(N) to represent the integer N.
We could also use the integers directly instead. However,
this would risk ending up with a defaulty
representation, and also prevent us from symbolically
distinguishing attributes from variables in the code
below.
Second, let us modify the
involved attributes upon unification. If a unification
involves two (or more) variables, we must
state how such a unification affects the involved variables.
Let us extend the example from above: In the above case, we have
associated the Prolog terms n(1) and n(2)
with the variables X and Y, using the
attribute a/1. To gather experience with the
interface, let us say that upon unification of two variables with
respective attributes a(n(A)) and a(n(B)),
where A and B are integers, we want to attach
the new attribute a(n(C)) to the resulting (single)
variable, where C is the sum of A
and B.
To accomplish this, we need a way to reason about existing
attributes of variable. The predicate get_atts/2 is
available for this purpose:
get_atts(Var, AccessSpec):
If AccessSpec is of the form +(Attribute),
then the corresponding attribute must be present and is unified
with Attribute. For convenience, the
wrapper + can be omitted.
Thus, we shall now implement the following steps:
Upon unification of two variables with attributes from
module attrmod, fetch
their a/1 attributes.
Compute the sum of the integers in the attributes,
using integer arithmetic.
?- attrmod:put_atts(X, a(n(1))),
attrmod:put_atts(Y, a(n(2))),
X = Y.
X = Y, attrmod:put_atts(Y,a(n(3))).
And indeed this works: After the unification, a(n(3)) is
associated with the resulting single variable, which is X
or, equivalently, Y, and 3 is the result
of 1+2.
The following yields an uninstantiation error, because
because get_atts/2—which is used in our definition
of verify_attributes/3)—requires its first argument
to be a variable, whereas we use the atom b:
?- attrmod:put_atts(X, a(n(1))),
X = b.
error(uninstantiation_error(b),get_atts/2).
In fact, with the above definition of verify_attributes/3,
only very specific kinds of unifications will succeed. In
particular, every unification with a ground value will
yield an uninstantiation error. However, in actual
constraint systems, we are very interested in ground terms,
because they typically represent concrete solutions.
Let us therefore generalize the above definition
of verify_attributes/3 (in module attrmod)
in such a way that it still illustrates a key feature of the whole
interface, namely the ability to selectively veto
unifications. For example, in our concrete case, let us allow
unifications with a concrete integeriff that
integer matches the associated integer value that is stored in the
involved variable's attribute.
We hence must distinguish two different cases when two
terms X and Y are unified. Let us consider
it from the perspective of X, i.e., let us suppose
that verify_attributes/3 is invoked with X as
the first argument. (Of course, the other case is completely
symmetric, but we need to draw this distinction to discuss the
cases.) Then, eitherY is
an integerk. In that case, we must veto
the unification (i.e., fail) if k does not match the
integer that is stored in the attribute
of X. OrY is an
attributed variable. In that case, we proceed exactly as
previously: We compute the sum of the two integers that are
stored in the attributes of the involved variables, and associate
that sum with the unified variable.
In Prolog, we can express this distinction with the built-in
predicate integer/1:
verify_attributes(Var, Value, []) :-
get_atts(Var, a(n(A))),
( integer(Value) ->
Value =:= A
; get_atts(Value, a(n(B)))
C #= A + B,
put_atts(Var, -a(n(_))),
put_atts(Value, a(n(C)))
).
Here are a few sample queries and their results:
?- attrmod:put_atts(X, a(n(1))), X = 1.
X = 1.
?- attrmod:put_atts(X, a(n(1))), X = 3.
false.
?- attrmod:put_atts(X, a(n(1))),
attrmod:put_atts(Y, a(n(2))),
X = Y,
X = 3.
X = Y, Y = 3.
Thus, everything seems to work as intended. We have successfully
created a simplistic constraint solver, which
admittedly has quite peculiar semantics but implements what we
have outlined. However, this concrete solver has a very severe
declarative flaw, which becomes apparent if you eliminate the
goal X = Y in the above conjunction:
?- attrmod:put_atts(X, a(n(1))),
attrmod:put_atts(Y, a(n(2))),
X = 3.
false.
In this case, generalizing a query (by removing a
constraint) has created a
more specific program (which is now equivalent
to false). This violates elementary properties we expect
from logic programs and
prevents for example declarative debugging.
The key takeaway from this is that the interface for attributed
variables does not by itself provide any guarantees of the
resulting constraint solver. You, the programmer, must
implement your system in such a way that desirable properties are
preserved in resulting programs. We return to this point below.
For now, let us conclude this section with a more interesting and
also more realistic example: We now implement a simplistic
constraint solver over finite domains, where the
attribute of each involved variable is an ordered list
of elements, representing the admissible domain of the
variable.
A suitable unification hook for such a constraint solver could
look like this:
If Var has an associated domain Dom1,
and Other is a variable that has an associated
domain Dom2, then we build
the intersectionDom =
Dom1 ∩ Dom2. This ordered list contains
all elements that are admissible for both variables
that have been unified.
We only proceed if Dom is different
(dif/2) from the
empty list[], and
hence there is at least one remaining domain element
that is admissible for the resulting unified variable.
If Dom has only a single remaining element, then
that element must be equal to the unified variable
(because there is no other choice).
Otherwise, assign the intersection Dom as
an attribute to the unified variable.
If Other has no associated domain, then the
unification is only admissible if Other is
a member of the domain Dom1.
In addition, let us use the following definition to associate a
variable with its domain:
This works because upon unification, the hook is invoked, builds
the intersection of the two domains, determines that they have
only a single element in common, and hence unifies the
resulting variable with that element. Note that X
and Y have become completely indistinguishable.
Unification has truly unified them.
Exercise (hard): The following property is highly desirable
for a constraint solver. Prove that it holds in this case, or
provide a counterexample: For every
Prolog query Q that consists only
of domain/2 and (=)/2 goals, removing
one of the goals makes the resulting query Q' at
least as general as Q, in the sense that the set
of solutions of Q is a subset of those
of Q'.
Displaying attributes
In an actual constraint solver, we are not content with answers
that look like attrmod:put_atts(X,a(test)). Instead, what we
expect from a constraint solver is a representation of remaining
attributes that is meaningful to humans. Thus, we expect a
constraint solver to emit more high-level Prolog goals
as answers, which have a well-defined meaning no matter how they
are internally implemented.
For this purpose, there is
the DCG nonterminalM:attribute_goals//1. In
Scryer Prolog, you can define this nonterminal in a
module M, and it is automatically invoked by the
Prolog engine for each variable X that has an
attribute in M. It is defined as follows:
M:attribute_goals(V):
This is a DCG nonterminal describing
a list of Prolog goals which caused the presence
of V's attributes in module M. This means
that executing these goals should lead to equivalent attributes
on X in module M.
For example, let us apply this feature to our simple finite
domain constraint solver that we considered above. It only has a
single interface predicate,
called domain/2. Ideally, answers that are reported
on the toplevel should only use public interface predicates,
since their meaning is known to users.
Thus, it remains for us to translate attributes to
so-called residual goals, using the above nonterminal.
In the concrete case above, we can do it like this:
This simply fetches the attribute, and describes a list with
a single goal. Here is an example that illustrates that
this predicate is automatically invoked by the toplevel when
reporting answers:
?- domain(X, "abc").
domain(X, "abc").
It also works for more complex queries:
?- domain(X, "abc"),
domain(Y, "bcd"),
X = Y.
X = Y,
domain(Y, "bc").
Using this mechanism, you can always translate internal attributes
to Prolog goals that are more meaningful to users.
The toplevel provides this functionality by internally invoking
the predicate copy_term/3. This predicate creates
a copy of variables that may be involved in constraints,
and uses attribute_goals//1 to create a list
of goals that, when called, create equivalent attributes
on the copy. You can use copy_term(X, X, Gs) to reason
about the constraints Gs that X is
involved in. Note that a list of goals is used, since
this is a clean representation
of goals that allows convenient further analysis.
Pitfalls and Errands
Working with attributed variables is very error-prone.
In my experience, no amount of education, research and practice saves
one from making quite elementary mistakes when working with them.
It is all the more important that system implementors make
the lives of Prolog programmers as easy as possible by providing
interfaces that make certain classes of errors impossible.
Implementors are sometimes tempted to provide low-level interfaces
to gain performance at the cost of convenience and correctness.
Bart Demoen is an extremely prolific and highly regarded member of
the Prolog community, and several systems therefore adopted the
approach he proposed.
The interface he proposed and implemented deliberately falls short
in a critical respect. I quote from the paper and highlight the
key passages:
4 Basic choice III: no pre_unify
The most profound difference between attributed variables in
SICStus Prolog and ECLiPSe is the state of the variable at the
moment the unifcation handler is called.
As an example: assume the attributed variable X has one
attribute A (with module user) and X is unifed
with the integer 666. In SICStus
Prolog, verify_attributes
is called with X still being unbound. In ECLiPSe, the
unify handler is called with A as an argument - X has been
bound to 666 already.
The SICStus Prolog behavior follows [6] which claims that it
is important to have the variables as if not yet bound.
ECLiPSe people on the other hand (Joachim Schimpf) claim that
this is not needed.
We do not want to take a stand in this issue: we had implemented
at some point the full SICStus Prolog behavior (but on dynamic
attributes of course) and were not convinced that the extra
implementation complexity was worth the gain. However, we were
not impressed by the manuals of SICStus Prolog and ECLiPSe,
which claim that binding the X during a
pre_unify yields unexpected results: in our
opinion (and experience), it just shows that full support for
pre_unify is too cumbersome to implement and maintain
in a full system like SICStus Prolog or ECLiPSe. So we
switched to the ECLiPSe model, but without the compromise to
support pre_unify for compatibility reasons: Occam's
razor is a blessing :-)
Unfortunately, despite the smiley, the above passage was taken
seriously by Prolog implementors, and this limited interface is
what for example SWI-Prolog now provides.
Occam's razor
Occam's
razor, in its most popular version, states that "Entities
are not to be multiplied without necessity".
I ask you, then, why do we have 3 different interfaces for
attributed variables, two of which are clearly less general than
the other?
A conservative approach, more than 20 years after the work of
Neumerkel and Holzbaur, could look as follows:
Let us consider 4 widely used Prolog systems, such as SICStus,
GNU-Prolog, ECLiPSe and SWI, and 4 widely used types of
constraints: CLP(H), CLP(FD),
CLP(B)
and CLP(Q).
SICStus supports 4 of them. SWI supports 3 of them. ECLiPSe and
GNU-Prolog support 2 of them. Of these systems, which has the
most general interface for attributed variables? Take this
system as the one we want to strive towards. By Occam's
razor, chances are that they have only done what is
needed to support the constraint solvers they provide.
The core shortcoming of the SWI-Prolog interface for attributed
variables is that verify_attributes/3 is not supported,
and only a much less general predicate
called attr_unify_hook/2 is provided instead. Critically,
attr_unify_hook/2 is only
invoked after a variable has already been unified.
This may seem quite innocent at first: After all, the (previous)
attribute of that variable is an argument
of attr_unify_hook/2, so everything we need to know is
available, right? Let us suppose that this is the case
(although it isn't, as we discuss below). Even then,
several variables may at once become instantiated, for
example via a goal like [X,Y] = [0,1]. It is
easy to see that if such a unification
involves n variables, then there are at least
2n different kinds of possible
instantiation patterns that may arise in a single
unification. Nobody is able to think all cases through completely.
An example of a situation that can arise due to simultaneous
unifications is explained in
commit 9c8ea20b7.
A highly experienced expert in constraint programming ran into
the same issue
in his own implementation of the dif/2 constraint, even
though it is one of the simplest and most elementary constraints
Prolog systems provide. A few years
later, another mistake
was found and corrected in the implementation of
SWI-Prolog's dif/2 constraint, then another mistake, and to this day, dif/2
remains incorrectly implemented in SWI-Prolog,
even for acyclic terms.
But still, maybe the interface is not to blame, right? Maybe we
have only not tried hard enough to work with the interface. After
all, only poor craftspeople blame their tools, right?
Wrong! If an interface not only makes possible but
downright enforces such mistakes, then it is time to
reconsider the interface. Normally, such issues should be reason
enough to seriously rethink the interface. However, in the Prolog
community, the error-prone nature of this interface is not by
itself enough reason for change. Traditionally, it
is performance that matters most, and who cares about
correctness as long as your system is fast, right?
Therefore, I give you a second argument:
The SWI-Prolog interface is not sufficient to express
important classes of constraint solvers. Consider again the
unification [X,Y] = [0,1]. This means that the attributes
of both variables become unavailable at the same time. It
is true: When attr_unify_hook/2 is run
for X, you have access to its former attribute. But
at that time, you can no longer access the former attribute
of Y via get_attr/3, and in fact you can
no longer even tell that Y was a variable. The next
section shows an example where this is needed, but not possible.
Minato task
Let us now consider a specific task, which is easily encountered
when implementing a CLP(B) system based
on
Zero-suppressed
decision diagrams (ZDDs). ZDDs are a very important
data structure, and
Donald Knuth
has called them "the most beautiful construct in
computer science" in
a talk.
I call this task Minato task, in honor of
湊 真一(みなと しんいち), MINATO Shin-ichi, the inventor
of ZDDs
(see Zero-Suppressed
BDDs for Set Manipulation in Combinatorial Problems). We
shall use this task to determine whether a Prolog system's
interface predicates for attributed variables
are general enough to naturally express a certain
class of constraints that are of great practical importance.
A ZDD is a decision diagram. This means that we can
simply follow the lines of the diagram to arrive at a
truth value. The nodes of a ZDD
are branching variables: If a variable
is 1, then we take the plain line, and
if a variable is 0, then we take
the dotted line. In that respect, a ZDD is like
a Binary Decision Diagram (BDD). However, a ZDD is
interpreted with the following distinguishing twist: If a
variable does not appear on a path that leads
to true, then that variable must be equal
to 0.
For example, here is a ZDD that represents the truth value
of the Boolean function XxorY:
We can represent a ZDD as a
Prolog term. The truth
values true and false can be represented
as atoms, and an inner node can be represented as
( X → Then ; Else ),
where:
X is a branching variable
Then and Else are nodes.
In analogy to Prolog syntax, Then is taken to mean
that X is 1 (true), and Else means
that X is 0 (false).
For example, the ZDD above can be represented as:
( X -> true ; ( Y -> true ; false ) )
Both variables, X and Y, participate in this
decision diagram. Therefore, to reason about such constraints in
Prolog, it is natural to attach this diagram as
an attribute to both variables. Here is how we can do this
with put_attr/3:
We now consider a series of unifications, and you tell us how you
use your system's interface predicates to arrive at the correct
truth values for X and Y.
As a start, consider the following unification: X = 0.
You reply for example with: That's easy, I simply take a look at
the decision diagram, which now is:
( 0 -> true ; ( Y -> true ; false ) )
Since the first branching variable is now instantiated, it is
clear which branch we must take, so we can replace the whole diagram with:
( Y -> true ; false )
From there, further unifications are easy.
Here is a slightly harder case: X = 1.
This means that the ZDD could be reduced to:
true
But wait, that's not all! As we explained, a variable that
does not appear in a path to true must be equal
to 0. In this case, Y is such a variable,
so we must set it to 0. But how? Well, one way
to do this is to keep track of all variables that have
so far appeared in constraints, and to represent the ZDD for
example as a pair of terms, such as:
( X -> true ; ( Y -> true ; false ) )-[X,Y]
This means that in the above case, we would end up with:
true-[1,Y]
and from there it is easy to state that Y = 0.
Here is a third case: [X,Y] = [1,1].
And you solve the Minato task by telling us how your
interface predicates can be used to determine that this
unification is not admissible due to the
constraints the variables are involved in.
For comparison, the unification must succeed if the ZDD
is for example:
ZDD = ( X -> Inner ; Inner ), Inner = ( Y -> true ; false )
This illustrates that you cannot look into other
branches of the ZDD to recover any information
about Y.
Note especially the following: There is no doubt that this issue
can be solved somehow, even with a very primitive interface
for attributed variables. One example would be to duplicate all
kinds of attributes so that they are available redundantly in all
data structures that occur anywhere. However, an interface that
demands such contortions cannot be taken seriously. In addition,
and especially when reasoning with decision diagrams, memory is
often the primary bottleneck, and we therefore want to avoid
copying data also for this reason.
In my view, the key questions
are:
How naturally can an interface be used to solve
such tasks?
How likely are mistakes by application programmers
who use it?
How hard do we want to make our lives for the sake of
negligible additional performance?
In my opinion, we should strive for convenient and general
interface predicates that make mistakes as unlikely as
possible. People have suggested that I "want the SICStus
interface". I would in fact prefer an interface that
provides even stronger guarantees. However, from those
interfaces that are currently available, I consider the SICStus
interface the most desirable, and therefore recommend its
emulation.
Solution with SICStus Prolog
For completeness, here is a possible solution of the
Minato task, using SICStus Prolog and its very
general interface
for attributed variables.
First, of course, let us use
a clean representation of nodes, such as:
a leaf is represented as b(true) or b(false)
an inner node is represented as ( Var -> Then
; Else ), where Then and Else are nodes.
Note in particular that we can now symbolically distinguish
leaves from inner nodes, thanks to the b/1 wrapper
we use for concrete Boolean values.
As a warm-up, let us express the so-called restriction of
a ZDD. This means the relation between one ZDD, and a
new ZDD that arises when the variable Var is
unified with the concrete Boolean truth value Value,
which is either 0 or 1:
zdd_restriction(b(T), _, _, b(T)).
zdd_restriction(( Var0 -> Then0 ; Else0), Var, Value, ZDD) :-
( Var0 == Var ->
( Value =:= 0 -> ZDD = Else0
; Value =:= 1 -> ZDD = Then0
; throw(no_boolean)
)
; zdd_restriction(Then0, Var, Value, Then),
zdd_restriction(Else0, Var, Value, Else),
ZDD = ( Var0 -> Then ; Else )
).
Note that the above method is an extremely inefficient way to
compute the restriction of a ZDD. Making it faster by
using memoization is left as an
exercise.
We need a single public predicate to demonstrate how our solution
works: variables_set_zdd(Vs, ZDD) shall attach the
given ZDD as an attribute to all variables
in Vs. The attribute shall be of the
form zdd_vs(ZDD, Vs) and store the ZDD as well
as all variables we want to reason about.
In SICStus Prolog, we use library(atts) to declare and
reason about attributes. For example:
We are now ready to implement verify_attributes/3. When a
ZDD is reduced to the leaf node b(true), then
all variables that were not encountered in that branch must
be 0. We enforce this with
a DCG that describes a list of V=0
goals, one for each remaining variable:
A few sample queries are included. In particular, the
Minato task works as desired:
?- ZDD = ( X -> b(true) ; ( Y -> b(true) ; b(false) ) ),
Vs = [X,Y],
variables_set_zdd(Vs, ZDD),
Vs = [1,1].
no
It is clear that the general and declarative SICStus interface has
some performance impact in comparison with more
limited hooks. However, in addition to its generality,
SICStus Prolog is also widely known as one of
the most efficient Prolog systems. The argument
that we should sacrifice correctness for efficiency, even if it
were a sensible one, can therefore not be applied in
this case.
Equivalence task
We now consider a second task, which I
call Equivalence task, and which also arises in
connection with CLP(B). I hope this task
is useful for you to assess the generality and expressiveness
of your system's interface predicates.
The
SICStus documentation
states for sat(Expression), which is
true iffExpression is satisfiable:
If a variable X, occurring in the expression, is
subsequently unified with some term T, this is
treated as a shorthand for the constraint
| ?- sat(X=:=T).
To implement this in Prolog, an interface for attributed variables
must have the ability to reason about a unification before
it takes place. Again, a different implementation strategy
necessitates highly unnatural and error-prone encodings.
Consider for example the query:
?- sat(X=:=Z), X = X+1.
and ask yourself how this could be handled in your system.
According to the SICStus documentation, it should be
equivalent to:
?- sat(X=:=Z), sat(X=:=X+1).
This is satisfiable and should therefore yield for example:
X = Z, Z = 1.
If your system cannot yield such an answer, think about what a
suitable approximation may look like, and how it can be
computed.
For example, with your interface predicates for attributed
variables, can you at least somehow distinguish the above
case from:
?- sat(X=:=Z), X = ~X.
which ought to be equivalent to:
?- sat(X=:=Z), sat(X =:= ~X).
and hence fail.
Further reading and future work
Attributed variables are typically used to implement constraint
solvers on top of Prolog. This is their most important, but
not their only use case.
Especially for Prolog programs that need destructive assignments
or reason about graphs,
attributed variables are often a good and convenient
representation. Do not get carried away with destructive
assignment though, because it destroys the relational nature of
your code.
A good approach is to encapsulate the use of attributed
variables behind more declarative interface predicates of
your libraries. For example, consider the implementation of
Tarjan's algorithm to find the
so-called Strongly Connected Components of
a graph: scc.pl. In
that case, the use of attributed variables allows us to implement
the algorithm with close to asymptotically optimal
performance.
To me, the current state of interface predicates for
attributed variables can at best be considered as definitely
deserving much additional work. For instance, what would be
the best way to let different constraint
solvers cooperate in the intersection of their domains?
If you have a good idea for new interface predicates, consider
writing a
meta-interpreter that lets you present the
mechanism to the community by extending an existing
Prolog system without the need for low-level
changes. Alternatively, follow the example of Douglas Miles
and extend
an existing engine directly.


This is a true link to a relative page
This is a true link to a foreign page
This link doesn't go anywhere
This link also doesn't go anywhere
lorem ipsum...
This link just goes to the above paragraph
Found this kind of link on duckduckgo


GRACE OF MY HEART A film review by Dave Cowen Copyright 1996 Dave Cowen
Just into the second act of GRACE OF MY HEART came a disarming moment which I was never quite able to recover from. Up until that moment the casting of the film was contemporary and vibrant: John Turturro and Eric Stoltz give hilariously fast-talking performances, while Bridget Fonda steals the show as a disturbed Lesley Gore. However, after seeing punkers Redd Cross strike Gen-X poses over Matt Dillon and leer at a theremin player making horrible noise during a failed studio session modeled after the Beach Boys' sessions while producing the never-released _Smile_, I knew that I couldn't quite trust the film any longer.
In GRACE OF MY HEART, Illeana Douglas plays Edna Buxton, a "willful" young woman who swaps dresses and musical numbers at the last minute in order to wow the crowd at a talent audition, finding herself the winner of a recording contract in New York. That recording contract never comes, and Edna finds herself destitute in New York. A crying fit at an audition nets her a lunch meeting with nice hebrew boy Joel Millner, played by John Turturro as if he were the Barton Fink of the music business, who convinces her to change her name and become a songwriter. The film follows Edna, loosely modeled on Carol King, through two decades of hits, misses, and her three failed relationships with industry insiders.
Director Allison Anders literally races through the first half of the film, favoring distracting jump cuts between lines of dialogue and quick montages to lay out Edna's rise as one of the premier songwriters of the Brill Building era. First encounters with Turturro, Eric Stoltz's Howard Cazsatt and Bridget Fonda's Kelly Porter border on the berzerk, bringing the film an endearing manic quality. The use of original music, written by the likes of Los Lobos and Elvis Costello, saves this first half of the film from the kind of false sentimentality that usually grounds films similar to GRACE in nature.
After speeding through a brief relationship with a timid DJ, played by Bruce Davison, GRACE OF MY HEART takes a left turn when Matt Dillon's character Jay Phillips is introduced. Dillon brings to his character a deliberately dazed impression of Beach Boys leader/producer Brian Wilson. Dillon gets the carefully studied mannerisms and motions right, but ultimately seems out of place in the part -- his teen idol reputation obscures the boyish quality that the real Brian Wilson always seems to exhibit. The film strikes an eerie note as Phillips and Buxton marry: while Dillon's Brian Wilson may not be entirely convincing, Illeana Douglas is a dead ringer for Wilson's real-life ex-wife, Marilyn.
The pace of the film slows as it portrays Phillip's descent into paranoia and isolation. As an exploration of the downfall of Brian Wilson and the Beach Boys, the film provides a fascinating portrait -- but as the film shifts focus from Edna to Jay, it begins to lose the emotional bond that the audience had created with Edna. At the end of the second act, an acceptably accurate portrayal of Brian Wilson's life is completely invalidated by a drastic action, and the film's tone switches again.
As followers of the Beach Boys know, Brian Wilson began to live his life in bed, gaining weight hundreds of pounds over his normal size and isolating his wife. Earlier in the second act, Edna explains to rival songwriter Cheryl that she would stay with Brian no matter how far he descended into madness. In real life, that ended up in years of isolation for Wilson's wife, and an eventual break-up -- and I had completely assumed that the plot would continue to follow Wilson's life into order to make an ironic point about Edna's useless relations with men. However. instead of continuing to use Wilson's life as a drive for the film, Anders forcibly steers the script away from the Phillips character in order to finish the film with an ending which paints a much more rosy picture of Edna's life than would seem necessary.
Throughout the first two acts, GRACE OF MY HEART is an invigorating film: and unlike many other viewers who have found the second act to be tedious, I was perfectly happy to accept the change in tone between the first and second acts, possibly out of my personal interest in Brian Wilson's life. In the final minutes of the film, however, Anders drops both the manic energy of the first half and the biographical portrait of the second in favor of Hollywood-style schmaltz.
As much as the film has extremely glaring faults, I do have to recommend it. There's a lot to like in the film: Turturro fills his scenes with charm, and Douglas is positively radiant. Only the poor editing of the first half, where Anders compresses time to a ridiculous extent (in one scene, Anders doesn't even give Edna three seconds to walk over and greet a character, instead cutting directly to their embrace) and the distressingly commercial finale lowers my impression of the film. At the very least, fans of Brian Wilson should get a tremendous kick out of Dillon's maligned impression -- and fans of the music of the 50's and early 60's should be very pleased by the original music..
Dave Cowen<EMAIL_ADDRESS>Eschatfische. -------------------------------- http://www.fische.com
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


House listing removed after suspicious photo of kitchen leaves buyers baffled
The property listing received 29,000 views on the first day - but the boyfriend of the homeowner has now claimed the photo was a 'joke'
by Luke Matthews, https://www.mirror.co.uk/authors/luke-matthews/A home which was listed for sale online gained thousands of views in just a few days - for all the wrong reasons.
Not everyone taking a look was in the market for a new property and were instead drawn to the online advert after sharp-eyed house-hunters spotted something very suspicious in one of the photos.
The listing on website Zillow, which gave an asking price of around £128,000, has since been taken down after it attracted 29,000 views on its first day and led to the homeowner being bombarded with inquiries.
In among the photos of the home in Michigan was a snap of the spacious kitchen, showing wooden cabinets, granite worktops and an island in the middle.
On the counter sits what appears to be a plate with five neat lines of a white powdery substance, as reported by WXYZ .
Hundreds of viewers commented, with many saying it resembled cocaine, and even questioned if could land the current occupiers in hot water.
However, the boyfriend of the homeowner came forward to claim the whole thing had been a joke.
Talking to 7 Action News, the man known only as Jeff said: "I was like, I’m wondering if I did something like this if anybody would even notice or if somebody did notice it, that it would go viral and it went viral.
“It went too viral.”
Jeff said he created the scene by putting lines of headache powder on a plate but claims he took down the photo after it got 'way out of hand' as he was left fielding more than 100 calls, texts and emails.
Asked if he was happy with the popularity of the listing, he said: "Yes and no."
However, Zillow said it had been the one to remove the listing, with a spokesperson saying it had violated its 'Good Neighbour Policy'.
A local police lieutenant said the force won't be carrying out an investigation into the image as 'there are too many legal questions to establish probable cause for a search warrant'.
He added that even if it had been a stunt, he 'wouldn't recommend' anyone stages a scene like that to boost interest in a home listing.


Delete
Are you sure you want to delete
XXXXX
?
Edit Panel
Collection Name
Please enter a collection name.
Description
Selected Slides
No empty collection allowed. Please select a slide.
Unselected Slides


- What are the affordances of various online spaces over non-digital print forms of publication? What even is a text? How does digital production expand our notions of textuality?
- How does the participatory nature of online discourse affect its authors, audiences, and contexts? How are texts and images distributed in networks?
- How do we, as consumers of digital/online texts, determine the reliability & usability of what we read, see, and hear online?
- As producers of digital texts, what strategies and skills do we need to know, technically and rhetorically, for effective communication?
- What rights and responsibilities do we have as users & producers?
CO302, like other 300-level composition courses, emphasizes writing processes with specific attention to revising and editing, and critical reading processes with attention to reading from various points of view. We diverge from other 300-level courses with our emphasis on experiencing and producing primarily digital texts.
To achieve this, you will explore the rhetorical and cultural contexts in which electronic texts occur, and practice strategies for interpreting and producing these texts. You need not be (and will not become) expert designers and coders in this course, as these are professions in their own right that one 16-week course cannot equip you for; however, my hope is that you develop technical literacies and rhetorical competencies that help you navigate a world where information and ideas are shared and produced in online, digital contexts.


Welcome!
This website is meant to be informational in nature and to give you access to some of the things I discovered when analyzing CDC's ACE data for the years 2009-2012. Have questions about the data, collection method, or ACEs in general?
{% extends 'base.html' %} {% block content %}
This website is meant to be informational in nature and to give you access to some of the things I discovered when analyzing CDC's ACE data for the years 2009-2012. Have questions about the data, collection method, or ACEs in general?


Documentation
Minimal and open source
help desk and FAQ.
deskBear is a stunningly beautiful help desk software for your startup, project or organization.
Download on GitHub


>
Rimble
Rimble is a startup that uses machine learning models to generate real-time odds and analytics for eSports. I redesigned their website and helped establish their brand identity.
Problem: Rimble's website was not useful or attractive to potential customers.
Goal: Revamp site to act as a sales funnel, where customers can understand the product's value.
Solution: A modern, product-focused redesign of the website.
RESEARCH & IDEATION
To get started, I explored the current website and looked at competitor sites.
Current landing page before the redesign.
I went through Rimble's current website, and wrote down potential areas of improvement. The team wanted me to work on the landing page, the about page, and the API documentation page.
Then, I looked at other product-focused websites for startups in the space. These sites provided inspiration on how to structure my redesign.
WIREFRAMING
I began with rough sketches, and then transformed those sketches into wireframes on Figma.
Lower fidelity designs of the landing page.
FINAL DESIGN
I created both the high-fidelity website prototype and visual design elements on Figma.
Here's the interactive website prototype!
I created this dashboard UI for the landing page to showcase some of the API's features.
I utilized this style guide in my redesign.
NEXT STEPS
The design is currently being implemented by a few web developers, and will be up in a few weeks!


{{#if alert}}{{question}}
{{#if imageUri}}{{/if}} {{#if embedHtml}} {{#isolate}} {{#constant}}{{/constant}} {{/isolate}} {{/if}}{{{embedHtml}}}
{{#if isUsersAnswer this}} {{else}} {{/if}}
{{/each}}{{/each}}
Was this a good question?
{{#if voted _id}} you said {{vote _id}} · cumulative rating {{voteTally}} {{else}} {{/if}}
Discussion
Start the conversation for this question
{{/if}}


This example is functionally equivalent to test_selector.html example but is done using the Dojo markup.
Containers have a notion of a "current container", and one element can be "current". All containers on this page are selectors that allow to select elements.
Following selection modes are supported by default:
This selector can select just one element a time. It was specified during the creation time.
| A | row 1 |
| B | row 2 |
| C | row 3 |
Elements of this container are layed out horizontally.
Item 1 Item 2 Item 3


Because hard copies of books are more comfortable to read than soft copies.
All academic books you will need through varsity life.
You can sell them back to us at the end of the semester.
Easy Polo Black Edition


Blockchain Network Transmission
Please enter your information below:
Recipient Id:
Interested Party Id:
Add
Payload:
Select File
Submit
Cancel


[gecode-users] implementing branching heuristics
Christian Schulte
cschulte at kth.se
Mon Jun 9 22:42:02 CEST 2008
Yes, using a search engine should point always to the freshest version. It
is highly annoying if you get zillions of webpages all of which are out of
date (for example, Java and many other software packages require (or ask
for) the same).
Gecode is _not_ GPL, it is distributed under the MIT license (check the
license, please)! And we kindly ask. So if you want to make the life of
other users more miserable, than you are still allowed to do so ;-) However,
we just ask for common sense here.
I am unfamiliar which tag to set to not have stuff indexed, I am only
familiar with having a robots.txt file when using apache.
Cheers
Christian
--
Christian Schulte, www.ict.kth.se/~cschulte/
-----Original Message-----
From: Oliver Kullmann [mailto:O.Kullmann at swansea.ac.uk]
Sent: Monday, June 09, 2008 9:32 PM
To: Christian Schulte; users at gecode.org
Subject: Re: [gecode-users] implementing branching heuristics
thanks for the information!
I'll have a look into the examples, and see whether I
can hack them.
Oliver
P.S. Regarding the documentation one finds the statement:
"We kindly ask that documentation is not installed anywhere in such a way
that it will be indexed by search engines."
I wonder what is the reason for this? Actually, it creates a problem
for my system, since the complete documentation is mirrored on the
Internet, and I make available also all documentation of external
sources installed by the OKlibrary, and this should include Gecode.
Would it be enough if on the main page which links to the documentation
I set the meta-tags to "no search engines"?
Isn't the documentation also open-source?
Perhaps your reason is that search-engines shall point to
your site, not to others?
But this seems not compatible to me to the GPL licence, which
doesn't allow to put restrictions on further distribution?
On Sun, Jun 08, 2008 at 01:10:05PM +0200, Christian Schulte wrote:
> Hi,
>
> please have a look at some of the examples that come with Gecode, there
you
> find how branch (which in turn creates simple variable/value branchings)
is
> used with different heuristics. There are two examples (black-hole.cc and
> queen-armies.cc) that have simple custom branchings which might give you
> some additional hints.
>
> The current trunk has more support for predefined branchings (randomized,
> tie-breaking, etc) that should make it into Gecode 3.* (scheduled to be
> released around Sep/Oct).
>
> All the best
> Christian
>
> --
> Christian Schulte, www.ict.kth.se/~cschulte/
>
>
> -----Original Message-----
> From: users-bounces at gecode.org [mailto:users-bounces at gecode.org] On Behalf
> Of Oliver Kullmann
> Sent: Friday, June 06, 2008 9:55 PM
> To: users at gecode.org
> Subject: [gecode-users] implementing branching heuristics
>
> Hello,
>
> based on my general theory of branching heuristics,
> I would like to take some standard backtracking CSP solvers,
> where I can just replace the variable ordering heuristics
> (responsible for choosing the branching variable),
> and there I would like to plug-in my generic
> heuristics instead --- I expect relevant
> performance gains.
>
> The whole theory has been developed in the context
> of SAT, but it is applicable for any width of
> branchings (not just binary branchings), and this
> is actually one of its strengths.
>
> If somebody wants to read about it, please have
> a look at report #7 at
>
> http://www.swan.ac.uk/compsci/research/reports/2008/index.html
>
> It should be fairly easy to apply my generic heuristics.
> I looked a bit at Minion, but this looks too much
> black-box to me.
>
> I guess in principle with gecode it should be doable.
> But the documentation is rather terse, and I also
> couldn't find some standard solvers, where I just
> would replace some functions regarding the heuristics.
>
> Perhaps somebody can help me here?
> Or, if somebody is interested, we could have a collaboration.
> I actually expect a "quick victory", i.e., it should
> be quickly implementable, and it should yield some
> nice improvements under fairly general circumstances.
>
> So, I hope somebody is interest in a
> quick paper which will revolutionise CSP ;-)
> Actually, I think it will be interesting.
>
> Oliver
>
> P.S. Another field for possible collaboration
> would be library development: I am developing
> the OKlibrary (http://www.ok-sat-library.org),
> a generative library for generalised SAT solving.
> In principle the OKlibrary covers also CSP,
> but I'm yet "pre-alpha" :-(.
>
> P.S.P.S. I noticed in the documentation
> of gecode that "branchings" etc. are
> used in a from my point of view somewhat
> non-standard sense. I'm using "branching"
> etc. as used by the SAT community and as
> explained in my article, but this seems to
> me also compatible to the notions used
> in the Handbook of Constraint Satisfaction.
>
> --
> Dr. Oliver Kullmann
> Computer Science Department
> Swansea University
> Faraday Building, Singleton Park
> Swansea SA2 8PP, UK
> http://cs.swan.ac.uk/~csoliver/
>
> _______________________________________________
> Gecode users mailing list
> users at gecode.org
> https://www.gecode.org/mailman/listinfo/gecode-users
--
Dr. Oliver Kullmann
Computer Science Department
Swansea University
Faraday Building, Singleton Park
Swansea SA2 8PP, UK
http://cs.swan.ac.uk/~csoliver/
More information about the gecode-users
mailing list


WITNESS LIST Public Safety Committee May 9, 2001-8:00A SB 819 For: Patterson, Jerry (Houston Gun Collectors Association) Reilly Mica, Tara (National Rifle Association) Against: Burgess, Anita (City of Lubbock) Hart, Ceil (Austin Police Department, City of Austin) Kennard, Karen (Texas Municipal League) SB 1224 For: Burt, Bob (Self and ASSIST) Kessler, Ron (Texas Burglar and Fire Alarm Association) Oakley, Keith (ASSIST) Roberts, Walter (Self and ASSIST) On: McGlasson, Jerry (Texas Commission on Private Security)


If you love Telegram but don't want to leave Discord then you'll be pleased to find we've built a bridge in this channel. If you'd like to join the group in the Telegram app you can find it here: https://t.me/KomodoPlatform_Official.
100 messages
Before 05-Dec-19 12:00 AM
GatewayBOT11-Jul-18 08:23 PM
[telegram] <Wil> Me too! (re @Bushybro: Good luck, I had my KMD on a ledger and when I saw how complicated it was I just moved it to agama....)
[telegram] <Dolladollaiv> But if im putting my ledger address in for the bot chainzilla airdrops in discord will they show up when i eventually export to agama?
[telegram] <Hermes08> You can also use ledger with Agama on lite mode (re @Dolladollaiv: Thank you. I have been trying to export from my ledger to my agama on my laptop thats running windows 7. Have had some problems syncing. Waiting for the blockchain to load to try again.)
[telegram] <Dolladollaiv> So i dont have to load the whole damm chain? (re @Hermes08: You can also use ledger with Agama on lite mode)
[telegram] <JtheLizzard> Make it 400 okay (re @Bushybro: If you have 500 or more KMD yes. However, you will need to export the privatekey of that particular address using an offline tool)
[telegram] <mo7881> I have a few masternodes in different coins and all my new tokens get turned into KMD every week
[telegram] <Matt> Thats nice :)
What MN do you have?
Was thinking about ZEN (re @mo7881: I have a few masternodes in different coins and all my new tokens get turned into KMD every week)
[telegram] <mo7881> Financially they have been a disaster - but Smartcash is my main batch, I think it has legs for payments and transactions. Also Magnet, and Gobyte. Im trying to get my hands on as much KMD as possible now (re @Matt: Thats nice :)
What MN do you have?
Was thinking about ZEN)
GatewayBOT11-Jul-18 11:01 PM
[telegram] <Bushybro> I am no one you have to talk to PTYX (re @JtheLizzard: Make it 400 okay)
[telegram] <waenei> How are you admin? (re @Hermes08: Hi there)
[telegram] <Hermes08> here just waiting to get some food for dinner and you?
[telegram] <waenei> Ah ok. I am exploring myself to other coin/token (re @Hermes08: here just waiting to get some food for dinner and you?)
[telegram] <waenei> Can I ask what is the platform of Komodo?
GatewayBOT12-Jul-18 12:48 AM
[telegram] <Regnar> Hey everyone in here that isn't following the official Komodo announcement channel, here's the link. go follow it and get notified when we do cool stuff, have partnership announcements, have tweets we want the community to get involved in and so on.
https://t.me/KomodoPlatformNews
[telegram] <chicken nugget> I have more than 500 kmd in my agama wallet. So I will get the chainzilla airdrop on August without doing anything? Thx
GatewayBOT12-Jul-18 06:47 AM
[telegram] <Acura360> Yes (re @chicken nugget: I have more than 500 kmd in my agama wallet. So I will get the chainzilla airdrop on August without doing anything? Thx)
[telegram] <JtheLizzard> When is the snapshot for chainzilla
[telegram] <N21_0> How to participate in the Phase 1 Airdrop?
It’s simple!
You should download the latest Komodo wallet and hold 500 or more KMD by August 15, 2018 which is the day of the snapshot. The aidrops will be distributed two weeks later on August 30th, 2018. (re @JtheLizzard: When is the snapshot for chainzilla)
GatewayBOT12-Jul-18 07:17 AM
[telegram] <Lennart> So the new ledger live desktop software didnt fix the claim interest thing for KMD?
[telegram] <polycryptoblog> KuCoin Listing Voting Competition
How To Vote:
1. If you haven’t done so, make sure you sign-up on KuCoin. You will need your KuCoin account email address in order to vote.
2.  All you have to do is start a conversation with it and it will do the rest.
3. Fill the fields our bot sends you, you will be asked the following:
a. What is Your KuCoin Account Email Address:
b. Project Name You Want To Get Listed (spell the name in full, DON'T USE THE TICKER):
c. What Is Special About This Project, Why Should It Be Listed On The Exchange:
NOTE: Every hour our bot will automatically update the top 50 projects in the public channel so everyone can see who is winning.
Competition Rules:
We have a dedicated group of admins and bots to monitor and go through all the collected data. Do not cheat and make sure you follow the rules carefully if you want your vote to count.
1. Do not vote for the same project twice. You can vote for multiple projects but do not repeat the same project, our voting system wont allow that.
2. Make sure you spell the name of the project correctly. Our bots don't count your vote if you misspell the name.
3. Don’t spam, remain polite and listen to the admins in the group. Offenders will be banned and votes revoked.
Who will win?
The project who gets the most votes, goes without saying, KuCoin will carry a quality check to ensure the project is legitimate before listing in order to protect investors' interests.
The Prize:
The winner will get a free listing on KuCoin as well as a 30,000 USD advertisement package! On top of that, we are also committing 5 BTC value purchased in your tokens to be distributed via KuCoin to the users that voted for the winning project!
[telegram] <polycryptoblog> Competition that is starting soon, make sure you vote!
If a country wants to move its currency to the blockchain today, which platform would be ready and suitable?
GatewayBOT12-Jul-18 09:25 AM
[telegram] <chicken nugget> Thanks for your reply (re @Acura360: Yes)
GatewayBOT12-Jul-18 10:29 AM
[telegram] <Probitcoin> Forwarded from Probitcoin: Learn and earn BTC From your phone with us since the first day 10 up to 30% profits daily , discover $ 100- $1400 /week of earnings
@probotrader
[telegram] <Audrey> Are you tired of losing money by this bear market? Frustrated, confused? Join @NetflixandShill today! They are paid info for FREE(!!)
[telegram] <Raghuharris94> If you want to earn enough money Here is our company investment plan
$300 and get $4500
$500 and get $9000
$800 and get $13,000
$1000 and get $18,000
$1500 and get $24,000
$2000 and get $36,000
VIP PLAN
$5000 and get $50,000
$10,000 and get $100,000
$15,000 and get $160,000
$20,000 and get $210,000
Interested person should inbox and see how I earn bitcoin gradually
GatewayBOT12-Jul-18 11:32 AM
[telegram] <benohanlon> A Call to Arms! Cast your vote for KomodoPlatform to be listed on KuCoin.
- Komodo will get a KuCoin exchange listing for free.
- You will get a share of 5 $BTC in $KMD
- Komodo will get a paid advertisement for the listing valued at 30,000 $USD
2 Min Read on Medium: https://medium.com/@benohanlon/kucoincompetition-c0e05fae6c05.
Thank you @polycryptoblog#1173 for flagging this for me to share with our community.
GatewayBOT12-Jul-18 11:47 AM
[telegram] <Michael> Do we have to take a screenshot of our vote or how do you know who all votes?
[telegram] <CryptoVitamins> You have to put the email adrsss of your kucoin account
[telegram] <CryptoVitamins> So do we type ‘Komodo’ or Komodo platform?
[telegram] <benohanlon> read the article? (re @Michael: Do we have to take a screenshot of our vote or how do you know who all votes?)
[telegram] <benohanlon> 'Komodo Platform' is the best bet (re @CryptoVitamins: You have to put the email adrsss of your kucoin account)
[telegram] <CryptoVitamins> Hm they say as it’s listed on coinmarketcap
[telegram] <FiGgY132> I used Komodo :/
[telegram] <CryptoVitamins> Which is just Komodo
[telegram] <benohanlon> OK just Komodo then?
[telegram] <Michael> I did. So I go vote on the kucoin telegram. With their bot.... (re @benohanlon: read the article?)
[telegram] <Michael> But I dont see anything showing how to prove I voted for kucoin.
[telegram] <Michael> Maybe I'm missing it. But another project has us get a screen shot of the vote and send it to an email address
[telegram] <Keytothegate> Done, the voting bot did not give verification though, did others get this?
[telegram] <Draknoz> Hi Ben, sent you a dm :) (re @benohanlon: OK just Komodo then?)
[telegram] <benohanlon> I've updated the article to make it clearer - thanks for all feedback.
[telegram] <Michael> Yea I didn't get a verification at the end (re @Keytothegate: Done, the voting bot did not give verification though, did others get this?)
[telegram] <Keytothegate> Guess it's fine then.. (re @Michael: Yea I didn't get a verification at the end)
GatewayBOT12-Jul-18 12:13 PM
[telegram] <mo7881> Voted, you get a small message at the end that your vote has been counted
[telegram] <FiGgY132>
[telegram] <FiGgY132> Your vote was registered.
GatewayBOT12-Jul-18 12:23 PM
[telegram] <CryptoVitamins> “Project placed 61st with 24 votes”
[telegram] <CryptoVitamins> Yeah you should have gotten that message (re @FiGgY132: Your vote was registered.)
[telegram] <Keytothegate> Ok, so one can test if it's registered by typing /position. It let's me know that my vote did not go through. The reason probably being i wrote too much to field describing why komodo should be added. I guess best to leave your comments short (probably bot does not tolerate too long text fields). I cannot re-vote and so my vote is gone, don't make the same mistake
GatewayBOT12-Jul-18 12:34 PM
[telegram] <Keytothegate> Update! Sorted it out, simply re-enter your comment (why komodo?) and keep it short. If it does not work delete kucoin voting bot history and channel and do it again. It won't start again but you can leave your short comment and it will be registered. (re @Keytothegate: Ok, so one can test if it's registered by typing /position. It let's me know that my vote did not go through. The reason probably being i wrote too much to field describing why komodo should be added. I guess best to leave your comments short (probably bot does not tolerate too long text fields). I cannot re-vote and so my vote is gone, don't make the same mistake)
[telegram] <Keytothegate> Michael, check the instructions above and you will get your vote registered (re @Michael: Yea I didn't get a verification at the end)
[telegram] <Lennart> Uhmmm...
GatewayBOT12-Jul-18 12:45 PM
[telegram] <PTYTrader> Yes, it's something we will have to implement into our wallet. ChainZilla is looking at an Electrum wallet variation with ledger support. The ultimate goal is to have an Agama version with ledger support though. (re @Lennart: )
[telegram] <PTYTrader> We did encounter some issues but are working out the kinks. I think this is the best wallet to pursue for ledger and users in general. It's that or redesigning Agama and expanding it to integrate ledger.
[telegram] <Lennart> Ok thx. Something that saves my kmd in secure cold storage but still able to claim.. would be super nice
[telegram] <Wil> Voted!
Voting_KuCoin_Bot:
Project placed 49th with 42 votes (re @benohanlon: A Call to Arms! Cast your vote for KomodoPlatform to be listed on KuCoin.
- Komodo will get a KuCoin exchange listing for free.
- You will get a share of 5 $BTC in $KMD
- Komodo will get a paid advertisement for the listing valued at 30,000 $USD
2 Min Read on Medium: https://medium.com/@benohanlon/kucoincompetition-c0e05fae6c05.
Thank you @polycryptoblog#1173 for flagging this for me to share with our community.)
[telegram] <do0gpwn> I voted too
[telegram] <do0gpwn> If any admin could pin the post about voting in this group, that would bring greater attention
[telegram] <Wil> Yes and also share it in the other Telegram groups who has an DICO on Komodo!
GatewayBOT12-Jul-18 01:16 PM
[telegram] <benohanlon> welcome @At0micSwap
[telegram] <threeridges> Komodo, NEO and Metaverse
[telegram] <benohanlon> Komodo, Komodo and Komodo
[telegram] <benohanlon> surely?
[telegram] <At0micSwap> Hey!
Komodo for sure (re @benohanlon: welcome @At0micSwap)
[telegram] <crypshotta> 8478 members and only in 46th place, with 47 votes…. get voting people
[telegram] <benohanlon> Get angry you SOBs!
[telegram] <benohanlon> Put that coffee down!
[telegram] <benohanlon> You know what it takes to win this KuCoin competition? It takes brass balls.
@KomodoPlatform @kucoincom Seriously @kucoincom dPoW protects YOU from 51% attacks, not just attacks on KMD, but attacks of all the projects using dPoW now and in the future, like @utrumdotio @gamecredits @kredsblockchain @Chainzillaio @bloc_social @OfficialEQL @VerusCoin ...


This demonstration illustrates how a legal agreement (such as a shipping contract) can be automated with the use of trusted data from the IBM Blockchain Platform.
The Clause platform provides tooling to manage commercial contracts that adhere to the open-source standard for smart legal contracts.
Greater traceability and transparency in the sourcing, production, and distribution value chain will reduce costs, risks, and inefficiencies. Further, the terms and conditions, standards and rules associated with a supply chain extend the paper trail.
A Smart ClauseTM enables contract automation to reduce your admin effort but still retains the legal strength of your agreements.
Follow the instructions below to create your agreement with Clause, then bind it to a supply-chain network running on IBM Blockchain Platform. You will submit sensors readings for storage on the blockchain and see the resulting balance updates for two supply chain network participants.
You can take a look at our Hyperledger Composer project to understand how we store the sensor readings on chain.
We've also published the source code for the legal contract too. This is based on another great
We love Blockchain, but sometimes we can do better without one. Talk to us about your smart legal contract use case.
Contact Clause