Changeset 530 in tmcsimulator for trunk/webapps/visualizer


Ignore:
Timestamp:
11/23/2019 05:18:32 PM (6 years ago)
Author:
jdalbey
Message:

Visualizer updated with Back button and code comments added

Location:
trunk/webapps/visualizer
Files:
1 added
16 deleted
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/webapps/visualizer/index.html

    r528 r530  
    55<!-- map center button icon from http://icons8.com/.  (Obligatory backlink, don't remove ) --> 
    66  <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> 
    7     <title>Visualizer</title>  
     7    <title>Visualizer </title>  
    88<link rel="icon"  
    99      type="image/png"  
     
    1414  <body> 
    1515    <!--  
    16          Version 6.5 Adjust cms dialog dimensions for Chrome. 
    17              Version 6.4 Remove fullscreen control. (Use Browser F11 instead). 
    18          Version 6.3 decomposed into modules for each layer 
    19          Version 6.2 puts cctv and cms and vds in separate data layers.    
    20          Version 6.1 Puts cms messages in json formatted file.  Polls for updates. 
    21          Version 6.0 Adds speed-dependent images to infowindow for cctv icons 
    22          Version 5.8 Adds an infowindow with a static image for all cctv icons 
    23          Version 5.7 integrates CCTV icons and button (but empty click handler) 
    24          Version 5.6 integrates CMS features 
    25          Version 5.5 renames title to CPTMS, loads static data on startup and dynamic data 
    26          every ten seconds.   
    27          Version 5.4 adds Search box and Center button 
    28          Version 5.3 fixed dot color update defect, increased refresh rate to 10 sec. 
    29          Version 5.2 places red dots overlapping yellow dots. 
    30          Version 5.1 removes the map and street view buttons and the H3 tag. 
    31          Version 5 uses precomputed perpendicular vector in dot adjustment function 
    32          Version 4 Adjust the spacing between dots when the map is zoomed. 
    33          Version 3 does loadGeoJson only once, and subsequently does an ajax load 
    34          of the highways file, and selectively updates only those placePins whose 
    35          color has changed.  
    36          @author jdalbey  2019.2.17 
     16         Visualizer created from CPTMS 
     17         @author tkumar and jdalbey 2019.11.23 
    3718    --> 
    38     <!-- The text area input for the Search Box --> 
    39     <input id="search-input" class="controls" type="text" placeholder="Search Box"> 
    4019    <!--The div element where the map appears. --> 
    4120    <div id="mapdiv"></div> 
     
    4423   <!--The div elements where the buttons appear--> 
    4524    <div id="ctrButton"><img width="30" src="images/btn_mapcenter.png"></div> 
    46     <!-- <button id="harButton" class="unstyled-button"><img id="harBtnImg" src="images/btnReady_HAR.png"></button> 
    47     <button id="cctvButton" class="unstyled-button"><img id="cctvBtnImg" src="images/btnReady_CCTV.png"></button> 
    48     <button id="cmsButton" class="unstyled-button"><img id="cmsBtnImg" src="images/btnReady_CMS.png"></button>--> 
    49     <button id="vdsButton" class="unstyled-button"><img id="vdsBtnImg" src="images/btnDepressed_VDS.png"></button> 
    5025    <p id="time">00:00:00</p> 
    51     <button id="start" >Beginning</button> 
     26    <button id="beginning" >Beginning</button> 
    5227    <button id="forward" >Next</button> 
    5328        <button id="backward" >Back</button> 
     
    9469    var iconVDSwhite = "images/circle_white.png" 
    9570    var vds_showing = true; 
    96     var filters = []; //array to hold markers for visualizer 
    97     var times = []; //array to hold times of each traffic event 
    98     times[0] = "00:00:00"; 
    99     var diff_arr = []; // array to hold difference in target markers 
    100     var index = -1; //to index into above array 
     71    var targetDots = []; // 2d array containing targetDots parsed from each line in traffic events file 
     72    var eventTimes = []; //array to hold times of each traffic event 
     73    eventTimes[0] = "00:00:00"; 
     74    var diff_arr = []; // 2d array containing difference in map state between each event 
     75    var eventIndex = -1; //to index into above array 
    10176 
    10277    // Use larger VDS icons if we're being displayed on the video wall 
     
    125100    } 
    126101 
    127     // Initialize the view/hide buttons  
    128     function initLayerButtons() 
    129     { 
    130         initVDSbutton(); 
    131         initForwardbutton(); 
    132         initVDSicons(); 
    133     } 
    134  
    135102    // Initialize the map and load the points 
    136103    function initMap() 
     
    148115 
    149116        // setup the search box and center button 
    150         initSearch(); 
     117        //initSearch(); 
    151118        initCenter(); 
    152119         
    153         loadVDSlayer(); // go load the map data 
    154         processVDS(); 
     120        initializeVDSlayer(); // go load the map data 
    155121 
    156         initLayerButtons(); // setup the show/hide layer buttons 
    157  
    158         updateVDSlayer(); 
    159         setTimeout(function() { 
    160             buildDiff(); 
    161             updateVDSlayer(); 
    162         }, 3000); 
     122        initControlButtons(); 
     123        initVDSicons() 
    163124 
    164125        // Listen for zoom changes and move the vds dots so as to keep a nice 
  • trunk/webapps/visualizer/js/vdsLayer.js

    r528 r530  
    1     // Build a solid colored icon to use instead of the classic pin 
    2     function dotSymbol(color)  
    3     { 
    4         var iconPath = iconVDSwhite; 
    5         if (color == 'red') 
    6         { 
    7            iconPath = iconVDSred; 
    8         } 
    9         else if (color == 'yellow') 
    10         { 
    11             iconPath = iconVDSyellow; 
    12         } 
    13         else if (color == 'lime') 
    14         { 
    15             iconPath = iconVDSgreen; 
    16         } 
    17         return { 
    18             url: iconPath,  
    19             anchor: new google.maps.Point(6, 6) 
    20         }; 
    21     } 
    22  
    231    // Load the map data from a json file and style all the points 
    24     function loadVDSlayer() 
     2    function initializeVDSlayer() 
    253    { 
    264        // Load the static map data and call saveCoords when done 
     
    4624        }); 
    4725    } 
     26 
     27    // Build a solid colored icon to use instead of the classic pin 
     28    function dotSymbol(color)  
     29    { 
     30        var iconPath = iconVDSwhite; 
     31        if (color == 'red') 
     32        { 
     33           iconPath = iconVDSred; 
     34        } 
     35        else if (color == 'yellow') 
     36        { 
     37            iconPath = iconVDSyellow; 
     38        } 
     39        else if (color == 'lime') 
     40        { 
     41            iconPath = iconVDSgreen; 
     42        } 
     43        return { 
     44            url: iconPath,  
     45            anchor: new google.maps.Point(6, 6) 
     46        }; 
     47    } 
     48 
    4849    // callback when load GeoJson completes 
    4950    // save each feature's Point as the original coordinates for later reference 
     
    5657            vds_coords[feature.getId()] = pt; // save the Point in a dictionary 
    5758        }); 
    58         // update the dot colors from the dynamic json data  
    59         updateVDSlayer(); 
    6059        // go adjust the marker coordinates so dots don't overlap 
    6160        adjustCoords(calcDistanceFactor()); 
     61        processVDS(); 
    6262    }  
    6363 
     
    114114    } 
    115115 
     116    // Load the highways static json file and update the map 
     117    function resetVDSlayer() 
     118    { 
     119        eventIndex = -1; 
     120        loadJSON(kMapStartupFile, function(response) 
     121        { 
     122            // Parse JSON string into object 
     123            //initialVDSjson = JSON.parse(response); 
     124            // Process each new marker - lookup in current map 
     125            var initialVDSjsonFeatures = JSON.parse(response).features 
     126            initialVDSjsonFeatures.forEach(updateMarker); 
     127        }); 
     128    } 
     129 
     130    function getColorName(str){ 
     131        if (str === "R\r" || str === "R") 
     132            return "red"; 
     133        else if (str === "Y\r" || str === "Y") 
     134            return "yellow"; 
     135        else if (str === "G\r" || str === "G") 
     136            return "lime"; 
     137    } 
     138 
     139// Parses the traffic events file and builds an array of target dots for each line 
     140    function processVDS() { 
     141        //var parsed_JSON; 
     142        loadJSON(kMapStartupFile, function(response) 
     143        {  
     144            // Parse JSON string into object 
     145            parsed_JSON = JSON.parse(response); 
     146            // Process each new marker - lookup in current map 
     147            var parsed_features =  parsed_JSON.features; 
     148            parsed_features.forEach(updateMarker); 
     149            var eventsFile = ''; 
     150            // Request the traffic events data file 
     151            var xmlhttp = new XMLHttpRequest(); 
     152            xmlhttp.open("GET",trafficEventsFile,true); // Ask the server for the traffic events file 
     153            // Establish listener for handling the traffic events once file is read 
     154            xmlhttp.onreadystatechange = function() 
     155            { 
     156                if(xmlhttp.status == 200 && xmlhttp.readyState == 4) 
     157                { 
     158                    eventsFile = xmlhttp.responseText; 
     159                    // Process the traffic events file 
     160                    var lines = eventsFile.toString().split("\n"); 
     161                    // For each line in the events file 
     162                    for (var line = 1; line < lines.length; line++)  
     163                    { 
     164                        var trimmedLine = lines[line].trim(); 
     165                        if (trimmedLine[0] !== '#') //ignores lines with # 
     166                        { 
     167                            var dots = [];                             
     168                            var event = trimmedLine.split(/[ ,]+/); 
     169                            var start = parseFloat(event[4]); // extract postmile field 
     170                            var range = parseFloat(event[5]); // extract distance 
     171                            var newColor = getColorName(event[6]); // extract DotColor 
     172                            eventTimes.push(event[1]);  // extract the event time 
     173                            // Process each VDS in the highway network 
     174                            parsed_features.forEach(function (marker) { 
     175                                var marker_fields = marker.id.split(" "); 
     176                                // See if this marker's highway and direction match to this event 
     177                                if (marker_fields[0] === event[2] && marker_fields[1] === event[3]) 
     178                                {   //computes difference in postmiles 
     179                                    var dist = parseFloat(marker_fields[2]) - start;  
     180                                    // If this marker is within computed range 
     181                                    if (dist <= range && dist >= 0)  
     182                                    { 
     183                                        // Add the marker to the dots representing this event 
     184                                        dots.push({"marker": marker, "color": newColor}); 
     185                                    } 
     186                                } 
     187                            }); 
     188                            targetDots.push(dots); // add this events dots to the list of targetdots 
     189                        } // end if 
     190                    }  // end for               
     191                    // After the traffic events are processed,  go build the differences array 
     192                    buildDiff();      // side effect: leaves map with last event showing 
     193                    resetVDSlayer();  // restore the map to initial state 
     194                } 
     195            }; 
     196            xmlhttp.send(); 
     197        }); 
     198    } 
     199 
     200    // Calls updateMarker for all targetDots after storing the previous marker in diff_arr  
     201    // This function only needs to be done once, during startup. 
     202    function buildDiff()  
     203    { 
     204        for (var i = 0; i <= targetDots.length; i++) 
     205        { 
     206            if  (targetDots[i] !== undefined) 
     207            { 
     208                var targetMarkers = new Array(); 
     209                targetDots[i].forEach(function(item) 
     210                { 
     211                    item.marker.properties.color = item.color; 
     212                    storePrev(item.marker, targetMarkers); 
     213                    updateMarker(item.marker); 
     214                }); 
     215                diff_arr.push(targetMarkers); 
     216            } 
     217        } 
     218    } 
     219    // Helper function for BuildDiff 
     220    // Store the previous colors of the targetDots 
     221    // so it will available if the user goes "back". 
    116222    function storePrev(marker, targetMarkers)  
    117223    { 
     
    129235    } 
    130236 
    131     // Load the highways dynamic json file and update the map 
    132     function updateVDSlayer() 
    133     { 
    134         index = -1; 
    135         var parsed_JSON; 
    136         loadJSON(kVDSstatusFile, function(response) 
    137         { 
    138             // Parse JSON string into object 
    139             parsed_JSON = JSON.parse(response); 
    140             // Process each new marker - lookup in current map 
    141             parsed_JSON.features.forEach(updateMarker); 
    142         }); 
    143     } 
    144  
    145     function getColorName(str){ 
    146         if (str === "R\r" || str === "R") 
    147             return "red"; 
    148         else if (str === "Y\r" || str === "Y") 
    149             return "yellow"; 
    150         else if (str === "G\r" || str === "G") 
    151             return "lime"; 
    152     } 
    153  
    154     function processVDS() { 
    155         var parsed_JSON; 
    156         loadJSON(kVDSstatusFile, function(response) 
    157         {  
    158             // Parse JSON string into object 
    159             parsed_JSON = JSON.parse(response); 
    160             // Process each new marker - lookup in current map 
    161             var array =  parsed_JSON.features; 
    162             var txt = ''; 
    163             var xmlhttp = new XMLHttpRequest(); 
    164             xmlhttp.onreadystatechange = function(){ 
    165                 if(xmlhttp.status == 200 && xmlhttp.readyState == 4){ 
    166                     txt = xmlhttp.responseText; 
    167                     var lines = txt.toString().split("\n"); 
    168                     for (var line = 1; line < lines.length; line++) { 
    169                         filters[line-1] = []; 
    170                         var event = lines[line].split(/[ ,]+/); 
    171                         var start = parseFloat(event[4]); // 7.73 
    172                         var range = parseFloat(event[5]); // 0.5 
    173                         var newColor = getColorName(event[6]); // "R" 
    174                         times.push(event[1]); 
    175                         array.forEach(function (marker) { 
    176                             var id_arr = marker.id.split(" "); 
    177                             if (id_arr[0] === event[2] && id_arr[1] === event[3]){ 
    178                                 var dist = parseFloat(id_arr[2]) - start; //difference of postmiles 
    179                                 if (dist <= range && dist >= 0){ 
    180                                     filters[line-1].push({"marker": marker, "color": newColor}); 
    181                                 } 
    182                             } 
    183                         }); 
    184                     } 
    185                 } 
    186             }; 
    187             xmlhttp.open("GET",trafficEventsFile,true); //read traffic events text file 
    188             xmlhttp.send(); 
    189         }); 
    190     } 
    191        
    192     // updates color for each marker based on color in filters array 
    193     function updateVDS(forwards) {  
    194                 if (forwards) { 
    195             index++; 
    196             if (index >= filters.length)  
    197             { 
    198                 index = filters.length - 1; 
    199             } 
    200             if  (filters[index] !== undefined) { 
    201                 filters[index].forEach(function(item){ 
    202                     item.marker.properties.color = item.color; 
    203                     updateMarker(item.marker); 
    204                 }); 
    205             } 
    206         } 
    207                 else { 
    208             if  (diff_arr[index] !== undefined) { 
    209                 diff_arr[index].forEach(function(item){ 
    210                     updateMarker(item); 
    211                 }); 
    212             } 
    213             index--;  
    214             if (index < -1) 
    215             { 
    216                 index = -1; 
    217             } 
    218         } 
    219     } 
    220  
    221     function buildDiff()  
    222     { 
    223         for (var i = 0; i <= filters.length; i++) 
    224         { 
    225             if  (filters[i] !== undefined) 
    226             { 
    227                 var targetMarkers = new Array(); 
    228                 filters[i].forEach(function(item){ 
    229                     item.marker.properties.color = item.color; 
    230                     storePrev(item.marker, targetMarkers); 
    231                     updateMarker(item.marker); 
    232                 }); 
    233                 diff_arr.push(targetMarkers); 
    234             } 
    235         } 
    236     } 
    237  
    238 function initVDSbutton() 
    239 { 
    240  
    241     var vdsBtnDiv = document.getElementById('vdsButton'); 
    242     map.controls[google.maps.ControlPosition.LEFT_BOTTOM].push(vdsBtnDiv) 
    243     vdsBtnDiv.title = 'Click to toggle vds view'; 
    244  
    245     // Setup the click event listeners to toggle icon display 
    246     vdsBtnDiv.addEventListener('click', function() 
    247     { 
    248         vds_showing = !vds_showing; 
    249         // reveal or hide all the dots 
    250         map.data.forEach(function(feature) 
    251         { 
    252             map.data.overrideStyle(feature, 
    253             { 
    254                 visible: vds_showing 
     237 
     238 
     239    // Increments the eventIndex from and updates all the targetDots on map 
     240    function updateForwards() { 
     241        eventIndex++; 
     242        // limit eventIndex to length of targetDots 
     243        if (eventIndex >= targetDots.length)  
     244        { 
     245            eventIndex = targetDots.length - 1; 
     246        } 
     247        // update all the target dots 
     248        if  (targetDots[eventIndex] !== undefined) { 
     249            targetDots[eventIndex].forEach(function(item){ 
     250                item.marker.properties.color = item.color; 
     251                updateMarker(item.marker); 
    255252            }); 
    256         }); 
    257         // Determine which button image to show 
    258         if (vds_showing) 
    259         { 
    260             pic = "images/btnDepressed_VDS.png" 
    261         } 
    262         else 
    263         { 
    264             pic = "images/btnReady_VDS.png" 
    265         } 
    266         document.getElementById('vdsBtnImg').src = pic; 
    267     }); 
    268 } 
    269  
    270 // init beginning and next buttons as well as time display on map 
    271 function initForwardbutton() 
     253        } 
     254    } 
     255 
     256    // Decrements the eventIndex and updates all the targetDots from diff_arr on map 
     257    function updateBackwards() { 
     258        //update each target dot in order to revert to previous color 
     259        if  (diff_arr[eventIndex] !== undefined) { 
     260            diff_arr[eventIndex].forEach(function(item){ 
     261                updateMarker(item); 
     262            }); 
     263        } 
     264        eventIndex--;  
     265        // restrict eventIndex to -1 
     266        if (eventIndex < -1) 
     267        { 
     268            eventIndex = -1; 
     269        } 
     270    } 
     271     
     272 
     273// init beginning, forward and back buttons as well as time display on map 
     274function initControlButtons() 
    272275{ 
    273276    var i = 0; 
     277    // setup the time display 
    274278    var time = document.getElementById('time'); 
    275279    map.controls[google.maps.ControlPosition.BOTTOM_CENTER].push(time) 
    276     var start = document.getElementById('start'); 
    277     map.controls[google.maps.ControlPosition.BOTTOM_CENTER].push(start) 
    278     start.title = 'Click to see the first event'; 
     280    // set up the "beginning" button 
     281    var beginning = document.getElementById('beginning'); 
     282    map.controls[google.maps.ControlPosition.BOTTOM_CENTER].push(beginning) 
     283    beginning.title = 'Click to see the first event'; 
     284    // set up the "next" button 
    279285    var forward = document.getElementById('forward'); 
    280286    map.controls[google.maps.ControlPosition.BOTTOM_CENTER].push(forward) 
     287    // set up the "back" button 
    281288        var backward = document.getElementById('backward'); 
    282289        map.controls[google.maps.ControlPosition.BOTTOM_CENTER].push(backward) 
    283290    forward.title = 'Click to see the next event'; 
    284     //console.log(diff_arr); 
     291    //console.log(targetDots, eventTimes); 
     292    // Establish the listeners for each button 
    285293    forward.addEventListener('click', function() { 
    286         updateVDS(1); 
    287         if (i < times.length - 1) 
     294        updateForwards(); 
     295        backward.disabled = false; 
     296        if (i < eventTimes.length - 1) // get the next eventTime  
    288297        { 
    289298            ++i; 
    290             time.innerHTML = times[i]; 
     299            time.innerHTML = eventTimes[i]; 
     300        } 
     301        if (eventIndex === targetDots.length - 1) // disable next button if last event reached 
     302        { 
     303            forward.disabled = true; 
    291304        } 
    292305    }); 
    293306        backward.addEventListener('click', function() { 
    294         updateVDS(0); 
    295         if (i > 0) 
     307        updateBackwards(); 
     308        forward.disabled = false; 
     309        if (i > 0)  // get the prev eventTime  
    296310        { 
    297311            --i; 
    298             time.innerHTML = times[i]; 
     312            time.innerHTML = eventTimes[i]; 
     313        } 
     314        if (eventIndex < 0) // disable back button if at first event  
     315        { 
     316            backward.disabled = true; 
    299317        } 
    300318        }); 
    301     start.addEventListener('click', function() { 
    302         updateVDSlayer(); 
     319    beginning.addEventListener('click', function() { 
     320        resetVDSlayer(); // redraw markers on map from startup file 
    303321        i = 0; 
    304322        time.innerHTML = "00:00:00"; 
  • trunk/webapps/visualizer/traffic_events.txt

    r516 r530  
    1 ID    Time        Route    Direction   PostMile    Distance    DotColor 
    2 181   00:00:30    405      N           7.73        3.0         R 
    3 181   00:00:45    405      N           8.40        4.74        Y 
    4 181   00:01:00    405      N           5.73        2.0         R 
    5 181   00:02:00    405      N           0.85        3.2         Y 
    6 181   00:02:30    405      N           2.73        4.0         R 
    7 181   00:07:00    5        N           28.9        1.5         Y 
    8 181   00:08:00    5        N           21.25       2.5         R 
    9 181   00:08:30    5        N           18.61       3.0         Y 
    10 181   00:16:30    405      N           1.73        2.73        R 
     1########################################################################### 
     2# FEP Simulator Input File 
     3# 
     4# TMC Simulator Full Script 
     5# v1.0 - Neil Hockaday 
     6########################################################################### 
     7# Incident 187  
     8#  
     9# This is a stalled DOT truck on SB 55 overpass at 405. The truck is hit  
     10# by a vehicle, the vehicle is vaulted over the railing, and a 6 vehicle  
     11# collision occurs below in the NB 405 lanes. The #2 and 3 lanes are  
     12# blocked on SB 55 and the #1, 2, and 3 lanes are blocked on NB 405. 
     13########################################################################### 
     14# Incident 188 
     15#  
     16# This is a two vehicle collision between a tomato truck and a car. The  
     17# truck spills tomatoes across lanes #3,4,5 right lanes plus shoulder of  
     18# NB 5 just north of Lake Forest Drive.  
     19########################################################################### 
     20# Incident 189 
     21#  
     22# This is a suicide attempt and a bomb threat. A man with a bomb strapped  
     23# to him is threatening to blow up the interchange at I-405 and Jeffrey  
     24# Road. The freeway interchange is shut down completely, causing major  
     25# backup in both directions on I-405. 
     26########################################################################### 
     27# Incident 190 
     28#  
     29# This is a collision involving a tanker truck and a car that block the #3  
     30# and 4 lanes on NB I-5 just north of Main Street. 
     31########################################################################### 
     32# Incident 191 
     33#  
     34# This is an RV fire on the shoulder southbound 73 just north of Bear/Baker 
     35# Street. 
     36########################################################################### 
     37# Format 
     38#  
     39# ID    Time      Route   Direction PostMile Distance DotColor 
     40########################################################################### 
     41  187   00:00:07  55      S         6.88     0.2      Y 
     42  187   00:01:37  55      S         6.88     0.2      R 
     43  187   00:02:07  55      S         7.03     0.2      Y 
     44  187   00:02:37  55      S         7.03     0.7      Y 
     45  187   00:03:06  405     N         8.40     0.2      R 
     46  187   00:03:37  55      S         6.88     1.0      R 
     47  187   00:04:06  405     N         8.40     0.2      R 
     48  187   00:04:37  55      S         6.88     2.0      R 
     49  187   00:04:47  55      N         5.87     0.2      Y 
     50  187   00:05:06  405     N         8.40     1.0      R 
     51  187   00:05:36  405     N         7.07     0.2      Y 
     52  187   00:06:06  405     N         7.07     0.3      Y 
     53  187   00:07:06  405     N         8.40     1.5      R 
     54  187   00:07:07  55      S         9.19     0.2      Y 
     55  187   00:08:06  405     N         6.21     1.5      Y 
     56  188   00:08:08  5       N         20.00    0.2      Y 
     57  187   00:09:06  405     N         8.40     2.1      R 
     58  187   00:09:07  55      S         9.19     0.7      Y 
     59  188   00:09:08  5       N         20.00    0.2      R 
     60  187   00:10:06  405     N         6.21     2.0      Y 
     61  188   00:10:08  5       N         18.61    0.2      Y 
     62  187   00:11:06  405     N         8.40     2.5      R 
     63  187   00:11:07  55      S         6.88     0.7      Y 
     64  188   00:12:08  5       N         18.61    1.2      Y 
     65  188   00:12:38  5       N         18.61    0.2      R 
     66  187   00:13:06  405     N         4.03     0.2      Y 
     67  187   00:14:06  405     N         4.03     0.3      Y 
     68  188   00:14:08  5       N         17.63    0.1      Y 
     69  187   00:14:37  55      S         6.88     2.5      R 
     70  187   00:14:47  55      N         5.87     0.4      Y 
     71  187   00:15:06  405     N         3.86     0.1      Y 
     72  187   00:16:06  405     N         8.40     3.5      R 
     73  187   00:16:07  55      S         9.84     0.2      Y 
     74  188   00:16:08  5       N         17.63    0.3      Y 
     75  187   00:17:06  405     N         3.86     0.6      Y 
     76  188   00:17:08  5       N         17.63    1.0      Y 
     77  187   00:18:06  405     N         8.40     4.5      R 
     78  187   00:18:07  55      S         10.40    0.2      Y 
     79  188   00:18:08  5       N         20.00    1.0      R 
     80  187   00:19:06  405     N         3.86     0.8      Y 
     81  188   00:19:08  5       N         20.00    1.5      R 
     82  188   00:20:08  5       N         20.00    2.0      R 
     83  187   00:21:05  5       S         30.40    0.1      Y 
     84  188   00:21:08  5       N         17.63    2.0      Y 
     85  187   00:22:06  405     N         3.86     1.0      Y 
     86  188   00:22:08  5       N         20.00    2.5      R 
     87  187   00:23:05  5       S         30.40    0.2      Y 
     88  188   00:23:08  5       N         15.35    0.2      Y 
     89  187   00:24:05  5       S         30.40    0.1      R 
     90  187   00:24:05  5       S         30.40    0.8      Y 
     91  187   00:24:06  405     N         3.86     1.6      Y 
     92  187   00:25:06  405     N         8.40     4.6      R 
     93  188   00:25:08  5       N         15.35    0.7      Y 
     94  187   00:26:05  5       S         30.40    1.2      R 
     95  187   00:26:05  5       S         30.60    1.2      Y 
     96  188   00:26:08  5       N         20.00    3.5      R 
     97  188   00:27:08  5       N         15.35    1.5      Y 
     98  188   00:28:08  5       N         20.00    4.5      R 
     99  188   00:29:08  5       N         15.35    2.5      Y 
     100  187   01:01:07  55      S         6.88     0.2      Y 
     101  187   01:02:07  55      S         6.88     0.2      G 
     102  187   01:02:17  55      S         7.03     0.2      Y 
     103  187   01:04:17  55      S         7.03     0.7      Y 
     104  187   01:05:07  55      S         6.88     0.2      Y 
     105  187   01:05:37  55      S         7.03     1.5      Y 
     106  187   01:06:07  55      S         6.88     1.0      G 
     107  187   01:07:17  55      S         9.19     0.2      Y 
     108  188   01:08:08  5       N         20.00    0.2      Y 
     109  187   01:08:17  55      S         9.19     0.9      Y 
     110  187   01:09:17  55      S         9.19     1.3      Y 
     111  187   01:09:27  55      S         6.88     2.0      G 
     112  187   01:10:17  55      S         6.88     3.0      G 
     113  188   01:11:08  5       N         20.00    0.2      Y 
     114  187   01:11:17  55      S         6.88     4.0      G 
     115  187   01:11:35  5       S         30.40    0.1      Y 
     116  187   01:12:35  5       S         30.40    0.5      Y 
     117  187   01:13:05  5       S         30.40    1.0      Y 
     118  187   01:14:05  5       S         30.40    1.5      Y 
     119  187   01:15:05  5       S         30.40    0.5      G 
     120  188   01:15:08  5       N         20.00    0.7      Y 
     121  187   01:16:05  5       S         30.40    1.5      G 
     122  188   01:20:08  5       N         20.00    1.0      Y 
     123  187   01:29:06  405     N         8.40     0.2      Y 
     124  187   01:30:06  405     N         8.40     0.7      Y 
     125  188   01:30:08  5       N         20.00    1.5      Y 
     126  187   01:31:06  405     N         8.40     1.2      Y 
     127  187   01:31:16  405     N         8.40     0.2      G 
     128  187   01:32:06  405     N         7.07     1.0      Y 
     129  187   01:33:06  405     N         7.07     1.5      Y 
     130  187   01:34:16  405     N         8.40     1.2      G 
     131  187   01:35:06  405     N         5.05     1.0      Y 
     132  187   01:35:06  405     N         5.05     2.0      Y 
     133  187   01:35:06  405     N         7.07     2.5      Y 
     134  188   01:35:08  5       N         20.00    0.2      G 
     135  188   01:36:08  5       N         19.75    2.0      Y 
     136  187   01:36:16  405     N         8.40     1.5      G 
     137  188   01:36:38  5       N         20.00    1.0      G 
     138  188   01:37:08  5       N         18.90    3.0      Y 
     139  189   01:37:09  405     S         4.03     0.2      R 
     140  187   01:37:16  405     N         8.40     2.5      G 
     141  189   01:37:39  405     S         4.03     0.5      R 
     142  189   01:38:09  405     S         4.03     1.0      R 
     143  187   01:38:16  405     N         8.40     3.0      G 
     144  189   01:38:19  405     N         2.35     0.2      R 
     145  189   01:38:39  405     S         4.03     1.5      R 
     146  189   01:38:49  405     N         2.35     0.5      R 
     147  187   01:39:06  405     N         3.86     1.6      Y 
     148  189   01:39:09  405     S         4.03     2.0      R 
     149  189   01:39:09  405     S         4.03     3.0      R 
     150  189   01:39:19  405     N         2.35     1.0      R 
     151  189   01:39:39  405     S         4.03     2.5      R 
     152  189   01:39:39  405     S         4.03     3.5      R 
     153  189   01:39:49  405     N         2.35     1.5      R 
     154  188   01:40:08  5       N         20.00    2.3      G 
     155  189   01:40:09  405     S         4.03     4.0      R 
     156  187   01:40:16  405     N         8.40     4.0      G 
     157  189   01:40:33  133     S         9.00     0.2      Y 
     158  189   01:40:39  405     S         4.03     4.5      R 
     159  189   01:40:40  5       N         20.59    0.2      R 
     160  188   01:41:08  5       N         17.63    4.0      Y 
     161  189   01:41:09  405     S         4.03     5.0      R 
     162  189   01:41:10  5       N         20.59    0.5      R 
     163  189   01:41:10  5       N         21.25    0.1      Y 
     164  187   01:41:16  405     N         8.40     5.0      G 
     165  189   01:41:40  5       N         20.59    1.0      R 
     166  189   01:42:09  405     S         4.03     6.0      R 
     167  189   01:42:10  5       N         20.59    1.5      R 
     168  187   01:42:16  405     N         8.40     6.0      G 
     169  189   01:42:34  55      N         5.87     0.2      Y 
     170  189   01:42:40  5       N         20.59    2.0      R 
     171  189   01:43:09  405     S         4.03     7.0      R 
     172  189   01:43:10  5       N         20.59    2.5      R 
     173  189   01:43:40  5       N         20.59    3.0      R 
     174  189   01:44:09  405     S         4.03     8.0      R 
     175  189   01:44:10  5       N         20.59    3.5      R 
     176  189   01:44:40  5       N         20.59    4.0      R 
     177  189   01:45:09  405     S         4.03     9.0      R 
     178  189   01:45:10  5       N         20.59    4.5      R 
     179  189   01:45:33  133     S         9.00     0.5      Y 
     180  189   01:45:34  55      N         5.87     0.5      Y 
     181  189   01:45:40  5       N         20.59    5.0      R 
     182  189   01:46:09  405     S         4.03     10.0     R 
     183  189   01:46:40  5       N         20.59    6.0      R 
     184  189   01:47:09  405     S         4.03     11.0     R 
     185  189   01:47:40  5       N         20.59    7.0      R 
     186  189   01:48:09  405     S         4.03     12.0     R 
     187  189   01:48:40  5       N         20.59    8.0      R 
     188  189   01:49:09  405     S         4.03     13.0     R 
     189  189   01:49:40  5       N         20.59    9.0      R 
     190  189   01:50:09  405     S         4.03     14.0     R 
     191  189   01:50:33  133     S         9.00     0.5      R 
     192  189   01:50:34  55      N         5.87     0.7      Y 
     193  189   01:50:40  5       N         20.59    10.0     R 
     194  189   01:50:43  133     S         9.00     0.8      R 
     195  189   01:51:09  405     S         4.03     15.0     R 
     196  190   01:51:09  5       N         33.20    0.2      Y 
     197  190   01:52:09  5       N         33.20    0.2      R 
     198  190   01:52:19  5       N         33.00    0.5      Y 
     199  190   01:53:09  5       N         32.70    0.2      R 
     200  190   01:53:19  5       N         32.50    0.5      Y 
     201  190   01:54:09  5       N         32.50    1.0      Y 
     202  190   01:55:09  5       N         32.50    1.5      Y 
     203  190   01:56:09  5       N         32.50    0.5      R 
     204  190   01:57:09  5       N         32.50    1.5      R 
     205  190   01:57:19  5       S         33.25    0.1      Y 
     206  190   01:58:09  5       N         31.00    1.0      Y 
     207  190   01:58:09  5       N         31.00    1.5      Y 
     208  190   01:59:09  5       N         31.00    2.0      Y 
     209  190   02:00:09  5       N         31.00    0.5      R 
     210  190   02:00:09  5       N         31.00    1.0      R 
     211  190   02:01:09  55      N         10.40    0.5      Y 
     212  190   02:01:09  5       N         28.50    0.5      Y 
     213  190   02:01:09  5       N         29.00    0.5      Y 
     214  190   02:01:39  55      S         10.84    0.5      Y 
     215  190   02:02:09  5       N         28.50    1.0      Y 
     216  190   02:03:09  5       N         28.50    1.5      Y 
     217  190   02:04:19  55      N         10.40    1.0      Y 
     218  190   02:04:49  55      S         10.84    1.0      Y 
     219  190   02:05:09  5       N         31.00    1.5      R 
     220  190   02:06:09  5       N         31.00    2.0      R 
     221  190   02:07:09  5       N         28.50    2.0      Y 
     222  190   02:08:09  5       N         31.00    2.5      R 
     223  190   02:09:19  261     N         0.50     0.2      Y 
     224  190   02:09:49  261     S         0.90     0.2      Y 
     225  190   02:11:09  5       N         28.50    2.5      Y 
     226  190   02:12:09  55      N         10.40    1.0      Y 
     227  190   02:12:39  55      S         10.84    1.0      Y 
     228  189   02:14:09  405     S         4.03     0.2      Y 
     229  190   02:14:09  5       N         28.50    0.5      R 
     230  189   02:14:19  405     N         2.35     0.2      Y 
     231  189   02:14:39  405     S         4.03     0.5      Y 
     232  189   02:14:49  405     N         2.35     0.5      Y 
     233  189   02:15:09  405     S         4.03     1.0      Y 
     234  189   02:15:19  405     N         2.35     1.0      Y 
     235  189   02:15:39  405     S         4.03     0.2      G 
     236  189   02:15:49  405     N         2.35     1.5      Y 
     237  189   02:16:09  405     S         5.03     1.0      Y 
     238  190   02:16:09  5       N         28.50    0.5      R 
     239  189   02:16:10  5       N         20.59    0.2      Y 
     240  189   02:16:19  405     N         2.35     1.0      G 
     241  189   02:16:39  405     S         4.03     0.5      G 
     242  189   02:16:40  5       N         20.59    0.5      Y 
     243  189   02:16:43  133     S         9.00     0.8      G 
     244  189   02:17:09  405     S         6.03     1.0      Y 
     245  189   02:17:10  5       N         20.59    12.0     Y 
     246  189   02:17:19  405     N         2.35     1.5      G 
     247  189   02:17:39  405     S         4.03     1.0      G 
     248  189   02:17:40  5       N         20.59    1.0      Y 
     249  189   02:17:50  5       N         21.25    0.1      G 
     250  189   02:18:09  405     S         7.03     1.0      Y 
     251  189   02:18:10  5       N         20.59    1.5      Y 
     252  189   02:18:39  405     S         4.03     1.5      G 
     253  189   02:18:40  5       N         20.59    0.2      G 
     254  191   02:19:02  73      S         27.20    0.2      Y 
     255  189   02:19:09  405     S         8.03     1.0      Y 
     256  189   02:19:10  5       N         19.50    1.0      Y 
     257  189   02:19:39  405     S         4.03     2.0      G 
     258  189   02:19:40  5       N         20.59    0.5      G 
     259  189   02:20:09  405     S         9.03     1.0      Y 
     260  189   02:20:10  5       N         18.50    1.0      Y 
     261  189   02:20:39  405     S         4.03     2.5      G 
     262  189   02:20:40  5       N         20.59    1.0      G 
     263  191   02:21:02  73      S         27.20    0.8      Y 
     264  189   02:21:09  405     S         10.03    1.0      Y 
     265  189   02:21:10  5       N         17.50    1.0      Y 
     266  189   02:21:39  405     S         4.03     3.0      G 
     267  189   02:21:40  5       N         20.59    1.5      G 
     268  189   02:22:09  405     S         11.03    1.0      Y 
     269  189   02:22:10  5       N         16.50    1.0      Y 
     270  189   02:22:39  405     S         4.03     4.0      G 
     271  189   02:22:40  5       N         20.59    2.0      G 
     272  189   02:23:09  405     S         12.03    1.0      Y 
     273  189   02:23:10  5       N         15.50    1.0      Y 
     274  189   02:23:39  405     S         4.03     5.0      G 
     275  189   02:23:40  5       N         20.59    2.0      G 
     276  191   02:24:02  73      S         27.20    0.2      R 
     277  189   02:24:09  405     S         13.03    1.0      Y 
     278  189   02:24:10  5       N         14.50    1.0      Y 
     279  189   02:24:34  55      N         5.87     0.2      G 
     280  189   02:24:39  405     S         4.03     6.0      G 
     281  189   02:24:40  5       N         20.59    3.0      G 
     282  189   02:24:49  405     S         19.03    1.0      Y 
     283  191   02:25:02  73      N         26.70    0.2      Y 
     284  189   02:25:09  405     S         14.03    1.0      Y 
     285  189   02:25:10  5       N         13.50    1.0      Y 
     286  189   02:25:39  405     S         4.03     7.0      G 
     287  189   02:25:40  5       N         20.59    4.0      G 
     288  191   02:26:02  73      S         27.20    0.8      R 
     289  189   02:26:09  405     S         14.03    1.0      Y 
     290  189   02:26:10  5       N         12.50    1.0      Y 
     291  189   02:26:39  405     S         4.03     7.0      G 
     292  189   02:26:40  5       N         20.59    4.0      G 
     293  189   02:27:09  405     S         15.03    1.0      Y 
     294  190   02:27:09  5       N         33.20    0.2      Y 
     295  189   02:27:10  5       N         11.50    1.0      Y 
     296  189   02:27:39  405     S         4.03     9.0      G 
     297  189   02:27:40  5       N         20.59    4.0      G 
     298  189   02:28:09  405     S         16.03    1.0      Y 
     299  189   02:28:39  405     S         4.03     10.0     G 
     300  189   02:28:40  5       N         20.59    5.0      G 
     301  189   02:29:09  405     S         17.03    1.0      Y 
     302  190   02:29:09  5       N         33.20    0.5      Y 
     303  189   02:29:34  55      N         5.87     0.8      G 
     304  189   02:29:39  405     S         4.03     12.0     G 
     305  189   02:29:40  5       N         20.59    6.0      G 
     306  189   02:29:49  405     S         20.03    1.0      Y 
     307  189   02:30:09  405     S         18.03    1.0      Y 
     308  189   02:30:39  405     S         4.03     13.0     G 
     309  189   02:30:40  5       N         20.59    7.0      G 
     310  189   02:31:09  405     S         19.03    1.0      Y 
     311  190   02:31:09  5       N         33.20    0.7      Y 
     312  189   02:31:39  405     S         4.03     15.0     G 
     313  189   02:31:40  5       N         20.59    8.0      G 
     314  189   02:32:09  405     S         20.03    1.0      Y 
     315  189   02:32:39  405     S         4.03     16.0     G 
     316  189   02:32:39  405     S         4.03     18.0     G 
     317  189   02:32:40  5       N         20.59    9.0      G 
     318  190   02:33:09  5       N         33.20    1.0      Y 
     319  189   02:33:40  5       N         20.59    10.0     G 
     320  189   02:34:40  5       N         20.59    11.0     G 
     321  190   02:35:09  5       N         33.20    1.5      Y 
     322  191   02:36:02  73      N         26.70    0.2      G 
     323  191   02:37:02  73      S         27.20    0.2      Y 
     324  190   02:37:09  5       N         33.20    2.0      Y 
     325  191   02:39:02  73      S         27.20    0.8      Y 
     326  190   02:39:09  5       N         33.20    2.5      Y 
     327  190   02:41:09  5       N         33.20    3.0      Y 
     328  190   02:46:09  5       N         33.20    0.2      G 
     329  190   02:46:39  5       N         33.20    0.5      G 
     330  190   02:46:49  5       S         33.25    0.1      G 
     331  191   02:47:02  73      S         27.20    0.2      G 
     332  190   02:47:09  5       N         33.20    0.7      G 
     333  190   02:47:39  5       N         33.20    1.0      G 
     334  190   02:48:09  5       N         33.20    1.5      G 
     335  190   02:48:39  5       N         33.20    2.0      G 
     336  191   02:49:02  73      S         27.20    0.8      G 
     337  190   02:49:09  5       N         31.00    2.0      Y 
     338  190   02:49:39  5       N         33.20    2.5      G 
     339  190   02:49:39  5       N         33.20    6.0      G 
     340  190   02:50:09  5       N         30.00    2.0      Y 
     341  190   02:51:09  55      N         10.40    1.5      G 
     342  190   02:51:19  261     N         0.50     0.2      G 
     343  190   02:51:39  55      S         10.84    1.5      G 
     344  190   02:51:49  261     S         0.90     0.2      G 
Note: See TracChangeset for help on using the changeset viewer.