Source code for bsv.fetch_connectivity_summary

import os
import json
import requests


[docs] def fetch_connectivity_summary(experiment_id, save_file_path): """Download injection summary JSON for a single experiment. Parameters ---------- experiment_id : int Allen experiment ID. save_file_path : str Local directory to save ``injectionSummary_all.json``. Returns ------- bool True on success, False on failure. """ url = f'http://connectivity.brain-map.org/api/v2/data/ProjectionStructureUnionize/query.json?criteria=[section_data_set_id$eq{experiment_id}]&num_rows=all' try: resp = requests.get(url) resp.raise_for_status() except Exception as e: print(f'Warning: Failed to get data for ID {experiment_id}: {e}') return False try: data = resp.json() except Exception as e: print(f'Warning: Failed to parse JSON for ID {experiment_id}: {e}') return False if not data.get('success'): print(f'Warning: API returned failure for experiment ID {experiment_id}') return False # Filter for injection data only injection_info = [entry for entry in data.get('msg', []) if entry.get('is_injection')] if not injection_info: print(f'Warning: No injection data found for experiment ID {experiment_id}') return False # Add experiment ID to each entry for entry in injection_info: entry['experimentID'] = experiment_id os.makedirs(save_file_path, exist_ok=True) with open(os.path.join(save_file_path, 'injectionSummary_all.json'), 'w') as f: json.dump(injection_info, f) return True
def load_injection_summary(save_file_path): """Load a previously saved injection summary from disk. Parameters ---------- save_file_path : str Directory containing ``injectionSummary_all.json``. Returns ------- list of dict Injection metadata entries. """ with open(os.path.join(save_file_path, 'injectionSummary_all.json'), 'r') as f: return json.load(f)