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

Changing /tmp file path? #830

Closed
dhoconno opened this issue Dec 28, 2021 · 1 comment
Closed

Changing /tmp file path? #830

dhoconno opened this issue Dec 28, 2021 · 1 comment

Comments

@dhoconno
Copy link

Hi there,

I'm trying to run Nextstrain build on a cluster node where I don't have write access to /tmp. I can override this manually by setting TMPDIR=[path_I_can_access] Is there a more elegant way to specify the temp directory directly as part of the nextstrain build command?

Example output:

Creating conda environment workflow/envs/nextstrain.yaml...
Downloading and installing remote packages.
Environment for workflow/envs/nextstrain.yaml created (location: .snakemake/conda/5b992ba27014c417af06ad854a8e9177)
Using shell: /usr/bin/bash
Provided cores: 40
Rules claiming more threads will be scaled down.
Job stats:
job                                  count    min threads    max threads
---------------------------------  -------  -------------  -------------
add_branch_labels                        1              1              1
adjust_metadata_regions                  1              1              1
align                                    2              8              8
all                                      1              1              1
ancestral                                1              1              1
build_align                              1              8              8
calculate_epiweeks                       1              1              1
clade_files                              1              1              1
clades                                   1              1              1
colors                                   1              1              1
combine_input_metadata                   1              1              1
combine_samples                          1              1              1
combine_sequences_for_subsampling        1              1              1
diagnostic                               2              1              1
distances                                1              1              1
emerging_lineages                        1              1              1
export                                   1              1              1
filter                                   2              1              1
finalize                                 1              1              1
include_hcov19_prefix                    1              1              1
index_sequences                          1              1              1
logistic_growth                          1              1              1
mask                                     1              1              1
mutational_fitness                       1              1              1
recency                                  1              1              1
refine                                   1              1              1
rename_emerging_lineages                 1              1              1
sanitize_metadata                        2              1              1
subsample                                1              1              1
tip_frequencies                          1              1              1
traits                                   1              1              1
translate                                1              1              1
tree                                     1              8              8
total                                   37              1              8

Select jobs to execute...
Traceback (most recent call last):
  File "/var/lib/condor/execute/slot1/dir_27595/miniconda/lib/python3.9/site-packages/snakemake/__init__.py", line 699, in snakemake
    success = workflow.execute(
  File "/var/lib/condor/execute/slot1/dir_27595/miniconda/lib/python3.9/site-packages/snakemake/workflow.py", line 1073, in execute
    success = self.scheduler.schedule()
  File "/var/lib/condor/execute/slot1/dir_27595/miniconda/lib/python3.9/site-packages/snakemake/scheduler.py", line 491, in schedule
    run = self.job_selector(needrun)
  File "/var/lib/condor/execute/slot1/dir_27595/miniconda/lib/python3.9/site-packages/snakemake/scheduler.py", line 764, in job_selector_ilp
    self._solve_ilp(prob)
  File "/var/lib/condor/execute/slot1/dir_27595/miniconda/lib/python3.9/site-packages/snakemake/scheduler.py", line 813, in _solve_ilp
    prob.solve(solver)
  File "/var/lib/condor/execute/slot1/dir_27595/miniconda/lib/python3.9/site-packages/pulp/pulp.py", line 1913, in solve
    status = solver.actualSolve(self, **kwargs)
  File "/var/lib/condor/execute/slot1/dir_27595/miniconda/lib/python3.9/site-packages/pulp/apis/coin_api.py", line 137, in actualSolve
    return self.solve_CBC(lp, **kwargs)
  File "/var/lib/condor/execute/slot1/dir_27595/miniconda/lib/python3.9/site-packages/pulp/apis/coin_api.py", line 153, in solve_CBC
    vs, variablesNames, constraintsNames, objectiveName = lp.writeMPS(
  File "/var/lib/condor/execute/slot1/dir_27595/miniconda/lib/python3.9/site-packages/pulp/pulp.py", line 1782, in writeMPS
    return mpslp.writeMPS(self, filename, mpsSense=mpsSense, rename=rename, mip=mip)
  File "/var/lib/condor/execute/slot1/dir_27595/miniconda/lib/python3.9/site-packages/pulp/mps_lp.py", line 245, in writeMPS
    with open(filename, "w") as f:
FileNotFoundError: [Errno 2] No such file or directory: '/tmp/c0cf89aeb77c4e5cb38266e2421134f4-pulp.mps'

Not a high priority, but I thought I'd point it out in case others have the same issue.

Thanks,

dave

@tsibley
Copy link
Member

tsibley commented Jan 27, 2022

Hi @dhoconno. TMPDIR is the only mechanism here for setting a different temp dir. The stack trace shows that the error you're getting arises deep from within Snakemake's scheduler, so any alternate mechanism we could add would have to ultimately set TMPDIR anyway in order to pass the value along. Glad you have a workaround, though!

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