Eachan Johnson commited on
Commit
43cbc74
·
1 Parent(s): 740236e

Slim down repo

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. app.py +42 -19
  2. cache/cache_csv_default-00953711766d478a_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock +0 -0
  3. cache/cache_csv_default-03c2d6a24096cadb_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock +0 -0
  4. cache/cache_csv_default-06ebd4abec88f824_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock +0 -0
  5. cache/cache_csv_default-07681b79f1b14d09_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock +0 -0
  6. cache/cache_csv_default-08596bdace45a9e0_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock +0 -0
  7. cache/cache_csv_default-0ccf5404d587e265_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock +0 -0
  8. cache/cache_csv_default-0e1961df19e7f428_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock +0 -0
  9. cache/cache_csv_default-1152648bff9b0619_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock +0 -0
  10. cache/cache_csv_default-11d1d03ac37ee54d_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock +0 -0
  11. cache/cache_csv_default-13e8ff2cbdbb1601_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock +0 -0
  12. cache/cache_csv_default-1b04ae4fda4a32e3_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock +0 -0
  13. cache/cache_csv_default-1bf129cb42f88409_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock +0 -0
  14. cache/cache_csv_default-1d3aaac1973def40_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock +0 -0
  15. cache/cache_csv_default-1d8109d793352a35_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock +0 -0
  16. cache/cache_csv_default-1ecc7a7549fcfdea_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock +0 -0
  17. cache/cache_csv_default-1eeddf0790526c7b_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock +0 -0
  18. cache/cache_csv_default-215074de73e76f09_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock +0 -0
  19. cache/cache_csv_default-242181ae292241ee_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock +0 -0
  20. cache/cache_csv_default-263b017a70fce543_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock +0 -0
  21. cache/cache_csv_default-2a8ca29769ad0476_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock +0 -0
  22. cache/cache_csv_default-2c97b90189817bf7_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock +0 -0
  23. cache/cache_csv_default-3030c166054fac30_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock +0 -0
  24. cache/cache_csv_default-365a0c686393a911_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock +0 -0
  25. cache/cache_csv_default-3671ae337359ab4f_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock +0 -0
  26. cache/cache_csv_default-371d32405b5d7577_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock +0 -0
  27. cache/cache_csv_default-3b5f5887e0c60283_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock +0 -0
  28. cache/cache_csv_default-422903a15970f1e3_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock +0 -0
  29. cache/cache_csv_default-449dcf17eba1dc10_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock +0 -0
  30. cache/cache_csv_default-4caa284a4ac72c2a_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock +0 -0
  31. cache/cache_csv_default-4d6078d90c039063_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock +0 -0
  32. cache/cache_csv_default-4e957d94d04326a9_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock +0 -0
  33. cache/cache_csv_default-4f6c27099bb53527_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock +0 -0
  34. cache/cache_csv_default-502853d933683bdb_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock +0 -0
  35. cache/cache_csv_default-5092df56bc4a09a8_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock +0 -0
  36. cache/cache_csv_default-53b2b16e1030c75e_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock +0 -0
  37. cache/cache_csv_default-53eec1958d34ed11_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock +0 -0
  38. cache/cache_csv_default-5a935366194dc6e5_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock +0 -0
  39. cache/cache_csv_default-5caa340a2a1289a9_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock +0 -0
  40. cache/cache_csv_default-5f1d1406a3bfcf0b_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock +0 -0
  41. cache/cache_csv_default-615c9079844d4d62_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock +0 -0
  42. cache/cache_csv_default-6439ec426976ccb8_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock +0 -0
  43. cache/cache_csv_default-6555fb0c7e6de5c2_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock +0 -0
  44. cache/cache_csv_default-67de10cf26a832b6_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock +0 -0
  45. cache/cache_csv_default-6a6b713d0d64d590_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock +0 -0
  46. cache/cache_csv_default-6cbfc46a17993cd2_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock +0 -0
  47. cache/cache_csv_default-713ad308bf84b8e6_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock +0 -0
  48. cache/cache_csv_default-73e50ee513b905fa_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock +0 -0
  49. cache/cache_csv_default-747fafe34f78e023_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock +0 -0
  50. cache/cache_csv_default-7615c4b4c8d4b6ea_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock +0 -0
