Skip to content

GTF comparison script #11

GTF comparison script

GTF comparison script #11

Workflow file for this run

name: GTF Comparison Tests
on:
pull_request:
branches: [ "develop", "master" ]
paths:
- '3rd-party-tools/build-indices/**'
jobs:
test:
runs-on: ubuntu-latest
defaults:
run:
working-directory: 3rd-party-tools/build-indices
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.x'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install pandas
- name: Create output directories
run: |
mkdir -p test_output/comparison_files
mkdir -p test_data/reference_outputs
- name: Verify test data
run: |
if [ ! -f "test_data/test1.gtf" ]; then
echo "Error: Required test file test_data/test1.gtf not found"
exit 1
fi
if [ ! -f "Biotypes.tsv" ]; then
echo "Error: Required Biotypes.tsv file not found"
exit 1
fi
echo "Test files present:"
ls -l test_data/test1.gtf Biotypes.tsv
- name: Run modify_gtf script
env:
PYTHONPATH: ${{ github.workspace }}/3rd-party-tools/build-indices
run: |
python modify_gtf.py \
-i test_data/test1.gtf \
-o test_output/modified_test1.gtf \
-b Biotypes.tsv
if [ ! -f "test_output/modified_test1.gtf" ]; then
echo "Error: Modified GTF was not created"
exit 1
fi
- name: Run comparison
id: comparison
env:
PYTHONPATH: ${{ github.workspace }}/3rd-party-tools/build-indices
run: |
python compare_gtfs.py \
test_data/test1.gtf \
test_output/modified_test1.gtf \
--output-prefix test_output/comparison_files/comparison
- name: Run unit tests
id: unit_tests
env:
PYTHONPATH: ${{ github.workspace }}/3rd-party-tools/build-indices
run: python -m unittest test_gtf_comparison.py -v
- name: Create comparison summary
if: always()
run: |
{
echo "GTF Comparison Summary"
echo "Generated on: $(date)"
echo
echo "Input GTF: test_data/test1.gtf"
echo "Modified GTF: test_output/modified_test1.gtf"
echo
for diff_type in structural gene attribute; do
echo "=== ${diff_type^} Differences ==="
if [ -f "test_output/comparison_files/comparison_${diff_type}_diff.txt" ]; then
cat "test_output/comparison_files/comparison_${diff_type}_diff.txt"
else
echo "No ${diff_type} differences file found"
fi
echo
done
} > test_output/comparison_files/summary.txt
- name: Zip comparison results
if: always()
run: |
if [ -d "test_output/comparison_files" ] && [ "$(ls -A test_output/comparison_files)" ]; then
cd test_output
zip -r comparison_results.zip comparison_files/
cd ..
else
echo "No comparison files to zip"
touch test_output/comparison_results.zip
fi
- name: Upload test artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: gtf-test-results
path: |
3rd-party-tools/build-indices/test_output/comparison_results.zip
3rd-party-tools/build-indices/test_output/modified_test1.gtf
compression-level: 9
- name: Check test results
if: always()
run: |
echo "=== Test Results Summary ==="
TESTS_FAILED=false
# Check unit tests result
if [ "${{ steps.unit_tests.outcome }}" == "success" ]; then
echo "✅ Unit tests passed"
else
echo "❌ Unit tests failed"
TESTS_FAILED=true
fi
# Check comparison results
if [ -f "test_output/comparison_files/comparison_structural_diff.txt" ]; then
if grep -q "differs in" test_output/comparison_files/comparison_structural_diff.txt; then
echo "❌ GTF comparison found differences"
cat test_output/comparison_files/summary.txt
TESTS_FAILED=true
else
echo "✅ GTF comparison passed"
fi
else
echo "❌ GTF comparison failed to generate output"
TESTS_FAILED=true
fi
if [ "$TESTS_FAILED" = true ]; then
exit 1
fi