MCPcopy Create free account
hub / github.com/tensorflow/tfjs-examples / JenaWeatherData

Class JenaWeatherData

jena-weather/data.js:42–343  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

40 * batches of training or validation data.
41 */
42export class JenaWeatherData {
43 constructor() {}
44
45 /**
46 * Load and preprocess data.
47 *
48 * This method first tries to load the data from `LOCAL_JENA_WEATHER_CSV_PATH`
49 * (a relative path) and, if that fails, will try to load it from a remote
50 * URL (`JENA_WEATHER_CSV_PATH`).
51 */
52 async load() {
53 let response;
54 try {
55 response = await fetch(LOCAL_JENA_WEATHER_CSV_PATH);
56 } catch (err) {}
57
58 if (response != null &&
59 (response.statusCode === 200 || response.statusCode === 304)) {
60 console.log('Loading data from local path');
61 } else {
62 response = await fetch(REMOTE_JENA_WEATHER_CSV_PATH);
63 console.log(
64 `Loading data from remote path: ${REMOTE_JENA_WEATHER_CSV_PATH}`);
65 }
66 const csvData = await response.text();
67
68 // Parse CSV file.
69 const csvLines = csvData.split('\n');
70
71 // Parse header.
72 const columnNames = csvLines[0].split(',');
73 for (let i = 0; i < columnNames.length; ++i) {
74 // Discard the quotes around the column name.
75 columnNames[i] = columnNames[i].slice(1, columnNames[i].length - 1);
76 }
77
78 this.dateTimeCol = columnNames.indexOf('Date Time');
79 tf.util.assert(this.dateTimeCol === 0, `Unexpected date-time column index`);
80
81 this.dataColumnNames = columnNames.slice(1);
82 this.tempCol = this.dataColumnNames.indexOf('T (degC)');
83 tf.util.assert(this.tempCol >= 1, `Unexpected T (degC) column index`);
84
85 this.dateTime = [];
86 this.data = []; // Unnormalized data.
87 // Day of the year data, normalized between 0 and 1.
88 this.normalizedDayOfYear = [];
89 // Time of the day, normalized between 0 and 1.
90 this.normalizedTimeOfDay = [];
91 for (let i = 1; i < csvLines.length; ++i) {
92 const line = csvLines[i].trim();
93 if (line.length === 0) {
94 continue;
95 }
96 const items = line.split(',');
97 const parsed = this.parseDateTime_(items[0]);
98 const newDateTime = parsed.date;
99 if (this.dateTime.length > 0 &&

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected