Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 30 additions & 7 deletions scousepy/scouse.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@
import time
import pyspeckit
import random
import asyncio

warnings.simplefilter('ignore', wcs.FITSFixedWarning)

from .stage_3 import *
Expand Down Expand Up @@ -349,22 +351,43 @@ def stage_1(config='', interactive=True):
coverageobject=ScouseCoverage(scouseobject=self,verbose=self.verbose,
interactive=interactive)
if interactive:
coverageobject.show()
if coverageobject.config_file is None or len(coverageobject.config_file) == 0:
raise ValueError("Coverage configuration was set to be 'interactive', but the "
"interactive plot window did not wait for input. If you are running in "
"Jupyter notebooks or Spyder then try running scouse as a script instead. "
"Alternatively set interactive=False and manually update coverage.config.")
coverageobject.show()
if not coverageobject.coverage_is_complete:
# we are in a notebook and need asyncio
async def wait_on_interactive():
while coverageobject.config_file is None:
await asyncio.sleep(1)
self.save_coverage(coverageobject, old_log)
self.run_coverage(coverageobject)
plt.close(coverageobject.fig.number)

loop = asyncio.get_event_loop()
loop.create_task(wait_on_interactive())
else:
self.save_coverage(coverageobject, old_log)
self.run_coverage(coverageobject)

return self

def save_coverage(self, coverageobject, old_log):
from .io import import_from_config
with warnings.catch_warnings():
warnings.simplefilter('ignore')

# write out the config file for the coverage
self.coverage_config_file_path=os.path.join(self.outputdirectory,self.filename,'config_files','coverage.config')
self.coverage_config_file_path=os.path.join(self.outputdirectory,
self.filename, 'config_files', 'coverage.config')
with open(self.coverage_config_file_path, 'w') as file:
for line in coverageobject.config_file:
file.write(line)
# set the parameters
import_from_config(self, self.coverage_config_file_path)
log.setLevel(old_log)

def run_coverage(self, coverageobject):
from .stage_1 import generate_SAAs, plot_coverage, compute_noise, get_x_axis
from .verbose_output import print_to_terminal

# start the time once the coverage has been generated
starttime = time.time()

Expand Down
7 changes: 7 additions & 0 deletions scousepy/scousecoverage.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@ class ScouseCoverage(object):
"""
def __init__(self, scouseobject=None, create_config_file=True, verbose=True, interactive=True):

self.coverage_is_complete = False

# For moments
self.scouseobject=scouseobject
self.verbose=verbose
Expand Down Expand Up @@ -388,6 +390,9 @@ def __init__(self, scouseobject=None, create_config_file=True, verbose=True, int
self.run_coverage(None)
# complete the coverage task
self.coverage_complete(None)
else:
self.fig.canvas.flush_events()
self.fig.canvas.draw_idle()


def show(self):
Expand Down Expand Up @@ -432,6 +437,8 @@ def coverage_complete(self, event):
self.samplesize=0.0
self.config_file=make_config_file(self)

self.coverage_is_complete = True

# close the window
self.close_window()

Expand Down
2 changes: 1 addition & 1 deletion scousepy/stage_1.py
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,7 @@ def generate_SAAs(scouseobject, coverageobject):
if scouseobject.njobs > 1:
# if __name__ == 'scousepy.stage_1':
# print(__name__)
results = parallel_map(create_saa, inputlist, numcores=scouseobject.njobs)
results = list(parallel_map(create_saa, inputlist, numcores=scouseobject.njobs))
else:
if scouseobject.verbose:
results=[create_saa(input) for input in tqdm(inputlist)]
Expand Down