2020class ResultRetriever :
2121 """
2222 Class to retrieve and manage results from Xboinc simulations.
23-
23+
2424 This class provides functionality to retrieve, index, and manage simulation
2525 results from BOINC work units. It can untar result files, create indexes,
2626 and provide various views and statistics about completed jobs.
27-
27+
2828 Attributes
2929 ----------
3030 _user : str
@@ -37,7 +37,7 @@ class ResultRetriever:
3737 Whether using development server
3838 _df : pd.DataFrame
3939 Indexed DataFrame of all available results
40-
40+
4141 Examples
4242 --------
4343 >>> retriever = ResultRetriever('myuser', dev_server=True)
@@ -68,17 +68,17 @@ def _untar_results(self, path: FsPath, silent: bool = False):
6868 def _index_results (self , path : FsPath , silent : bool = False ) -> pd .DataFrame :
6969 """
7070 Index all result files in the given path and create a DataFrame.
71-
71+
7272 Scans for .bin files in subdirectories and extracts metadata from
7373 filenames to create a structured index of available results.
74-
74+
7575 Parameters
7676 ----------
7777 path : FsPath
7878 Directory path to scan for result files
7979 silent : bool, optional
8080 If True, suppress progress bar output (default: False)
81-
81+
8282 Returns
8383 -------
8484 pd.DataFrame
@@ -117,7 +117,7 @@ def _index_results(self, path: FsPath, silent: bool = False) -> pd.DataFrame:
117117 def __init__ (self , user , dev_server = False , silent = False ):
118118 """
119119 Initialize the ResultRetriever for a specific user.
120-
120+
121121 Parameters
122122 ----------
123123 user : str
@@ -127,14 +127,14 @@ def __init__(self, user, dev_server=False, silent=False):
127127 Whether to retrieve from the development server (default: False)
128128 silent : bool, optional
129129 Whether to suppress output messages and progress bars (default: False)
130-
130+
131131 Raises
132132 ------
133133 NotImplementedError
134134 If dev_server=False (regular server not yet operational)
135135 ConnectionError
136136 If EOS is not accessible when domain is 'eos'
137-
137+
138138 Examples
139139 --------
140140 >>> retriever = ResultRetriever('myuser', dev_server=True, silent=True)
@@ -167,7 +167,7 @@ def __init__(self, user, dev_server=False, silent=False):
167167 def get_overview (self ):
168168 """
169169 Get a comprehensive overview of all available results.
170-
170+
171171 Returns
172172 -------
173173 pd.DataFrame
@@ -179,7 +179,7 @@ def get_overview(self):
179179 def get_study_list (self ):
180180 """
181181 Get a list of all unique study names in the available results.
182-
182+
183183 Returns
184184 -------
185185 list of str
@@ -190,28 +190,28 @@ def get_study_list(self):
190190 def get_study_status (self , study_name , verbose = False ):
191191 """
192192 Get detailed status information for a specific study.
193-
193+
194194 Compares local results with server work units to provide comprehensive
195195 status information including completion rates and missing jobs.
196-
196+
197197 Parameters
198198 ----------
199199 study_name : str
200200 Name of the study to check status for
201201 verbose : bool, optional
202202 If True, print detailed job lists (default: False)
203-
203+
204204 Returns
205205 -------
206206 tuple of (list, set)
207207 - list: Job names available in results
208208 - set: Job names missing from results but present on server
209-
209+
210210 Raises
211211 ------
212212 ValueError
213213 If study_name is not found in results or server work units
214-
214+
215215 Warnings
216216 --------
217217 UserWarning
@@ -288,30 +288,30 @@ def get_study_status(self, study_name, verbose=False):
288288 def iterate_results (self , study_name ):
289289 """
290290 Iterate over all results for a specific study.
291-
291+
292292 Yields tuples of job names and their corresponding particle data
293293 for all completed jobs in the specified study.
294-
294+
295295 Parameters
296296 ----------
297297 study_name : str
298298 Name of the study to iterate over
299-
299+
300300 Yields
301301 ------
302302 tuple of (str, xpart.Particles)
303303 Job name and corresponding particles object for each result
304-
304+
305305 Raises
306306 ------
307307 ValueError
308308 If study_name is not found in available results
309-
309+
310310 Warnings
311311 --------
312312 UserWarning
313313 If a binary file is incompatible with current Xboinc version
314-
314+
315315 Examples
316316 --------
317317 >>> retriever = ResultRetriever('myuser', dev_server=True)
@@ -337,20 +337,20 @@ def iterate_results(self, study_name):
337337 def clean (self , study_name ):
338338 """
339339 Clean up results for a specific study.
340-
340+
341341 Removes all binary result files, empty directories, and clears
342342 the study from the internal DataFrame index.
343-
343+
344344 Parameters
345345 ----------
346346 study_name : str
347347 Name of the study to clean up
348-
348+
349349 Raises
350350 ------
351351 ValueError
352352 If study_name is not found in available results
353-
353+
354354 Warning
355355 -------
356356 This operation is irreversible. All result files for the study
@@ -374,10 +374,10 @@ def clean(self, study_name):
374374 def iterate (cls , user , study_name , dev_server = False , silent = False ):
375375 """
376376 Class method to directly iterate over results for a user and study.
377-
377+
378378 Convenient method that creates a ResultRetriever instance and immediately
379379 starts iterating over results without requiring explicit instantiation.
380-
380+
381381 Parameters
382382 ----------
383383 user : str
@@ -388,12 +388,12 @@ def iterate(cls, user, study_name, dev_server=False, silent=False):
388388 Whether to use development server (default: False)
389389 silent : bool, optional
390390 Whether to suppress output messages (default: True)
391-
391+
392392 Yields
393393 ------
394394 tuple of (str, xpart.Particles)
395395 Job name and corresponding particles object for each result
396-
396+
397397 Examples
398398 --------
399399 >>> for job_name, particles in ResultRetriever.iterate('myuser', 'my_study', dev_server=True):
@@ -407,7 +407,7 @@ def iterate(cls, user, study_name, dev_server=False, silent=False):
407407 def overview (cls , user , dev_server = False , silent = False ):
408408 """
409409 Class method to get an overview of results for a specific user.
410-
410+
411411 Parameters
412412 ----------
413413 user : str
@@ -416,12 +416,12 @@ def overview(cls, user, dev_server=False, silent=False):
416416 Whether to use development server (default: False)
417417 silent : bool, optional
418418 Whether to suppress output messages (default: True)
419-
419+
420420 Returns
421421 -------
422422 pd.DataFrame
423423 DataFrame with overview of all available results
424-
424+
425425 Examples
426426 --------
427427 >>> overview_df = ResultRetriever.overview('myuser', dev_server=True)
@@ -434,7 +434,7 @@ def overview(cls, user, dev_server=False, silent=False):
434434 def status (cls , user , study_name , dev_server = False , silent = False , verbose = False ):
435435 """
436436 Class method to get status of results for a specific user and study.
437-
437+
438438 Parameters
439439 ----------
440440 user : str
@@ -447,13 +447,13 @@ def status(cls, user, study_name, dev_server=False, silent=False, verbose=False)
447447 Whether to suppress output messages (default: True)
448448 verbose : bool, optional
449449 If True, print detailed job lists (default: False)
450-
450+
451451 Returns
452452 -------
453453 tuple of (list, set)
454454 - list: Job names available in results
455455 - set: Job names missing from results but present on server
456-
456+
457457 Examples
458458 --------
459459 >>> available, missing = ResultRetriever.status('myuser', 'my_study', dev_server=True)
@@ -466,7 +466,7 @@ def status(cls, user, study_name, dev_server=False, silent=False, verbose=False)
466466 def study_list (cls , user , dev_server = False , silent = False ):
467467 """
468468 Class method to get a list of all studies for a specific user.
469-
469+
470470 Parameters
471471 ----------
472472 user : str
@@ -475,12 +475,12 @@ def study_list(cls, user, dev_server=False, silent=False):
475475 Whether to use development server (default: False)
476476 silent : bool, optional
477477 Whether to suppress output messages (default: True)
478-
478+
479479 Returns
480480 -------
481481 list of str
482482 Sorted list of unique study names found in the results
483-
483+
484484 Examples
485485 --------
486486 >>> studies = ResultRetriever.study_list('myuser', dev_server=True)
0 commit comments