@@ -21,6 +21,7 @@ headgear
21
21
*/
22
22
23
23
function getRandomColor ( type , category , gender ) {
24
+ console . log ( "type " + type + "category " + category + "gender" + gender ) ;
24
25
return _ . sample ( _ . toArray ( svgs_ ) . filter ( s => s . gender === gender ) . filter ( s => s . category === category ) . filter ( s => s . type === type ) ) . name ;
25
26
}
26
27
@@ -120,7 +121,7 @@ function processWeather(weather, timestart, timestop, resolution, tempstart, tem
120
121
121
122
const targetPercent = squish ( getPercent ( calcPercent ( target . avg ) ) ) ;
122
123
123
- const raining = weather . daily . data [ 0 ] . precipProbability > 0.1 ;
124
+ const raining = weather . daily . data [ 0 ] . precipProbability > 0.25 ;
124
125
125
126
return {
126
127
target : targetPercent ,
@@ -138,11 +139,14 @@ function processDailyWeather(weather, tempstart, tempstop) {
138
139
const calcPercent = w => 1.0 - ( ( w - tempstart ) / ( tempstop - tempstart ) ) ;
139
140
const avg = ( a , b ) => ( a + b ) / 2.0 ;
140
141
142
+ const raining = weather . precipProbability > 0.25 ;
143
+
141
144
const targetPercent = squish ( getPercent ( calcPercent ( avg ( timeWeather . apparentTemperatureHigh , timeWeather . apparentTemperatureLow ) ) ) ) ;
142
145
return {
143
146
target : targetPercent ,
144
147
min : squish ( targetPercent - 10 ) ,
145
148
max : squish ( targetPercent + 10 ) ,
149
+ raining,
146
150
} ;
147
151
}
148
152
@@ -188,17 +192,20 @@ const categories = [
188
192
omit : true ,
189
193
} ,
190
194
{
191
- name : 'jacket ' ,
195
+ name : 'shoes ' ,
192
196
gender : true ,
193
- omit : true ,
197
+ omit : false ,
194
198
} ,
199
+ ] ;
200
+
201
+ const nCategories = [
195
202
{
196
- name : 'lowerbody ' ,
203
+ name : 'jacket ' ,
197
204
gender : true ,
198
- omit : false ,
205
+ omit : true ,
199
206
} ,
200
207
{
201
- name : 'shoes ' ,
208
+ name : 'lowerbody ' ,
202
209
gender : true ,
203
210
omit : false ,
204
211
} ,
@@ -210,30 +217,80 @@ const categories = [
210
217
] ;
211
218
212
219
export function predict ( param ) {
220
+ const weather = processWeather (
221
+ param . weather ,
222
+ moment ( param . dayInformation . start ) ,
223
+ moment ( param . dayInformation . stop ) ,
224
+ param . settings . resolution ,
225
+ param . settings . mintemp ,
226
+ param . settings . maxtemp ,
227
+ ) ;
228
+
213
229
const pieces = categories . map ( predictType (
214
230
param . gender ,
215
- processWeather (
216
- param . weather ,
217
- moment ( param . dayInformation . start ) ,
218
- moment ( param . dayInformation . stop ) ,
219
- param . settings . resolution ,
220
- param . settings . mintemp ,
221
- param . settings . maxtemp ,
222
- ) ,
231
+ weather ,
223
232
false ,
224
233
) ) ;
225
- return _ . reduce ( pieces , _ . extend ) ;
234
+ const nPieces = nCategories . map ( predictType (
235
+ param . gender ,
236
+ weather ,
237
+ false ,
238
+ ) ) ;
239
+ const fullbody = predictType (
240
+ param . gender ,
241
+ weather ,
242
+ false ,
243
+ ) ( {
244
+ name : 'fullbody' ,
245
+ gender : true ,
246
+ omit : false ,
247
+ } ) ;
248
+
249
+ console . log ( 'fullbody' ) ;
250
+ console . log ( _ . map ( nPieces , x => x [ _ . keys ( x ) [ 0 ] ] ) . filter ( x => x !== '' ) ) ;
251
+ console . log ( fullbody ) ;
252
+ console . log ( _ . map ( _ . map ( nPieces , x => x [ _ . keys ( x ) [ 0 ] ] ) . filter ( x => x !== '' ) , p => _ . toArray ( svgs_ ) . filter ( s => s . name === p ) [ 0 ] . percentage ) ) ;
253
+ console . log ( _ . mean ( _ . map ( _ . map ( nPieces , x => x [ _ . keys ( x ) [ 0 ] ] ) . filter ( x => x !== '' ) , p => _ . toArray ( svgs_ ) . filter ( s => s . name === p ) [ 0 ] . percentage ) ) ) ;
254
+ console . log ( _ . toArray ( svgs_ ) . filter ( s => s . name === fullbody . fullbody ) [ 0 ] . percentage ) ;
255
+
256
+ if ( Math . abs ( _ . mean ( _ . map ( _ . map ( nPieces , x => x [ _ . keys ( x ) [ 0 ] ] ) . filter ( x => x !== '' ) , p => _ . toArray ( svgs_ ) . filter ( s => s . name === p ) [ 0 ] . percentage ) ) - weather . target ) < Math . abs ( _ . toArray ( svgs_ ) . filter ( s => s . name === fullbody . fullbody ) [ 0 ] . percentage - weather . target ) ) {
257
+ return _ . reduce ( _ . flatten ( [ pieces , [ { type : 'seperate' } ] , nPieces , [ { fullbody : '' } ] ] ) , _ . extend ) ;
258
+ }
259
+ return _ . reduce ( _ . flatten ( [ pieces , [ { type : 'fullbody' } ] , [ fullbody ] , _ . map ( nCategories , x => ( { [ x . name ] : '' } ) ) ] ) , _ . extend ) ;
226
260
}
227
261
228
262
export function predictDay ( param ) {
263
+ const weather = processDailyWeather (
264
+ param . weather ,
265
+ param . settings . mintemp ,
266
+ param . settings . maxtemp ,
267
+ ) ;
268
+
229
269
const pieces = categories . map ( predictType (
230
270
param . gender ,
231
- processDailyWeather (
232
- param . weather ,
233
- param . settings . mintemp ,
234
- param . settings . maxtemp ,
235
- ) ,
271
+ weather ,
272
+ true ,
273
+ ) ) ;
274
+ const nPieces = nCategories . map ( predictType (
275
+ param . gender ,
276
+ weather ,
236
277
true ,
237
278
) ) ;
238
- return _ . reduce ( pieces , _ . extend ) ;
279
+ const fullbody = predictType (
280
+ param . gender ,
281
+ weather ,
282
+ true ,
283
+ ) ( {
284
+ name : 'fullbody' ,
285
+ gender : true ,
286
+ omit : false ,
287
+ } ) ;
288
+
289
+ console . log ( fullbody ) ;
290
+ console . log ( _ . map ( nPieces , x => x [ _ . keys ( x ) [ 0 ] ] ) . filter ( x => x !== '' ) ) ;
291
+
292
+ if ( Math . abs ( _ . mean ( _ . map ( _ . map ( nPieces , x => x [ _ . keys ( x ) [ 0 ] ] ) . filter ( x => x !== '' ) , p => _ . toArray ( svgs_ ) . filter ( s => s . type === p ) [ 0 ] . percentage ) ) - weather . target ) < Math . abs ( _ . toArray ( svgs_ ) . filter ( s => s . type === fullbody . fullbody ) [ 0 ] . percentage - weather . target ) ) {
293
+ return _ . reduce ( _ . flatten ( [ pieces , nPieces , [ { fullbody : '' } ] ] ) , _ . extend ) ;
294
+ }
295
+ return _ . reduce ( _ . flatten ( [ pieces , [ fullbody ] , _ . map ( nCategories , x => ( { [ x . name ] : '' } ) ) ] ) , _ . extend ) ;
239
296
}
0 commit comments