Skip to content

Instantly share code, notes, and snippets.

@kenwebb
Created March 20, 2012 12:33
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kenwebb/2134715 to your computer and use it in GitHub Desktop.
Save kenwebb/2134715 to your computer and use it in GitHub Desktop.
Update for world temperature data
<?xml version="1.0" encoding="UTF-8"?>
<!--Xholon Workbook http://www.primordion.com/Xholon/wb/ (C) Ken Webb Tue Mar 20 2012 18:32:34 GMT-0400 (EDT)-->
<XholonWorkbook>
<Notes><![CDATA[
Xholon
------
Title: Update for world temperature data
Description: British researchers who produce one of the three big global temperate records have updated their dataset to reflect better the rapid changes occurring in the Arctic.
Url: http://www.bbc.co.uk/news/science-environment-17432194
InternalName:
YoutubeId:
Keywords:
My Notes
--------
I have two issues with this short Environment article by Mark Kinver at the BBC.
(1) It states::
"The update is reported in the published in the Journal of Geophysical Research".
The link is to a password protected site. Unfortunately most scientific literature reported in the news is locked away behind password-protected sites::
http://www.agu.org/journals/pip/jd/2011JD017187-pip.pdf
(2) The middle of the article reads::
"Despite the revisions, the overall warming signal has not changed. The scientists say it has remained at about 0.75C (1.4F) since 1900."
The BBC article doesn't say anything more about what a "warming signal" is. I'm left wondering how something having to do with temperature change could have remained the same since 1900.
In this workbook I will see if I can find the missing details.
An obvious first step is to google for "HadCRUT", the name of the global temperature record.
The wikipedia article (http://en.wikipedia.org/wiki/HadCRUT) mentions "global warming of almost 0.8°C over the last 157 years", with a reference to::
http://www.cru.uea.ac.uk/cru/about/history/
The Climatic Research Unit (CRU) site states::
"the first truly global temperature record, demonstrating unequivocally that the globe has warmed by almost 0.8°C over the last 157 years"
Is this the "warming signal" mentioned in the BBC article?
The University of East Anglia (UEA) has issued its own press release::
http://www.uea.ac.uk/mac/comm/media/press/2012/March/HadCRUT4
The press release says::
“Updates have resulted in some changes to individual years in the nominal global mean temperature record, but have not changed the overall warming signal of about 0.75 °C since 1900.”
So I guess the warming signal is an increase in global mean temperature of 0.75 °C between the year 1900 and the year 2012.
On its main page::
http://www.cru.uea.ac.uk/
the CRU has a graph of HadCRUT3 showing "Global air temperature" anomalies between 1850 and 2011. The detailed description page::
http://www.cru.uea.ac.uk/cru/info/warming/
says::
"The time series shows the combined global land and marine surface temperature record from 1850 to 2011"
My main point to all this is that it's very difficult for non-experts such as myself to figure out what the BBC article is actually saying. I'm confident that if I had more time I could sort it all out. But at this point I still have lots of questions.
Signal and Noise
----------------
The mention of a "warming signal" suggests that we're talking about pulling a signal out of some noisy data. The noisy data here is a large number of temperature readings taken under various conditions since the year 1850. Since I'm not really going to get to the bottom of exactly what the "warming signal" is in the few hours I can afford to spend on this, I'll do a simple thought experiment instead.
Let's say your're not feeling well. Your doctor says it should be OK, but take your temperature every hour for the next 12 hours and call back if the temperature is trending upwards. The noise in this case would be the individual temperature readings, while the signal would be whether it's trending up, down, or staying the same.
The average adult human body temperature (http://en.wikipedia.org/wiki/Body_temperature) is around 37 °C, but there are lots of things that can effect it including a normal daily cycle. How do we pull a useful signal out of this?
]]></Notes>
<script implName="lang:python:inline:"><![CDATA[
#print "height = 12.34 m"
]]></script>
<script implName="lang:javascript:inline:"><![CDATA[
//print("height = 56.78 meters\n");
]]></script>
<_-.XholonClass>
<!-- domain objects -->
<PhysicalSystem/>
<Signal/>
<Noise/>
<!-- quantities -->
<Celsius superClass="Temperature"/>
<Fahrenheit superClass="Temperature"/>
</_-.XholonClass>
<xholonClassDetails>
</xholonClassDetails>
<PhysicalSystem>
<Noise> <!-- body temperature readings taken every hour, in degrees celcius -->
<Celsius>37.0 °C</Celsius>
<Celsius>37.3 °C</Celsius>
<Celsius>37.4 °C</Celsius>
<Celsius>37.1 °C</Celsius>
<Celsius>36.5 °C</Celsius>
<Celsius>37.2 °C</Celsius>
<Celsius>37.4 °C</Celsius>
<Celsius>37.3 °C</Celsius>
<Celsius>37.5 °C</Celsius>
<Celsius>37.5 °C</Celsius>
<Celsius>37.6 °C</Celsius>
<Celsius>37.5 °C</Celsius>
<!--<Celsius multiplicity="10">37.0 °C</Celsius>-->
</Noise>
<Signal>
<!-- some possible measures of a trend -->
<Celsius roleName="Average temperature">0.0 °C</Celsius>
</Signal>
</PhysicalSystem>
<Blockbehavior implName="lang:python:inline:"><![CDATA[
# This works if pasted in as a last child of Block.
#height.incVal(0.02)
#print("Python wants something to do. Height:" + str(height))
]]></Blockbehavior>
<Blockbehavior implName="lang:javascript:inline:"><![CDATA[
// This works if pasted in as a last child of Block.
//height.incVal(0.02);
//print("JavaScript wants something to do. Height:" + height + "\n");
]]></Blockbehavior>
<Signalbehavior implName="lang:webEditionjs:inline:"><![CDATA[
// Average temperature - this is a running average
var timeStep = this.application('getTimeStep');
var noise = this.parent('.Signal').parent().children('.Noise').children('.Celsius').eq(timeStep);
if (noise.length) {
var signal = this.siblings('.Celsius');
var noiseVal = noise.attr('val') - 0;
var signalVal = signal.attr('val') - 0;
var timeStepVal = timeStep + 1;
signal.attr('val', ((signalVal * timeStep) + noiseVal) / timeStepVal);
println((signal.attr('val') - 0).toPrecision(5));
var svg = $($('div#mySVGDiv > object')[0].contentDocument.getElementsByTagNameNS(svgns, 'svg')[0]);
var textSVG = svg.children().children('text');
textSVG.text((signal.attr('val') - 0).toPrecision(5));
}
]]></Signalbehavior>
<Blockbehavior implName="lang:bsh:inline:"><![CDATA[
// This works if pasted in as a last child of Block.
//height.incVal(0.02);
//System.out.print("Java/Beanshell wants something to do. Height:" + height + "\n");
]]></Blockbehavior>
<Blockbehavior implName="lang:jruby:inline:"><![CDATA[
#require 'java'
# This works if pasted in as a last child of Block.
#$height.incVal(0.02)
#puts "Ruby wants something to do. Height: #{$height}"
]]></Blockbehavior>
<Blockbehavior implName="lang:groovy:inline:"><![CDATA[
// This works if pasted in as a last child of Block.
//height.incVal(0.02);
//System.out.print("Groovy wants something to do. Height:" + height + "\n");
]]></Blockbehavior>
<SvgClient><Attribute_String roleName="svgUri"><![CDATA[data:image/svg+xml,
<svg width="100" height="50" xmlns="http://www.w3.org/2000/svg">
<g>
<title>Signal</title>
<rect id="PhysicalSystem/Signal" fill="#98FB98" height="50" width="100" x="25" y="0"/>
<text x="35" y="30">37.000</text>
</g>
</svg>
]]></Attribute_String><Attribute_String roleName="setup">${MODELNAME_DEFAULT},${SVGURI_DEFAULT}</Attribute_String></SvgClient>
</XholonWorkbook>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment