Circular-T nr.357

Following the publication of Circular-T nr. 357 we shall take a look at the RMS error of UTC-UTC(k) in different laboratories across the world. Should we rank the 75 laboratories that have complete UTC-UTC(k) records by RMS error for this month we find the following.

Warning: Past performance is not an indicator of future results.

Circular-T 357 RMS Ranking list, top 10 labs
Rank Lab (Location)       RMS( UTC-UTC(k) ) / ns
1  MIKE (Espoo)           0.524 ns
2  PTB (Braunschweig)     1.056 ns
3  NIST (Boulder)         1.528 ns
4  ORB (Bruxelles)        1.556 ns
5  NPL (Teddington)       1.627 ns
6  NTSC (Lintong)         1.671 ns
7  OP (Paris)             2.090 ns
8  TL (Chung-Li)          2.095 ns
9  USNO (Washington_DC)   2.356 ns
10  SP (Boras)            2.409 ns

It's much easier to be lucky than brilliant, so maybe we have to look one further month back and do the same thing for Circular T 356:

Circular-T 356 RMS Ranking list, top 10 labs
Rank Lab (Location)     RMS( UTC-UTC(k) ) / ns
1  ESTC (Noordwijk)     0.504 ns
2  PTB (Braunschweig)   1.058 ns
3  OP (Paris)           1.198 ns
4  BY (Minsk)           1.340 ns
5  APL (Laurel)         1.409 ns
6  USNO (Washington_DC) 1.468 ns
7  NIST (Boulder)       2.372 ns
8  MIKE (Espoo)         2.683 ns
9  ORB (Bruxelles)      2.711 ns
10  SP (Boras)          2.920 ns

For completeness, here is the whole list for Circular-T nr. 357:

Circular-T 357 RMS Ranking list, all labs with complete data
Rank Lab (Location)       RMS( UTC-UTC(k) ) / ns
1  MIKE (Espoo)           0.524 ns
2  PTB (Braunschweig)     1.056 ns
3  NIST (Boulder)         1.528 ns
4  ORB (Bruxelles)        1.556 ns
5  NPL (Teddington)       1.627 ns
6  NTSC (Lintong)         1.671 ns
7  OP (Paris)             2.090 ns
8  TL (Chung-Li)          2.095 ns
9  USNO (Washington_DC)   2.356 ns
10  SP (Boras)            2.409 ns
11  APL (Laurel)          2.450 ns
12  CNM (Queretaro)       2.793 ns
13  UA (Kharkov)          2.870 ns
14  SG (Singapore)        2.981 ns
15  BY (Minsk)            3.137 ns
16  ONRJ (Rio_de_Janeiro) 3.600 ns
17  JATC (Lintong)        3.604 ns
18  ESTC (Noordwijk)      3.606 ns
19  ROA (San_Fernando)    3.763 ns
20  AOS (Borowiec)        3.944 ns
21  NIM (Beijing)         3.963 ns
22  IT (Torino)           4.025 ns
23  SU (Moskva)           4.842 ns
24  ZA (Pretoria)         5.394 ns
25  NICT (Tokyo)          5.683 ns
26  SMD (Bruxelles)       6.120 ns
27  NMIJ (Tsukuba)        6.273 ns
28  IMBH (Sarajevo)       6.473 ns
29  INXE (Rio_de_Janeiro) 7.582 ns
30  PL (Warszawa)         8.894 ns
31  DMDM (Belgrade)       9.541 ns
32  INTI (Buenos_Aires)   10.073 ns
33  NPLI (New-Delhi)      12.113 ns
34  INM (Bogota_D.C.)     14.139 ns
35  JV (Kjeller)          15.528 ns
36  VMI (Ha_Noi)          17.306 ns
37  UAE (Abu_Dhabi)       17.589 ns
38  VSL (Delft)           18.876 ns
39  TP (Praha)            21.305 ns
40  ICE (San_Jose)        21.597 ns
41  CH (Bern-Wabern)      24.486 ns
42  CNMP (Panama)         27.643 ns
43  CNES (Toulouse)       28.227 ns
44  BEV (Wien)            28.679 ns
45  SCL (Hong_Kong)       29.698 ns
46  NIS (Cairo)           31.465 ns
47  DTAG (Frankfurt/M)    32.215 ns
48  BIRM (Beijing)        32.899 ns
49  INPL (Jerusalem)      33.533 ns
50  NRC (Ottawa)          46.487 ns
51  KRIS (Daejeon)        46.607 ns
52  NAO (Mizusawa)        91.237 ns
53  INCP (Lima)           123.056 ns
54  DLR (Oberpfaffenhofen)147.241 ns
55  LT (Vilnius)          158.796 ns
56  KIM (Serpong-Tangerang)174.536 ns
57  NIMT (Pathumthani)    214.943 ns
58  SIQ (Ljubljana)       297.257 ns
59  MSL (Lower_Hutt)      299.413 ns
60  KZ (Astana)           314.082 ns
61  AUS (Sydney)          413.887 ns
62  SASO (Riyadh)         614.583 ns
63  NMLS (Sepang)         692.325 ns
64  BOM (Skopje)          837.749 ns
65  IFAG (Wettzell)       936.185 ns
66  HKO (Hong_Kong)       1089.931 ns
67  MTC (Makkah)          1167.348 ns
68  SMU (Bratislava)      1419.064 ns
69  NIMB (Bucharest)      1812.964 ns
70  ONBA (Buenos_Aires)   2222.486 ns
71  UME (Gebze-Kocaeli)   2403.381 ns
72  BIM (Sofiya)          7003.478 ns
73  DFNT (Tunis)          20450.450 ns
74  MBM (Podgorica)       52659.580 ns
75  MKEH (Budapest)       65626.933 ns

Clock display with Python and Tkinter

clock_display_2015-04-24

A simple clock display with local time, UTC, date (iso8601 format of course!), MJD, day-of-year, and week number. Useful as a permanent info-display in the lab - just make sure your machines are synced with NTP.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# use Tkinter to show a digital clock
# tested with Python24    vegaseat    10sep2006
# https://www.daniweb.com/software-development/python/code/216785/tkinter-digital-clock-python
# http://en.sharejs.com/python/19617
 
# AW2015-04-24
# added: UTC, localtime, date, MJD, DOY, week 
from Tkinter import *
import time
import jdutil # https://gist.github.com/jiffyclub/1294443
 
root = Tk()
root.attributes("-fullscreen", True) 
# this should make Esc exit fullscrreen, but doesn't seem to work..
#root.bind('',root.attributes("-fullscreen", False))
root.configure(background='black')
 
#root.geometry("1280x1024") # set explicitly window size
time1 = ''
clock_lt = Label(root, font=('arial', 230, 'bold'), fg='red',bg='black')
clock_lt.pack()
 
date_iso = Label(root, font=('arial', 75, 'bold'), fg='red',bg='black')
date_iso.pack()
 
date_etc = Label(root, font=('arial', 40, 'bold'), fg='red',bg='black')
date_etc.pack()
 
clock_utc = Label(root, font=('arial', 230, 'bold'),fg='red', bg='black')
clock_utc.pack()
 
def tick():
    global time1
    time2 = time.strftime('%H:%M:%S') # local
    time_utc = time.strftime('%H:%M:%S', time.gmtime()) # utc
    # MJD
    date_iso_txt = time.strftime('%Y-%m-%d') + "    %.5f" % jdutil.mjd_now()
    # day, DOY, week
    date_etc_txt = "%s   DOY: %s  Week: %s" % (time.strftime('%A'), time.strftime('%j'), time.strftime('%W'))
 
    if time2 != time1: # if time string has changed, update it
        time1 = time2
        clock_lt.config(text=time2)
        clock_utc.config(text=time_utc)
        date_iso.config(text=date_iso_txt)
        date_etc.config(text=date_etc_txt)
    # calls itself every 200 milliseconds
    # to update the time display as needed
    # could use >200 ms, but display gets jerky
    clock_lt.after(20, tick)
 
tick()
root.mainloop()

This uses two small additions to jdutil:

1
2
3
4
5
6
7
def mjd_now():
    t = dt.datetime.utcnow()
    return dt_to_mjd(t)
 
def dt_to_mjd(dt):
    jd = datetime_to_jd(dt)
    return jd_to_mjd(jd)