Stub and Final – Rice Memorial (1916)

So, I shaved off the games with tid=79503 games, <CG>’s <Rice Memorial (1916)> games. See the previous post about partitioning off the Final games (i.e. the 14-RR was used to select 5 players for a 5-RR final).

There are really two tournaments within the one. This complicates the handling at the moment. There are future design issues at play, so please bare with me as I show the round-arounds needed to finish processing this “tournament”.

As said in the previous post, the 5-RR Final consists of ten games, which leaves 100 – 10 = 90 games in the main tournament (referred to as the Preliminaries by <phony>). Since it’s a 14-RR there should be 91 games (14*13/2 = 91). So we have one missing game, for which we want to create a stub.

I have a nice routine to help, but it gets very confused when playoffs are mixed in with the main tournament. It assumes all games with the same tid form a single RR, and then looks for missing games, normally a very reasonable assumption. But not here. So in the following python session I have to shave off the Final games, tuck ’em away, make the stub, and then put the Final games back. I show all this just as an illustration why partitioning must extent beyond the Event header.

# Let's see what tournament we're working on.
>>> t
>>> TN[t]
'Rice Memorial (1916)'

# All the update games are here.
>>> len(P)

# List to save Final games as we "fool" around to make the stub.
>>> GP = []

# We did the Event header in the other post, let's double-check.

>>> for g in [ g for g in TG[t] if 'Final' in g.Event]: g

 1916.02.06   C01  56     (R1)   =    Capablanca, Jose Raul -- Kostic, Borislav
 1916.02.06   D30  26     (R1)  1-0   Janowski, David -- Chajes, Oscar
 1916.02.07   C12  66     (R2)  1-0   Chajes, Oscar -- Capablanca, Jose Raul
 1916.02.07   A46  63     (R2)   =    Kostic, Borislav -- Kupchik, Abraham
 1916.02.08   D37  34     (R3)   =    Chajes, Oscar -- Kupchik, Abraham
 1916.02.08   D15  46     (R3)  0-1   Janowski, David -- Capablanca, Jose Raul
 1916.02.09   D37  30     (R4)   =    Kupchik, Abraham -- Capablanca, Jose Raul
 1916.02.09   C30  66     (R4)   =    Kostic, Borislav -- Janowski, David
 1916.02.11   D15  44     (R5)  1-0   Janowski, David -- Kupchik, Abraham
 1916.02.11   A46  30     (R5)  0-1   Kostic, Borislav -- Chajes, Oscar

# Looks good, let's tuck 'em away.
>>> for g in [ g for g in TG[t] if 'Final' in g.Event]:

# Safely stored elsewhere, we temporarily delete them from the tournament.
>>> TG[t].index( GP[0] )
>>> del( TG[t][90:] )       # The Final games were at the end.

# Now TG[t] just has the tournament games, we can run the mtour() routine.
# ("m" for missing - this routine looks for missing games, and is most 
#   useful when there are but a few)

>>> mtour(t)

79503 - Rice Memorial (1916)     --   Rice Memorial // New York USA (1916.01.17)

Player list (14 players):

   Banks, Newell William          45948    7.6
   Bernstein, Jacob               21825    7.6
   Black, Roy Turnbull            28917    6.7
   Capablanca, Jose Raul          47544    7.6
   Chajes, Oscar                  10242    7.6
   Fox, Albert Whiting            22218    6.6    10
   Hodges, Albert                 19584    6.7
   Janowski, David                19523    7.6
   Kostic, Borislav               10619    6.7
   Kupchik, Abraham               10308    7.5    10
   Perkins, Frank Kendall        135376    6.7
   Rosenthal, Jacob Carl          91232    6.7
   Schroeder, Alfred             127016    6.7
   Tennenwurzel, Edward           82047    6.7

N_games =  90

Tournament is assumed to be RR1   (1 missing)

Round counts:

    R1  :  7    R2  :  7    R3  :  7    R4  :  7    R5  :  7
    R6  :  7    R7  :  7    R8  :  7    R9  :  7    R10 :  6
    R11 :  7    R12 :  7    R13 :  7

Missing pairings:

    Fox, Albert Whiting       22218    6.6    (10)    //    Kupchik, Abraham          10308    7.5    (10)

>>> lookup(t)  # I have a routine which automatically opens the tournament page in my browser.

And there’s the missing game, cleanly identified. It’s from R10 (both players show just the one missing round). It is almost certainly Fox as White (the 6.6 shows Fox has 6 White/6 Black before stubbing, whereas Kupchik has 7 White/5 Black and doesn’t need another White).

At this point consultation with the tournament page is advised.

And indeed, reading down to R10:

<Prelim, Round 10 (Saturday, January 29, New Haven, Connecticut)>

70 Fox + Kupchik

The absentee was A. Kupchik, the New York State Champion, who missed connections. His game with Fox, therefore, was not played, and will be scheduled for tomorrow in New York instead. Play started shortly before 3 o’clock in the Varsity campus. A large crowd of students was on hand to greet the visitors and watch the novel spectacle.
                                                                                                                              <Brooklyn Daily Eagle>, Sunday, January 30, 1916.

The Fox vs. Kupchik game was never played, and scored as a forfeit win for Fox. This could haven been costly for Kupchik, who dropped out of the qualifiying spots.  […]

Violá. Now a comment is in order. <Phony>’s writeup is truly wonderful. But doing a text search for “missing game” fails to find this important aside. This is why I think there should be a standardized template for such important information for each and every tournament right at the top of the page.

Regardless of such minor complains, we see that the mtour() routine correctly identified the pairing, colors, and round number. Thus, reassured, we dive back into python to create the stub game.

# Make a stub for tournament t, white/black pid's, round 10, where White wins, plus comment. 
>>> g = stub( t, 22218, 10308, 10, 1, 
              "Kupchik missed his connection to New Haven, wasn't present and ultimately forfeited" )
>>> g
 1916.01.29   A00   0     (R10)  1-0   Fox, Albert Whiting -- Kupchik, Abraham
>>> print g

;; <Fox, Albert Whiting -- Kupchik, Abraham  (R10) 0 1-0>

[Event "Rice Memorial"]
[Site "New York USA"]
[Date "1916.01.29"]
[Round "10"]
[White "Fox, Albert Whiting"]
[Black "Kupchik, Abraham"]
[Result "1-0"]
[EventDate "1916.01.17"]
[CG_id "79503.0.22218.10308"]
[PlyCount "0"]

{%stub - 79503.0.22218.10308 - 
Kupchik missed his connection to New Haven, wasn't present and ultimately forfeited} 1-0


Now that we have the stub game we have to put it into the PGN file. Of course, you could just copy the pgn above and submit it to <CG> (provided it allows stubs – a subject of debate still). Adding the game back to the file is a detail, but let me show you how I generally do it.

# We want to put the stub at the end of R10 games, so we find start of R11
>>> [ g for g in P if g.Event == "Rice Memorial" and g.Round == "11" ][0]
 1916.01.31 C71 32 (R11) 0-1 Schroeder, Alfred -- Janowski, David

# Now _ is a python shortcut for interactive sessions, it stands for last result.
>>> P.index( _ )

# Knowing the index we can add the stub to the P (for Parent) game list, ie the original PGN read in.
>>> P.insert( 475, g )

# Having update P with the stub, let's write it back out to file.
>>> PGN.update()

File "CG-update.pgn" successfully updated with 497 games.

# Extra steps... not really needed if the session ends here.
# Don't forget to update TG[t] list (if more work is to be done). 

>>> TG[t].append( g )      # Not so careful with this list, as it stays in memory. 
                           # Could insert in order here too.
# And add back the Final games to the end, then continue session.
>>> TG[t].extend( GP )

See the next post for the results when reading this CG-update.pgn file into <SCID>.

(I’m trying to keep each post manageable, plus, the <SCID> post doesn’t involve all these programming details).



Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.