Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Can't access Image due to 'No such file or directory' for drpall #739

Open
affanadly opened this issue Aug 29, 2021 · 1 comment
Open

Can't access Image due to 'No such file or directory' for drpall #739

affanadly opened this issue Aug 29, 2021 · 1 comment

Comments

@affanadly
Copy link

affanadly commented Aug 29, 2021

Describe the bug
I can't access any Images due to 'No such file or directory error' for the drpall-v2_4_3.fits, even when the file is successfully downloaded and verified to be available.

To Reproduce
Simply run

from marvin.tools.image import Image
im = Image('8567-3704')

Expected behavior
Gives out an error
[Errno 2] No such file or directory: '/root/sas/dr16/manga/spectro/redux/v2_4_3/drpall-v2_4_3.fits'
Full error:

[WARNING]: drpall file not found. Downloading it. (MarvinUserWarning)
Progress:   0%|          | 0/1 [00:00<?, ?files/s, n_files=1, n_streams=1]
[WARNING]: drpall file not found. Downloading it. (MarvinUserWarning)
SDSS_ACCESS> Done!
Progress:   0%|          | 0/1 [00:00<?, ?files/s, n_files=1, n_streams=1]SDSS_ACCESS> Done!

---------------------------------------------------------------------------
FileNotFoundError                         Traceback (most recent call last)
<ipython-input-9-fc6de919d3c6> in <module>()
----> 1 im = Image('8567-3704')

10 frames
/usr/local/lib/python3.7/dist-packages/marvin/tools/image.py in __init__(self, input, filename, mangaid, plateifu, mode, data, release, download)
     75             raise MarvinError('Images cannot currently be accessed from the db')
     76         elif self.data_origin == 'api':
---> 77             self._load_image_from_api()
     78 
     79         # initialize attributes

/usr/local/lib/python3.7/dist-packages/marvin/tools/image.py in _load_image_from_api(self)
    170         ''' Load an image from a remote location '''
    171 
--> 172         filepath = self._getFullPath()
    173         response = requests.get(self.url)
    174         if not response.ok:

/usr/local/lib/python3.7/dist-packages/marvin/tools/image.py in _getFullPath(self)
    132 
    133         plate, ifu = self.plateifu.split('-')
--> 134         dir3d = self._get_image_dir()
    135 
    136         name = 'mangaimage'

/usr/local/lib/python3.7/dist-packages/marvin/tools/image.py in _get_image_dir(self)
    121 
    122         # get the appropriate image directory
--> 123         is_mastar = target_is_mastar(self.plateifu, drpver=self._drpver)
    124         image_dir = 'mastar' if is_mastar else 'stack'
    125         return image_dir

/usr/local/lib/python3.7/dist-packages/marvin/utils/general/general.py in target_is_mastar(plateifu, drpver, drpall)
   1725     '''
   1726 
-> 1727     row = get_drpall_row(plateifu, drpver=drpver, drpall=drpall)
   1728     return row['srvymode'] == 'APOGEE lead'
   1729 

/usr/local/lib/python3.7/dist-packages/marvin/utils/general/general.py in get_drpall_row(plateifu, drpver, drpall)
    986 
    987     # get the drpall table
--> 988     drpall_table = get_drpall_table(drpver=drpver, drpall=drpall, hdu='MANGA')
    989     in_table = plateifu in drpall_table['plateifu']
    990     # check the mastar extension

/usr/local/lib/python3.7/dist-packages/marvin/utils/general/general.py in get_drpall_table(drpver, drpall, hdu)
   1768     if hdu not in drpTable[drpver]:
   1769         drpall = drpall if drpall else get_drpall_path(drpver=drpver)
-> 1770         data = {hduext: table.Table.read(drpall, hdu=hduext)}
   1771         drpTable[drpver].update(data)
   1772 

/usr/local/lib/python3.7/dist-packages/astropy/table/connect.py in __call__(self, *args, **kwargs)
     59         descriptions = kwargs.pop('descriptions', None)
     60 
---> 61         out = registry.read(cls, *args, **kwargs)
     62 
     63         # For some readers (e.g., ascii.ecsv), the returned `out` class is not

/usr/local/lib/python3.7/dist-packages/astropy/io/registry.py in read(cls, format, cache, *args, **kwargs)
    510                     try:
    511                         ctx = get_readable_fileobj(args[0], encoding='binary', cache=cache)
--> 512                         fileobj = ctx.__enter__()
    513                     except OSError:
    514                         raise

/usr/lib/python3.7/contextlib.py in __enter__(self)
    110         del self.args, self.kwds, self.func
    111         try:
--> 112             return next(self.gen)
    113         except StopIteration:
    114             raise RuntimeError("generator didn't yield") from None

/usr/local/lib/python3.7/dist-packages/astropy/utils/data.py in get_readable_fileobj(name_or_obj, encoding, cache, show_progress, remote_timeout, sources, http_headers)
    260                 timeout=remote_timeout, sources=sources,
    261                 http_headers=http_headers)
--> 262         fileobj = io.FileIO(name_or_obj, 'r')
    263         if is_url and not cache:
    264             delete_fds.append(fileobj)

FileNotFoundError: [Errno 2] No such file or directory: '/root/sas/dr16/manga/spectro/redux/v2_4_3/drpall-v2_4_3.fits'

Screenshots
image

Desktop:

  • OS: Windows but running in Google Colab, faced the same issue when run on Ubuntu.
  • Browser: Chrome
@havok2063
Copy link
Collaborator

@affanadly I'm not sure but looks like it might be a permissions issue(?). It looks like you're trying to write the SAS contents into /root. If that's a root level system directory, your user running marvin might not have permissions to write files/folders into that place. Can you check your permissions on /root? Or can you try setting the SAS_BASE_DIR environment variable to a new directory inside your user's home directory, or a folder where you have correct permissions. What version of Marvin are you using?

It also looks like you're using a system installation of the Python. These have been known to cause issues. We recommend using a separate Python installation, e.g. from Anaconda or Miniconda.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants