Guest User

Untitled

a guest
Jun 17th, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.26 KB | None | 0 0
  1. import os
  2. import sys
  3. import json
  4.  
  5.  
  6. def fix_session_file(input_file, output_file):
  7.  
  8. # Most issues are due to inconsistencies in terms of which subsets are
  9. # defined where. So this function simply removes all subsets from the
  10. # session file.
  11.  
  12. with open(input_file) as f:
  13. session = json.load(f)
  14.  
  15. # Find all subsets and subset groups in session file
  16.  
  17. subsets = []
  18. for key, value in session.items():
  19. if value['_type'] in ['glue.core.subset.Subset',
  20. 'glue.core.subset_group.GroupedSubset',
  21. 'glue.core.subset_group.SubsetGroup']:
  22. subsets.append(key)
  23. if 'state' in value:
  24. subsets.append(value['state'])
  25.  
  26. for subset in subsets:
  27. session.pop(subset)
  28.  
  29. # Now remove all traces of subsets
  30.  
  31. layer_states = []
  32.  
  33. for key, value in session.items():
  34.  
  35. # Remove subsets from data
  36. if value['_type'] == 'glue.core.data.Data':
  37. value['subsets'] = []
  38.  
  39. # Remove subset groups from data collection
  40. if value['_type'] == 'glue.core.data_collection.DataCollection':
  41. value['groups'] = []
  42. value['subset_group_count'] = 0
  43.  
  44. # Find all layer states that mention subsets
  45. if 'values' in value and 'layer' in value['values']:
  46. if value['values']['layer'] in subsets:
  47. layer_states.append(key)
  48.  
  49. for layer_state in layer_states:
  50. session.pop(layer_state)
  51.  
  52. for key, value in session.items():
  53.  
  54. # Find all callback lists that include these layer states
  55. if 'values' in value:
  56. for layer_state in layer_states:
  57. if layer_state in value['values']:
  58. value['values'].remove(layer_state)
  59.  
  60. if 'layers' in value:
  61. for layer in value['layers'][:]:
  62. if layer['state'] in layer_states:
  63. value['layers'].remove(layer)
  64.  
  65. with open(output_file, 'w') as f:
  66. json.dump(session, f, indent=2)
  67.  
  68.  
  69. if len(sys.argv) != 3:
  70. print("Usage: python remove_subsets_from_glu.py input_file.glu output_file.glu")
  71. sys.exit(1)
  72.  
  73. if os.path.exists(sys.argv[2]):
  74. print("ERROR: file {0} already exists".format(sys.argv[2]))
  75. sys.exit(1)
  76.  
  77. fix_session_file(*sys.argv[1:])
Add Comment
Please, Sign In to add comment