Skip to content

EDTA_v2.3_Compatibility_Troubleshooting and Solutions #636

Description

@haoran-chn

EDTA v2.3 Installation and Runtime Compatibility Issues

1. Conda Installation: "The RMblast engine is not installed in RepeatMasker!"

Error Message

The RMblast engine is not installed in RepeatMasker!

Possible Causes

This error does not necessarily indicate that RMBlast is missing.
Instead, it is usually caused by compatibility issues between EDTA
v2.3
and newer versions of RepeatMasker.

(1) Configuration Changes in RepeatMasker 4.2.4

EDTA v2.3 was originally developed against RepeatMasker 4.1.x.

In RepeatMasker 4.1.x, the search engine configuration was stored in
Perl global variables such as:

$RepeatMaskerConfig::DEFAULT_SEARCH_ENGINE
$RepeatMaskerConfig::RMBLAST_DIR

Beginning with RepeatMasker 4.2.x, the configuration system was
redesigned. These global variables were removed and replaced with
configuration hashes (e.g., %configuration).

As a result, EDTA v2.3 still checks the old variables during dependency
verification and may incorrectly report:

The RMblast engine is not installed in RepeatMasker!

even when RMBlast has been installed and configured correctly.

(2) RepeatMasker 4.2 No Longer Bundles a Repeat Library

Starting from RepeatMasker 4.2, repeat sequence libraries are no
longer distributed with the software.

Instead, users must install the FamDB database (*.h5 files)
separately. An incomplete FamDB installation may also cause RepeatMasker
configuration checks to fail.


2. Compatibility Issues in the EDTA 2.3.0--hdfd78af_0 Apptainer Container

When using the Bioconda Apptainer/Singularity image

EDTA 2.3.0--hdfd78af_0

two compatibility problems were encountered.

Problem 1: Missing Python Dependencies

Error Message

ModuleNotFoundError: No module named 'jsonschema'

Cause

The container includes

  • Python 3.12
  • TIR-Learner 3.0

but does not include the required Python packages

  • ray
  • jsonschema

This is likely due to missing dependencies during container construction
or changes in newer versions of swifter.

Solution

Because the .sif image is read-only, first create a writable sandbox.

Step 1. Create a sandbox

mkdir -p ~/workspace/EDTA_sandbox

apptainer build --sandbox \
    ~/workspace/EDTA_sandbox \
    ~/workspace/EDTA_2.3.0.sif

Step 2. Enter the sandbox

apptainer shell \
    --writable \
    --no-home \
    ~/workspace/EDTA_sandbox

Step 3. Install the missing packages

pip install ray jsonschema

3. TIR-Learner 3.0 Is Incompatible with pandas 2.x

Error Message

File "/usr/local/share/TIR-Learner3.0/bin/check_TIR_TSD.py", line 120

family = x[0]

KeyError: 0

Cause

The container uses

  • Python 3.12
  • pandas 2.2.3

However, TIR-Learner 3.0 still uses the legacy pandas indexing syntax:

family = x[0]

In pandas 2.x, x[0] no longer refers to the first element by position.
Instead, it attempts to access the element whose label is 0, resulting
in

KeyError: 0

Therefore, this is a compatibility issue between TIR-Learner 3.0 and
pandas 2.x.

Solution

Enter the writable sandbox:

apptainer shell \
    --writable \
    ~/workspace/EDTA_sandbox

Patch the source code:

sed -i '120s/x\[0\]/x.iloc[0]/' \
/usr/local/share/TIR-Learner3.0/bin/check_TIR_TSD.py

sed -i '141s/x\[0\]/x.iloc[0]/' \
/usr/local/share/TIR-Learner3.0/bin/check_TIR_TSD.py

After modification, the code becomes

family = x.iloc[0]

which restores compatibility with pandas 2.x.


Final Outcome

After applying the fixes described above, EDTA completed all major
analysis steps successfully, including

  • LTR detection
  • SINE detection
  • LINE detection
  • TIR detection
  • Helitron detection
  • Raw TE library construction
  • Advanced filtering
  • Final TE library generation
  • Whole-genome TE annotation

The final TE library was successfully generated.

along with the complete whole-genome TE annotation results.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions