Test failing at test_place_seqs.py

Hello,

I’m trying to install PICRUSt2 v. 2.5.2 via source as detailed here (I couldn’t get the conda install to work) and the test is failing at the test_place_seqs.py step. I’m not sure what to do about this failure or how to fix it. Any advice would be greatly appreciated.

Below is the output of the pytest command.

Thanks,
Samantha

pytest
=================================================== test session starts ====================================================
platform linux -- Python 3.8.17, pytest-7.3.2, pluggy-1.0.0
rootdir: /home/saatkinson/picrust2-2.5.2
plugins: cov-4.1.0
collected 61 items

tests/test_hsp.py ........                                                                                           [ 13%]
tests/test_metagenome_pipeline.py ...............                                                                    [ 37%]
tests/test_pathway_pipeline.py ....                                                                                  [ 44%]
tests/test_place_seqs.py ........F                                                                                   [ 59%]
tests/test_util.py ....................                                                                              [ 91%]
tests/test_workflow.py .....                                                                                         [100%]

========================================================= FAILURES =========================================================
____________________________________ place_seqs_tests.test_run_place_seqs_pipeline_sepp ____________________________________

self = <tests.test_place_seqs.place_seqs_tests testMethod=test_run_place_seqs_pipeline_sepp>

    def test_run_place_seqs_pipeline_sepp(self):
        '''Basic test of full place seqs pipeline with SEPP. Just run to
           see if any errors occur'''
        with TemporaryDirectory() as temp_dir:
            tmp_tree = path.join(temp_dir, "out.tre")

>           place_seqs_pipeline(study_fasta=test_study_seqs,
                                ref_dir=default_ref_dir,
                                placement_tool="sepp",
                                out_tree=tmp_tree,
                                threads=1,
                                out_dir=temp_dir,
                                min_align=0.8,
                                chunk_size=5000,
                                verbose=True)

tests/test_place_seqs.py:160:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
picrust2/place_seqs.py:95: in place_seqs_pipeline
    run_sepp(tree=tree,
picrust2/place_seqs.py:458: in run_sepp
    system_call_check(sepp_command, print_command=print_cmds,
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

cmd = ['run_sepp.py', '--tree', '/home/saatkinson/picrust2-2.5.2/picrust2/default_files/prokaryotic/pro_ref/pro_ref.tre', '--raxml', '/home/saatkinson/picrust2-2.5.2/picrust2/default_files/prokaryotic/pro_ref/pro_ref.raxml_info', '--cpu', ...]
print_command = True, print_stdout = True, print_stderr = True

    def system_call_check(cmd, print_command=False, print_stdout=False,
                          print_stderr=False):
        '''Run system command and throw and error if return is not 0. Input command
        can be a list containing the command or a string.'''

        # Convert command to list if input as string.
        if type(cmd) is str:
            cmd = cmd.split()

        # Print command out if option set.
        if print_command:
            print(" ".join(cmd), file=sys.stderr)

        stdout_log = ""
        stderr_log = ""

        # Write stdout and stderr of command to temporary files.
        # Only output the content of these files if the job fails.
        with TemporaryDirectory() as temp_dir:

            stdout_file = join(temp_dir, "stdout.txt")
            stderr_file = join(temp_dir, "stderr.txt")

            with open(stdout_file, "wb") as stdout_fh, \
                 open(stderr_file, "wb") as stderr_fh:

                return_value = call(cmd, stdout=stdout_fh,
                                    stderr=stderr_fh)

            # Capture stdout and stderr.
            with open(stdout_file, 'r') as stdout_fh:
                stdout_log = stdout_fh.read()

            with open(stderr_file, 'r') as stderr_fh:
                stderr_log = stderr_fh.read()

            # Exit with error if command did not finish successfully.
            if return_value != 0:
                print("\nError running this command:\n" + " ".join(cmd),
                      file=sys.stderr)

                if stdout_log:
                    print("\nStandard output of the above failed command:\n" +
                          stdout_log, file=sys.stderr)

                if stderr_log:
                    print("\nStandard error of the above failed command:\n" +
                          stderr_log, file=sys.stderr)

>               sys.exit(1)
E               SystemExit: 1

picrust2/util.py:258: SystemExit
--------------------------------------------------- Captured stdout call ---------------------------------------------------

--------------------------------------------------- Captured stderr call ---------------------------------------------------
hmmalign --trim --dna --mapali /home/saatkinson/picrust2-2.5.2/picrust2/default_files/prokaryotic/pro_ref/pro_ref.fna --informat FASTA -o /tmp/tmpfell7mxr/query_align.stockholm /home/saatkinson/picrust2-2.5.2/picrust2/default_files/prokaryotic/pro_ref/pro_ref.hmm /home/saatkinson/picrust2-2.5.2/tests/test_data/place_seqs/study_seqs_test.fasta

All raw input sequences were the same length (400)

run_sepp.py --tree /home/saatkinson/picrust2-2.5.2/picrust2/default_files/prokaryotic/pro_ref/pro_ref.tre --raxml /home/saatkinson/picrust2-2.5.2/picrust2/default_files/prokaryotic/pro_ref/pro_ref.raxml_info --cpu 1 --molecule dna --outdir /tmp/tmpfell7mxr/sepp_out -seed 297834 --alignment /home/saatkinson/picrust2-2.5.2/picrust2/default_files/prokaryotic/pro_ref/pro_ref.fna --fragment /tmp/tmpfell7mxr/study_seqs_filtered.fasta

Error running this command:
run_sepp.py --tree /home/saatkinson/picrust2-2.5.2/picrust2/default_files/prokaryotic/pro_ref/pro_ref.tre --raxml /home/saatkinson/picrust2-2.5.2/picrust2/default_files/prokaryotic/pro_ref/pro_ref.raxml_info --cpu 1 --molecule dna --outdir /tmp/tmpfell7mxr/sepp_out -seed 297834 --alignment /home/saatkinson/picrust2-2.5.2/picrust2/default_files/prokaryotic/pro_ref/pro_ref.fna --fragment /tmp/tmpfell7mxr/study_seqs_filtered.fasta

Standard error of the above failed command:
Traceback (most recent call last):
  File "/home/saatkinson/anaconda3/envs/picrust2/bin/run_sepp.py", line 3, in <module>
    from sepp.exhaustive import ExhaustiveAlgorithm
  File "/home/saatkinson/anaconda3/envs/picrust2/lib/python3.8/site-packages/sepp/exhaustive.py", line 6, in <module>
    from sepp.algorithm import AbstractAlgorithm
  File "/home/saatkinson/anaconda3/envs/picrust2/lib/python3.8/site-packages/sepp/algorithm.py", line 11, in <module>
    from sepp.tree import PhylogeneticTree
  File "/home/saatkinson/anaconda3/envs/picrust2/lib/python3.8/site-packages/sepp/tree.py", line 25, in <module>
    from dendropy.datamodel.treemodel import _convert_node_to_root_polytomy as \
ImportError: cannot import name '_convert_node_to_root_polytomy' from 'dendropy.datamodel.treemodel' (/home/saatkinson/anaconda3/envs/picrust2/lib/python3.8/site-packages/dendropy/datamodel/treemodel/__init__.py)

================================================= short test summary info ==================================================
FAILED tests/test_place_seqs.py::place_seqs_tests::test_run_place_seqs_pipeline_sepp - SystemExit: 1
========================================= 1 failed, 60 passed in 65.56s (0:01:05) ==========================================