app.py CHANGED
@@ -22,25 +22,29 @@ from schemist.converting import (
22
  from schemist.tables import converter
23
  import torch
24
 
 
25
  HEADER_FILE = os.path.join("sources", "header.md")
26
  MODEL_REPOS = {
27
  "Klebsiella pneumoniae": "hf://scbirlab/spark-dv-fp-2503-kpn",
28
  }
29
 
30
  MODELBOXES = {
31
- key: AutoModelBox.from_pretrained(val, cache_dir="./cache")
32
  for key, val in MODEL_REPOS.items()
33
  }
34
 
35
  EXTRA_METRICS = {
36
- "log10(variance)": lambda modelbox, candidates: modelbox.prediction_variance(candidates=candidates).map(lambda x: {modelbox._variance_key: torch.log10(x[modelbox._variance_key])}),
37
  "Tanimoto nearest neighbor to training data": lambda modelbox, candidates: modelbox.tanimoto_nn(candidates=candidates),
38
- "Doubtscore": lambda modelbox, candidates: modelbox.doubtscore(candidates=candidates).map(lambda x: {"doubtscore": torch.log10(x["doubtscore"])}),
39
- "Information sensitivity (approx.)": lambda modelbox, candidates: modelbox.information_sensitivity(candidates=candidates, optimality_approximation=True, approximator="squared_jacobian").map(lambda x: {"information sensitivity": torch.log10(x["information sensitivity"])}),
40
  }
41
 
42
- def load_input_data(file: TextIOWrapper) -> pd.DataFrame:
43
- df = read_table(file.name)
 
 
 
44
  string_cols = list(df.select_dtypes(exclude=[np.number]))
45
  df = gr.Dataframe(value=df, visible=True)
46
  return df, gr.Dropdown(choices=string_cols, interactive=True, value=string_cols[0])
@@ -119,7 +123,7 @@ def predict_one(
119
  features=this_features,
120
  labels=this_labels,
121
  aggregator="mean",
122
- cache="./cache"
123
  ).with_format("numpy")["__prediction__"].flatten()
124
  print(prediction)
125
  this_col = f"{species}: predicted MIC (µM)"
@@ -160,7 +164,11 @@ def convert_file(
160
  input_representation: str = 'smiles',
161
  output_representation: Union[str, Iterable[str]] = 'smiles'
162
  ):
163
- message = f"Converting from {input_representation} to {output_representation}..."
 
 
 
 
164
  print_err(message)
165
  gr.Info(message, duration=3)
166
  errors, df = converter(
@@ -204,7 +212,7 @@ def predict_file(
204
  if prediction_df.shape[0] > 1000:
205
  message = f"Truncating input to 1000 rows"
206
  print_err(message)
207
- gr.Info(message, duration=3)
208
  prediction_df = prediction_df.iloc[:1000]
209
  species_to_predict = cast(predict, to=list)
210
  prediction_cols = []
@@ -228,14 +236,20 @@ def predict_file(
228
  features=this_features,
229
  labels=this_labels,
230
  aggregator="mean",
231
- cache="./cache"
232
  ).with_format("numpy")["__prediction__"].flatten()
233
  print(prediction)
234
  this_col = f"{species}: predicted MIC (µM)"
235
  prediction_df[this_col] = np.power(10., -prediction) * 1e6
236
  prediction_cols.append(this_col)
 
 
 
237
 
238
  for extra_metric in extra_metrics:
 
 
 
239
  # this_modelbox._input_training_data = this_modelbox._input_training_data.remove_columns([this_modelbox._in_key])
240
  this_col = f"{species}: {extra_metric}"
241
  prediction_cols.append(this_col)
@@ -251,7 +265,7 @@ def predict_file(
251
  )
252
  prediction_df[this_col] = this_extra[this_extra.column_names[-1]]
253
 
254
- return prediction_df[['id'] + prediction_cols + ['smiles', 'inchikey', "mwt", "clogp"]]
255
 
256
  def draw_one(
257
  strings: Union[Iterable[str], str],
@@ -308,7 +322,7 @@ with gr.Blocks() as demo:
308
  interactive=True,
309
  )
310
  extra_metric = gr.CheckboxGroup(
311
- label="Extra metrics (can increase calculation time!)",
312
  choices=list(EXTRA_METRICS),
313
  value=list(EXTRA_METRICS)[:2],
314
  interactive=True,
@@ -392,7 +406,7 @@ with gr.Blocks() as demo:
392
  outputs=download_single
393
  )
394
 
395
- with gr.Tab("Predict on structures from a file (max. 1000 rows)"):
396
  input_file = gr.File(
397
  label="Upload a table of chemical compounds here",
398
  file_types=[".xlsx", ".csv", ".tsv", ".txt"],
@@ -409,21 +423,25 @@ with gr.Blocks() as demo:
409
  value="smiles",
410
  interactive=True,
411
  )
412
- output_species = gr.CheckboxGroup(
413
  label="Species for prediction",
414
  choices=list(MODEL_REPOS),
415
- value=list(MODEL_REPOS)[:1],
416
  interactive=True,
417
  )
418
  extra_metric_file = gr.CheckboxGroup(
419
- label="Extra metrics (can increase calculation time!)",
420
  choices=list(EXTRA_METRICS),
421
  value=list(EXTRA_METRICS)[:2],
422
  interactive=True,
423
  )
424
- examples = gr.Examples(
425
  examples=[
426
- ["example-data/stokes2020-eco-1000.csv", "SMILES", "Klebsiella pneumoniae", list(EXTRA_METRICS)[:2]],
 
 
 
 
427
  ],
428
  example_labels=[
429
  "Stokes J. et al., Cell, 2020"
@@ -436,7 +454,7 @@ with gr.Blocks() as demo:
436
  )
437
 
438
  download = gr.DownloadButton(
439
- label="Download converted data",
440
  visible=False,
441
  )
442
  input_data = gr.Dataframe(
@@ -446,6 +464,11 @@ with gr.Blocks() as demo:
446
  interactive=False,
447
  )
448
 
 
 
 
 
 
449
  input_file.upload(
450
  load_input_data,
451
  inputs=[input_file],
 
22
  from schemist.tables import converter
23
  import torch
24
 
25
+ CACHE = "./cache"
26
  HEADER_FILE = os.path.join("sources", "header.md")
27
  MODEL_REPOS = {
28
  "Klebsiella pneumoniae": "hf://scbirlab/spark-dv-fp-2503-kpn",
29
  }
30
 
31
  MODELBOXES = {
32
+ key: AutoModelBox.from_pretrained(val, cache_dir=CACHE)
33
  for key, val in MODEL_REPOS.items()
34
  }
35
 
36
  EXTRA_METRICS = {
37
+ "log10(variance)": lambda modelbox, candidates: modelbox.prediction_variance(candidates=candidates, cache=CACHE).map(lambda x: {modelbox._variance_key: torch.log10(x[modelbox._variance_key])}),
38
  "Tanimoto nearest neighbor to training data": lambda modelbox, candidates: modelbox.tanimoto_nn(candidates=candidates),
39
+ "Doubtscore": lambda modelbox, candidates: modelbox.doubtscore(candidates=candidates, cache=CACHE).map(lambda x: {"doubtscore": torch.log10(x["doubtscore"])}),
40
+ "Information sensitivity (approx.)": lambda modelbox, candidates: modelbox.information_sensitivity(candidates=candidates, optimality_approximation=True, approximator="squared_jacobian", cache=CACHE).map(lambda x: {"information sensitivity": torch.log10(x["information sensitivity"])}),
41
  }
42
 
43
+ def load_input_data(file: Union[TextIOWrapper, str]) -> pd.DataFrame:
44
+ file = file if isinstance(file, str) else file.name
45
+ print_err(f"Loading {file}")
46
+ df = read_table(file)
47
+ print_err(df.head())
48
  string_cols = list(df.select_dtypes(exclude=[np.number]))
49
  df = gr.Dataframe(value=df, visible=True)
50
  return df, gr.Dropdown(choices=string_cols, interactive=True, value=string_cols[0])
 
123
  features=this_features,
124
  labels=this_labels,
125
  aggregator="mean",
126
+ cache=CACHE,
127
  ).with_format("numpy")["__prediction__"].flatten()
128
  print(prediction)
129
  this_col = f"{species}: predicted MIC (µM)"
 
164
  input_representation: str = 'smiles',
165
  output_representation: Union[str, Iterable[str]] = 'smiles'
166
  ):
167
+ output_representation = cast(output_representation, to=list)
168
+ for rep in output_representation:
169
+ message = f"Converting from {input_representation} to {rep}..."
170
+ gr.Info(message, duration=10)
171
+ print_err(df.head())
172
  print_err(message)
173
  gr.Info(message, duration=3)
174
  errors, df = converter(
 
212
  if prediction_df.shape[0] > 1000:
213
  message = f"Truncating input to 1000 rows"
214
  print_err(message)
215
+ gr.Info(message, duration=15)
216
  prediction_df = prediction_df.iloc[:1000]
217
  species_to_predict = cast(predict, to=list)
218
  prediction_cols = []
 
236
  features=this_features,
237
  labels=this_labels,
238
  aggregator="mean",
239
+ cache=CACHE,
240
  ).with_format("numpy")["__prediction__"].flatten()
241
  print(prediction)
242
  this_col = f"{species}: predicted MIC (µM)"
243
  prediction_df[this_col] = np.power(10., -prediction) * 1e6
244
  prediction_cols.append(this_col)
245
+ this_col = f"{species}: predicted MIC (µg / mL)"
246
+ prediction_df[this_col] = np.power(10., -prediction) * 1e3 * prediction_df["mwt"]
247
+ prediction_cols.append(this_col)
248
 
249
  for extra_metric in extra_metrics:
250
+ message = f"Calculating {extra_metric} for species: {species}"
251
+ print_err(message)
252
+ gr.Info(message, duration=10)
253
  # this_modelbox._input_training_data = this_modelbox._input_training_data.remove_columns([this_modelbox._in_key])
254
  this_col = f"{species}: {extra_metric}"
255
  prediction_cols.append(this_col)
 
265
  )
266
  prediction_df[this_col] = this_extra[this_extra.column_names[-1]]
267
 
268
+ return prediction_df[['id'] + [column] + prediction_cols + ['smiles', 'inchikey', "mwt", "clogp"]]
269
 
270
  def draw_one(
271
  strings: Union[Iterable[str], str],
 
322
  interactive=True,
323
  )
324
  extra_metric = gr.CheckboxGroup(
325
+ label="Extra metrics (Information Sensitivity can increase calculation time!)",
326
  choices=list(EXTRA_METRICS),
327
  value=list(EXTRA_METRICS)[:2],
328
  interactive=True,
 
406
  outputs=download_single
407
  )
408
 
409
+ with gr.Tab("Predict on structures from a file (max. 1000 rows, single species)"):
410
  input_file = gr.File(
411
  label="Upload a table of chemical compounds here",
412
  file_types=[".xlsx", ".csv", ".tsv", ".txt"],
 
423
  value="smiles",
424
  interactive=True,
425
  )
426
+ output_species = gr.Radio(
427
  label="Species for prediction",
428
  choices=list(MODEL_REPOS),
429
+ value=list(MODEL_REPOS)[0],
430
  interactive=True,
431
  )
432
  extra_metric_file = gr.CheckboxGroup(
433
+ label="Extra metrics (Information Sensitivity can increase calculation time)",
434
  choices=list(EXTRA_METRICS),
435
  value=list(EXTRA_METRICS)[:2],
436
  interactive=True,
437
  )
438
+ file_examples = gr.Examples(
439
  examples=[
440
+ [
441
+ "example-data/stokes2020-eco-1000.csv",
442
+ "SMILES",
443
+ "Klebsiella pneumoniae",
444
+ list(EXTRA_METRICS)[:2]],
445
  ],
446
  example_labels=[
447
  "Stokes J. et al., Cell, 2020"
 
454
  )
455
 
456
  download = gr.DownloadButton(
457
+ label="Download predictions",
458
  visible=False,
459
  )
460
  input_data = gr.Dataframe(
 
464
  interactive=False,
465
  )
466
 
467
+ file_examples.load_input_event.then(
468
+ load_input_data,
469
+ inputs=[input_file],
470
+ outputs=[input_data, input_column],
471
+ )
472
  input_file.upload(
473
  load_input_data,
474
  inputs=[input_file],
cache/cache_csv_default-00953711766d478a_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock DELETED
File without changes
cache/cache_csv_default-03c2d6a24096cadb_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock DELETED
File without changes
cache/cache_csv_default-06ebd4abec88f824_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock DELETED
File without changes
cache/cache_csv_default-07681b79f1b14d09_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock DELETED
File without changes
cache/cache_csv_default-08596bdace45a9e0_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock DELETED
File without changes
cache/cache_csv_default-0ccf5404d587e265_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock DELETED
File without changes
cache/cache_csv_default-0e1961df19e7f428_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock DELETED
File without changes
cache/cache_csv_default-1152648bff9b0619_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock DELETED
File without changes
cache/cache_csv_default-11d1d03ac37ee54d_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock DELETED
File without changes
cache/cache_csv_default-13e8ff2cbdbb1601_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock DELETED
File without changes
cache/cache_csv_default-1b04ae4fda4a32e3_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock DELETED
File without changes
cache/cache_csv_default-1bf129cb42f88409_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock DELETED
File without changes
cache/cache_csv_default-1d3aaac1973def40_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock DELETED
File without changes
cache/cache_csv_default-1d8109d793352a35_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock DELETED
File without changes
cache/cache_csv_default-1ecc7a7549fcfdea_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock DELETED
File without changes
cache/cache_csv_default-1eeddf0790526c7b_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock DELETED
File without changes
cache/cache_csv_default-215074de73e76f09_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock DELETED
File without changes
cache/cache_csv_default-242181ae292241ee_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock DELETED
File without changes
cache/cache_csv_default-263b017a70fce543_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock DELETED
File without changes
cache/cache_csv_default-2a8ca29769ad0476_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock DELETED
File without changes
cache/cache_csv_default-2c97b90189817bf7_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock DELETED
File without changes
cache/cache_csv_default-3030c166054fac30_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock DELETED
File without changes
cache/cache_csv_default-365a0c686393a911_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock DELETED
File without changes
cache/cache_csv_default-3671ae337359ab4f_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock DELETED
File without changes
cache/cache_csv_default-371d32405b5d7577_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock DELETED
File without changes
cache/cache_csv_default-3b5f5887e0c60283_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock DELETED
File without changes
cache/cache_csv_default-422903a15970f1e3_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock DELETED
File without changes
cache/cache_csv_default-449dcf17eba1dc10_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock DELETED
File without changes
cache/cache_csv_default-4caa284a4ac72c2a_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock DELETED
File without changes
cache/cache_csv_default-4d6078d90c039063_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock DELETED
File without changes
cache/cache_csv_default-4e957d94d04326a9_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock DELETED
File without changes
cache/cache_csv_default-4f6c27099bb53527_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock DELETED
File without changes
cache/cache_csv_default-502853d933683bdb_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock DELETED
File without changes
cache/cache_csv_default-5092df56bc4a09a8_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock DELETED
File without changes
cache/cache_csv_default-53b2b16e1030c75e_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock DELETED
File without changes
cache/cache_csv_default-53eec1958d34ed11_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock DELETED
File without changes
cache/cache_csv_default-5a935366194dc6e5_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock DELETED
File without changes
cache/cache_csv_default-5caa340a2a1289a9_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock DELETED
File without changes
cache/cache_csv_default-5f1d1406a3bfcf0b_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock DELETED
File without changes
cache/cache_csv_default-615c9079844d4d62_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock DELETED
File without changes
cache/cache_csv_default-6439ec426976ccb8_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock DELETED
File without changes
cache/cache_csv_default-6555fb0c7e6de5c2_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock DELETED
File without changes
cache/cache_csv_default-67de10cf26a832b6_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock DELETED
File without changes
cache/cache_csv_default-6a6b713d0d64d590_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock DELETED
File without changes
cache/cache_csv_default-6cbfc46a17993cd2_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock DELETED
File without changes
cache/cache_csv_default-713ad308bf84b8e6_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock DELETED
File without changes
cache/cache_csv_default-73e50ee513b905fa_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock DELETED
File without changes
cache/cache_csv_default-747fafe34f78e023_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock DELETED
File without changes
cache/cache_csv_default-7615c4b4c8d4b6ea_0.0.0_a43390c7ecea6519ff2ce9d10005c8750601c9e456069be5efbd2747df45f420.lock DELETED
File without changes